AUTOSAR Classic COM 模块详解:从信号到报文的通信中枢
COM(Communication) 是 AUTOSAR Classic 里负责信号层通信的核心模块。它把应用层的信号打包成 I-PDU,也把接收到的 I-PDU 解包成信号,是应用与报文之间的翻译器。
1. COM 的作用
- 信号打包与解包
- 周期、直接、混合发送控制
- 信号过滤、超时监控、通知回调
- 信号组一致性更新
2. COM 在通信栈中的位置
flowchart LR
SWC[应用层 SWC] --> RTE[RTE]
RTE --> COM[COM]
COM --> PDUR[PduR]
PDUR --> CANIF[CanIf]
CANIF --> CAN[CAN Driver]
CAN --> BUS[(CAN Bus)]
3. 工作原理
发送时,SWC 通过 RTE 更新信号,COM 把多个 signal 按位编码进 I-PDU,并按周期/事件/混合模式决定何时发送。接收时,COM 从 I-PDU 中提取 signal 并通知上层。
sequenceDiagram
participant SWC as 应用/SWC
participant COM as COM
participant PduR as PduR
participant CanIf as CanIf
SWC->>COM: Com_SendSignal()
COM->>COM: 更新缓冲区 / 判定触发条件
COM->>PduR: 发送 I-PDU
PduR->>CanIf: CanIf_Transmit()
CanIf-->>PduR: TxConfirmation
PduR-->>COM: 发送完成
4. 典型配置项及作用
| 常见/典型名称 | 作用 |
|---|---|
| ComSignal | 单个信号定义 |
| ComSignalGroup | 信号组定义 |
| ComGroupSignal | 信号组成员 |
| ComIPdu | I-PDU 定义 |
| ComIPduGroup | PDU 组控制 |
| ComTxMode | 发送模式 |
| ComTxModePeriodic | 周期发送 |
| ComTxModeDirect | 直接发送 |
| ComTransferProperty | 传输属性 |
| ComSignalBitPosition | 信号起始位 |
| ComSignalBitSize | 信号长度 |
| ComSignalEndianess | 字节序 |
| ComSignalInitValue | 初始值 |
| ComUpdateBit | 更新位 |
| ComFilter | 接收过滤 |
| ComTimeout | 接收超时监控 |
| ComNotification | 通知回调 |
5. 常见使用场景
- 周期性状态上报
- 事件触发通信
- 多个信号打包进同一帧
- 信号组一致性更新
- 接收超时与降级处理
6. 与 PduR、CanIf 的关系
COM 负责信号内容,PduR 负责 PDU 路由,CanIf 负责把 PDU 送到 CAN 硬件。最典型的发送链路是 COM → PduR → CanIf → CAN Driver。
flowchart TB
SWC[SWC] --> COM[COM: 信号打包/解包]
COM --> PDUR[PduR: PDU 路由]
PDUR --> CANIF[CanIf: CAN 接口适配]
CANIF --> CAN[CAN Driver]
CAN --> BUS[(CAN Bus)]
8. 小结
COM 是 AUTOSAR Classic 中“最贴近应用语义”的通信模块,理解它就理解了信号如何变成报文。