以下是 ​​Modbus RTU​​ 协议的典型数据结构示例,包含 ​​读保持寄存器​​ 和 ​​写单个寄存器​​ 的请求帧与响应帧格式,以及详细说明:


​1. 读保持寄存器 (Function Code: 0x03)​

​请求帧 (主机 → 从机)​

字段

字节数

示例值

说明

设备地址

1

0x01

从机设备地址(1-247)

功能码

1

0x03

读保持寄存器

起始寄存器地址

2

0x0000

要读取的起始寄存器地址

寄存器数量

2

0x0002

读取的寄存器数量(2个)

CRC校验

2

0xC40B

CRC16校验(低字节在前)

​完整帧示例(Hex):​

01 03 00 00 00 02 C4 0B


​响应帧 (从机 → 主机)​

字段

字节数

示例值

说明

设备地址

1

0x01

从机设备地址

功能码

1

0x03

读保持寄存器

数据字节数

1

0x04

返回的数据字节数(2寄存器×2字节)

寄存器数据

N

0x00 0A 00 64

寄存器1值(0x000A=10),寄存器2值(0x0064=100)

CRC校验

2

0xABCD

CRC16校验(低字节在前)

​完整帧示例(Hex):​

01 03 04 00 0A 00 64 AB CD


​2. 写单个寄存器 (Function Code: 0x06)​

​请求帧 (主机 → 从机)​

字段

字节数

示例值

说明

设备地址

1

0x01

从机设备地址

功能码

1

0x06

写单个寄存器

寄存器地址

2

0x0002

要写入的寄存器地址

写入值

2

0x00FF

要写入的值(0x00FF=255)

CRC校验

2

0x1234

CRC16校验(低字节在前)

​完整帧示例(Hex):​

01 06 00 02 00 FF 12 34

计算出的 CRC 值假设为 0xC4 0x0B(十六进制)。

字节顺序:01 03 00 00 00 02 **0B C4**

注意:先传 0x0B(低字节),后传 0xC4(高字节)


​响应帧 (从机 → 主机)​

字段

字节数

示例值

说明

设备地址

1

0x01

从机设备地址

功能码

1

0x06

写单个寄存器

寄存器地址

2

0x0002

写入的寄存器地址

写入值

2

0x00FF

确认写入的值(0x00FF=255)

CRC校验

2

0x5678

CRC16校验(低字节在前)

​完整帧示例(Hex):​

01 06 00 02 00 FF 56 78

(响应帧与请求帧完全相同,表示写入成功)


​3. 关键说明​

  1. ​CRC校验​

    • 计算范围:从设备地址到最后一个数据字节(不包括CRC本身)。

    • 校验值格式:16位,​​低字节在前​​(如 0xC40B发送顺序是 0B C4)。

  2. ​寄存器地址​

    • Modbus寄存器地址从 0x0000开始,但实际设备可能映射为 40001(保持寄存器)或 30001(输入寄存器)。

  3. ​错误响应​

    • 如果操作失败,功能码最高位置1(如 0x83表示读保持寄存器错误),并返回错误码:

      01 83 02 C0 91  // 错误码0x02(非法数据地址)
  4. ​字节顺序​

    • Modbus默认使用 ​​大端序(Big-Endian)​​,即高位字节在前。


​4. 实际应用场景​

​读保持寄存器​

  • ​用途​​:读取设备参数(如温度、电压等)。

  • ​示例​​:

    主机请求读取从机地址1的寄存器0和1的值:

    01 03 00 00 00 02 C4 0B

    从机返回寄存器0=10,寄存器1=100:

    01 03 04 00 0A 00 64 AB CD

​写单个寄存器​

  • ​用途​​:修改设备参数(如设定阈值)。

  • ​示例​​:

    主机请求向从机地址1的寄存器2写入255:

    01 06 00 02 00 FF 12 34

    从机确认写入成功:

    01 06 00 02 00 FF 56 78


​5. 注意事项​

  1. ​超时处理​​:主机需等待从机响应(典型超时为100ms-1s)。

  2. ​并发控制​​:同一时刻只能有一个设备在总线上通信。

  3. ​地址范围​​:寄存器数量不能超过Modbus协议限制(通常最多125个寄存器/请求)。

如果需要其他功能码(如写多个寄存器、读输入寄存器等)的示例,可以进一步补充!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐