新闻中心
PRESS CENTER本章节主要实现一个需求:EG8200采集西门子PLC的数据,拼装成Json格式,通过TCP协议上报纵横云平台;同时能够接收纵横云平台下发的控制命令,实现远程控制PLC。
要实现此功能,需提前准备好以下材料。
1. PLC的IP/端口/点位表
PLC | S7-200 Smart | ||
IP | 192.168.0.24/102 | ||
点表(DB1) | |||
地址 | 数据类型 | 属性 | 名称 |
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通信相关参数
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 } ] } |
在制作流程时,基础逻辑遵循数据流向进行架构设计。经分析,本需求主要分为三个部分实现:设备注册平台、PLC数据读取与上传、接收平台指令并写入PLC。
设备注册:
建立TCP连接
实现TCP状态感知,首次连接优先发送注册信息(发送设备SN)
获取设备SN
PLC读取与上传:
通过S7节点读取PLC数据
将PLC数据按照Json格式化
将格式化后的数据通过TCP发送至纵横云平台
接收平台指令并写入PLC:
获取平台下发的Json指令
将收到的Json数据解析并转换为PLC可识别数据
将数据写入PLC中
1. 设备注册与连接
通过系统节点获取设备SN(SN为注册包信息,需要在TCP连接成功时发送一次):
建立TCP连接并检查TCP连接状态,根据状态设置变量flag的值表示连接状态:
以上流程即可实现TCP连接成功的时候发送一条注册信息。上面流程中的函数节点的代码如下:
//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读取与上传
从节点库拖入一个S7读数据节点,以及一个调试节点,调试节点用于查看读取到的PLC的数据,方便定位问题:
双击S7读数据节点,根据需求概述的内容填写对应的设置参数,如下图所示:
IP:PLC的IP 端口:102(S7协议通信默认端口102) 模式:TASP(S7-200 Smart选择TASP,其余型号选择Rack/Slot) 本地TSAP:1002(固定值) 远端TSAP:0301(固定值) 采集周期:1000ms(默认1000ms,可自定义) 超时周期:2000ms(默认2000ms,可自定义)
数据点配置(根据帮助文档可以找到对应关系) 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 |
输出模式可以根据需求选择,这里选择所有变量输出一条
如果设置正确,调试窗口会有日志打印,显示的是读取到的数据内容:
导入PLC点表: