第 4 章 · 三种传输模式:PDU 的三件外套


一条主线

同一句"读保持寄存器",在串口上可以穿二进制外套(RTU)或文本外套(ASCII),在以太网上穿的是 MBAP 外套(TCP)。本章跟着小周在同一台设备上分别用三种模式通信的经历走:先看最主流的 RTU——帧怎么切、CRC 怎么算(4.1);再看被它取代的 ASCII 为什么处境尴尬(4.2);最后上以太网,拆开 MBAP 头的七个字节(4.3)。三站下来,"PDU 不变、外套三件"的架构图就完整了。

沿途站点

拐点与结论

本章的认知拐点:RTU 没有帧头帧尾,靠"静默"切帧——3.5 字符的帧间静默与 1.5 字符的帧内上限,是接收方切帧的唯一依据。理解了这一点,就能解释一大类"偶发粘帧/断帧"的物理层故障。第二个拐点是 TCP 的"长度字段切帧":TCP 是字节流没有帧界,必须读 MBAP 的长度字段自己切。串口靠时间切帧、以太网靠长度切帧——两种切帧哲学,是两种传输模式最本质的差异。

读完你应该

  • 手算 Modbus CRC16(0xA001 多项式)并跑通自测向量
  • 解释 3.5/1.5 字符静默间隔的工程意义
  • 拆解 MBAP 七个字节并说出事务号、长度、单元标识的作用
  • 说明串口转 TCP 网关如何桥接两种世界

高频问题速答

问:三种模式怎么选? 新项目一律 RTU(串口)或 TCP(以太网);ASCII 只用于存量老设备,且建议用网关隔离。TCP 与 RTU 之间用网关桥接。

问:RTU 的帧边界怎么来的? 靠时间静默——帧间至少 3.5 字符静默、帧内不超过 1.5 字符。接收方用这个规则切帧,这也是波特率不一致会导致"粘帧乱码"的原因。

问:TCP 为什么也要切帧? TCP 是字节流没有帧界,必须读 MBAP 的长度字段自己切;按 TCP 包边界切帧是客户端最常见的解析错误。

本章知识地图速览

本章的关键认知是"一套 PDU、三种外套":RTU 外套是"地址+CRC16",ASCII 外套是"字符化+LRC",TCP 外套是"MBAP 头"。理解"PDU 与载体解耦",就能理解为什么同一套设备数据在串口与以太网上都能跑、为什么网关转换只需换外套不动数据。

配套练习建议:用串口抓包工具抓一段 RTU 通信,手工按 3.5 字符静默切帧并算 CRC 验证;再用 Wireshark 抓 Modbus TCP,核对 MBAP 长度字段与 PDU 的对应。

下一章的接力

报文与载体都清楚了,下一章下沉到最"硬"的一层——铜线。RS-485 的 A/B 线、终端电阻、屏蔽接地,这些物理层细节决定了你前面学的所有协议知识能不能真正跑起来。

04-3ac5-fig01

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U