打印
[家电应用]

Modbus RTU的通讯报文怎么看

[复制链接]
250|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
黄昏收获|  楼主 | 2025-5-31 18:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Modbus RTU的通讯报文怎么看

Modbus RTU通讯报文的解析需根据其结构化格式逐层拆解。

Modbus RTU报文由‌地址域‌、‌功能码‌、‌数据域‌和‌CRC校验域‌四部分组成。

[从站地址 (1B)] [功能码 (1B)] [数据域 (N B)] [CRC16校验 (2B)]

从站地址‌:目标设备地址(1字节),范围1~24717

功能码‌:操作类型代码(1字节),如03读保持寄存器、06写单寄存器48

数据域‌:请求/响应的具体参数(长度可变)

CRC校验‌:循环冗余校验码(2字节),验证报文完整性。使用CRC16-Modbus算法

常用功能码示例

功能码 含义 请求报文数据域 响应报文数据域
03 读保持寄存器 起始地址(2B) + 寄存器数量(2B) 字节数(1B) + 寄存器值(N B)
06 写单寄存器 寄存器地址(2B) + 写入值(2B) 同请求报文(回显数据)
10 写多寄存器 寄存器地址(2B) + 数量(2B) + 字节数(1B) + 寄存器值(N B) 写入地址(2B) + 数量(2B)

异常响应格式

若操作失败,功能码变为原功能码 + 0x80,数据域仅含‌异常码(1字节)

案例1:读保持寄存器(功能码03)

  • 请求‌:01 03 00 00 00 02 C4 0B
    • 01:从站地址1
    • 03:读保持寄存器
    • 00 00:起始地址0
    • 00 02:读取2个寄存器
    • C4 0B:CRC校验
  • 正常响应‌:01 03 04 00 0A 00 64 8B FB
    • 04:返回4字节数据(2寄存器×2字节)
    • 00 0A:寄存器0的值=10(0x000A)
    • 00 64:寄存器1的值=100(0x0064)

案例2:错误响应(功能码83)

  • 请求:02 03 00 00 00 00 45 F9(读0个寄存器,无效长度)

  • 响应:

    02 83 03 F1 31
    • 83:读操作异常(03+0x80)
    • 03:异常码=03(非法数据值)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝