首页 > 动态 > 你问我答 >

问 modbus 通讯协议详解 工业现场总线协议说明

2026-11-09 16:41:17
最佳答案

答

Modbus 是工业自动化领域应用最广的主从式通讯协议,由 Modicon 公司开发,公开免费、结构简单,PLC、变频器、仪表、温控器、传感器大量使用,核心采用主站轮询机制,同一总线里面只有一个主站,主站主动发起请求,从站被动应答,从站不会主动上报数据,协议主要分 Modbus RTU、Modbus ASCII、Modbus TCP 三种主流版本,RTU 用二进制帧,带 CRC 校验,串口 RS485 最常用;ASCII 是可打印字符传输;Modbus TCP 跑在以太网 TCP/IP 之上,端口默认 502。协议把现场设备数据抽象成四类寄存器:线圈、离散输入、保持寄存器、输入寄存器,通过功能码读写这些数据,因为协议简单可靠,成为工控行业通用标准,但是它本身没有加密,也没有身份认证,适合内网工业现场,直接暴露公网会有安全风险。

版本对照表

协议版本物理层编码方式校验默认特点
Modbus RTURS485 RS232二进制CRC16最常用,效率高
Modbus ASCIIRS485 RS232ASCII 字符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 协议属于公开标准科普,不同厂商设备寄存器映射表存在差异,实际调试以设备手册为准,协议本身无加密,公网部署需要额外做安全防护,内容仅供学习参考。