Siemens S7 ISOTCP使用实例

EMQX 企业版技术支持发表于:2022年08月17日 16:25:20更新于:2022年08月17日 16:30:58

协议简介

S7协议TCP/IP实现依赖于面向块的ISO传输服务,S7协议包含在TPKTISO-COTP协议中,允许PDU(协议数据单元)通过TCP承载。ISO overTCP通信定义在RFC1006中,ISO-COTP定义在RFC2126其是基于ISO 8073协议(RFC905)。该结构如下图。

webp.png

S7协议是面向功能/命令的,这意味着传输由S7请求和适当的应答组成(极少数例外)。在连接建立期间协商并行传输的数量和PDU的最大长度。

S7 PDU由三个主要部分组成:

头(Header):包含长度信息,PDU参考和消息类型常量

参数(Parameters):内容和结构根据PDU的消息和功能类型而有很大差异

数据(Data):该数据是一个可选字段来携带数据,例如存储器值,块代码,固件数据等。

下载S7模拟器

S7服务器代码示例---链接

  • 克隆存储库

    git clone https://github.com/gijzelaerr/python-snap7
  • 运行服务器

    ## 进去server所在目录
    cd python-snap7/snap7/bin
    
    ## 查看目录
    ls
    __init__.py     snap7-server.py
    
    ##
    pip3 install .
    
    ## 运行server
    python3 snap7-server.py

    可以看到该server已经成功运行,且监听端口为1102

  • image.png

  • 查看点位地址,在该代码中可以找到设置的点位地址以及对应的数据类型,这里我以采集int和double int点位的数据为例,感兴趣可以去查看该代码

  • image.png

安装Neuron(以docker运行为例)

## 获取 Docker 镜像
docker pull neugates/neuron:2.1.2

## 启动 Docker 容器
docker run -d --name neuron -p 7000:7000 -p 7001:7001 -p 9081:9081 --privileged=true --restart=always neugates/neuron:2.1.2

Neuron南向配置

创建南向设备

image.png

新增设备,选择协议类型

image.png

确认创建,点击设备配置

image.png

填写相应配置信息,点击提交按钮

image.png

单击该设备面板,进入Group列表,点击创建填写group名称及采集频率为多少ms,完成创建

image.png

点击上图箭头所指图标,进入tag列表创建tag,添加tag填写tag相应信息,完成创建

image.png

点位创建成功后,开启刚创建好的南向设备,可以看到该设备工作状态以及连接状态都处于正常运行中

image.png

切换到数据监控页面,选择刚创建的南向设备和group名称,便可以看到点位对应的值

image.png

通过数据监控看到采集的点位地址和代码中设置的点位相同且采集到的值也是相同的

注:该代码中点位对应值是一个静态值,所以不会发生改变

Neuron北向配置

创建北向应用

image.png

点击添加应用,填写名称,选择协议类型,完成创建

image.png

点击北向emqx面板上应用配置

image.png

填写北向配置信息,点击提交,开启该北向应用,可以看到工作状态及连接状态都处于正常运行中

image.png

单击emqx面板进入Group列表,选择添加订阅,选择需要订阅的南向设备及group,点击提交按钮

image.png

验证

验证北向应用是否连接到EMQX

可以看到北向设置的clientid为neuron的客户端已经连接到EMQX

image.png

验证北向所订阅南向设备点位数据是否接收成功

这里通过MQTTX去连接一个客户端到EMQX并且订阅南向设备上报数据topic为neuron/neuron/upload,可以看到成功接收到南向设备上报的点位数据信息,如图:

image.png

至此,Siemens S7 ISOTCP协议模拟测试完成。



    您需要登录后才可以回复