目录
Step 2 - 创建Application Data Type
Step4 - SWC Ports 和Internal Behavior
Step5:是在顶层组合(TopLevelComposition)中连接两个端口
往期推荐
- ETAS工具链自动化实战指南<一>
- ETAS工具链自动化实战指南<二>
- ETAS工具链自动化实战指南<三>
- AUTOSAR工程师必读:Artop的核心功能
- Vector工具链自动化实战指南<一>
- isolar高手秘籍| ECU Configuration三分钟速成!
- 掌握核心步骤:RTA-BSW以太网配置全解析
- 一文详解TC399 CAN MCAL 配置
- LSL常见应用场景及示例<一>
- LSL常见应用场景及示例<二>
- LSL常见应用场景及示例<三>
- 为什么Autosar钟情arxml而非json?大揭秘!
- 深入浅出:SOME/IP-SD的工作原理与应用
- 【技术进阶】|一文掌握Autosar ComStack的精髓!
- Autosar培训笔记整理<一>
- 【AutoSAR进阶】|实战详解ETAS工具链UDS 0x2f服务核心配置!
- 实战详解ETAS工具链CanTp模块自动化配置
在以往的项目中,大家是否遇到类似以下这些场景
-
-
假设一个传感器发送温度数据,单位为摄氏度(°C),需要将其转换为开尔文(K)供接收组件使用。
-
在某个汽车应用中,可能需要将传感器发送的车速从公里每小时(km/h)转换为米每秒(m/s)传递给接收组件。
-
在一个电气系统中,发送组件发送的电压数据是以伏特(V)为单位,而接收组件期望使用毫伏(mV)的单位。
-
......
-
这些场景涉及到如何设置用于 intra-ECU 通信的数据转换,特别是利用 RTA-RTE 通过与 Application Data Type 关联的 CompuMethods 定义来实现数据转换。今天在这里总结分享下【如何设置用于 intra-ECU通信的数据转换】。
示例场景
一个应用软件组件(SWC)将应用数据发送给另一个接收转换后的应用数据的应用软件组件。转换过程仅为一个乘法因子。
RTE 数据转换
在以下内容中,利用通过定义 CompuMethods 进行的 intra-ECU通信的数据转换。RTA-RTE 不支持在端口接口的 DataElements 中对 CompuMethods 进行数据转换,但支持在 ApplicationDataTypes 中定义的 CompuMethods 进行数据转换。
为了支持数据转换,必须定义两个不同的端口接口(Tx和 Rx)。此时,需要在 Tx 接口的 DataElements 和 Rx 接口的 DataElements 之间定义一个"conversion"。这种转换通过定义一个 DataMapping 来实现。
此外,还需要一个额外的映射 (DataTypeMappingSet),以将 ApplicationDataType 映射到相应的 ImplementationDataType。
所需的结构可以总结为以下模式图 :
-
定义两个端口接口
-
通过 DataMapping 在发送(Tx)和接收(Rx)之间转换数据
-
使用 DataTypeMappingSet 连接应用数据类型与实现数据类型
这种方法为 intra-ECU通信提供了灵活的数据转换能力。
RTE数据转换 - 项目配置
该应用说明可以逐步在任何现有项目中执行,因为除了应用SWC(软件组件)外,所有所需元素均从头开始创建。根据具体项目需求,需要对以下配置进行一些调整。
Step1 - 创建CompuMethods
首先,需要配置用于TX(发送)和RX(接收)数据的CompuMethod中使用的单位。AUTOSAR中的Unit是一个物理测量单位。单位的配置是可选的,因此在该示例配置中,仅添加了单语言单位名称以完整性为由(它只指定了如何在文档或用户界面工具中显示单位)。有关单位配置的更多信息,可以参考<<AUTOSAR_TPS_SoftwareComponentTemplate>>规范。
在本文示例项目中,需要配置两个单位:U_TxData_Application 和 U_TxData_Converted。
以相同的方式,创建 U_TxData_Converted。
接着为 RX 和 TX 端创建一对 CompuMethod。
在 AUTOSAR 中,通过 CompuMethods,可以定义物理值与数学表示之间的关系。可以定义几种类别的 CompuMethods。其中:“LINEAR”类别可用于定义数据的线性转换(乘法因子和偏移量)。有关 CompuMethods 的更多详细信息,以及完整的类别描述,可以参考《AUTOSAR_TPS_SoftwareComponentTemplate》 规范文档。
如下如所示:在示例项目中,创建了 CompuMethod :“CM_TxData_Application”。
如下图所示:双击已创建的 CompuMethod。将弹出一个窗口来设置类别:选择了 LINEAR。
选择类别后,将弹出数据字典编辑器窗口,在这里可以完成 CompuMethod 的配置。必须引用之前创建的单位,并配置 CompuScale。
添加新 CompuScale 时,会弹出下图所示的窗口。它提供了一种简单的方式来配置线性转换,具体来说,将在数据转换中应用以下公式:
其中:
-
Physical: 是转换后的数据输出
-
Internal: 是转换前的数据输入
-
Offset, Num, Den: 是必须配置的参数,以实现所需的转换
在这个示例配置中,由于想要实现“乘以 10”的配置,所以配置以下参数:Offset = 0,Num = 10,Den = 1。
在向导中,还可以配置数据的范围限制,表示数据的范围:
-
Lower Limit: 左侧的配置参数
-
Upper Limit: 右侧的配置参数
在上限和下限中,都可以配置是否包含限值,使用“<=”或不使用“<”。
在示例项目中,配置以下范围:
现在,可以继续为 RX 端创建另一个 CompuMethod。在这种情况下,必须创建一个相同的 CompuMethod,并引用之前创建的单位。
在 RX 端创建这个相同的 CompuMethod 是数据转换配置的强制Step。如果未配置,RTE 代码生成将抛出错误。
所以,在示例项目中,创建了引用单位“U_TxData_Converted”的 CompuMethod “CM_TxData_Converted”。
Step 2 - 创建Application Data Type
继续为 RX 和 TX 端创建应用数据类型。
在 AUTOSAR 中,Application Data Type 用于从应用的角度定义数据类型。AUTOSAR 中可以定义不同类型的应用数据类型:
-
原始数据类型(Primitive Data Types)
不是 复合数据类型,用于配置简单的应用数据类型。
-
数组数据类型(Array Data Types)
复 合数据类型,可以看作是数组的等价物。
-
记录数据类型(Record Data Types)
复合数据类型,可以看作是结构体的等价物。
有关Application Data Type的更多信息,可以参考 《AUTOSAR_TPS_SoftwareComponentTemplate》 规范文档。
在示例项目中,创建一对Application Data Type :“ADT_TxData_Application”和“ADT_TxData_Converted”。
其中:第一个与“CM_TxData_Application” CompuMethod 相关联,第二个与“CM_TxData_Converted” CompuMethod 相关联。
此链接通过在Application Data Type 中配置 Sw Data Def Props Conditional 来建立。由于此配置的目的是在两个 SWC 之间交换简单数据,因此使用了Application Primitive Data Type 。
之前创建的 CompuMethod 必须与Application Data Type 关联。
此时,创建的Application Data Type 尚未与任何实际Implementation Data Type关联,因为这些数据类型仅是应用级别的抽象。在 AUTOSAR 中,Application Data Type必须映射到Implementation Data Type。这是通过数据映射来完成的。数据映射包含在所谓的数据类型映射集(Data Type Mapping Set)中。因此,数据类型映射集可以看作是数据映射的容器。
有关数据映射和数据类型映射集的更多信息,请参考 《AUTOSAR_TPS_SoftwareComponentTemplate 》规范文档。
因此,在此配置中,创建一个数据类型映射集 "DTMS_TxData",如下所示。
双击创建的数据类型映射集,将显示 Data Dictionary Editor。在这里,可以配置属于该数据类型映射集的数据映射。在此配置中,ADT_TxData_Application 和 ADT_TxData_Converted 都映射到 uint16 实现数据类型。映射取决于项目特定的用例,在以下示例中选择 uint16,因为该数据类型能够覆盖由应用数据类型管理的整数数据范围(参见上述limits configuration)。
Step 3 - 创建 Interface
现在基础设施几乎准备就绪,可以继续创建将由软件组件(SWC)的端口使用的端口接口。为了在运行时环境(RTE)中触发数据转换,需要在发送(TX)和接收(RX)端创建两个不同的接口。因此,在本项目中创建了一对发送接收接口 "SR_TxData_Application" 和 "SR_TxData_Converted"。
数据元素必须为接口定义。在示例项目中,使用了一个数据元素来交换所需的数据。因此,为 "SR_TxData_Application" 创建了数据元素 "DE_TxData_Application",其类型设置为 "ADT_TxData_Application";为 "SR_TxData_Converted" 创建了数据元素 "DE_TxData_Converted",其类型也设置为 "ADT_TxData_Converted",如下图所示。
此时,port interfaces已设置完成。在AUTOSAR中,可以创建不同接口之间的映射,以便连接具有不同接口的端口。这是通过包含在端口接口映射集中的端口接口映射来实现的。有关端口接口映射和端口接口映射集的更多信息,可以参考《AUTOSAR_TPS_SoftwareComponentTemplate》规范文档。
在示例项目配置中创建端口接口映射集“PIMS_TxData”,具体如下:
在PIMS_TxData中创建了相应的端口接口映射。在此项目中使用了“Variable And Parameter Interface Mapping”,如下所示:建立两个发送/接收接口数据元素“DE_TxData_Application”和“DE_TxData_Converted”之间的映射。
Step4 - SWC Ports 和Internal Behavior
如下所示:在两个不同的软件组件(SWC)中创建Ports ,选择之前创建的 Port Interfaces。在示例项目中,创建了 provider port:P_TxData_Application(端口接口为SR_TxData_Application)和receiver port :RP_TxData_Converted(端口接口为SR_TxData_Converted)。
注意:在使用数据的SWC的可运行实体中配置至少一个数据接收点(Data Receive Point)用于RP_TxData_Converted,以及一个数据发送点(Data Send Point)用于PP_TxData_Application。如果这些未被创建,RTA-RTE将不会生成API集合Rte_Write和Rte_Read。
因此,数据发送点DSP_TxData_Application在项目中配置如下。
同样地,数据接收点按参数接收的DRPA_TxData_Converted也已配置。因此,达到了如下配置目标:
要完成该基础设施,之前定义的数据类型映射集(DataTypeMappingSet)必须在两个软件组件(SWC)的内部行为(Internal Behavior)中被引用。
Step5:是在顶层组合(TopLevelComposition)中连接两个端口
由于这两个端口的端口接口不同,工具不会将它们识别为“compatible ports”。因此,必须选择“Show in-compatible ports”(Show in-compatible ports)选项。此时,便可以在两个端口之间创建连接。
注意:工具会将此连接标记为“无效连接”。但不需要关注这一点,继续完成应用说明的最后部分即可。RTA-RTE 将正确识别该连接,并生成预期的代码。
创建的连接应引用之前定义的接口映射集:在装配连接器中导航,并双击它。
快捷方式:当连接创建后,它会显示在GUI中。可以右键单击连接器名称并选择“在AR Explorer中显示”。工具将自动导航到所需的位置(AR Explorer 菜单)。
到此为止,配置已经完成,可以进行以下操作:
-
更新 ECU 提取
-
RTE 生成
可以看到,RTA-RTE 会生成以下实现。数据转换将在调用 Rte_Write
时发生。
通过这些步骤,可以使用 RTA-RCAR 工具正确配置 Intra-ECU 数据转换,并通过 RTA-RTE 实现应用软件组件之间的数据传递。