【Autosar COM基本概念】

1.COM相关术语理解

IPDU 简单理解就是一帧报文
IPDU Group:一些报文的集合
同一个PDU group内的所有PDU的方向需保持一致,且一个
PDU可以同时属于多个PDU group。同时,PDU group内可允许嵌套一层PDU
group。
bswm会控制每个group的收发
Signal:消息数据的最小单位
Signal Group:一些signal集合

2.Com模块可支持的信号类型

1、BOOLEAN
2、FLOAT32
3、FLOAT64
4、SINT16
5、SINT32
6、SINT64
7、SINT8
8、UINT16
9、UINT32
10、UINT8
11、UINT8_DYN
12、UINT8_N

3.支持字节序转换

4.信号的UpdateBit

发送端
Update bit用来指示signal发送到PduR之前,其数据是否被更新,以供接收端识别。每个signal / signal group最多只有1个update-bits,
当接口Com_SendSignal或Com_SendSignalGroup被调用时,Com模块将设置signal(group)对应的update-bits;而何时清除update bit取决于配置项
发送端UpdateBit 的清除方式如下:
1、Confirmation:在Com 模块调用PduR 提供的I-Pdu 发送服务接口函数PduR_ComTransmit 时,且收到发送完成确认(Com_TxConfirmation)后进行清除。
2、Transmit:在Com 模块调用PduR 提供的I-Pdu 发送服务接口函数PduR_ComTransmit 时,且发送成功后进行清除。
3、TriggerTransmit:PduR 模块调用Com 提供的回调函数Com_TriggerTransmit,在调用成功后进行清除。
值得注意的是,清除方式选择的最小单位是IPDU,也就是一个IPDU上面的所有信号和信号组的只能有一种UB清除方式,说白了,这个属性是在IPDU里面配置的,并不在signal里面配置
接收端
信号接收端处理策略:
如果接收到的signal(group)没有配置update bit或配有update bit且update bit被设置,则Com模块将接收该signal (group ),并进行后续的解析、滤波等处理。
否则,Com模块认为该signal(group)没有被更新,不再进行后续的处理。
信号组接收端处理策略:
只要有1个组内信号不满足长度、update bit以及过滤条件的中任意一项检查,整个信号组都将被丢弃。
符合条件的信号组数据被存在各个组内信号的缓存中,可通过Com_ReceiveSignal依次读取。

5.transmission mode和transfer property

transmission mode是PDU的属性,对应ComTxMode
transfer property是signal的属性对应ComTransferProperty

● DIRECT:通过发送“TRIGGERED”transfer property的信号来显式地启动发送。
● PERIODIC:按照预先设定的周期重复发送I-PDU。
● MIXED:以上两种混合。
● NONE:不主动发送。

每个PDU可以配置其中的2种发送模式,发送时具体选择哪种模式由该PDU所包含所有signal的过滤条件评估结果来决定。如果至少有1个signal的过滤条件评估为True,发送模式将选择ComTxModeTrue节点下的ComTxModeMode;如果所有signal的过滤条
件都评估为False,发送模式将选择ComTxModeFalse节点下的ComTxModeMode。实际的发送效果不仅取决于PDU的发送模式,还与signal的transfer property有关。signal的transfer property有如下几种:
● PENDING:对该信号的写访问不会触发对应I-PDU的发送。
● TRIGGERED:根据transmission mode不同,对该信号的写访问可以触发相应IPDU的发送。
● TRIGGERED_WITHOUT_REPETITION:根据transmission mode不同,对该信号的写访问可以触发一次相应I-PDU的发送,无需重复。
● TRIGGERED_ON_CHANGE:根据transmission mode不同,当写入信号的值或者长度与本地存储值不同时,可以触发相应I-PDU的发送。
● TRIGGERED_ON_CHANGE_WITHOUT_REPETITION:根据transmission mode不同,当写入信号的值或者长度与本地存储值不同时,可以触发一次相应I-PDU的发送,无需重复。
发送效果与PDU的发送模式以及signal的transfer property之间的关系可总结如下:

发送属性DIRECTPERIODICMIXED NONE
PENDING-周期发送周期发送
TRIGGERED发送1+ComTxModeNumberOfRepetitions次周期发送周期+触发发送
TRIGGERED_WITHOUT_REPETITION发送1次周期发送周期+触发发送
TRIGGERED_ON_CHANGE此次写入数据与上次不同时,发送“1 +ComTxModeNumberOfRepetitions ”次周期发送周期 + 触发发送-
TRIGGERED_ON_CHANGE_WITHOUT_REPETITION此次写入数据与上次不同时,发送1次周期发送周期+触发发送-
“-” 表示不发送。
PDU的发送模式会在每次更新signal(如调用Com_SendSignal)时重新进行选择,或通过接口Com_SwitchIpduTxMode来直接指定当前的发送模式。
“PERIODIC”模式下,PDU按照配置的周期发送,在此期间调用Com_SendSignal只会更新PDU的内容,而不会触发PDU的立即发送。
两种发送模式均配置为“NONE”的场景,通常发生在底层总线(如LIN)通过TriggerTransmit的方式请求PDU数据的情况。

6.过滤

Algorithm ReferenceAlgorithmDescription
ALWAYSTrue不进行滤波,允许所有的信号通过
NEVERFalse移除所有的信号
MASKED_NEW_EQUALS_X(new_value&mask) == x允许掩码等于X的信号通过
MASKED_NEW_DIFFERS_X(new_value&mask) != x允许掩码不等于X的信号通过
MASKED_NEW_DIFFERS_MASKED_OLD(new_value&mask) !=(old_value&mask)允许掩码发生变化的信号通过
NEW_IS_WITHINmin <= new_value <=max允许取值在预定义边界内的信号通过
NEW_IS_OUTSIDE(min > new_value) OR(new_value > max)允许取值在预定义边界外的信号通过
ONE_EVERY_NOccurrence % period ==offset每出现N个信号,就传递一个信号。Start:occurrence = 0;信号每次被接收或发送,Occurrence就增加1;Occurrence的长度最低为8 bit。

接收端
过滤条件评估为false的signal将被丢弃,不会将此次接收到的数据存入signal的缓存中;对于signalgroup,一旦有1个group signal过滤条件评估为false,整个signal group都将被丢弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值