AutoSAR的UB位
作用
在AUTOSAR(汽车开放系统架构)中,UB位(Update Bit)起着非常关键的作用。它主要用于指示某个信号或信号组的数据是否已被更新。以下是UB位的几个主要功能和应用情景:
-
信号更新指示:UB位用于指示发送端(Sender)是否已更新信号或信号组的数据。如果发送端的数据有更新,COM层会自动将相应的UB位设置为1,反之则复位为0。
-
接收端处理:接收端在收到数据后,可以通过检查UB位来确定是否需要处理新接收到的数据。只有当UB位被设置为1时,接收端才会进一步处理该信号或信号组,包括过滤、通知、信号路由、字节序转换等操作。如果UB位没有被设置,接收端可以选择使用该信号的上次值或初始值。
-
通信优化:通过UB位,接收端可以更好地进行算法处理,例如,如果一个消息的发送周期为10ms,而其中的某个信号的更新周期为30ms,接收端可以通过检查UB位来确定发送端是否更新了该信号的值,从而做出相应的处理1。
-
通信矩阵处理:在某些情况下,通信矩阵中的信号会引入额外的UB位来处理特定的通信场景。例如,节点B在接收到特定数据后,还需要额外判断该数据的UB位是否被设置,以确定如何处理该数据3。
-
信号或信号组的接收端识别:UB位帮助信号或信号组的接收端识别发送端是否在发送前更新了数据,这通过AUTOSAR的COM模块实现,它表征的是发送端在通过I-PDU传递给PDUR前,信号是否更新4。
通过以上的解释,可以看出UB位在AUTOSAR通信中起到了非常重要的作用,它帮助系统优化通信过程,确保数据的准确性和实时性。
原理
为了使信号/信号组的接收器能够在发送之前识别发送器是否已经更新了该信号/信号群中的数据,AUTOSAR COM模块支持更新位。
更新比特指示在包含该信号的I-PDU被发送到PDU路由器之前,发送器侧的用户(例如RTE或SwCluC)是否已经更新了信号值。
实现
发送时,SWC通过Rte_Write_xxxx更新信号,Rte_Write_xxxx调用Com_SendSignal/Com_SendSignalGroup时,对UB位进行更新。
接收时,
注意:这里参考https://zhuanlan.zhihu.com/p/540155789
官方图:https://www.autosar.org/fileadmin/standards/R22-11/CP/AUTOSAR_SWS_COM.pdf
原文
官方原文地址:AUTOSAR_SWS_COM.pdf
7.9 更新位
为了使信号/信号组的接收器能够在发送之前识别发送器是否已经更新了该信号/信号群中的数据,AUTOSAR COM模块支持更新位。
更新位指示在包含该信号的I-PDU被发送到PDU路由器之前,发送器侧的用户(例如RTE或SwCluC)是否已经更新了信号值。
如果在ComTxMode-NumberOfRepetitions大于或等于1的情况下使用传输模式DIRECT,则不允许更新位(请参见SWS_Com_00310)。
通过在发送方和接收方的配置,可以为每个信号单独添加和/或为每个信号组单独添加最多一个更新位。
更新位的位置可通过配置参数ComUpdateBitPosition(ECUC_Com_00257)来配置。ComUpdateBitPosition包含在配置容器ComSignal中。因此,确保了信号/信号组和相应的更新位始终是同一I-PDU的一部分。
[SWS_Com_00055] AUTOSAR COM模块应仅在内部处理更新位,而不是作为信号或信号组的一部分。⌋(SRS_Com_02030)
AUTOSAR软件组件无法直接看到或访问更新位。
[SWS_Com_00059] AUTOSAR COM模块应解释表7中定义的更新位。(SRS_BSW_00101, SRS_Com_02030)
7.9.1 发送方
更新位的初始化由SWS_Com_00117定义。
[SWS_Com_00061] 如果用户(例如RTE或SwCluC)通过调用Com_SendSignal来更新信号的值,AUTOSAR COM模块应设置该信号的更新位。(SRS_Com_02030)
[SWS_Com_00801] 如果用户(例如RTE或SwCluC)通过调用Com_SendSignalGroup来更新信号组,AUTOSAR COM模块应设置该信号组的更新位。(SRS_Com_02030)
[SWS_Com_00062] 如果I-PDU的参数ComTxIPduClearUpdateBit配置为Transmit,则AUTOSAR COM模块应在该I-PDU通过PduR_ComTransmit发出且PduR_CompTransmit返回E_OK后清除所有包含信号和信号组的所有更新位。(SRS_Com_02030)
[SWS_Com_00577] 如果I-PDU的参数ComTxIPduClearUpdateBit配置为Confirmation,则AUTOSAR COM模块应在该I-PDU通过PduR_ComTransmit发出后清除所有包含的信号和信号组的所有更新位,PduR_CompTransmit返回E_OK并且I-PDU被成功确认。(SRS_Com_02030)
[SWS_Com_00578] 如果I-PDU的参数ComTxIPduClearUpdateBit配置为TriggerTransmit,则在Com_TriggerTransmit成功请求该I-PDU的内容后,AUTOSAR COM模块应清除所有包含信号和信号组的所有更新位。(SRS_Com_02030)
7.9.2 接收器侧
[SWS_Com_00324] 如果接收到带有附加更新位的信号或信号组,AUTOSAR COM模块应仅处理该信号,即,如果设置了信号的更新位,则滤波器、通知、基于信号的网关、字节交换。(SRS_Com_02030)
[SWS_Com_00802] 如果接收到带有附加更新位的信号或信号组,且未设置更新位,AUTOSAR COM模块应丢弃该信号。(SRS_Com_02030)
如果信号尚未更新,则信号将不会通过信号网关进行路由。它只会被丢弃。
如果用户(例如RTE或SwCluC)读取到具有相关清除更新位的信号,则返回初始值或最后接收到的值。
[SWS_Com_00067] 如果信号附有更新位,并且设置了最新位的值,AUTOSAR Com模块应将信号/信号组解释为已更新。(SRS_Com_02030)
有关接收截止日期监控对具有更新位的信号的行为,请参见第7.3.6.1章。