汽车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(考虑到下电保存)中一个副本(诊断信息),那么程序在运行过程中就存在RAMEEPROM两个地方储存了诊断信息。则服务端应清除读取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清除诊断信息请求SIDM0x14CDTCI

#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清除诊断信息响应SIDM0x54CDTCIPR

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

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

6.否定响应消息定义

否定响应消息定义
A_Data字节参数名称Cvt字节值助记符
#1否定响应SIDM0x7FSIDNR
#2清除诊断信息请求SIDM0x14SIDRQ
#3否定响应码M0xXXNRC_

6.1.否定响应码

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

消息长度错误或格式无效

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

IMLOIF
0x22

条件不正确

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

CNC
0x31

请求超出范围

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

ROOR
0x72

通用编程失败

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

GPF

6.2.NRC评估序列

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报文实体
01234567
清除诊断信息请求0x040x140xFF0xFF

0x33

   客户端
肯定响应0x010x54     服务端

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

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

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

  • 16
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心骗小白话

和我一起成长吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值