【车载开发系列】诊断故障码DTC的格式标识符
诊断故障码DTC的格式标识符
一.DTC格式标识符概念
DTCFormatIdentifier规定了服务器所报告的DTC格式。它的取值请参照下面的列表。给定的服务器仅允许支持一个DTCFormatIdentifier。
通过DTCFormatIdentifier,报告了DTC格式及解码方法等信息。
它规定使用DTCHighByte高位字节,DTCMiddleByte中位字节,DTCLowByte低位字节进行解码。DTCRecord(DTC记录)和DTCAndStatusRecord(DTC和状态记录)当中的DTC编码方式就是参照了DTC格式标识符。
Byte | Value Description | 说明 |
---|---|---|
0x00 | SAE_J2012-DA_DTCFormat_00 | 根据ISO15031-6规范,本参数值规定了服务器所报告DTC的格式 |
0x01 | ISO_14229-1_DTCFormat | 本参数定义了服务器所报告DTC的格式 |
0x02 | SAE_J1939-73_DTCFormat | 根据SAEJ1939-73,本参数定义了服务器所报告DTC的格式 |
0x03 | ISO_11992-4_DTCFormat | 根据ISO_11992-4,本参数定义了服务器所报告DTC的格式 |
0x04 | SAE_J2012-DA_DTCFormat_04 | 本参数定义了服务器所报告DTC的格式,见ISO27145-2规范 |
0x05 - 0xFF | ISO/SAE reserved | ISOSAE已保留 |
注1:该标识在ISO14229-1中附件D-D.4中定义
注2:SAE是美国汽车工程师协议
注3:DTC格式标识符是强制的必须指定的
在OBD诊断当中用的最多的格式是SAE_J2012-DA_DTCFormat_00
在UDS诊断当中用的最多的格式是ISO_14229-1_DTCFormat
SAEJ1939协议是由美国汽车工程师协议(SAE)基于CAN2.0B协议制定的主要针对商用车的CAN总线通讯协议;
二.DTC格式标识符的运用
不同车企所支持的子功能是不同的,当然支持的DTC格式标识符也会不一样。
1)DTCByXXXXMask通过掩码获得DTC情报
在SID$19以下四个子功能当中,DTCFormatIdentifier的值就是通过肯定响应从服务器端通知客户端的。
reportType = [
reportNumberOfDTCByStatusMask = 0x01;
reportNumberOfDTCBySeverityMaskRecord = 0x07;
reportNumberOfMirrorMemoryDTCByStatusMask = 0x11;
reportNumberOfEmissionsOBDDTCByStatusMask = 0x12;
]
2)按掩码记录报告WWH OBD DTC
reportWWHOBDDTCByMaskRecord(0x42)子功能。它规定了服务器应向客户端传输与客户端定义状态掩码和严重性掩码记录相匹配的WWH OBD DTC列表
及其对应状态和严重性信息。
在这个子功能当中,DTCFormatIdentifier只返回两种类型的Format。
DTCFormatIdentifier = [
SAE_J2012-DA_DTCFormat_04
SAE_J1939-73_DTCFormat
]
3)报告永久性状态的WWH OBD DTC
它规定服务器向客户端传输状态为永久DTC的WWH OBD DTC列表。
在这个子功能当中,DTCFormatIdentifier也只返回两种类型的Format。
DTCFormatIdentifier = [
SAE_J2012-DA_DTCFormat_04
SAE_J1939-73_DTCFormat
]
三.DTC格式标识符作用
ISO15031-6是排放相关诊断(OBD)的故障码定义,它引用了SAE J2012,其中提到OBD DTC是2字节,但一些新的诊断通讯标准中定义的DTC是3字节,如ISO27145,解析方式有所不同,这个时候通过DTC格式标志字来区分解析方式。
正因为上面的原因,如果没有DTC格式标识符,那么我们就无法成功解析出DTC中的内容来了。