|
汽车零部件采购、销售通信录 填写你的培训需求,我们帮你找 招募汽车专业培训老师
简介
Com作为PduR的上层模块,它需要PduR告诉它接收到了新的Pdu,并对Pdu的信号进行拆分,然后通过Rte_Cbk告诉Rte,用户即可通过Rte的接口读取Pdu中的信号量。发送也是如此,用户可以通过Rte与Com之间的接口写入信号值,最后Com调用PduR_Transmit将Pdu发送出去。
Com模块发送过程交互模型
Com模块接收过程交互模型
下边分析一下Com在接收和发送过程与PduR和Rte两个模块间的交互.
发送
当ComIPduSignalProcessing配置为Immediate时,Pdu发送成功后,PduR会调用Com_TxConfirmation,然后Com模块马上通过与Rte间的回调函数通知到Rte;当当ComIPduSignalProcessing配置为Deferred时,PduR调用Com的Com_TxConfirmation通知Com后,Com会设置标志位,等到Com_MainFunction执行时判断标志位,如果置位了再通过与Rte间的回调通知Rte.
接收
接收与发送类似.因此,Com主要有两个方面的配置:信号量与Pdu(ComConfig)与通用配置(ComGeneral)。而ComConfig主要分配:信号的配置(ComSignal)、Pdu的配置(ComIPdu)、Pdu组的配置(ComIPduGroup)和信号组的配置(ComSignalGropu)。配置
ComConfig
ComBitPosition:信号量在Pdu数据域中的起始位(对于CAN来说,就是信号在CAN dbc中的StartBit).
ComBitSize:信号量位长度(对于CAN来说,就是信号在CAN dbc中的Length).
ComNotification:接收到信号后的回调函数(Rte_Cbk).
ComSignalEndianness:信号的字节存储方式:大端、小端或者模糊的(不去更改高字节和低字节的排列,对于数组或者float形式都需要设置为这个模式)。
ComSignalType:信号的类型,可以为uint8/uint16等基本数据类型,也可以是uint8_N这样的数组类型。
ComTimeoutNotification:超时(长时间没有接收到/发送信号)的回调函数。
ComTransferProperty:发送属性:
1 PENDING:写这个信号永远不会触发发送;2 TRIGGERED:取决于配置的发送模式,假如发送模式为触发,那么写这个信号会触发发送;3 TRIGGERED_ON_CHANGE:同TRIGGERED,但是只有写入的信号值发生改变(与上一次写入的值不一样)才会触发发送;4 TRIGGERED_ON_CHANGE_WITHOUT_REPETITION:与TRIGGERED_ON_CHANGE类似,但是只会触发一次发送;5 TRIGGERED_WITHOUT_REPETITION:同TRIGGERED类似,但是只会触发一次发送。
ComUpdateBitPosition:指示接收/发送的更新标志位,发送和接收端的配置必须保持一致。
ComSystemTemplateSystemSignalRef:引用ISignalToIPduMapping的信号,这个信号引用了ISignal
ComSignal中的ComFilter配置发送模式选择(Transmission Mode Selection,TMS)的算法.
ComFilterAlgorithm:
1 Always表示这个信号的判断结果一直为True;2 Never表示这个信号的判断结果一直为False;3 MASKED_NEW_EQUALS_X:判断信号与MASKED_NEW_EQUALS_X按位与后的值是否等于ComFilterX;4 MASKED_NEW_DIFFERS_X:判断信号与MASKED_NEW_DIFFERS_X是否不等于ComFilterX;5 NEW_IS_WITHIN判断信号是否在ComFilterMin和ComFilterMax之间;6 NEW_IS_OUTSIDE判断信号是否不在ComFilterMin和ComFilterMax之间;7 MASKED_NEW_DIFFERS_MASKED_OLD:表示本次信号的值与MASKED_NEW_DIFFERS_MASKED_OLD按位与后的值不等于上一次的信号值与MASKED_NEW_DIFFERS_MASKED_OLD按位与的结果。当每个信号进行判断后,再对Pdu中的所有信号的判断值进行与运算,与运算得到的结果为True则用ComTxModeTrue配置的模式来发送报文,为False则用ComTxModeFalse配置的模式来发送报文。
ComSignalGroup
已在<<Simulink解析CAN及在AUTOSAR中的使用>>分析过。
ComIPdu
ComIPduDirection:Pdu的传输方向:接收/发送
ComIPduSignalProcessing:Pdu的信号处理方式:Immediate(立即)或者Deferred(推迟).
ComIPduType:Pdu解包或者发包的方式,Normal:通过正常的方式;TP:数据量较大需要通过TP层.
ComPduIdRef:引用的Pdu.接收的话,对于PduR而言,需要和PduRDestPdu里的Pdu保持一致;发送的话,对于PduR而言,需要和PduRSrcPdu保持一致(已在PduR模块介绍<<Com协议栈配置之PduR>>).
ComIPduGroupRef:Pdu属于哪个PduGroup.
ComIPduSignalRef:Pdu中包含的Signal.
ComTxModeFalse为发送模式选择为False时选择的发送模式, ComTxModeTrue为发送模式选择为True时选择的发送模式,
ComTxModeMode:发送模式选择:直接/周期/混合等.
ComTxModeNumberOfRepetions:重复次数;
ComTxModeRepetionPeriod:重复发送的周期;
ComTxModeOffset:发送偏移;
ComTxModePeriod:发送周期.
以下为不同的配置的发送时序。
表示Rte调用Com的写接口.
td表示配置的ComTxModeRepetionPeriod的周期;
tr表示软件处理的时间延迟.
v=a表示发送模式选择判断为True.
v=b表示发送模式选择判断为False.
用户例1
ComTxModeMode配置为周期发送.
用户例2
ComTxModeMode配置为Direct,ComTxModeNumberOfRepetitions配置为2, ComTxModeRepetitionPeriod配置为td.可以看出,当Rte调用写接口时,会触发重复发送,次数和周期均为我们配置的.
用户例3
tc1为ComTxModeTrue中配置的周期,tc2为ComTxModeFalse中配置的周期.可以看出,当发送模式选择在True和False中发生变化时,发送周期也根据我们配置的值在变化.
用户例4
tc1为ComTxModeTrue中配置的周期;tc2为ComTxModeFalse中配置的周期.;ComTxModeTrue中的ComTxModeMode配置为Mixed, ComTxModeFalse中的ComTxModeMode配置为PERIODIC.可以看出,当发送模式选择从False变为True时,由于配置的TxModeMode为Mixed,所以会先按ComTxModeTrue中配置的Repetion周期和次数进行Repetion的发送,然后按照之前设定的ComTxModeTimePeriod的周期进行发送.
ComGeneral
ComCancellationSupport:是否支持取消功能
ComConfigurationUseDet:Com出现错误时是否调用Det模块的函数接口 |
|