【AutoSar_UDS服务】0x14服务_清除DTC

本文详细介绍了UDS0x14服务的功能,包括其用于清除故障诊断信息的原理、请求响应格式、应用场景以及配置说明。重点讨论了清除DTC的请求结构、肯定和否定响应情况,并引用了相关标准作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 术语解释

1.1 缩略语

缩写描述解释
DTCDiagnostic Trouble Code诊断故障码
DcmDiagnostic Communication Manager诊断通信管理
DemDiagnostic Event Manager诊断事件管理
SIDService identify服务标识符
NRCNegetive reponse code否定响应码

2 功能简介

2.1 功能概述

UDS 0x14服务用于清除存储的故障诊断信息,清除的故障诊断信息可以是某一个特定的故障码,也可以是某个类别的故障诊断码,也可以是所有的故障诊断码。

这里所说的某个类别的DTC,其实是DTC Group(比如动力总成,车身,底盘等),DTC Group的区间范围一般由主机厂的需求确定并在Dem模块进行实现。

清除DTC请求包括清除以下信息:

  • DTC 状态信息;
  • DTC 相关数据(包括冻结帧数据和扩展数据);
  • DTC 其他数据(时间,发生次数等);

2.2 服务实现原理

UDS 0x14服务的实现主要是通过Dcm和Dem之间的接口交互,接口调用的时序图如下:
图1
注:一般的,Dcm和Dem在清除DTC的过程中,需要通过回调接口来确认上层是否同意清除。与DTC相关的NvM数据清除要在下电的过程中实现。

2.3 服务应用场景

场景1:查看当前ECU是否存在当前故障,就需要使用14服务清除掉所有历史故障码后,再使用19 02服务读取当前存在的故障码(包含历史故障);

场景2:在ECU进行程序刷写之后,就需要使用14服务清除故障码,然后读取DTC,确保程序功能能够正常运行。

3 请求响应定义

3.1 请求消息格式

在这里插入图片描述

3.1.1 请求参数GroupOfDTC的定义

引用

3.2 肯定响应格式

该响应仅有:SID+0x40 = 0x54
在这里插入图片描述
注:如果没有DTC被存储,那么Dcm需要发送肯定响应。

3.3 否定响应格式

通用的否定响应响应格式:7F + SID + NRC, 0x14服务支持的NRC如下图:
引用
一般地,如果请求的DTC值或者memory origin错误,Dcm则会回复NRC 0x31,而在某些条件不满足的情况下(即由上层决策的回调函数或ModeRule中,e.g : 车速 > 0)则会回复NRC 0x22, 如果Dem清除DTC过程中收到NvM的ERROR则会回复NRC 0x72;
以上NRC存在同时存在的情况,为了区分NRC的重要性,所以按照下图的优先级进行回复。
在这里插入图片描述

4 服务请求实例

4.1 正响应

Tester ECU 04 14 FF FF 33(emission related) 图中所有数值都为hex 01 54(Response) Tester ECU

4.2 否定响应

Tester ECU 04 14 FF FF FF(Clear all dtc) 图中所有数值都为hex 03 7F 14 22 (negetive Response) 条件未满足 Tester ECU

5 配置说明

主要是Dcm和Dem的配置,这里就不一一赘述。

6 参考资料

  1. ISO 14229-1
  2. Specification of Diagnostic Communication Manager AUTOSAR CP R20-11
  3. Specification of Diagnostic Event Manager AUTOSAR CP R20-11
### 使用 AUTOSAR 85 服务进行 DTC 控制 #### 设置所有 DTC 或特定 DTC 组 为了使用 AUTOSAR 的 `0x85` 服务来控制 DTC(诊断故障码),需要先理解该服务的功能。此服务不仅能够管理所有的 DTC,还支持对单个或一组 DTC 进行操作[^1]。 然而,默认情况下仅允许全局控制所有 DTC 的设置;如果希望针对个别 DTC 或者某组 DTC 执行更精细的操作,则需确保配置项 `DcmSupportDTCSettingControlOptionRecord` 被设为 TRUE。这一设定使得可以在发送的服务请求中附加额外的数据字段——即三个字节的信息用于指定具体的 DTCDTC 组。 #### 请求结构与参数说明 当准备调用 `0x85 ControlDTCSetting` 时,构建的消息应当遵循如下格式: | 字段 | 描述 | | --- | --- | | SID (`0x85`) | 表明这是一个 UDS 请求中的 `ControlDTCSetting` 命令 | | SubFunction | 定义了具体想要执行的动作,比如启用(`enable`)或是禁用(`disable`)某个/些 DTC | 对于那些被标记为可选的部分,在实际应用里则取决于上述提到的支持选项是否开启以及相应的业务逻辑需求[^3]。 ```c // C语言伪代码展示如何构造一个简单的UDS消息帧以调用0x85服务 uint8_t udsRequest[] = {0x85, sub_function_value}; // 构建基本的SID和服务子功能值 if (is_specific_dtc_control_needed && is_option_record_supported){ uint8_t additionalData[3]; // 准备好要传递给服务器端的具体DTC ID或其他过滤条件 memcpy(&udsRequest[sizeof(udsRequest)], additionalData, sizeof(additionalData)); } ``` 一旦完成了这些准备工作之后,下一步就是将组装好的数据包通过 CAN 总线或者其他通信介质传输到目标 ECU 上去处理这个命令并返回响应结果[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值