【边缘计算网关教程】4.西门子PPI协议对接

时间:2024-07-15 07:01:36

前景回顾:【边缘计算网关教程】3.创建第二个流程-****博客

目录

1. 硬件连接

2. PLC串口参数

   2.1. 打开STEP7软件

   2.2. 查看通信参数

3. 网关设置

   3.1. PLC连接设置

   3.2. 数据点位设置

   3.3. 测试


西门子 PPI 协议

适配PLC:S7-200

西门子S7-200 PLC没有网口,只有串口。串口通信使用的是PPI协议,以下主要讲解EG8200Mini使用PPI协议读取西门子S7-200 PLC的数据。

1. 硬件连接

EG8200Mini和西门子S7 200通信之前,必须保证接线正确。PPI采用的是485通信,具体接线为3脚接A,8脚接B:

实际接线图如下:红色是RS485A接S7 200的3脚,蓝色是RS485B接S7 200的8脚

2. PLC串口参数

   2.1. 打开STEP7软件

   2.2. 查看通信参数

可以看到站号是2,波特率是9600,后面网关配置需要使用该参数

3. 网关设置

   3.1. PLC连接设置

从左侧拖入一个Siemens节点,双击打开设置页面,根据PLC的串口参数填写配置如下:

协议:选择PPI串口:选择RS485-1,根据实际硬件连接选择波特率:9600数据位:8停止位:1校验位:EVEN通讯超时:2000串口分帧:100,单位ms,串口分帧时间根据实际情况填写,推荐50-100ms站号:2

按照如上设置好PLC的连接信息,此时点击部署后,可以看到PLC显示状态就绪:

   3.2. 数据点位设置

通常情况下,可以在Siemens节点的参数列表内填写要读取的数据点,数据点填写完成后,会按照设定的频率自动读取PLC的点位。本示例采用了高级的方案,以函数的方式来读取PLC的点位,此方案的好处是可以动态修改要读取的数据点。

拖入一个函数节点,复制如下代码:

msg.payload = []msg.payload[0] = {}msg.payload[0].func = "ReadBool"msg.payload[0].body = {}msg.payload[0].body.name = "I0.5"msg.payload[0].body.address = "I0.5"msg.payload[0].body.length = 1return msg;

这段代码的意思是:使用“ReadBool”方法读“I0.5”地址的1个Bool量,结果存在名字为“I0.5”的变量中。其中length表示一次性可以读多个连续地址的值。msg.payload是一个数组,你也可以一次性读多种不同类型的数据。所有可调用的方法,可参考节点介绍:

示例如下:

   3.3. 测试

拖入一个注入节点和调试节点,如图所示,点击注入节点,观察读到的数据点结果为:I0.5:true,通信成功

参考见:https://mp.weixin.qq.com/s/BttiBr5jWNeMYQMI_aG-BA-成都纵横智控