Modbus 是工业自动化领域应用最广的主从式通讯协议,由 Modicon 公司开发,公开免费、结构简单,PLC、变频器、仪表、温控器、传感器大量使用,核心采用主站轮询机制,同一总线里面只有一个主站,主站主动发起请求,从站被动应答,从站不会主动上报数据,协议主要分 Modbus RTU、Modbus ASCII、Modbus TCP 三种主流版本,RTU 用二进制帧,带 CRC 校验,串口 RS485 最常用;ASCII 是可打印字符传输;Modbus TCP 跑在以太网 TCP/IP 之上,端口默认 502。协议把现场设备数据抽象成四类寄存器:线圈、离散输入、保持寄存器、输入寄存器,通过功能码读写这些数据,因为协议简单可靠,成为工控行业通用标准,但是它本身没有加密,也没有身份认证,适合内网工业现场,直接暴露公网会有安全风险。
版本对照表
| 协议版本 | 物理层 | 编码方式 | 校验 | 默认特点 |
|---|---|---|---|---|
| Modbus RTU | RS485 RS232 | 二进制 | CRC16 | 最常用,效率高 |
| Modbus ASCII | RS485 RS232 | ASCII 字符 | LRC | 可读性强,传输慢 |
| Modbus TCP | 以太网 | 二进制 | 无 CRC,依靠 TCP 校验 | 端口 502,主站多连接 |
核心数据对象
1 线圈 Coil:位类型,可读写,地址 0xxxx,只有 0 或者 1,一般控制继电器开关
2 离散输入 Discrete Input:位类型,只读,地址 1xxxx,采集外部开关信号
3 保持寄存器 Holding Register:16 位寄存器,可读写,地址 4xxxx,最常用,模拟量、参数、设定值都放在这里
4 输入寄存器 Input Register:16 位寄存器,只读,地址 3xxxx,采集传感器测量值
常用功能码
| 功能码 | 名称 | 作用 |
|---|---|---|
| 01 | 读线圈 | 读取多个线圈状态 |
| 02 | 读离散输入 | 读取多个离散输入 |
| 03 | 读保持寄存器 | 最常用,读取多个保持寄存器 |
| 04 | 读输入寄存器 | 读取多个输入寄存器 |
| 05 | 写单个线圈 | 单独写一个线圈 |
| 06 | 写单个保持寄存器 | 单独写一个寄存器 |
| 15 | 写多个线圈 | 批量写线圈 |
| 16 | 写多个保持寄存器 | 批量写保持寄存器 |
RTU 帧结构
从站地址 + 功能码 + 数据域 + CRC 校验
- 从站地址:1 字节,范围 1~247,0 是广播地址,所有从站接收,但是不回复
- 功能码:1 字节,指定读写操作
- 数据域:包含起始地址、寄存器数量、写入数据等
- CRC16:2 字节,校验帧传输错误
帧与帧之间要求至少 3.5 个字符时间间隔,这是 RTU 识别一帧结束的重要规则,间隔太短容易粘包。
通讯工作原理
主站轮询,主站依次给每个从站发送请求报文,从站收到属于自己地址的报文之后处理,返回应答报文;如果校验错误,从站直接丢弃报文不回应;如果功能码非法或者寄存器地址越界,从站返回异常应答,异常码会把原功能码最高位置 1,附带异常代码,比如非法功能码、非法地址、设备故障。
广播模式主站发送地址 0,所有从站执行写操作,从站不返回应答,适合批量下发控制命令。
Modbus TCP 和 RTU 关键区别
Modbus TCP 去掉 CRC 校验,因为 TCP 本身具备可靠传输,报文前面增加 MBAP 报文头,包含事务标识、协议标识、长度、单元标识,单元标识相当于原来 RTU 的从站地址,支持多个主站同时连接,不再是单主站轮询的严格限制,传输速率比串口 RTU 高很多。
常见故障排查
1 无应答:检查波特率、数据位、停止位、校验位是否一致,从站地址是否正确,接线 A B 是否接反
2 数据乱码:波特率不匹配,或者总线干扰,RS485 需要终端电阻
3 应答异常码:寄存器地址超出设备支持范围,功能码不支持
4 粘包丢包:帧间隔不满足 3.5 字符,或者总线负载过高
综合来说 Modbus 是经典主从工业协议,核心就是四类寄存器 + 功能码读写,现场绝大多数项目优先选择 Modbus RTU,以太网项目选用 Modbus TCP,优点简单通用,缺点无安全机制,只适合工业内网环境。
【常见问题】
问题 1 modbus 通讯协议详解 RTU 和 TCP 怎么选
回答 1 modbus 通讯协议详解,串口长距离现场布线选 Modbus RTU,modbus 通讯协议详解如果是以太网局域网,需要高速通讯就选 Modbus TCP。
问题 2 modbus 通讯协议详解 主站可以多个吗
回答 2 modbus 通讯协议详解,传统 RTU 是单主站轮询,modbus 通讯协议详解 Modbus TCP 支持多主站同时连接。
问题 3 modbus 通讯协议详解 03 功能码作用是什么
回答 3 modbus 通讯协议详解,03 功能码是读取保持寄存器,modbus 通讯协议详解也是工程里面使用频率最高的功能码。
【免责申明】
本文 Modbus 协议属于公开标准科普,不同厂商设备寄存器映射表存在差异,实际调试以设备手册为准,协议本身无加密,公网部署需要额外做安全防护,内容仅供学习参考。


