实战干货|详解ETAS工具链之 intra-ECU通信的数据转换

目录

 

往期推荐

在以往的项目中,大家是否遇到类似以下这些场景

示例场景

RTE 数据转换

RTE数据转换 - 项目配置

Step1 - 创建CompuMethods

Step 2 - 创建Application Data Type

原始数据类型(Primitive Data Types)

数组数据类型(Array Data Types)

记录数据类型(Record Data Types)

Step 3 - 创建  Interface

Step4 - SWC Ports 和Internal Behavior

Step5:是在顶层组合(TopLevelComposition)中连接两个端口

更新 ECU 提取

RTE 生成


往期推荐

  1. ETAS工具链自动化实战指南<一>
  2. 汽车通信未来新趋势:Eclipse uProtocol

  3. MCAL模块配置生成与ETAS BSW接管方法大揭秘

  4. 【干货分享】Autosar CanIf 模块的应用干货笔记1

  5. 一文轻松区分Autosar工具链中的Confgen和BSWgen

  6. ETAS工具链自动化实战指南<二>
  7. ETAS工具链自动化实战指南<三>
  8. AUTOSAR工程师必读:Artop的核心功能
  9. Vector工具链自动化实战指南<一>
  10. isolar高手秘籍| ECU Configuration三分钟速成!
  11. 掌握核心步骤:RTA-BSW以太网配置全解析
  12. 一文详解TC399 CAN MCAL 配置
  13. LSL常见应用场景及示例<一>
  14. LSL常见应用场景及示例<二>
  15. LSL常见应用场景及示例<三>
  16. 为什么Autosar钟情arxml而非json?大揭秘!
  17. 深入浅出:SOME/IP-SD的工作原理与应用
  18. 【技术进阶】|一文掌握Autosar ComStack的精髓!
  19. Autosar培训笔记整理<一>
  20. 【AutoSAR进阶】|实战详解ETAS工具链UDS 0x2f服务核心配置!
  21. 实战详解ETAS工具链CanTp模块自动化配置

在以往的项目中,大家是否遇到类似以下这些场景

    1. 假设一个传感器发送温度数据,单位为摄氏度(°C),需要将其转换为开尔文(K)供接收组件使用。

    2. 在某个汽车应用中,可能需要将传感器发送的车速从公里每小时(km/h)转换为米每秒(m/s)传递给接收组件。

    3. 在一个电气系统中,发送组件发送的电压数据是以伏特(V)为单位,而接收组件期望使用毫伏(mV)的单位。

    4. ......

这些场景涉及到如何设置用于 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 实现应用软件组件之间的数据传递。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值