【车载开发系列】诊断故障码DTC基本概念与定义
诊断故障码DTC基本概念与定义
一.DTC的定义
DTC(Diagnostic Trouble Code)就是诊断故障码。在原则上一个DTC只能定义一个故障类别。它是故障类型的"身份ID";用于汽车故障时对故障部位及原因的排查
当发生车辆故障的时候,为了让我们能够明白具体发生了什么故障而存在的Code。外部通过诊断器就可以确认DTC的值。
读出来的DTC是现在正在发生的故障,还是过去发生过的故障,这个可以通过诊断服务的控制来得到不同的结果。
二.DTC的构成
根据ISO15031-6和ISO14229-1的故障诊断码格式规定,故障码信息由四字节组成。
其中DTCHighByte,DTCMiddleByte,DTCLowByte表示服务中的故障诊断码;StatusOfDTC表示故障码状态。
DTCHighByte,DTCMiddleByte两字节表示故障内码,对应5位标准故障码,如表下所示。
5位标准故障码的第一位是字母,后面四位是数字。第一位字母表示故障所属系统对应着Bit15和Bit14。
有00,01,10,11四个选择项,分别代表着动力系统故障(Powertrain),底盘故障(Chassis),车身故障(Body)和网络故障(Network)。
第二位数字表示故障类型,使用故障内码Bit13和Bit12对应着。也有00,01,10,11四个选择项,00=ISO/SAE标准定义的故障码,01=制造商自定义的故障码
而10,11为保留项。
第三位字符表示故障所属的子系统。该位“0”表示燃油和空气计量辅助排放控制整个系统, “1”表示燃油和空气计量系统;
“2”表示燃油和空气计量系统(喷油器);
“3”表示点火系统;
“4”表示废气控制系统;
“5”表示巡航、怠速控制系统;
“6”表示与控制单元相关;
“7”“8”表示变速箱系统等。
第四五位字符落在了DTCMiddleByte字符之上,表示具体故障对象和类型。
DTCLowByte描述故障种类和子类型(也叫做故障失败类型Faults Types),该部分内容描述需遵循ISO 15031-6。
对于不需要该字节信息的DTC(OBD诊断中2Byte的DTC),该字节填充为0x00。StatusOfDTC表示故障码状态。
三.故障码DTC的16进制表示
根据前面介绍的故障内码与5位标准故障码的对应关系,我们可以将标准故障码换算成其16进制的表示,便于我们在代码中的记录操作。
关于标准故障码换算为16进制表示,其实只需根据第一小节中介绍的故障内码与5位标准故障码的对应关系;
将标准故障码的第一、第二位(如下例中的“U0”、“B1”)换算为对应的内码格式,再以16进制表示出来;
至于后面的其他内容,其格式本来就是16进制进行表示的,直接照着写下来即可(其实只是将标准故障码的第一、二位进行转换即可了)。
例如:
U007205,其故障内码为:1100 0000 0111 0010,换算成16进制则为C072;补充上DTCLowByte(05),则其完整的16进制表示为0xC07205;
B100011,其故障内码为:1001 0000 0000 0000,换算成16进制则为9000;补充上DTCLowByte(11),则其完整的16进制表示为0x900011;
四.DTC记录(DTCRecord)
它是SID$19$03的肯定响应中的一个参数。本参数记录包含一组或多组DTCHighByte,DTCMiddleByte,DTCLowByte。
在这里需要特别注意的是这里正响应中返回的DTC是没有StatusOfDTC的。
报告DTC快照标识的时候,这个时候是不需要DTC状态信息的。
五.DTC和状态记录(DTCAndStatusRecord)
本参数记录包含一组或多组符合DTC格式标识符定义的DTCHighByte,DTCMiddleByte,DTCLowByte。
三者共同表示服务器所支持的特定故障诊断码的唯一标识号。
和DTC记录(DTCRecord)相比还多了StatusOfDTC。DTCAndStatusRecord也是用在SID$19的肯定响应中。