新闻中心
PRESS CENTERPLC通常用于控制和监测各种机械设备的状态。通过数据采集,将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)
流程图
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进行控制,是实现工业自动化和物联网集成的关键步骤。通过合理配置数据采集频率、选择合适的通信协议和网关设备,企业能够实现高效的数据传输和远程控制。这种方式不仅提升了设备管理效率,还为企业提供了更深入的数据分析能力和决策支持。