Modbus RTU工业网关与边缘数据转发 - 第1节

1.1 Modbus协议发展历史

Modbus协议由Modicon公司(现施耐德电气)于1979年发明,最初用于可编程逻辑控制器(PLC)之间的通信。经过四十余年发展,Modbus已成为工业自动化领域应用最广泛的开放式串行通信协议。

时间节点 里程碑事件 技术影响
1979年 Modicon发布Modbus协议 首个公开、免版税的工业串行协议
1990年代 Modbus RTU/ASCII标准化 成为PLC、传感器、执行器标配接口
2002年 施耐德发布Modbus TCP 基于以太网,突破串行速率瓶颈
2007年 Modbus组织正式接管规范 全球标准化维护,生态持续扩展
至今 边缘计算+Modbus融合 云边协同数据采集的基石协议
为什么Modbus能存活40年? 核心原因在于其极简设计:帧结构紧凑、主从逻辑清晰、实现成本低。即使面对OPC UA、MQTT等现代协议,Modbus在传感器级数据采集场景中仍不可替代。

1.2 协议栈结构

Modbus协议栈采用分层模型,但比OSI七层模型精简得多。实际应用中仅涉及物理层、数据链路层和应用层三层。

Modbus协议栈分层结构 应用层(Application Layer) 功能码定义 · 数据模型 · 寄存器映射 数据链路层(Data Link Layer) 地址域 · 功能码 · 数据域 · 校验(CRC/LRC) 物理层(Physical Layer) RS-232 · RS-485 · 以太网(TCP/IP) 应用层定义“做什么”,数据链路层定义“怎么传”,物理层定义“用什么传”
关键理解: Modbus应用层与物理层解耦——同一套功能码和寄存器模型,既可以在RS-485串行线路上运行(RTU/ASCII),也可以在以太网上运行(TCP)。这是Modbus生态扩展性的根本保障。

1.3 主从架构模式

Modbus采用严格的主从(Master/Slave)通信架构,也称为单主站-多从站模式。通信总是由主站发起,从站只能被动响应。

核心规则

  • 唯一主站: 同一总线上只允许一个主站设备,避免总线冲突。
  • 轮询机制: 主站依次向各从站发送请求帧,从站回复响应帧。
  • 地址范围: 从站地址1~247(0为广播地址,所有从站接收但不回复)。
  • 无主动上报: 从站不能主动发送数据,必须等待主站查询。
Modbus主从架构通信模型 主站(Master) PLC / 上位机 / 边缘网关 从站 01 温度传感器 从站 02 压力变送器 从站 03 流量计 RS-485 总线(半双工) · 主站轮询 → 从站应答
工程陷阱: 主从架构中从站数量受总线负载限制。RS-485理论上支持247个节点,但实际工程建议不超过32个,否则信号衰减和响应延迟会显著增加。边缘计算场景中,建议使用网关分组管理。

1.4 三种传输方式对比

Modbus定义了三种传输方式:RTU(远程终端单元)、ASCII(美国信息交换标准码)和TCP(传输控制协议)。RTU和ASCII运行在串行链路上,TCP运行在以太网链路上。

对比维度 Modbus RTU Modbus ASCII Modbus TCP
物理层 RS-232 / RS-485 RS-232 / RS-485 以太网(RJ45)
编码方式 二进制(8位) ASCII字符(16进制) 二进制(TCP报文)
帧间隔 3.5字符静默时间 特定字符(: 开始, CR/LF结束) TCP连接管理
校验方式 CRC-16(2字节) LRC(1字节) TCP/IP协议栈校验
传输效率 高(数据密度大) 低(约RTU的50%) 高(以太网带宽)
典型速率 9600~115200 bps 9600~19200 bps 10/100/1000 Mbps
最大节点数 247(实际≤32) 247(实际≤32) 理论无限制
应用场景 工业现场传感器、PLC 老旧设备、调试阶段 上位机、边缘网关、云平台

帧结构对比

三种方式的帧结构差异体现在起始/结束标识和校验算法上。以下为读取保持寄存器的典型请求帧(功能码0x03):

// Modbus RTU 帧(二进制,共8字节)
[从站地址:1B][功能码:1B][起始地址:2B][寄存器数量:2B][CRC-16:2B]
示例:01 03 00 00 00 0A C0 0C

// Modbus ASCII 帧(ASCII字符,共17字符)
起始符':' + [地址:2][功能码:2][起始地址:4][寄存器数量:4][LRC:2] + 结束符'\r\n'
示例::01030000000AF4\r\n

// Modbus TCP 帧(共12字节,不含数据)
[事务标识:2B][协议标识:2B][长度:2B][单元标识:1B][功能码:1B][起始地址:2B][寄存器数量:2B]
示例:00 01 00 00 00 06 01 03 00 00 00 0A
选型建议:
  • RTU 是工业现场首选——效率高、实现简单、生态最成熟。
  • ASCII 仅用于调试或与老旧ASCII终端兼容的场景,生产环境不推荐。
  • TCP 用于边缘计算转发场景——通过以太网将串行数据汇聚到网关,再转发至MQTT/OPC UA等上层协议。

1.5 本课程技术选型

基于《Modbus数据采集实战:RTU通信与边缘计算转发》的课程目标,我们采用以下技术路线:

  • 串行层: Modbus RTU over RS-485 —— 连接现场传感器与PLC。
  • 边缘层: 使用Python(pymodbus库)实现主站轮询,采集从站数据。
  • 转发层: 将采集数据通过Modbus TCP或MQTT转发至边缘网关或云平台。