UART Modbus协议与车载从站驱动开发实践 - 第4节

4.1 Modbus 协议族全景

Modbus 由 Modicon(现施耐德电气)于 1979 年发明,是全球最早用于工业现场的总线协议之一。它采用主/从(Master/Slave)架构,物理层支持 RS-232、RS-485、以太网等多种介质。协议栈只定义应用层报文格式,不绑定传输层,因此衍生出三种主要变体:Modbus RTU、Modbus ASCII 和 Modbus TCP。

核心特征: 开放、免授权、帧结构紧凑、实现简单。在嵌入式车载从站中,Modbus 常作为调试诊断接口或低速传感器总线。
Modbus 协议族分层架构 应用层:Modbus 报文(功能码 + 数据域) 表示层:RTU / ASCII / TCP 封装格式 传输层:串行总线(RS-485/RS-232)或 TCP/IP 协议栈 物理层:双绞线 / 同轴电缆 / 以太网 PHY

4.2 Modbus RTU / ASCII / TCP 区别

三种变体在帧格式、编码方式、校验机制和传输载体上存在本质差异。下表从嵌入式驱动开发最关心的维度进行对比:

对比维度 Modbus RTU Modbus ASCII Modbus TCP
编码方式 二进制(每个字节 8 位) ASCII 十六进制字符(每个字节 2 个字符) 二进制(以太网帧内嵌)
帧起始/结束 3.5 字符静默时间 + CRC16 以 : 起始,CR/LF 结束 TCP 连接 + MBAP 头长度字段
校验方式 CRC16(循环冗余校验) LRC(纵向冗余校验) TCP/IP 协议栈校验 + 可选 CRC
数据密度 高(无冗余字符) 低(约 2 倍冗余) 高(仅增加 MBAP 头 7 字节)
典型波特率 9600 ~ 115200 bps 9600 ~ 19200 bps 10/100 Mbps 以太网
适用硬件 RS-485 / RS-232 RS-485 / RS-232 以太网 PHY + MAC
实时性 高(帧短、无字符转换) 低(字符转换耗时) 中(依赖网络延迟)

4.2.1 帧结构对比

三种变体的应用层 PDU(协议数据单元)完全一致,区别在于封装方式:

// Modbus RTU 帧(无帧头帧尾标记,靠时间间隔识别)
[从站地址 1B] [功能码 1B] [数据 N B] [CRC16 低字节] [CRC16 高字节]

// Modbus ASCII 帧(可读性强,适合调试)
':' [从站地址 2字符] [功能码 2字符] [数据 2N字符] [LRC 2字符] CR LF

// Modbus TCP 帧(去掉 CRC,增加 MBAP 头)
[事务标识 2B] [协议标识 2B] [长度 2B] [从站地址 1B] [功能码 1B] [数据 N B]
开发建议: 在车载 UART 从站中优先选择 Modbus RTU。原因:二进制帧效率高,CRC16 校验强度足够,且 RS-485 差分信号抗干扰能力强,适合车载电气环境。

4.3 Modbus 在工业与车载中的适用性

4.3.1 工业场景:成熟且广泛

  • PLC 与 DCS 互联: 几乎所有工业控制器原生支持 Modbus RTU/TCP。
  • 传感器与执行器: 温湿度变送器、变频器、智能电表等大量采用 Modbus RTU 接口。
  • SCADA 系统: 通过 Modbus TCP 汇聚现场数据,实现远程监控。
  • 优势: 成本低、兼容性好、工具链成熟(Modbus Poll / Slave 等)。

4.3.2 车载场景:特定领域补充

车载网络以 CAN/CAN FD 为主,但 Modbus 在以下细分领域具有独特价值:

车载子系统 Modbus 适用性 典型用途
BMS(电池管理系统) 中 单体电压/温度采集从站(低速巡检)
VCU(整车控制器) 低 调试诊断接口(UART 转 RS-485)
车载充电机(OBC) 高 与充电桩通信(部分国标参考 Modbus)
热管理系统(TMS) 中 水泵/风扇/阀门的开关与调速
ADAS 传感器 低 仅用于固件升级或参数标定
车载使用限制: Modbus 不支持多主站、无事件触发机制、实时性低于 CAN(尤其在高负载时)。在车载安全关键系统(如制动、转向)中严禁使用 Modbus 替代 CAN/CAN FD。

4.3.3 适用性决策树

以下决策图帮助开发者在车载项目中快速判断是否选用 Modbus:

车载 Modbus 适用性决策树 是否需要 Modbus? 安全关键(制动/转向/气囊)→ 禁止使用 实时性要求 < 10ms → 考虑 CAN/CAN FD 低速巡检/调试/标定 → 推荐 Modbus RTU 已有 UART 空闲引脚 + RS-485 收发器 → 实施

4.4 本章小结

  • Modbus 协议族包含 RTU(二进制、高效)、ASCII(可读、低效)、TCP(以太网、灵活)三种主流变体。
  • 车载从站驱动开发首选 Modbus RTU over RS-485,兼顾效率与抗干扰。
  • Modbus 在车载中适用于 非安全关键 的低速数据采集、调试诊断和标定场景。
  • 理解帧结构差异是后续实现 UART 驱动解析引擎的基础。