跳至内容

【autosar】Classic COM 模块详解

AUTOSAR Classic COM 模块详解:作用、工作原理、典型配置项,以及与 PduR、CanIf 的关系。

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 中“最贴近应用语义”的通信模块,理解它就理解了信号如何变成报文。

发送评论