一、传输模式(何时发送)
传输模式表示何时发送一个I-PDU(报文),这是最核心的模式,定义了I-PDU的发送触发机制。每个I-PDU必须配置一种传输模式。
|
传输模式 |
触发条件 |
典型应用 |
关键配置参数 |
|
DIRECT (直接) |
上层调用Com_SendSignal()后,在下一个Com_MainFunctionTx()中立即发送。 |
事件型信号,如车门开关、按钮按下。 |
ComTxModeTimePeriod (通常设为0,表示无周期) |
|
PERIODIC (周期) |
在Com_MainFunctionTx()中,按照固定周期定时发送。 |
心跳报文、周期状态报文。 |
ComTxModeTimePeriod (周期时间) |
|
MIXED (混合) |
结合了DIRECT和PERIODIC。既有周期发送的基准,又允许事件触发额外发送。 |
周期发送,但信号变化时需立即通知。如车速信号。 |
ComTxModeTimePeriod (周期), ComIPduMinDelayTime (事件触发后的最小间隔) |
|
NONE (无) |
COM永远不会主动发送。通常用于由下层调度表(如LIN Schedule Table)触发的发送。 |
LIN从节点报文、由其他模块(如XCP)直接控制发送的报文。 |
无 |
以下为周期和直接传输模式示意图:


二、信号处理模式(在何处处理)
这个模式决定了当收到或发送一个I-PDU时,其包含的信号更新和相关的通知函数(如Com_RxIndication)在何时被调用。每个I-PDU独立配置。
|
处理模式 |
处理上下文 |
特点 |
适用场景 |
|
IMMEDIATE (立即) |
在中断/回调上下文中处理。例如,在Com_RxIndication()或Com_TxConfirmation()函数内部立刻调用通知。 |
延迟极低,实时性强。但不能在中断中执行复杂操作。 |
对实时性要求极高的信号,如安全相关的信号。 |
|
DEFERRED (延迟) |
在任务级上下文中处理。例如,在下一个Com_MainFunctionRx()或Com_MainFunctionTx()循环中才调用通知。 |
延迟较高,但执行时间可控,适合复杂处理。 |
大多数普通信号,处理逻辑可能较复杂或需要访问共享资源。 |
三、传输模式选择器(Transmission Mode Selector)(用哪套参数发)
这是COM的一个高级功能,允许一个I-PDU拥有两套完整的传输模式配置(例如,一套ComTxModeTrue,一套ComTxModeFalse),并通过信号过滤器在运行时动态切换。
- 原理:为I-PDU中的信号配置过滤器。当任何一个信号的过滤器评估为TRUE时,I-PDU使用ComTxModeTrue(例如,周期100ms)发送;当所有信号的过滤器都为FALSE时,使用ComTxModeFalse(例如,周期1000ms)发送。
- 切换触发:调用Com_SendSignal()更新信号值时,会触发过滤器重评估,可能导致传输模式切换。
- 手动切换:也可以通过Com_SwitchIpduTxMode() API强制切换。
- 应用:实现多速率发送。例如,正常情况下慢速发送,当某个条件满足(如故障发生)时,切换到快速发送。
支持的信号过滤器如下:

四、传输截止时间监控模式
传输截止时间监控 是一种故障检测机制,用于监控从COM发出发送请求到收到底层发送确认之间的时间。如果这个时间超过了配置的超时时间(ComTimeout),COM会认为底层通信链路或模块(如PduR, CanIf, Can Driver)出现故障,并触发超时处理(如调用超时通知函数)。
传输截止时间监控有两种模式:Normal Mode 和 None Mode。模式的选择不是由配置开关决定,而是由I-PDU的传输模式配置隐式决定的。
以下为两种模式的对比:
|
特性 |
Normal Mode |
None Mode |
|
触发条件 |
I-PDU传输模式为 DIRECT/PERIODIC/MIXED
|
I-PDU两个传输模式均为 NONE
|
|
监控起点 |
COM发起发送请求时 |
I-PDU Group启动时,或收到Com_TriggerIPduSend()时
|
|
监控终点 |
收到对应 Com_TxConfirmation() |
收到对应 Com_TxConfirmation() |
|
监控内容 |
请求->确认的耗时 |
确认->确认的间隔 |
|
计时器行为 |
请求时启动,确认时停止 |
Group启动时启动,确认时重置,Group停止时停止 |
|
典型应用 |
ECU主动发送的报文(CAN, FlexRay) |
由调度触发的报文(LIN从节点) |
|
故障指向 |
本ECU的发送路径故障(Driver, 控制器硬件) |
总线通信中断或主节点故障(对于LIN从节点) |