一文看懂 Modbus RTU 协议:核心架构、报文解析与现场调试避坑指
目录
一、 核心架构:主从式结构 (Client/Server)
Modbus 采用典型的主从式通信模型:
主站 (Master/Client):唯一的指令发起方,同一网络内同一时刻仅存在一台主站,负责主动查询从站数据 / 下发控制指令;
从站 (Slave/Server):指令被动响应方,每台从站配备唯一站号(ID),仅在被主站点名调用时反馈数据 / 执行指令,无主动发送数据的权限;
- 注意: 从站不会主动发送数据,只有在被主站“点名”后才会做出应答。
二、 常见传输模式:RTU 与 TCP
虽然 Modbus 的应用层逻辑一致,但物理层传输方式主要分为以下两种:
对比维度 | Modbus RTU | Modbus TCP |
通信架构 | 主从式半双工(一主多从,同一时间仅一台设备发数据) | 客户端 / 服务器式全双工(支持多客户端并发访问) |
传输速率 | 600~115200 bps | 10/100/1000 Mbps |
地址标识 | (1~247)区分设备 | IP 地址 + 端口号(默认 502)区分设备 |
传输距离 | RS-485 总线最长 1200 米(可加中继延长) | 以太网有线传输最长 100 米(交换机 / 光纤可拓展) |
抗干扰性 | RS-485 差分传输,抗电磁干扰能力强 | 需做好以太网防雷、防静电措施 |
三、 数据模型:四类存储寄存器
Modbus 将数据抽象为四个基本的表。理解这四张表,就理解了数据该如何读写:

四、 常用功能码 (Function Codes)
主站通过“功能码”告诉从站要做什么。最常用的功能码如下:
01 (Read Coils): 读线圈状态
02 (Read Discrete Inputs): 读线圈状态输入
03 Read Holding Registers): 读保持寄存器
04 Read Input Registers): 读输入寄存器
05 (Write Single Coil): 写单个线圈
06 (Write Single Register): 预置单个寄存器
15 (Write Multiple Coils): 写多个线圈
16 (Write Multiple Registers):预置多个寄存器
五、 报文结构示例 (Modbus RTU)
请求帧结构
站号 | 命令号 | 起始地址 | 寄存器数量 | 校验位 |
一个字节 | 一个字节 | 两个字节 | 两个字节(N) | 两个字节 |
响应帧结构
站号 | 命令号 | 字节数 | 数据 | 校验位 |
一个字节 | 一个字节 | 一个字节(2N) | N*2个字节 | 两个字节 |
我们以一个称重仪表的数据点表来举例

根据该点表显示皮重数据的寄存器地址为40001、40002,两个寄存器
假设台秤站号为10号,则主站发送的请求帧为
站号 | 命令号 | 起始地址 | 寄存器数量 | 校验位 |
0A | 03 | 00 00 | 00 02 | 70 C5 |
台秤响应帧应为
站号 | 命令号 | 字节数 | 数据 | 校验位 |
0A | 03 | 04 | 00 00 00 00 | F3 40 |
六、 常见问题与排查思路
在现场调试 Modbus 时,如果通信不通,请按以下顺序排查:
- 物理连接:
- 通信异常时,需逐一校验 RS-485 D+/D- 接线极性、RS-232 TX/RX 收发交叉关系;若使用网关其串口指示灯状态是判断链路通断的核心依据,可通过灯态来快速定位问题;
- 核查总线拓扑是否合规:从站需采用手拉手串联方式,终端电阻仅在总线两端设备并联启用;
- 参数匹配:波特率(Baud rate)、数据位、停止位和校验位(N,8,1 或 E,8,1)两端必须完全一致
- 设备 ID:确认从站站号是否冲突或设置错误
- 偏置地址:注意“0-based”与“1-based”地址的区别。有些说明书写地址 1,但在报文中需要发 0。例如Modbus 40001在报文中是00 00;注意读取的寄存器数量不要超出从站的上限
本期 Modbus RTU 技术分享就到这里。
下期我们将对 MODBUS RTU 其他功能码进行详解,以及相对应的错误报文解析。
从功能码的场景化落地应用,到错误报文的快速定位排障,全是工业现场可直接复用的实操干货。
点击关注本企业号,第一时间获取更新,技术成长不迷路!