上回说的即使一张表了解的常用的诊断服务也有26个之多。但其实和诊断管理最密切相关的,还是车辆故障码相关的服务,也叫DTC(Diagnostic Trouble Code)。车辆发生故障时,故障会分类和编码被控制器存储下来,被存储下来的DTC,可以用车载诊断仪从车辆控制器中进行查询(0x14服务)和清除(0x19服务)。
当然DTC以及DTC相关联信息的存储格式以及管理规则也是有一定的约束,尤其是在不同的诊断协议中的细节有一定区别,但总体上常见的还是可以分为ISO14229和ISO15031两个派系(也就是UDS和OBD之间的区别)。
DTC及相关信息包括:
-
DTC:故障码,4个字节构成
-
DTC-Status:故障码状态字,1个字节
-
Snapshot:故障快照包含一组定义的好的DID(数据ID),这些数据ID的数据内容组成快照信息,每个快照也有一个ID编码DTCSnapshotRecordNumbe 1个字节 (0x00 为OBD,0x01~0xFE由OEM自行设定,0xFF一次上传所有数据)
-
DID:发动机内部定义好的可以通过诊断协议读取的数据,每个数据有一个ID编号,编号有两个字节组成。
-
DTC Extended Data: 包含DTC的一些计数器相关的信息,和DTC可以是一对一的关系,也可以是多对一的关系,有些DTC也不一定有扩展数据,这个依据不同的控制器制造商和整车厂的定义确定。
下面先说DTC:DTC的4个字节最高字节Byte3为保留字节,OBD使用了Byte2和Byte1,非OBD的使用了Byte2~Byte0,其中部分协议中关于Byte2,Byte1,有一些明确的定义, Byte0一般是自定义的内容,进一步对故障进行区分。
其中Byte2~Byte1 16个bit 被拆成了5个部分
Part1: 表示故障所属系统
-
00:动力总成系统
-
01:底盘系统
-
10:车身系统
-
11:车载网络及其他集成系统
Part2:故障码所使用的标准
-
00:ISO/SAE 已定义的
-
01:OEM自己定义的
-
10:预留
-
11:预留
Part3:故障所属的子系统
如果是采用ISO/SAE 部分系统的子系统有明确的定义
Part4:故障发生的部件
Part5:故障发生的类型
一般来说,一个车辆开发的过程中要考虑,故障码体系的定义,有点像是定义一个编码字典,将各个系统的故障进行分类编码,这个编码要兼顾ISO等体系标准,便于车辆的第三方认证检测,也要考虑到自己整车开发售后运维体系的工具系统的兼容性,以及各子部件之间的差异,是一个系统性工作,通常会由整车企业发起。
但不同的整车企业在进行故障码定义的时候会有一些差异,所以零部件企业在开发的时候零部件的时候,一般会把故障进行一个索引编号,然后通过一个DTC表(类似字典)来灵活匹配不同厂家的DTC编码规则。