ID: INDUSTRIAL-01
工业控制与高级协议 (Industrial Control)
Modbus RTU 帧格式详解:十六进制报文拆解与串口调试
打开在线串口调试工具
需 Chrome / Edge 桌面浏览器 · 串口数据仅在本地处理
Modbus RTU 是工控、抄表、楼宇自控里最常见的串行主从协议。链路上是 纯 HEX 二进制帧,不是可读文本。用本站调试时务必开 HEX 收发,并认准 CRC 小端序。
经典读保持寄存器(功能码 03)
主站发送示例:01 03 00 00 00 02 C4 0B
| 字段 | 例 | 含义 |
|---|---|---|
| 从站地址 | 01 | 目标设备 ID |
| 功能码 | 03 | 读保持寄存器 |
| 起始地址 | 00 00 | 寄存器起始 |
| 数量 | 00 02 | 读 2 个寄存器 |
| CRC16 | C4 0B | 前 6 字节校验,低字节在前 |
从站正常应答示例:01 03 04 00 12 00 34 F3 32
其中 04 为后续数据字节数,00 12 00 34 为寄存器值,F3 32 为应答 CRC。
串口参数与物理层 - 常见 9600/19200/115200,8N1 居多;部分 PLC 默认 7E1,以手册为准。 - 多站总线几乎都是 RS-485 半双工;注意 A/B、终端电阻 120Ω、共地/隔离。 - 帧间隔:RTU 依赖约 3.5 字符时间静默分帧;本站可用自动分帧/超时观察整帧。 - 同一时刻只应一个主站轮询,避免总线冲突。
用本站现场调试步骤
1. 接线与终端电阻确认,主站唯一。
2. 打开本站,HEX 模式,波特率与从站一致。
3. 发送读命令(可先做预设),核对应答地址/功能码是否镜像。
4. CRC 错:重算是否误含空格、冒号或 CRLF(那是 ASCII/文本模式的东西)。
5. 超时无应答:查地址、波特率、485 方向(DE)、供电。
6. 异常功能码(如 83)+ 异常码:从站拒绝,查寄存器映射是否存在。
CRC 注意 Modbus CRC16 对「地址+功能码+数据」计算,结果 低字节先上线。本站发送时按完整十六进制帧填写,不要在 HEX 流里夹杂可见空格字节(除非你的工具明确忽略空白)。算法细节见《Modbus CRC16 校验》文档。
与 Modbus ASCII 的差别
ASCII 用可读十六进制字符 + LRC,帧以 : 起、\r\n 终;RTU 更短更快,工业现场默认 RTU。调试时不要混用两种编码去贴同一段报文。
和乱码排查 若 HEX 下全是无规律噪声:先当电气/波特率问题(回环、共地、485),不要先怀疑功能码表。 若帧结构对但 CRC 错:查字节顺序与是否多算字段。 掌握「HEX 拆帧 + CRC + 485」,即可用本站完成大量仪表/PLC 点检,而不必先上大型组态软件。把成功帧存进预设,产线点检可一键复现。
用在线串口发送你的第一帧 Modbus
目标:主站读从站 1 的保持寄存器。
1. 硬件:USB-485,A/B 无反,两端视情况加 120Ω。
2. 本站 HEX 模式,波特率与从站一致(常见 9600 8N1)。
3. 发送:01 03 00 00 00 02 C4 0B
4. 成功时应答形如:01 03 04 ... CRC
5. 无应答:地址、波特率、A/B、供电、是否多主冲突。
6. 有应答但 CRC 错:是否把空格当数据发出;是否用了 ASCII 模式。
把成功帧保存为「预设指令」,产线点检可一键复测。
功能码速查(调试向) | 码 | 含义 | 调试提示 | |---|---|---| | 01/02 | 读线圈/离散 | 地址映射易错 | | 03/04 | 读保持/输入寄存器 | 最常用 | | 05/06 | 写单线圈/寄存器 | 先读后写 | | 0F/10 | 写多线圈/寄存器 | 注意字节数 | | 8x | 异常应答 | 看异常码 |
常见搜索意图 - Modbus RTU 报文格式 - Modbus 03 功能码示例 - 串口助手发 Modbus - Modbus CRC 低字节在前 本页配合《Modbus CRC16》与《PLC 串口调试》使用。
打开在线串口调试工具
在本页完成排查后,用网页串口直接验证收发