新聞中心
PRESS CENTERPLC通常用于控制和監(jiān)測各種機械設備的狀態(tài)。通過數(shù)據(jù)采集,將PLC的數(shù)據(jù)上傳至云端,企業(yè)能夠?qū)崟r監(jiān)測設備運行情況,并對異常進行快速響應。這種數(shù)據(jù)的分析與處理不僅有助于預測性維護,還能通過云端的數(shù)據(jù)分析進行生產(chǎn)優(yōu)化。
PLC的數(shù)據(jù)采集過程通常通過多種標準化協(xié)議實現(xiàn),包括Modbus、OPC UA等,這些協(xié)議能夠保證數(shù)據(jù)在不同設備之間的兼容性。
本章節(jié)實現(xiàn):
PLC數(shù)據(jù)采集并周期上報到云端云端下發(fā)寫PLC,詳細原文可見https://iotrouter.yuque.com/org-wiki-iotrouter-rlzwv5/eg8000/zgol0xpm6lutxtz8
需要讀寫的點位如下:
PLC | S7-200Smart | ||
IP | 192.168.0.30/102 | ||
點位 | 數(shù)據(jù)類型 | 屬性 | 名稱 |
V0.0 | Boolean | 讀寫 | 電機開關(guān) |
VD100 | Float | 讀寫 | 流量設定值 |
(!!!本章節(jié)不限制PLC類型,全部PLC通用,演示使用西門子Smart200)
(!!!本章節(jié)不限制PLC類型,全部PLC通用,演示使用西門子Smart200)
(!!!本章節(jié)不限制PLC類型,全部PLC通用,演示使用西門子Smart200)
流程圖
JSON說明(數(shù)據(jù)格式)
1. 云端JSON
1.1. 數(shù)據(jù)上報
topic:
Topic | /cloud/test/report |
消息發(fā)送方 | 網(wǎng)關(guān) |
消息接收方 | 平臺 |
參數(shù)說明:
參數(shù) | 類型 | 描述 |
SN | String | 網(wǎng)關(guān)SN |
Data | Object | 要上報的數(shù)據(jù) |
示例:
{ "SN": "123456", "Data": { "V0.0": false, "VD100": 17.32 } } |
1.2. 指令下發(fā)
topic:
Topic | /cloud/test/cmd |
消息發(fā)送方 | 平臺 |
消息接收方 | 網(wǎng)關(guān) |
參數(shù)說明:
參數(shù) | 類型 | 描述 |
valueType | String | 下發(fā)值的類型 |
Name | String | 寫入的點位名稱 |
Value | 任意類型 | 寫入的值 |
Address | String | 寫入的地址 |
示例:
{ "valueType": "Boolean", "Name": "", "address":"V0.0", "Value": true } |
2. 網(wǎng)關(guān)JSON
2.1. PLC節(jié)點讀取輸出
示例:
{ "V0.0": true, "VD100": 12.22 } |
2.2. PLC寫輸入
參數(shù)說明:
參數(shù) | 類型 | 描述 |
func | String | 寫入的類型 WriteFloat/WriteBool |
Body | Object | 寫入的點位信息 |
Body:
參數(shù) | 類型 | 描述 |
name | String | 點位名稱,可不填 |
address | String | 寫入的地址 |
value | 任意類型 | 寫入的值 |
示例:
{ "func": "WriteBool", "body": { "name": "", "address": "V0.0", "value": true } } |
第一步:配置PLC數(shù)據(jù)讀取
第二步:上行JSON轉(zhuǎn)換
第三步:配置MQTT發(fā)布
第四步:驗證數(shù)據(jù)上報
第五步:配置MQTT訂閱
第六步:下行JSON轉(zhuǎn)換
第七步:寫入數(shù)據(jù)到PLC
第一步:配置PLC數(shù)據(jù)讀取
第二步:上行JSON轉(zhuǎn)換
PLC節(jié)點輸出JSON | 描述 | MQTT上報JSON |
{ "switch": true, "flowValue": 12.22 } | 將左側(cè)PLC節(jié)點輸出的JSON轉(zhuǎn)換成右側(cè)輸出的JSON | { "SN": "123456", "Data": { "switch": false, "flowValue": 17.32 } } |
函數(shù)代碼:
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發(fā)布
第四步:驗證數(shù)據(jù)上報
使用EMQX工具訂閱對應主題查看數(shù)據(jù)
第五步:配置MQTT訂閱
填寫對應網(wǎng)關(guān)訂閱topic
第六步:下行JSON轉(zhuǎn)換
MQTT下發(fā)JSON | 描述 | PLC節(jié)點需要的JSON |
{ "valueType": "Boolean", "Name": "", "Address":"V0.0", "Value": true } | 將左側(cè)MQTT下發(fā)的JSON轉(zhuǎn)換成PLC節(jié)點需要的JSON | { "func": "WriteBool", "body": { "name": "", "address": "V0.0", "value": true } } |
函數(shù)代碼塊:
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; |
第七步:寫入數(shù)據(jù)到PLC
使用EMQX下發(fā)寫測試
PLC數(shù)據(jù)采集并周期性上報到云端,以及通過云端下發(fā)指令對PLC進行控制,是實現(xiàn)工業(yè)自動化和物聯(lián)網(wǎng)集成的關(guān)鍵步驟。通過合理配置數(shù)據(jù)采集頻率、選擇合適的通信協(xié)議和網(wǎng)關(guān)設備,企業(yè)能夠?qū)崿F(xiàn)高效的數(shù)據(jù)傳輸和遠程控制。這種方式不僅提升了設備管理效率,還為企業(yè)提供了更深入的數(shù)據(jù)分析能力和決策支持。