十五、附录:快速参考表
15.1 Modbus RTU 帧示例速查
| 操作 |
请求帧(十六进制) |
响应帧示例 |
| 读线圈(1个) |
01 01 00 00 00 01 CRC |
01 01 01 01 CRC |
| 读离散输入 |
01 02 00 00 00 01 CRC |
01 02 01 00 CRC |
| 读保持寄存器(1个) |
01 03 00 00 00 01 CRC |
01 03 02 12 34 CRC |
| 读输入寄存器 |
01 04 00 00 00 01 CRC |
01 04 02 56 78 CRC |
| 写单线圈(ON) |
01 05 00 00 FF 00 CRC |
01 05 00 00 FF 00 CRC |
| 写单寄存器 |
01 06 00 00 12 34 CRC |
01 06 00 00 12 34 CRC |
| 写多线圈 |
01 0F 00 00 00 02 02 03 00 CRC |
01 0F 00 00 00 02 CRC |
| 写多寄存器 |
01 10 00 00 00 02 04 12 34 56 78 CRC |
01 10 00 00 00 02 CRC |
CRC 需实际计算,示例中省略。8位数据,1起始位,1停止位,无奇偶校验(8N1)。
15.2 Modbus TCP 公知端口
| 端口 |
服务 |
说明 |
| 502/tcp |
Modbus TCP |
标准端口(需特权) |
| 802/tcp |
Modbus Secure |
Modbus over TLS |
| 5020/tcp |
非特权Modbus |
常用替代(避免sudo) |
| 50200/tcp |
保留 |
- |
15.3 常用功能码速查表
| 功能码 |
十进制 |
名称 |
最大数据量 |
| 0x01 |
1 |
读线圈 |
2000个线圈 |
| 0x02 |
2 |
读离散输入 |
2000个输入 |
| 0x03 |
3 |
读保持寄存器 |
125个寄存器 |
| 0x04 |
4 |
读输入寄存器 |
125个寄存器 |
| 0x05 |
5 |
写单线圈 |
1个线圈 |
| 0x06 |
6 |
写单寄存器 |
1个寄存器 |
| 0x0F |
15 |
写多线圈 |
1968个线圈 |
| 0x10 |
16 |
写多寄存器 |
123个寄存器 |
| 0x17 |
23 |
读/写多寄存器 |
125读 + 121写 |
| 0x2B |
43 |
设备识别 |
变长 |
15.4 波特率与距离对照表(RS485)
| 波特率 |
最大距离(米) |
3.5字符时间(ms) |
| 2400 |
2400 |
14.58 |
| 4800 |
1200 |
7.29 |
| 9600 |
1200 |
3.65 |
| 19200 |
600 |
1.82 |
| 38400 |
300 |
0.91 |
| 115200 |
100 |
0.30 |
| 230400 |
50 |
0.15 |
15.5 异常码速查
| 异常码 |
名称 |
常见原因 |
| 0x01 |
非法功能 |
功能码不支持 |
| 0x02 |
非法数据地址 |
寄存器地址超范围 |
| 0x03 |
非法数据值 |
写入值无效 |
| 0x04 |
从站设备故障 |
内部错误 |
| 0x06 |
从站忙 |
稍后重试 |
| 0x0A |
网关路径不可用 |
单元ID无效 |
| 0x0B |
网关目标无响应 |
RTU设备超时 |
15.6 常用工具速查