AUTOSAR RTE課程培訓(xùn)之免費(fèi)解答
因?yàn)楹湍阆嘤?,不再迷戀遠(yuǎn)方的風(fēng)景
那藍(lán)藍(lán)的天空,那悠遠(yuǎn)的大地-----2020-0520祝您和愛(ài)人幸福
什么是數(shù)據(jù)轉(zhuǎn)換?
數(shù)據(jù)轉(zhuǎn)換是Rte在SWC上使用時(shí)能夠自動(dòng)轉(zhuǎn)換和重新縮放通過(guò)外部通信接收的數(shù)據(jù)的能力。
為啥需要數(shù)據(jù)轉(zhuǎn)換?
AUTOSAR SWC的設(shè)計(jì)要求有很好的通用性和重用性,能適配不同的項(xiàng)目平臺(tái)。為了實(shí)現(xiàn)這個(gè)目標(biāo),重要的是要保證SWC的端口接口兼容性要好,可以集成到到不同的平臺(tái)項(xiàng)目中。但是由于DBC中通信信號(hào)的定義沒(méi)有標(biāo)準(zhǔn)化,主觀性比較強(qiáng)。例如速度這個(gè)數(shù)據(jù)元素,你在一個(gè)項(xiàng)目總定義其單位為“km/h”,在另外一個(gè)項(xiàng)目中你定義速度的單位為“ m / s”
ADT上定義的CompuMethod在生成代碼中沒(méi)反應(yīng)?
應(yīng)用數(shù)據(jù)類型在代碼中是不體現(xiàn)的,其通過(guò)相應(yīng)的mapping實(shí)施數(shù)據(jù)類型去表示,其相應(yīng)的IDT通過(guò)typedef體現(xiàn)在生成的代碼中。
實(shí)施數(shù)據(jù)類型中配置了Linear的CompuMethod生成代碼的時(shí)候會(huì)報(bào)錯(cuò)?
遇到這種問(wèn)題,最好請(qǐng)教一下,因?yàn)槟闳ゲ檎椅臋n,而Autosar Spec讀起來(lái)云里霧里的,真是TM的晦澀,還不如去聽(tīng)一下歌曲《生僻字》。
AUTOSAR_TPS_SWCT [constr_1158]:Applicable categorys for attribute Implementation-DataType.swDataDefProps.compuMethod. [The definition of the reference ImplementationDataType.swDataDefProps.compuMethod is restricted to a CompuMethod of either category BITFIELD_TEXTTABLE or category TEXT-TABLE.]
這條需求要求實(shí)施數(shù)據(jù)類型僅限于BITFIELD_TEXTTABLE類別或TEXT TABLE類別的CompuMethod。如果您在Davinci Developer中的實(shí)施數(shù)據(jù)類型中配置了Linear的CompuMethod生成代碼的時(shí)候會(huì)報(bào)錯(cuò)。
一般,線性Compu Method的轉(zhuǎn)換適用于外部通信,發(fā)送方對(duì)處理的數(shù)據(jù)對(duì)象的表示與接收方對(duì)處理的數(shù)據(jù)對(duì)象的表示不同。通過(guò)RTE generator識(shí)別到這種不同,自動(dòng)生成轉(zhuǎn)換的膠水代碼,這些轉(zhuǎn)換是對(duì)應(yīng)用層不可見(jiàn)的。如下面的例子:
通過(guò)ARXML把這些我們能讀的懂的英語(yǔ)表現(xiàn)成工具能讀的懂語(yǔ)言,如下為上述例子的ARXML描述:
<COMPU-METHOD>
<SHORT-NAME>cm_VoltageAtSender</SHORT-NAME>
<CATEGORY>LINEAR</CATEGORY>
<COMPU-INTERNAL-TO-PHYS>
<COMPU-SCALES>
<COMPU-SCALE>
<COMPU-RATIONAL-COEFFS>
<COMPU-NUMERATOR><V>0</V><V>1</V></COMPU-NUMERATOR>
<COMPU-DENOMINATOR><V>4</V></COMPU-DENOMINATOR>
</COMPU-RATIONAL-COEFFS>
</COMPU-SCALE>
</COMPU-SCALES>
</COMPU-INTERNAL-TO-PHYS>
</COMPU-METHOD>
<COMPU-METHOD>
<SHORT-NAME>cm_VoltageAtReceiver</SHORT-NAME>
<CATEGORY>LINEAR</CATEGORY>
<COMPU-INTERNAL-TO-PHYS>
<COMPU-SCALES>
<COMPU-SCALE>
<COMPU-RATIONAL-COEFFS>
<COMPU-NUMERATOR><V>16</V><V>1</V></COMPU-NUMERATOR>
<COMPU-DENOMINATOR><V>8</V></COMPU-DENOMINATOR>
</COMPU-RATIONAL-COEFFS>
</COMPU-SCALE>
</COMPU-SCALES>
</COMPU-INTERNAL-TO-PHYS>
</COMPU-METHOD>
<COMPU-METHOD>
<SHORT-NAME>cm_VoltageOnNetwork</SHORT-NAME>
<COMPU-INTERNAL-TO-PHYS>
<COMPU-SCALES>
<COMPU-SCALE>
<COMPU-RATIONAL-COEFFS>
<COMPU-NUMERATOR><V>1</V><V>1</V></COMPU-NUMERATOR>
<COMPU-DENOMINATOR><V>2</V></COMPU-DENOMINATOR>
</COMPU-RATIONAL-COEFFS>
</COMPU-SCALE>
</COMPU-SCALES>
</COMPU-INTERNAL-TO-PHYS>
</COMPU-METHOD>
生成的RTE代碼如下:發(fā)送端的代碼:
Std_ReturnType Rte_Send_SwcA_SenderPort_u(t_voltageAtSender u)
{
/*
u_NetworkRepresentation
= ((u * LSB_sender + off_sender) - off_network) / LSB_network
= ((u / 4 + 0 ) - 0.5 ) * 2
= (u / 2 ) - 1
*/
u_NetworkRepresentation = (uint8) ((u >> 1) - 1);
}
接收端的代碼:
Std_ReturnType Rte_Receive_SwcB_ReceiverPort_u(t_voltageAtReceiver * u)
{
/*
*u = ((u_NetworkRepresentation * LSB_network + off_network)
- off_receiver) / LSB_receiver
= ((u_NetworkRepresentation / 2 + 0.5 )
- 2 ) * 8
= (u_NetworkRepresentation * 4 + 4 )
- 16
= u_NetworkRepresentation * 4 - 12
*/
*u = (uint16) ((u_NetworkRepresentation << 2) - 12);
}
常見(jiàn)的IDT的CompuMethod TEXT TABLE的配置和代碼實(shí)現(xiàn)如下:
如下為DCM模塊中的數(shù)據(jù)類型Dcm_ConfirmationStatusType,其引用的CompuMethod定義為TEXT TABLE。
其生成的代碼中包括對(duì)這些symbol的宏定義,應(yīng)用層可以通過(guò)引用這些宏實(shí)現(xiàn)對(duì)相應(yīng)為的訪問(wèn)。
/* 識(shí)別到實(shí)施Dcm_ConfirmationStatusType類型Compu的定義,為Dcm_ConfirmationStatusType生成下面的宏 */
typedef uint8 Dcm_ConfirmationStatusType;
# ifndef DCM_RES_POS_OK
# define DCM_RES_POS_OK (0U)
# endif
# ifndef DCM_RES_POS_NOT_OK
# define DCM_RES_POS_NOT_OK (1U)
# endif
# ifndef DCM_RES_NEG_OK
# define DCM_RES_NEG_OK (2U)
# endif
# ifndef DCM_RES_NEG_NOT_OK
# define DCM_RES_NEG_NOT_OK (3U)
# endif
啟用數(shù)據(jù)轉(zhuǎn)換時(shí),Delegation port的數(shù)據(jù)類型設(shè)置要注意什么?
Com映射的ISignal包含線性類型的compu方法,與此相連的delegation port中的Data element的數(shù)據(jù)類型是float(定義成整型可能會(huì)引起轉(zhuǎn)換錯(cuò)誤),如果檢測(cè)到這種設(shè)置,RTE則會(huì)啟動(dòng)數(shù)據(jù)的轉(zhuǎn)換。
AUTOSAR ASILD級(jí)別安全軟件模塊的安全機(jī)制介紹
基于Autosar軟件的功能安全開(kāi)發(fā)的介紹
AUTOSAR模式管理經(jīng)驗(yàn)總結(jié)
使用AURIX TOM模塊生成交流電機(jī)的PWM驅(qū)動(dòng)
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!