汽车UDS诊断之清除诊断信息服务(0x14)深度剖析

ClearDiagnosticInformation就是清除诊断信息服务,简单说客户端可以利用此服务来清除一个或多个服务端内存中的诊断信息。

目录

1.英文术语

2.缩写表

3.服务描述

3.1.诊断信息

3.2.groupOfDTC

4.请求消息定义

4.1.请求消息子功能定义

4.2.请求消息数据参数定义

5.肯定响应消息定义

5.1.肯定响应消息数据参数定义

6.否定响应消息定义

6.1.否定响应码

6.2.NRC评估序列

7.服务使用示例

7.1.示例#1-清除“排放相关系统”诊断信息

7.1.1.步骤1:请求清除排放相关诊断信息

7.1.2.操作汇总


清除诊断信息
服务 描述
ClearDiagnosticInformation 客户端请求服务端清除内存中的诊断信息。

1.英文术语

英文术语 翻译
ClearDiagnosticInformation 清除诊断信息
ClearDiagnosticInformation Request SID 清除诊断信息请求SID
ISO14229定义此值为0x14
ClearDiagnosticInformation Positive Response SID

清除诊断信息响应SID

ISO14229定义此值为(0x14+0x40)

2.缩写表

缩写 解释
SID 服务标识符
Cvt

约定值
M 强制的

C 有条件的

U 用户选项

NRC

否定响应码

3.服务描述

清除诊断信息服务就是可以用来清除服务端相应诊断信息的操作,这个相应诊断信息是与groupOfDTC参数是对应的。
譬如:groupOfDTC[] = 0xFFFF33表示的是排放组,那么对应的诊断信息就是跟排放相关的,那么软件就需要将所有与排放相关的诊断信息清除;groupOfDTC[] = 0x000100此编号表示某一特定DTC,假设某一控制器厂家将此DTC定义为换挡位置传感器高于最大值,那么软件就需要将与换挡位置传感器高于最大值相关的诊断信息清除。

那么最重要的一点就是我们需要清除哪个地方的诊断信息呢?

  1. 如果服务端支持只存在RAM中,那么我们只要清掉RAM中的相关诊断信息就好了。
  2. 如果服务端支持诊断信息在内存中有多个副本,譬如:RAM中的一个副本(诊断信息)和EEPROM(考虑到下电保存)中一个副本(诊断信息),那么程序在运行过程中就存在RAM和EEPROM两个地方储存了诊断信息。则服务端应清除读取DTC信息状态报告服务(0x19)使用的副本,也就是这里的RAM中的一个副本。
    那么为什么不顺便也更新一下EEPROM呢?
    因为本身就有备份策略,在电源锁存阶段会触发更新其他副本,我们的EEPROM就是在这个阶段重新被RAM的副本数据更新了。
    注:在电源锁存阶段如果受到干扰的情况下(例如:在电源锁存阶段电池断开),可能导致数据不一致。

3.1.诊断信息

在这个服务中的诊断信息就是与DTC相关的信息,包含以下:

  • DTC状态字节(statusOfDTC);
  • 捕获的DTC快照数据(DTCSnapshotData),此快照信息就是记录当时发生故障的一些状态信息,譬如:报过压故障,就会记录当时的电压值,报过流故障,就会记录当时的电流值
  • 捕获的DTC扩展数据(DTCExtendedData);
  • 其他与DTC相关的数据,如:标志、计数器、定时器等。

3.2.groupOfDTC

ISO14229-1之groupOfDTC定义

4.请求消息定义

请求消息定义
A_Data字节 参数名称 Cvt 字节值 助记符
#1 清除诊断信息请求SID M 0x14 CDTCI

#2

#3

#4

groupOfDTC[] = [

                            groupOfDTCHighByte

                            groupOfDTCMiddleByte

                            groupOfDTCLowByte]

M

M

M

0x00-0xFF

0x00-0xFF

0x00-0xFF

GODTC_

HB

MB

LB

4.1.请求消息子功能定义

该服务不使用子功能参数。(肯定也没有抑制肯定响应位,因为没有子功能参数)

4.2.请求消息数据参数定义

请求消息数据参数定义
定义

groupOfDTC

此参数包含3字节的值,即groupOfDTCHighBytegroupOfDTCMiddleBytegroupOfDTCLowByte三字节,指的是要清除的DTC组(例如,动力、车身、底盘)或特定DTC。该参数特定组的值和范围定义在ISO14229-1附件D-D.1。

5.肯定响应消息定义

肯定响应消息定义
A_Data字节 参数名称 Cvt 字节值 助记符
#1 清除诊断信息响应SID M 0x54 CDTCIPR

5.1.肯定响应消息数据参数定义

该服务在肯定响应消息中不使用数据参数。

6.否定响应消息定义

否定响应消息定义
A_Data字节 参数名称 Cvt 字节值 助记符
#1 否定响应SID M 0x7F SIDNR
#2 清除诊断信息请求SID M 0x14 SIDRQ
#3 否定响应码 M 0xXX NRC_

6.1.否定响应码

此服务支持的否定响应码
否定响应码 描述 助记符
0x13

消息长度错误或格式无效

如果消息的长度错误,则应发送此否定响应码。

IMLOIF
0x22

条件不正确

如果服务端不满足条件,就无法清除储存在服务端中的DTC相关信息,则应返回此NRC。

CNC
0x31

请求超出范围

如果服务端不支持指定的groupOfDTC参数,则应返回此NRC。

ROOR
0x72

通用编程失败

如果服务端在写入存储器(根据地址写)时检测到错误,则应返回此NRC。

GPF

6.2.NRC评估序列

汽车UDS诊断之清除诊断信息服务(0x14)深度剖析

7.服务使用示例

7.1.示例#1-清除“排放相关系统”诊断信息

7.1.1.步骤1:请求清除排放相关诊断信息

客户端向单个服务端发送清除诊断信息请求消息。

清除诊断信息请求消息

消息方向

客户端→服务端

消息类型

请求

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

清除诊断信息请求SID

0x14

CDTCI

#2

#3

#4

groupOfDTC[] = [

                            groupOfDTCHighByte

                            groupOfDTCMiddleByte

                            groupOfDTCLowByte]

0xFF

0xFF

0x33

DTCHB

DTCMB

DTCLB

注:groupOfDTC[] = 0xFFFF33,此DTC表示在ISO14229中定义表示的是排放组

清除诊断信息响应消息

消息方向

服务端→客户端

消息类型

响应

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

清除诊断信息响应SID

0x54

CDTCIPR

7.1.2.操作汇总

步骤1:请求清除排放相关诊断信息

图解:

操作 CAN报文 实体
0 1 2 3 4 5 6 7
清除诊断信息请求 0x04 0x14 0xFF 0xFF

0x33

      客户端
肯定响应 0x01 0x54           服务端

到这里我们的0x14服务基本学完了。

以上解释有没有解决大家的疑惑,如果还是觉得有疑惑的地方,欢迎大家踊跃提出,一起分享,共同进步!!!

有CSDN号的也可以帮忙点个关注,我会陆续更新其它UDS服务

上一篇:Flink通过滚动窗口达到滑动窗口目的 节省内存和CPU资源(背压)


下一篇:汽车UDS诊断详解及Vector相关工具链使用说明——7.5 读取内存服务(0x23)