新闻中心

PRESS CENTER 纵横智控
你的位置: 首页 新闻 技术应用
纵横智控

教程-PLC数据采集并周期上报到云端再云端下发写PLC

2024-10-14 16:37:48 阅读: 发布人:纵横智控

PLC数据采集的重要性

PLC通常用于控制和监测各种机械设备的状态。通过数据采集,将PLC的数据上传至云端,企业能够实时监测设备运行情况,并对异常进行快速响应。这种数据的分析与处理不仅有助于预测性维护,还能通过云端的数据分析进行生产优化。

PLC的数据采集过程通常通过多种标准化协议实现,包括Modbus、OPC UA等,这些协议能够保证数据在不同设备之间的兼容性。

需求概述

本章节实现:

PLC数据采集并周期上报到云端云端下发写PLC,详细原文可见https://iotrouter.yuque.com/org-wiki-iotrouter-rlzwv5/eg8000/zgol0xpm6lutxtz8

需要读写的点位如下:

PLC

S7-200Smart

IP

192.168.0.30/102

点位

数据类型

属性

名称

V0.0

Boolean

读写

电机开关

VD100

Float

读写

流量设定值

(!!!本章节不限制PLC类型,全部PLC通用,演示使用西门子Smart200)

(!!!本章节不限制PLC类型,全部PLC通用,演示使用西门子Smart200)

(!!!本章节不限制PLC类型,全部PLC通用,演示使用西门子Smart200)


流程图

教程-PLC数据采集并周期上报到云端再云端下发写PLC

JSON说明(数据格式)


1. 云端JSON

1.1. 数据上报

topic:

Topic

/cloud/test/report

消息发送方

网关

消息接收方

平台

参数说明:

参数

类型

描述

SN

String

网关SN

Data

Object

要上报的数据

示例:

{

"SN": "123456",

"Data": {

"V0.0": false,

"VD100": 17.32

}

}

1.2. 指令下发

topic:

Topic

/cloud/test/cmd

消息发送方

平台

消息接收方

网关

参数说明:

参数

类型

描述

valueType

String

下发值的类型

Name

String

写入的点位名称

Value

任意类型

写入的值

Address

String

写入的地址

示例:

{

"valueType": "Boolean",

"Name": "",

"address":"V0.0",

"Value": true

}


2. 网关JSON

2.1. PLC节点读取输出

示例:

{

"V0.0": true,

"VD100": 12.22

}

2.2. PLC写输入

参数说明:

参数

类型

描述

func

String

写入的类型 WriteFloat/WriteBool

详情跳转

Body

Object

写入的点位信息

Body:

参数

类型

描述

name

String

点位名称,可不填

address

String

写入的地址

value

任意类型

写入的值

示例:

{

"func": "WriteBool",

"body": {

"name": "",

"address": "V0.0",

"value": true

}

}

需求分析

第一步:配置PLC数据读取

第二步:上行JSON转换

第三步:配置MQTT发布

第四步:验证数据上报

第五步:配置MQTT订阅

第六步:下行JSON转换

第七步:写入数据到PLC

需求实现

第一步:配置PLC数据读取

第二步:上行JSON转换

PLC节点输出JSON

描述

MQTT上报JSON

{

"switch": true,

"flowValue": 12.22

}

将左侧PLC节点输出的JSON转换成右侧输出的JSON

{

"SN": "123456",

"Data": {

"switch": false,

"flowValue": 17.32

}

}

函数代码:

if (msg.rspType != "intRead") return

let plcData = msg.payload


let mqttJSON = {

"SN": "123456",

"Data": {

"switch": plcData["switch"],

"flowValue": plcData["flowValue"]

}

}

msg.payload = JSON.stringify(mqttJSON)

return msg;

第三步:配置MQTT发布

第四步:验证数据上报

使用EMQX工具订阅对应主题查看数据

第五步:配置MQTT订阅

填写对应网关订阅topic

第六步:下行JSON转换

MQTT下发JSON

描述

PLC节点需要的JSON

{

"valueType": "Boolean",

"Name": "",

"Address":"V0.0",

"Value": true

}

将左侧MQTT下发的JSON转换成PLC节点需要的JSON

{

"func": "WriteBool",

"body": {

"name": "",

"address": "V0.0",

"value": true

}

}

函数代码块:

var mqttRecv = msg.payload


var sendPLC = [


    {

        "func": "WriteBool",

        "body": {

            "name": "",

            "address": mqttRecv["Address"],

            "value": mqttRecv["Value"],

        }

    }

]


if (mqttRecv.valueType == "Float") sendPLC[0].func = "WriteFloat"


msg.payload = sendPLC

return msg;

第七步:写入数据到PLC

使用EMQX下发写测试

结论

PLC数据采集并周期性上报到云端,以及通过云端下发指令对PLC进行控制,是实现工业自动化和物联网集成的关键步骤。通过合理配置数据采集频率、选择合适的通信协议和网关设备,企业能够实现高效的数据传输和远程控制。这种方式不仅提升了设备管理效率,还为企业提供了更深入的数据分析能力和决策支持。

热门产品