準(zhǔn)備工作">
新聞中心
PRESS CENTER本章節(jié)主要實(shí)現(xiàn)一個需求:EG8200采集西門子PLC的數(shù)據(jù),拼裝成Json格式,通過TCP協(xié)議上報縱橫云平臺;同時能夠接收縱橫云平臺下發(fā)的控制命令,實(shí)現(xiàn)遠(yuǎn)程控制PLC。
要實(shí)現(xiàn)此功能,需提前準(zhǔn)備好以下材料。
1. PLC的IP/端口/點(diǎn)位表
PLC | S7-200 Smart | ||
IP | 192.168.0.24/102 | ||
點(diǎn)表(DB1) | |||
地址 | 數(shù)據(jù)類型 | 屬性 | 名稱 |
V0.0 | Boolean | 只讀 | MotorState1 |
V0.1 | Boolean | 只讀 | MotorState2 |
V0.2 | Boolean | 只讀 | MotorState3 |
V0.3 | Boolean | 只讀 | MotorState4 |
V0.4 | Boolean | 讀寫 | MotorControl1 |
V0.5 | Boolean | 讀寫 | MotorControl2 |
V0.6 | Boolean | 讀寫 | MotorControl3 |
V0.7 | Boolean | 讀寫 | MotorControl4 |
VD100 | Unsigned16 | 只讀 | voltage (V) |
VD200 | Unsigned16 | 只讀 | current (A) |
2. TCP通信相關(guān)參數(shù)
ip:tcp1500.dtuip.com port:1500 JSON格式: { "sensorDatas": [ { "flag":"MotorState1", "switcher":1 }, { "flag":"MotorState2", "switcher":1 }, { "flag":"MotorState3", "switcher":1 }, { "flag":"MotorState4", "switcher":1 }, { "flag":"MotorControl1", "switcher":0 }, { "flag":"MotorControl2", "switcher":0 }, { "flag":"MotorControl3", "switcher":0 }, { "flag":"MotorControl4", "switcher":0 }, { "flag":"voltage", "value":220.0 }, { "flag":"current", "value":10.2 } ] } |
在制作流程時,基礎(chǔ)邏輯遵循數(shù)據(jù)流向進(jìn)行架構(gòu)設(shè)計。經(jīng)分析,本需求主要分為三個部分實(shí)現(xiàn):設(shè)備注冊平臺、PLC數(shù)據(jù)讀取與上傳、接收平臺指令并寫入PLC。
設(shè)備注冊:
建立TCP連接
實(shí)現(xiàn)TCP狀態(tài)感知,首次連接優(yōu)先發(fā)送注冊信息(發(fā)送設(shè)備SN)
獲取設(shè)備SN
PLC讀取與上傳:
通過S7節(jié)點(diǎn)讀取PLC數(shù)據(jù)
將PLC數(shù)據(jù)按照J(rèn)son格式化
將格式化后的數(shù)據(jù)通過TCP發(fā)送至縱橫云平臺
接收平臺指令并寫入PLC:
獲取平臺下發(fā)的Json指令
將收到的Json數(shù)據(jù)解析并轉(zhuǎn)換為PLC可識別數(shù)據(jù)
將數(shù)據(jù)寫入PLC中
1. 設(shè)備注冊與連接
通過系統(tǒng)節(jié)點(diǎn)獲取設(shè)備SN(SN為注冊包信息,需要在TCP連接成功時發(fā)送一次):
建立TCP連接并檢查TCP連接狀態(tài),根據(jù)狀態(tài)設(shè)置變量flag的值表示連接狀態(tài):
以上流程即可實(shí)現(xiàn)TCP連接成功的時候發(fā)送一條注冊信息。上面流程中的函數(shù)節(jié)點(diǎn)的代碼如下:
//flag置1 var connectFlag = 1;
global.set('connectFlag', connectFlag);
return msg;
//flag置0 var connectFlag = 0;
global.set('connectFlag', connectFlag);
return msg;
//SN獲取以及校驗 let sn = global.get("DeviceInfo").sn if (sn.length == 15) msg.payload = "0" + sn else if (sn.length == 16) msg.payload = sn else node.error("SN錯誤請檢查", msg); return msg; |
2. PLC讀取與上傳
從節(jié)點(diǎn)庫拖入一個S7讀數(shù)據(jù)節(jié)點(diǎn),以及一個調(diào)試節(jié)點(diǎn),調(diào)試節(jié)點(diǎn)用于查看讀取到的PLC的數(shù)據(jù),方便定位問題:
雙擊S7讀數(shù)據(jù)節(jié)點(diǎn),根據(jù)需求概述的內(nèi)容填寫對應(yīng)的設(shè)置參數(shù),如下圖所示:
IP:PLC的IP 端口:102(S7協(xié)議通信默認(rèn)端口102) 模式:TASP(S7-200 Smart選擇TASP,其余型號選擇Rack/Slot) 本地TSAP:1002(固定值) 遠(yuǎn)端TSAP:0301(固定值) 采集周期:1000ms(默認(rèn)1000ms,可自定義) 超時周期:2000ms(默認(rèn)2000ms,可自定義)
數(shù)據(jù)點(diǎn)配置(根據(jù)幫助文檔可以找到對應(yīng)關(guān)系) V0.0-->DB1,X0.0 V0.1-->DB1,X0.1 V0.2-->DB1,X0.2 V0.3-->DB1,X0.3 V0.4-->DB1,X0.4 V0.5-->DB1,X0.5 V0.6-->DB1,X0.6 V0.7-->DB1,X0.7 VD100 -->DB1,W100 VD200 -->DB1,W200 |
輸出模式可以根據(jù)需求選擇,這里選擇所有變量輸出一條
如果設(shè)置正確,調(diào)試窗口會有日志打印,顯示的是讀取到的數(shù)據(jù)內(nèi)容:
導(dǎo)入PLC點(diǎn)表: