Modbus RTU通信报文解析

[复制链接]
查看43318 | 回复0 | 2024-3-22 20:59:43 | 显示全部楼层 |阅读模式


Modbus TCP通信协议在数据通讯上采用主从应答的方式进行。只能由主机通过唯一从机地址发起请求,从机根据主机请求进行响应,即半双工通讯。该协议只允许主机发起请求,从机进行被动响应。

一、格式形式

Modbus RTU报文格式由地址码、功能码、寄存器地址、寄存器数量、CRC校验码组成。

1)读取时的格式



2)写入时的格式



地址码:表示从站地址

功能码:选择报文的功能

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

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

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

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

CRC校验码:根据报文内容计算得出,不同报文的CRC校验码不相同

二、软件配置

1)添加虚拟串口

虚拟串口工具的作用是模拟真实的串口设备,使得在没有实际设备的情况下对串口通信进行仿真。

a)设置串口号

进入虚拟串口软件后在添加端口栏中分别设置端口一和端口二的端口号,设置完成后单击“添加端口”按钮完成设置(在设置端口号时要避免与电脑实际的端口号冲突,可以将端口号设置的大一点)。



b)验证

右键单击系统开始图标进入设备管理器,在端口栏中可以显示添加的虚拟端口表示创建成功。



2)配置串口调试助手

打开串口调试助手后,按照下图设置参数。



         

3)配置Modbus Slave连接

依次单击菜单栏“Connection”——“Connect...”弹出连接配置窗口。


      

三、指令运用

由于Modbus RTU通信协议的报文格式与Modbus TCP的报文格式基本相同,所以此处只演示读线圈的操作,并介绍如何利用工具计算CRC校验码。

1)项目要求

读取1号从站起始地址为00的连续8个线圈的状态。

2)设置Modbus Slave参数

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



3)计算CRC校验码

a)进入“Modbus调试器”界面

连接串口调试助手后,依次单击“左上角图标”选择“工具”——“Modbus调试器”进入调试界面。



b)生成报文

先设置协议类型为:Modbus RTU;然后,根据项目要求设置地址码、功能码、寄存器地址、线圈数量。

设置完成后单击“更新”按钮会自动生成带有CRC校验码的报文。



主站发送报文解析如下图。



3)发送报文

在Modbus调试界面单击“发送”按钮,将自动生成的报文发送给从站,并接收从站回复的报文。



从站回复报文解析如下图。



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


微信:

2960536263

本帖子中包含更多资源

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

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

本版积分规则