Modbus TCP通信报文解析

[复制链接]
查看83418 | 回复0 | 2024-3-22 21:14:39 | 显示全部楼层 |阅读模式
Modbus TCP是在TCP/IP网络上运行的Modbus的实现,旨在允许Modbus ASCII/RTU协议在基于TCP/IP的网络上传输。
一、格式形式
Modbus TCP报文格式由事务处理标识、协议标识、报文长度、单元标识、功能码、寄存器个数组成。
1)读取时的格式


2)写入时的格式

事务处理标识符:表示报文的序列号
协议标识符:用00 00表示Modbus TCP通信协议报文长度:表示接下来的数据长度单元标识符:表示从站地址功能码:选择报文的功能起始地址:设置读取或写入的起始寄存器地址寄存器个数:设置需要读取或写入寄存器的个数写入数据字节数:根据需要设置写入的数据字节个数写入数据:字节占用根据设置的写入数据字节数的变化而变化
二、指令运用
按照浅谈Modbus通信协议中的步骤配置好网络调试助手和Modbus Slave后对报文格式进行演示。
1)读线圈首先,将Modbus Slave中的从站地址设置为:01,寄存器线圈类型设置为:01 Coil Status(0x)。设置完成后单击“OK”并连接主站。


然后,连接网络调试助手,并将示例中的报文复制到网络调试助手中单击“发送”,得到从站回复的报文。




再然后,解析从站回复的报文。


最后,随意改变Modbus Slave中线圈的状态后再次读取从站数据并解析。




2)读保持寄存器首先,将Modbus Slave中的从站地址设置为:01,寄存器线圈类型设置为:03 Holding Register(4x)。设置完成后单击“OK”连接主站,并修改寄存器的值(此处输入的值为十进制)。


然后,连接网络调试助手,并将示例中的报文复制到网络调试助手中单击“发送”,得到从站回复的报文。




最后,解析从站回复的报文。


3)写多个线圈首先,将Modbus Slave中的从站地址设置为:01,寄存器线圈类型设置为:01 Coil Status(0x)。设置完成后单击“OK”连接主站,并修改线圈的状态。


最后,连接网络调试助手,并将示例中的报文复制到网络调试助手中单击“发送”,可以观察到Modbus Slave中对应的线圈状态改变。




4)写多个保持寄存器首先,将Modbus Slave中的从站地址设置为:01,寄存器线圈类型设置为:03 Holding Register(4x)。设置完成后单击“OK”连接主站,并修改寄存器的值(此处输入的值为十进制)。


最后,连接网络调试助手,并将示例中的报文复制到网络调试助手中单击“发送”,可以观察到Modbus Slave中对应的保持寄存器的值改变(此处会自动转换成十进制显示)。




您的建议就是我前进的动力


微信:

2960536263

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则