COM 信号发送和接收概述

回顾了基于AUTOSAR架构的CAN报文发送和接收的控制流和数据流之后,查找了下与应用层交互的COM层函数Com_SendSignal和Com_ReceiveSignal,稍作扩展,找到了一篇关于COM 层报文/信号的发送和接收文章,在此分享:


本文我们将了解在 COM层发送和接收信号/信号组时需要进行的一些操作。对于内部通信(同一 ECU 内软件组件之间的通信)是由 AUTOSAR中的 RTE 来处理,因此我们在这里不关注,本文我们将关注的是不同 ECU 之间发送和接收报文/信号的整个过程。

1 COM 发送

下图描述了报文/信号的发送。在 COM 层中有三个实体负责触发与发送相关的操作:API Com_SendSignal , Com_SendSignalGroup 以及基于信号的网关(后者可以对发送和接收有发言权)。

在执行这些操作时,将设置信号更新位,进行字节序转换和符号扩展,并在处理后用信号数据填充 I-PDU。中间,可以为属于信号组的信号填充阴影缓冲区。

然后,根据信号发送属性和 I-PDU 发送模式选择或通过 PduR Com_TriggerTransmit的 API 调用,I-PDU 将通过 PduR 通过 API PduR_ComTransmit(触发 I-PDU 标注后)从 COM 发送出去,并遵守 I-PDU MDT(最小延迟时间)监控。

最后,等待 PduR 通过 API Com_TxConfirmation的反馈,并在发送截止日期监控的密切监督下。最后,发送截止时间监控或 ComTxConfirmation 将分别Com_CbkTxTOut或Com_CbkTxAck发送通知。

上述过程如下图所示:

图片

COM 发送过程概述
2 COM 接收

接收由 Com_RxIndication API 调用启动。同时,接收截止时间监控正在运行,如果消息未在预期时间内到达,则可以通过此调用重新启动或触发回调Com_CbkRxTOut。

当收到 I-PDU 时,将调用可选的 I-PDU 标注。然后,对每个信号进行字节序转换和符号处理,检查更新位的值(如果它使用它们并且信号尚未更新,则将其丢弃),并验证它不是已定义的无效信号值(在这种情况下,将进行进一步的操作,包括可能的标注Com_CbkInv触发),这些将根据过滤器配置进行过滤。只有在经过过滤后,才能重置对信号的截止时间监控。

也可以进行标注Com_CbkRxAck,数据也可以跟随到基于信号的传输网关,通过 PDU 路由器再次传输。最后,更新信号值,并更新信号组的阴影缓冲区。当应用程序通过Com_ReceiveSignal 或 Com_ReceiveSignalGroup 使用信号时,将消耗信号值。

上述过程如下图所示:

图片

---------------------------------------------------------------------------------------------------------------------------------

创作不易,欢迎点赞收藏关注。更多文章可关注 “谦益行公众号”。

汽车研发交流群,有兴趣的朋友可添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车行业从业人员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值