Modbus 通信协议详解
协议概述
Modbus 是一种应用层报文传输协议,由 Modicon(现施耐德电气)于 1979 年发布,是目前工业电子设备之间最常用的串行通信协议之一。它采用主/从(Master/Slave)架构,一个主站可以与多达 247 个从站通信。
三种传输模式
| 模式 | 物理层 | 帧格式 | 典型应用 |
|---|---|---|---|
| Modbus RTU | RS-232 / RS-485 | 二进制,8 位数据 | 工业现场最常用 |
| Modbus ASCII | RS-232 / RS-485 | ASCII 可读字符 | 调试/兼容旧设备 |
| Modbus TCP | 以太网 | TCP/IP 封装 | 现代工业以太网 |
寄存器模型
Modbus 定义了四种数据区域,每种有独立的地址空间:
| 寄存器类型 | 访问方式 | 地址范围 | 用途 |
|---|---|---|---|
| 线圈(Coil) | 读写 | 00001-09999 | 开关量输出 |
| 离散输入(Discrete Input) | 只读 | 10001-19999 | 开关量输入 |
| 保持寄存器(Holding Register) | 读写 | 40001-49999 | 模拟量/参数 |
| 输入寄存器(Input Register) | 只读 | 30001-39999 | 模拟量输入 |
常用功能码
- 01 (0x01) — 读线圈
- 02 (0x02) — 读离散输入
- 03 (0x03) — 读保持寄存器(最常用)
- 04 (0x04) — 读输入寄存器
- 05 (0x05) — 写单线圈
- 06 (0x06) — 写单寄存器
- 15 (0x0F) — 写多线圈
- 16 (0x10) — 写多寄存器
调试工具推荐
- Modbus Poll — Windows 平台经典调试工具,支持 RTU/TCP
- Modscan — 老牌 Modbus 调试软件
- QModMaster — 开源跨平台 Modbus 工具
- Modbus Mechanic — macOS 平台
注意事项
- RS-485 总线两端必须接 120Ω 终端电阻
- RTU 模式下帧与帧之间至少需要 3.5 个字符时间的静默
- 不同厂商的寄存器地址可能存在 偏移(0-based vs 1-based),对接前务必核对