S7协议转Modbus协议

描述

选自-成都纵横智控-https://www.iotrouter.com

需求概述

本章主要实现一个流程:EG8200采集西门子S7-200smart的数据,并将数据存储在Modbus寄存器中,等待外部主机通过Modbus TCP协议来读取。

要采集的PLC的IP及端口:

PLC S7-200smart
IP 192.168.0.34/102
地址 数据类型 属性 名称
I0.0 Boolean 只读 bitSignal1
I0.1 Boolean 只读 itSignal2
I0.2 Boolean 只读 itSignal3
I0.3 Boolean 只读 itSignal4
I0.4 Boolean 只读 itSignal5
I0.5 Boolean 只读 itSignal6
I0.6 Boolean 只读 itSignal7
I0.7 Boolean 只读 itSignal8
VD20 Float 只读 floatSignal1
VD24 Float 只读 floatSignal2
VD28 Float 只读 floatSignal3
VD32 Float 只读 floatSignal4
VW36 Usint16 只读 uintSignal1
VW38 Usint16 只读 uintSignal2
VW40 Usint16 只读 uintSignal3
VW42 Usint16 只读 uintSignal4

需求分析

在制作流程时,基础的逻辑是根据功能实现来制作流程。该需求经过分析可以得出,主要分为PLC数据读取与存储、Modbus TCP通信两个部分。

1.通过西门子S7协议读取PLC的数据,得到的数据存储在内存中(西门子节点)

2.将数据进行格式化(函数节点)

3.将格式化后的数据存储到寄存器中(Modbus Server节点)

4.外部主机连接主动读取

MODBUS

需求实现

1.采集PLC数据

从节点库拖入一个S7读数据节点,以及一个调试节点,调试节点用于查看读取到的PLC的数据,方便定位问题:

MODBUS

双击西门子节点,根据需求概述的内容填写对应的设置参数,如下图所示:

MODBUS

如果设置正确,调试窗口会有日志打印,显示的是读取到的数据内容:

MODBUS

有的时候PLC数据点比较多,手动依次录入比较繁琐。节点支持数据点的导入导出或者参数传递的方式来读取:

MODBUS

本例程用到的传参代码如下:

MODBUS

数据进行格式化

使用函数节点将PLC数据处理成对应格式:

MODBUS

数据格式化参考代码如下:

MODBUS

3.存储到Modbus寄存器

使用Modbus服务节点,将格式化的数据传入,并配置存储方式:

MODBUS

使用TCP IN节点和TCP OUT节点搭配实现TCP 服务端:

MODBUS

使用上位机(Modbus Poll软件)通过Modbus TCP来读取映射的数据:

MODBUS

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分