【AutoSAR进阶】|实战详解ETAS工具链UDS 0x2f服务核心配置!

 

目录

 

往期推荐

          0x2F服务概览

功能描述

请求和响应

应用场景

1.测试和验证:

2.诊 断和维护:

 3.开发和调试:

4.支持负面回应

前提条件

配置步骤

Dcm配置  

配置一个或多个DID以用于IO控制服务。

创建DcmDspDidInfo

指定为该DID支持的IO控制服务

创建DcmDspDid和DcmDspDidSignals

创建DcmDspDid信号

生成BSW代码

Rte 配置

实现和配置SWC


往期推荐

  1. ETAS工具链自动化实战指南<一>
  2. ETAS工具链自动化实战指南<二>
  3. ETAS工具链自动化实战指南<三>
  4. AUTOSAR工程师必读:Artop的核心功能
  5. Vector工具链自动化实战指南<一>
  6. isolar高手秘籍| ECU Configuration三分钟速成!
  7. 掌握核心步骤:RTA-BSW以太网配置全解析
  8. 一文详解TC399 CAN MCAL 配置
  9. LSL常见应用场景及示例<一>
  10. LSL常见应用场景及示例<二>
  11. LSL常见应用场景及示例<三>
  12. 为什么Autosar钟情arxml而非json?大揭秘!

UDS(统一诊断服务) 0x2F服务,即“InputOutputControlByIdentifier”,是一种用于汽车诊断的服务,允许客户端(通常是诊断工具或测试设备)对电子系统中的输入信号和输出控制进行操作。

通常,该服务用于相对简单(例如,静态)的输入替代/输出控制,而如果需要更复杂的输入替代/输出控制,则使用Routine Control。

          0x2F服务概览

图片

功能描述

    1. 输入信号替换:允许客户端替换电子系统中某个输入信号的值。例如,可以通过此服务将传感器的读数替换为指定的值。

    2. 内部服务器功能替换:允许客户端替换或修改电子控制单元(ECU)内部的某些功能。

    3. 强制输出控制:允许客户端强制设置电子系统中执行器的值。例如,可以通过此服务将执行器的状态设置为指定的值,如设置发动机的某种状态。

请求和响应

    • 请求:请求消息包含了要替换的信号标识符、替代值或控制指令。

    • 响应:响应消息确认操作是否成功,或者在失败时提供错误信息。

应用场景

1.测试和验证

  1. 功能验证:在汽车开发和测试阶段,使用该服务可以模拟不同的输入信号和输出控制,以验证系统在各种条件下的行为。

  2. 故障注入:可以通过替换信号值来测试系统对故障的响应,确保系统能够正确处理异常情况。

 2.诊 断和维护

  1. 故障排除:当车辆出现故障时,可以使用该服务来手动控制和测试系统的各个部分,以帮助诊断问题。

  2. 服务模式:在车辆保养和维修时,可以使用该服务来进行系统的调试和校准。

 3.开发和调试

  1. 开发阶段:在开发新的ECU或功能时,开发人员可以使用此服务来模拟输入信号和控制输出,以验证新功能的实现。

  2. 调试:在软件开发过程中,可以使用此服务对系统进行详细调试,检查输入输出的处理是否正确。

4.支持负面回应

    1. 不支持子函数 – 0x12

    2. 消息长度不正确或格式无效 – 0x13

    3. 条件不正确 – 0x22

    4. 请求超出范围 – 0x31

    5. 安全访问被拒绝 – 0x33

总之,UDS 0x2F服务在汽车电子系统的开发、测试、维护和诊断中扮演着重要的角色,提供了对电子系统输入输出的精确控制能力。以下示例展示如何在RTA-BSW中配置IO控制以使能以下服务:

  • FreezeCurrentState(冻结当前状态)

  • ResetToDefault(重置为默认)

  • ShortTermAdjustment(短期调整)

  • ReturnControlToECU(将控制返回给ECU)

  • ReadData(读取数据)

前提条件

  • 安装RTA-CAR工具链

  • 已经为基本服务配置了DCM,并且通信协议已经配置完毕

  • 熟悉Autosar 方法论和UDS协议

配置步骤

Dcm配置  

首先,必须在DcmDsdServices表中配置该服务。进入Dcm > DcmConfigSet > DcmDsd > DcmDsdServiceTable,然后右键点击DcmDsdServices。选择“Create DcmDsdService”。下面的示例截图显示了所需的配置:

图片

配置一个或多个DID以用于IO控制服务。

进入Dcm > DcmConfigSet > DcmDsp > DcmDspDatas,右键点击DcmDspDatas并选择“Create DcmDspData”。在下面的示例截图中,配置了一个64位(8字节)的UINT8_N(数组)信号,该信号在RTE中为SWC提供了一个同步的client-server port。之后,这个DcmDspData将被DcmDspDidSignal引用。

图片

创建DcmDspDidInfo

如下图所示:进入Dcm > DcmConfigSet > DcmDsp > DcmDspDidInfos,右键点击DcmDspDidInfos并选择“Create DcmDspDidInfo”)。

在这种情况下,该DID不会动态定义,因此在DcmDspDidDynamicallyDefined中选择“false”。

图片

指定为该DID支持的IO控制服务

在这里,指定为该DID支持的IO控制服务。每个项目的服务可能会有所不同,如下只是一个配置示例。

展开DcmDspDidInfo并选择“DcmDspDidControl”。

图片

创建DcmDspDid和DcmDspDidSignals

如下图所示:进入Dcm > DcmConfigSet > DcmDsp > DcmDspDids,右键点击DcmDspDids并选择“Create DcmDspDids”。

输入DID编号(在本例中,将其配置为0xF199)。点击DcmDspDidInfoRef下拉菜单,选择“Show All References...”,在对话框中选择之前创建的DcmDspDidInfo。最终的配置应如下所示:

图片

创建DcmDspDid信号

展开DcmDspDid,然后右键点击DcmDspDidSignals并选择“Create DcmDspDidSignal”。

在某些情况下,可能需要配置多个信号。在这种情况下,可以为每个信号重复上述步骤4,然后创建额外的信号引用。每个信号都需要一个DcmDspDidDataPos和之前创建的DcmDspData的引用。

在本例中,由于只有一个信号,其起始位置将为0。配置如下所示:

图片

至此,IO控制的DCM配置应该已经完成。

生成BSW代码

使用RTA-BSW Code Gen生成BSW代码。

Rte 配置

按照如上步骤成功配置了用于IO控制的DCM模块,接下来必须实现DID的服务器端,以实现之前定义的功能。

在生成BSW后,会创建一个名为Dcm_Cfg_SWCD.arxml的文件。此文件必须集成到RTE项目中,并用于连接到SWC组件、且创建BSW模块实例引用。

查看RTE项目,会在组件下看到列出的DCM服务组件。展开Rport,会看到新创建的服务端口DataServices_DspData_IO_CTRL_F199。

图片

这个R端口使用了DCM生成的接口。

图片

SWC实现该接口的服务器部分。这意味着必须创建或使用现有的软件组件,并添加一个提供5个操作调用事件的Pport以处理来自DCM的请求,当测试仪请求此DID的IO控制服务时,这些操作将被调用。

实现和配置SWC

最后就是实现和配置SWC,将SWC连接到组成中的DCM服务组件,并在代码中实现这些可运行的任务。             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值