2. Modbus RTU 与 TCP/IP 对比

在厂务监控系统中,Modbus RTU 和 Modbus TCP/IP 是最主流的两种通信变体。虽然它们共享相同的应用层数据模型,但在物理层、帧结构、传输效率和适用场景上存在本质差异。理解这些差异是正确设计从站设备地址映射和调试通信链路的前提。

核心认知:RTU 是“串行总线上的二进制帧”,TCP 是“以太网上的封装帧”。两者不能直接互联,必须通过网关进行协议转换。

2.1 帧格式对比

Modbus RTU 和 TCP 的帧结构差异集中在地址域、校验方式和长度字段上。下表列出了两种帧格式的详细对比:

字段 Modbus RTU Modbus TCP/IP
起始标识 3.5 字符静默时间 无(以太网帧自带前导码)
地址域 1 字节(从站 ID:1~247) 无(由 IP 寻址替代)
功能码 1 字节 1 字节
数据域 N 字节(最大 253 字节) N 字节(最大 260 字节)
校验 CRC-16(2 字节,低字节在前) 无(依赖 TCP 传输层校验)
报文头 无 MBAP 头(7 字节)
结束标识 3.5 字符静默时间 无(TCP 流结束标记)
关键差异:RTU 的从站地址是帧内显式字段,TCP 的从站地址被 MBAP 头中的单元标识符(Unit ID)替代,且 TCP 帧不包含 CRC,因为 TCP/IP 协议栈已保证数据完整性。

下图展示了两种帧格式的字节级结构对比:

Modbus RTU 与 TCP 帧结构对比 RTU 帧: 静默 地址 功能码 数据域 (N 字节) CRC-16 静默 TCP 帧: MBAP 头 功能码 数据域 (N 字节) MBAP 头 (7 字节) 展开: 事务 ID 协议 ID 长度 单元 ID 事务 ID:请求/响应配对 协议 ID:固定为 0x0000 长度:后续字节数

2.2 传输效率对比

传输效率取决于帧开销、波特率(RTU)或网络带宽(TCP)。以下是基于典型配置的效率分析:

指标 Modbus RTU (RS-485, 115200 bps) Modbus TCP (100 Mbps 以太网)
帧开销 4 字节(地址 + 功能码 + CRC) 7 字节(MBAP 头)
最大数据负载 253 字节 260 字节
单帧传输时间 约 2.2 ms(读取 10 个寄存器) 约 0.1 ms(读取 10 个寄存器)
总线利用率 约 60%~70%(含帧间隔) 约 90%+(无帧间隔)
多从站轮询周期 线性增加(每增加 1 个从站 + 2.2 ms) 并发处理(几乎不增加)
效率陷阱:RTU 的 3.5 字符帧间隔在高速率下(如 115200 bps)仅约 0.3 ms,但在低速率(如 9600 bps)下可达 3.6 ms,严重降低总线利用率。厂务系统中,若从站数量超过 20 个,建议优先考虑 TCP 或提高 RTU 波特率。

2.3 适用场景

根据厂务系统的实际需求,选择 RTU 或 TCP 的决策树如下:

Modbus RTU vs TCP 选型决策 厂务通信需求 RTU 适用场景 • 距离 > 100m(RS-485 可达 1200m) • 从站数量 ≤ 32 个 • 现场电磁环境恶劣(差分信号抗干扰) • 成本敏感(无需交换机/网线) • 老旧设备升级(已有 RS-485 布线) TCP 适用场景 • 从站数量 > 32 个 • 需要高速轮询(< 10ms 周期) • 已有以太网基础设施 • 需要跨网段/远程访问 • 与上位机/SCADA 集成方便

2.4 网关转换原理

当厂务系统中同时存在 RTU 和 TCP 设备时,必须使用 Modbus 网关进行协议转换。网关的核心功能是“帧格式剥离与重组”。

转换过程分为以下步骤:

  1. TCP 接收:网关从以太网接收 TCP 帧,解析 MBAP 头,提取单元标识符(Unit ID)和 PDU(功能码 + 数据)。
  2. 地址映射:将 Unit ID 映射为 RTU 从站地址(1~247),同时将 MBAP 头中的事务 ID 存入内部缓存用于响应匹配。
  3. RTU 封装:在 PDU 前添加从站地址,后附加 CRC-16 校验,并插入 3.5 字符帧间隔。
  4. 串行发送:通过 RS-485 总线发送 RTU 帧,等待从站响应。
  5. 反向转换:收到 RTU 响应后,验证 CRC,剥离地址,添加 MBAP 头(复用缓存的事务 ID),通过 TCP 回传。
网关关键参数:响应超时(通常 100~1000 ms)、从站地址表(静态或动态映射)、串口波特率/校验位/停止位必须与 RTU 从站一致。

下图展示了网关的内部转换架构:

Modbus 网关协议转换架构 TCP 客户端 (SCADA / 上位机) TCP 帧 Modbus 网关 MBAP ↔ 地址 + CRC 转换 RTU 帧 RTU 从站 (现场仪表 / PLC) 网关内部处理模块 1. TCP 帧解析 → 提取 Unit ID + PDU 2. Unit ID → 从站地址映射表 3. CRC-16 计算与附加 4. 串口发送与响应超时管理
实战建议:在厂务项目中,推荐使用支持“透明传输”模式的网关,该模式下网关不修改 PDU 内容,仅做帧格式转换,避免因功能码或数据格式不兼容导致的通信失败。调试时,先用串口助手验证 RTU 侧通信,再用 TCP 调试工具验证网关转换后的 TCP 帧。