新闻中心
PRESS CENTERModbus 读数据
本文主要实现的功能是:使用EG系列网关采集Modbus TCP从站设备的数据以及对Modbus TCP从站设备实现写数据操作。本文选择EG8200Mini作为演示载体,但文档所述方法适用于EG系列所有网关。节点使用详情查看:Modbus 主站请求/主站解析
Modbus是一种工业现场总线协议,通常运行于RS485总线,采用半双工即一问一答的通信机制。Modbus分为Modbus RTU/Modbus TCP/Modbus ASCII三种通信模式,网关目前支持Modbus RTU/Modbus TCP两种通信模式。
Modbus主站请求节点:根据设置的参数(地址码/功能码/寄存器起始地址/寄存器数量等)生成Modbus指令。
Modbus主站解析节点:根据匹配的Modbus主站请求节点,解析响应数据。
Modbus主站解析节点使用时需指定匹配的Modbus主站请求节点(Modbus主站请求和Modbus主站解析节点匹配码一致即可),匹配完成就会按照Modbus主站请求节点的设置来解析数据,因此Modbus主站请求和Modbus主站解析节点必须成对出现且匹配码必须唯一。
节点只对协议报文处理,并未指定相应的物理通道,因此一般配合串口或者TCP节点一起使用。从而可以灵活实现Modbus RTU / Modbus TCP / Modbus RTU over TCP / Modbus TCP over RTU。
以下介绍主要针对Modbus主站请求节点,Modbus主站解析节点无任何设置项。Modbus基础概念此处不在介绍,如果不熟悉,请参考以下资料:Modbus协议【完整版】.pdf
1.网络环境搭建
Modbus从机参数(由Modbus从站设备厂家提供):
192.168.0.30:502 | |||
站地址:1 | |||
名称 | 功能码 | 寄存器地址 | 数据类型 |
第一路继电器 | 0X01 | 00001(0x00) | Bool |
第二路继电器 | 0X01 | 00002(0x01) | Bool |
第一路开关量检测 | 0X02 | 10001(0x00) | Bool |
第二路开关量检测 | 0X02 | 10002(0x01) | Bool |
第一路电流值 | 0X03 | 40001(0x00) | Float |
第二路电流值 | 0X03 | 40003(0x02) | Float |
如上所示,Modbus从站IP为192.168.0.30,EG8200Mini网关也需要更改LAN口IP为192.168.0.XX(XX可为1-255的任意值,注意IP不能冲突)。
2验证环境
验证局域网内从站和网关是否能PING通。使用PING节点填入从机IP,如果返回数字表示网络环境搭建成功。
第一步:添加相关节点
添加Modbus主站节点和Modbus解析节点。
添加TCP节点并配置连接。
第二步:配置Modbus点位
第三步:测试
添加一个注入节点触发流程工作一次。
添加一个调试节点,即可实时查看采集数据。
本文示例以Modbus TCP协议为例,如果使用Modbus RTU协议仅需将TCP节点替换为串口节点即可。
Modbus 写数据
本文主要实现的功能是:使用EG系列网关对Modbus TCP从站设备实现写数据操作。本文选择EG8200Mini作为演示载体,但文档所述方法适用于EG系列所有网关。
1.网络环境搭建
Modbus从机参数(由Modbus从站设备厂家提供):
192.168.0.30:502 | |||
站地址:1 | |||
名称 | 功能码 | 寄存器地址 | 数据类型 |
第一路继电器 | 0X01 | 00001(0x00) | Bool |
第二路继电器 | 0X01 | 00002(0x01) | Bool |
第一路电流值设定值 | 0X03 | 40001(0x00) | Float |
第二路电流值设定值 | 0X03 | 40003(0x02) | Float |
如上所示,Modbus从站IP为192.168.0.30,EG8200Mini网关也需要更改LAN口IP为192.168.0.XX(XX可为1-255的任意值,注意IP不能冲突)。
2.验证环境
验证局域网内从站和网关是否能PING通。使用PING节点填入从机IP,如果返回数字表示网络环境搭建成功。
第一步:添加相关节点
添加Modbus主站节点和Modbus解析节点。
添加TCP节点并配置连接。
第二步:配置Modbus点位
第三步:测试
写单个。
这里以写“第一路继电器”为例:
写多个。
这里以同时写入两个线圈和两个保持寄存器点位为例。通过注入节点发送一条包含四个点位的消息,如 {"DO1":true,"AO1":true,"DO2":true,"AO2":true},实现四个点位的批量写入。
扩展延伸本文示例以Modbus TCP协议为例,如果使用Modbus RTU协议仅需将TCP节点替换为串口节点即可。
详情:Modbus 读/写数据