Modbus TCP通信报文解析

通信网络

650人已加入

描述

Modbus TCP是在TCP/IP网络上运行的Modbus的实现,旨在允许Modbus ASCII/RTU协议在基于TCP/IP的网络上传输。

一、格式形式

Modbus TCP报文格式由事务处理标识、协议标识、报文长度、单元标识、功能码、寄存器个数组成。

1)读取时的格式

ASCII

2)写入时的格式

ASCII

事务处理标识符: 表示报文的序列号

协议标识符: 用00 00表示Modbus TCP通信协议

报文长度: 表示接下来的数据长度

单元标识符: 表示从站地址

功能码: 选择报文的功能

起始地址: 设置读取或写入的起始寄存器地址

寄存器个数: 设置需要读取或写入寄存器的个数

写入数据字节数: 根据需要设置写入的数据字节个数

写入数据: 字节占用根据设置的写入数据字节数的变化而变化

二、指令运用

按照浅谈Modbus通信协议中的步骤配置好网络调试助手和Modbus Slave后对报文格式进行演示。

1)读线圈

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

ASCII

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

ASCII

ASCII

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

ASCII

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

ASCII

ASCII

2)读保持寄存器

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

ASCII

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

ASCII

ASCII

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

ASCII

3)写多个线圈

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

ASCII

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

ASCII

ASCII

4)写多个保持寄存器

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

ASCII

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

ASCII

ASCII

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

全部0条评论

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

×
20
完善资料,
赚取积分