• 269查看
  • 0回复

[Autosar] Com协议栈配置之Com

[复制链接]


该用户从未签到

发表于 8-5-2024 19:31:50 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


简介

Com协议栈配置之Comw1.jpg

Com作为PduR的上层模块,它需要PduR告诉它接收到了新的Pdu,并对Pdu的信号进行拆分,然后通过Rte_Cbk告诉Rte,用户即可通过Rte的接口读取Pdu中的信号量。发送也是如此,用户可以通过Rte与Com之间的接口写入信号值,最后Com调用PduR_Transmit将Pdu发送出去。
Com协议栈配置之Comw2.jpg

Com模块发送过程交互模型

Com协议栈配置之Comw3.jpg

Com模块接收过程交互模型
下边分析一下Com在接收和发送过程与PduR和Rte两个模块间的交互.
发送

Com协议栈配置之Comw4.jpg

当ComIPduSignalProcessing配置为Immediate时,Pdu发送成功后,PduR会调用Com_TxConfirmation,然后Com模块马上通过与Rte间的回调函数通知到Rte;当当ComIPduSignalProcessing配置为Deferred时,PduR调用Com的Com_TxConfirmation通知Com后,Com会设置标志位,等到Com_MainFunction执行时判断标志位,如果置位了再通过与Rte间的回调通知Rte.
接收

Com协议栈配置之Comw5.jpg

接收与发送类似.因此,Com主要有两个方面的配置:信号量与Pdu(ComConfig)与通用配置(ComGeneral)。而ComConfig主要分配:信号的配置(ComSignal)、Pdu的配置(ComIPdu)、Pdu组的配置(ComIPduGroup)和信号组的配置(ComSignalGropu)。配置
ComConfig

Com协议栈配置之Comw6.jpg

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

Com协议栈配置之Comw7.jpg

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配置的模式来发送报文。
Com协议栈配置之Comw8.jpg

ComSignalGroup

已在<<Simulink解析CAN及在AUTOSAR中的使用>>分析过。

ComIPdu

Com协议栈配置之Comw9.jpg

Com协议栈配置之Comw10.jpg

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.

Com协议栈配置之Comw11.jpg

ComTxModeFalse为发送模式选择为False时选择的发送模式, ComTxModeTrue为发送模式选择为True时选择的发送模式,

ComTxModeMode:发送模式选择:直接/周期/混合等.

ComTxModeNumberOfRepetions:重复次数;

ComTxModeRepetionPeriod:重复发送的周期;

ComTxModeOffset:发送偏移;

ComTxModePeriod:发送周期.
以下为不同的配置的发送时序。
Com协议栈配置之Comw12.jpg
表示Rte调用Com的写接口.

td表示配置的ComTxModeRepetionPeriod的周期;

tr表示软件处理的时间延迟.

v=a表示发送模式选择判断为True.

v=b表示发送模式选择判断为False.

用户例1

Com协议栈配置之Comw13.jpg

ComTxModeMode配置为周期发送.
用户例2

Com协议栈配置之Comw14.jpg

ComTxModeMode配置为Direct,ComTxModeNumberOfRepetitions配置为2, ComTxModeRepetitionPeriod配置为td.可以看出,当Rte调用写接口时,会触发重复发送,次数和周期均为我们配置的.
用户例3

Com协议栈配置之Comw15.jpg

tc1为ComTxModeTrue中配置的周期,tc2为ComTxModeFalse中配置的周期.可以看出,当发送模式选择在True和False中发生变化时,发送周期也根据我们配置的值在变化.
用户例4

Com协议栈配置之Comw16.jpg

tc1为ComTxModeTrue中配置的周期;tc2为ComTxModeFalse中配置的周期.;ComTxModeTrue中的ComTxModeMode配置为Mixed, ComTxModeFalse中的ComTxModeMode配置为PERIODIC.可以看出,当发送模式选择从False变为True时,由于配置的TxModeMode为Mixed,所以会先按ComTxModeTrue中配置的Repetion周期和次数进行Repetion的发送,然后按照之前设定的ComTxModeTimePeriod的周期进行发送.
ComGeneral

Com协议栈配置之Comw17.jpg

ComCancellationSupport:是否支持取消功能

ComConfigurationUseDet:Com出现错误时是否调用Det模块的函数接口

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 27-12-2024 11:11 , Processed in 0.344764 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.