AUTOSAR COM(主要功能描述)

AUTOSAR COM主要功能描述

  • 一、COM模块的主要功能:
  • 二、AUTOSAR COM模块的发送交互模型及详解
  • 三、AUTOSAR COM模块的接收交互模型及详解
  • 四、常见疑问
    • 信号(信号组)超时和报文超时到底有何区别

传送门---->点击返回-AUTOSAR配置与实践—总目录

一、COM模块的主要功能:

 为上层提供信号接口(无符号/有符号)
 I-PDUs 中信号的打包和解包
 处理传输模式
 I-PDUs 间传输最小间隔
 I-PDU组的通信控制
 接收的deadline监控
 发送的deadline监控
 通知的机制
 对初始值的支持
 信号网关
 I-PDUs 中信号的打包和解包

二、AUTOSAR COM模块的发送交互模型及详解

AUTOSAR COM(主要功能描述)_第1张图片1. SWC 调用 RTE 提供的 Com_SendSignal、Com_SendSignalGroup 接口
2. COM层Com_SendSignal函数会检查信号是否配置了开启更新位(UB)

UB使用限制
-》如果是PDUR层分步多次调用Com_TriggerTransmit的场景,(正常每个PDU只会被COM层置位1次,为了避免出现PDU被多次设置Update
bit的情况,需要在PDUR触发调用时清UB.)
-》ComTxModeNumberOfRepetitions 和 UB 不可同时配置
(ComTxModeNumberOfRepetitions表示重发次数,COM每发一次会触发多次报文发送,从而多次设置Update
bit,每个PDU预期只会被COM层置位1次)
详解如下:
2.1 制作dbc文件
为了事先识别出 User 没有过更新 Signal 或者 Signal Group ,可以指定 Update Bit 。为对应的信号/信号组指定update bit. 注意按照autosar对Update Bit的定义,IPUD中信号/信号组对update
bit 一一对应,不可多对一,否则无法进行Update Bit配置。
2.2 配置Update Bit(UB)
可以根据参数 “ComUpdateBitPosition” 为每个Signal 和 SignalGroup都设定一个Update Bit,配置在Signal 或者 SignalGroup的
AUTOSAR COM(主要功能描述)_第2张图片
【图】signal的update bit position配置

2.3 .选择清Update Bit 时机
根据AUTOSAR COM文档《3.1.20 Signal Status Information》章节描述,清的时机可以选择在PduR_Transmit(Com层调用)/Com_TriggerTransmit(PDUR层调用)/Confirmation几个场景
Transmit——当调用接口PduR_ComTransmit发送数据并且返回E_OK时;
Confirmation——当调用接口PduR_ComTransmit发送数据并且返回E_OK,而且最终收到发送确认(Com_txConfirmation)时;
TriggerTransmit——当I-PDU数据被Com_TriggerTransmit请求发送时;
AUTOSAR COM(主要功能描述)_第3张图片
【图】COM文档描述Update Bit配置项
AUTOSAR COM(主要功能描述)_第4张图片
【图】COM文档描述Update Bit配置项
2.4 COM层填充Update bit
【COM层机制自动填充】.SWC模块调用Com_SendSignal后,COM层自动填充Update bit**,Update Bit 包含在 I-PDU 的 buffer 中,并且和 I-PDU 中的 Signal 和 SignalGroup 一起发送到 PDUR
去。

3.无效数据的发送

【应用场景】
COM模块提供信号无效的功能,用来表明发送方还未准备好相关信号,例如采集传感器的信号还未处理完成或返回失败的情况下,信号要发送无效值。无效值由配置参数ComSignalDataInvalidValue决定。

—》通过调用Com_InvalidateSignal接口,Com模块内部会自动调用Com_SendSignal接口并传入参数ComSignalDataInvalidValue。

—》信号的ComTransferProperty和报文的传输模式决定ComSignalDataInvalidValue在总线上的发送行为模式,ComSignalDataInvalidValue用作滤波和TMS判断的当前值。

—》对于组信号,通过调用Com_InvalidateSignalGroup接口,可以将组内所有信号分别设置为它们对应的ComSignalDataInvalidValue值,而后会触发Com_SendSignalGroup。

  1. 把信号转换字节序(CPU序到总线网络序)
  2. 拷贝到 PDU 中
  3. Signal Transfer Properties:如果该信号的发送属性为 Trigger,他期待立即发送,那么就会触发信号所在 PDU 的发送。
  4. Transmission Mode Selection:触发发送时,使用该信号的值作为输入,根据 Filter 算法,算出一个结果,True 或者 False,True 就会使用该 I-PDU 的 TxModeTrue 发送模式,否则使用 TxModeFalse 发送模式(我们可以为 I-PDU 事先配置两个发送模式,即 TxModeTrue 和 TxModeFalse,加上 Filter 我们就实现了对不同的信号值可以选择不同的发送模式的功能)
  5. PduR_ComTransmit + Transmission Deadline Monitoring:如果触发发送,就会开启 TxDM,TxDM 在接收到发送确认时就会取消,否则超时就表明没有成功发送出去,就会引起对上层的通知,这个通知是提前配置好的接口,我们直接调用即可。

—》如果I-PDU的发送超时监控是第一次启动,那么超时值会用ComFirstTimeout值,否则使用ComTimeout值。
—》在超时监控期间若收到I-PDU的发送确认,会取消所有相关信号/信号组的超时计时器,否则,COM模块会调用ComTimeoutNotifications来通知RTE。
AUTOSAR COM(主要功能描述)_第5张图片
Tx IPDU的timeout监控

  1. Minimum Delay Time + Notification:如果成功发送,就会设置 MDT,表示该报文在接下来 MDT 时间内,不可以再发送。并调用提前配置的通知接口,进行通知。
  2. MainFunctionTx:如果没有触发直接发送,触发了混合或者周期发送,或者触发了直接发送但是还需要重复(repetition)再发几次,那么这些发送会在 MainFunctionTx 中处理,只要发送,就还会涉及到上述步骤2到步骤8。

三、AUTOSAR COM模块的接收交互模型及详解

AUTOSAR COM(主要功能描述)_第6张图片
Step详述

1.PduR 调用 RxIndication 传入 PduId 转发来自 CanIf 或者 CanTP 的 PDU 包,拷贝到 Com
2. 重置 PDU 的 Rx DM
3. 通过则逐个检查 PDU 中的信号,每个信号都会经历下面 【4 - 8】
4. 检查更新位,如果配置了更新位,且未设置,则丢弃 PDU

4.1 制作相同layout的 DBC (任意相同信号接收端要和发送端Update Bit位要相同)
4.2 (COM层机制,无需用户操作) COM层判断 Update Bit未有配置但无具体填充,则丢弃
COM文档《3.1.20 Signal Status Information》
图:COM文档 Chapter “3.1.20 Signal Status Information” 描述

5.对信号执行字节序转换以及符号扩展
6. 无效数据接收处理

–》检查信号是否为提前配置好的无效数据,会有配置好的动作,NOTIFY 或者 REPLACE,顾名思义,前者为通知,后者为替换数据为指定数据
–》对于信号/信号组来说,如果ComDataInvalidAction配置为NOTIFY,ComInvalidNotification配置了相应的Callback接口,那么当接收到ComSignalDataInvalidValue值时会调用Callback接口通知上层,这种情况下信号/信号组的后续处理(如滤波处理、正常的信号通知)不会进行。
–》而如果ComDataInvalidAction配置为REPLACE,那么当接收到ComSignalDataInvalidValue值时COM模块会用ComSignalInitValue值赋给信号,信号/信号组的后续处理照常进行。
AUTOSAR COM(主要功能描述)_第7张图片
图:com接收信号数据有效性配置

7.接收过滤,有几种过滤算法,关于过滤算法, 参考《AUTOSAR ComStack 各层信号过滤总结》
8. 通过则重置对信号的 Rx DM
9. 从 COM PDU 拷贝到对应的 Signal 的区域
10. Com 根据 PDU 的处理方式 IMMEDIATE,则为 PDU 立即执行通知,调用提前配置好的通知函数,通知 RTE(中断);DEFERRED,则设置标志位,下次 MainfunctionRx 会检查 PDU 标志位,如果设置了标志位,会进行通知(轮询)。

AUTOSAR COM(主要功能描述)_第8张图片
COM信号接收检测方式—轮询 or 中断
指定超时时间的参数含ComFirstTimeout和ComRxDataTimeoutAction:
–》ComFirstTimeout指定首次超时时间,ComTimeout指定正常的超时时间,
AUTOSAR标准《TechnicalReference_Com.pdf》3.1.17这样描述
The start of the timeout monitoring can be deferred by using the first timeout time to avoid
timeout events in the startup time of a network.
If no first timeout time is configured, the deadline monitoring is not started until the first
reception of the Rx I-PDU or a set update-bit. After the first reception, the normal timeout
time is monitored.
理解为ComFirstTimeout是避免启动阶段耗时过久(可能对手件启动需要时间)产生误报超时用的,
ComFirstTimeout可以延长timeout时间,而更进一步的设置是ComFirstTimeout没有配置或为0,理解为
若从来没有收到信号,则启动超时监控,只有至少收到一次报文后,才启动超时监控。
–》 对于带有Update-bit的信号/信号组需要进行单独的超时监控,若不带Update-bit则是对整个报文的监控,
–》通过ComRxDataTimeoutAction参数可以指定超时发生时对信号/信号组值进行何种处理:

AUTOSAR COM(主要功能描述)_第9张图片

11.回到 【3】,直到遍历完所有信号

四、常见疑问

信号(信号组)超时和报文超时到底有何区别

1.应用场景不通:信号超时关注的是某个特定信号是否被发送端定期更新重设,信号超时的定义更为严格,要求信号定期更新(即便值是相同的值也要要求发送端应用重新设置),主要是避免发送端出现异常,如周期报文发送端应用异常,从而不重设信号值,而此时数据可能判断无意义的数据。而报文超时只关注报文是否在CAN上定期收到,只要定期收到了报文即可,即便发送端应用没有重设报文中的任何值
2.配置方式不同
信号超时要求配置每个对应信号的UB(update bit),必须单个信号被重设且收到,才认为收到改信号。 而报文超时值需要配置报文内部某个信号的timeoutnotification即可,报文内任意一个信号收到,则认为报文收到。
3.两者流程和配置方式详细可见如上《发送接收交互》流程中的"更新位(update bit)"步骤

传送门---->点击返回-AUTOSAR配置与实践—总目录

你可能感兴趣的:(AutoSAR配置和实践,单片机,mcu)