本篇文章主要介绍在ISO 14229-1标准中定义的UDS服务——$14 ClearDiagnosticInformation,其为Tester提供了清除目标ECU诊断信息的能力。
目录
1 服务介绍
$14 ClearDiagnosticInformation服务用于清除在ECU内存中的一个或多个诊断信息。
当$14服务处理完成之后(即使当前ECU并没有存储任何的DTC),ECU应发送$14服务的肯定响应报文。若ECU支持在内存中拷贝多份DTC状态信息(例如,在RAM中拷贝一份,在EEPROM中拷贝一份),则ECU应清除被$19服务使用到的那份DTC副本。
$14服务的请求报文中包含groupOfDTC参数,其可以指示ECU清除一组DTC(例如,动力域、车身域、地盘域、网络域等),或者某一个具体的DTC。对于清除一组DTC的请求来说,除非另有说明,否则ECU将从内存中清除与排放有关和非排放相关的DTC。
通过$14服务清除的DTC信息包括但不限于以下内容:
- DTC状态位
- DTC快照信息
- DTC拓展信息
- 其他与DTC相关的数据,例如,第一个DTC、最近一个DTC、标志位、计数器、计时器
2 服务数据格式
2.1 请求数据格式
以下是$14服务的请求数据格式:
字节序 | 参数 | 字节值 | 说明 |
---|---|---|---|
#Byte1 | ClearDiagnosticInformation SID | 0x14 | 必选 |
#Byte2 | groupOfDTC[] = groupOfDTCHighByte | 0x00 – 0xFF | 必选 |
#Byte3 | groupOfDTC[] = groupOfDTCMiddleByte | 0x00 – 0xFF | 必选 |
#Byte4 | groupOfDTC[] = groupOfDTCLowByte | 0x00 – 0xFF | 必选 |
2.1.1 groupOfDTC
groupOfDTC参数是一个三字节值,用于指示待清除的DTC组(例如,动力域、车身域、地盘域、网络域等)或某个具体的DTC,其具体定义如下表所示:
ByteValue | Description |
---|---|
0x000000 – 0x0000FF | 为未来的法规要求保留 |
车辆制造商规定 | 动力域组DTC |
动力域特定DTC | |
底盘域组DTC | |
地盘域特定DTC | |
车身域组DTC | |
车身域特定DTC | |
网络通信组DTC | |
网络通信特定DTC | |
0xFFFF00 – 0xFFFFFE | 低字节两位是功能组标识符(FunctionalGroupIdentifier) |
0xFFFFFF | 所有DTC组(所有DTC) |
FunctionalGroupIdentifier参数具体定义如下表所示:
ByteValue | Description |
---|---|
0x00 – 0x32 | ISO/SAE reserved |
0x33 | Emissions-system group 该值标识ECU中的排放系统功能组 |
0x34 – 0xCF | ISO/SAE reserved |
0xD0 | Safety-system group 该值标识ECU中的安全系统功能组 |
0xD1 – 0xDF | Legislative system group 该值标识ECU中的法规系统功能组 |
0xE0 – 0xFD | ISO/SAE reserved |
0xFE | VOBD system 该值标识ECU中的VOBD系统功能组(具有VOBD功能的ECU才使用此标识) |
2.2 肯定响应数据格式
以下是$14服务的肯定响应数据格式:
字节序 | 参数 | 字节值 | 说明 |
---|---|---|---|
#Byte1 | ClearDiagnosticInformation SID + 0x40 | 0x54 | 必选 |
2.3 否定响应数据格式
以下是$14服务的否定响应数据格式:
字节序 | 参数 | 字节值 | 说明 |
---|---|---|---|
#Byte1 | Negative Response SID | 0x7F | 必选 |
#Byte2 | ClearDiagnosticInformation SID | 0x14 | 必选 |
#Byte3 | NRC | supportedNRC | 必选 |
supportedNRC的可选值如下表所示:
supportedNRC | NRC define | 描述 |
---|---|---|
0x13 | incorrectMessageLengthOrInvalidFormat | 诊断请求指令的长度或格式不对 |
0x22 | conditionsNotCorrect | 执行诊断的条件不满足 |
0x31 | requestOutOfRange | 诊断请求参数超出范围或DID/RID不支持 |
0x72 | generalProgrammingFailure | 擦除或刷写内存时错误 |
3 服务通信示例
3.1 清除指定DTC信息
本例展示了Tester如何通过$14服务清除ECU指定DTC信息,其中,存在以下条件:
- sub-function bit7: SPR = 0
3.1.1 请求报文
字节序 | 参数 | 字节值 |
---|---|---|
#Byte1 | ClearDiagnosticInformation SID | 0x14 |
#Byte2 | groupOfDTC[] = groupOfDTCHighByte | 0xFF |
#Byte3 | groupOfDTC[] = groupOfDTCMiddleByte | 0xFF |
#Byte4 | groupOfDTC[] = groupOfDTCLowByte | 0x33 |
3.1.2 肯定响应报文
字节序 | 参数 | 字节值 |
---|---|---|
#Byte1 | ClearDiagnosticInformation SID + 0x40 | 0x54 |