相信相信的力量,相信坚持的力量
乘风立潮头,扬帆追梦行。
目录
bit 1 : testFailedThisOperationCycle
bit 4 : testNotCompletedSinceLastClear
bit 5 : testFailedSinceLastClear
bit 6 : testNotCompletedThisOperationCycle
bit 7 : warningIndicatorRequested
1、基本概念
DTC(Diagnostic Trouble Code)即诊断故障码,DTC是汽车电子系统故障的”身份ID”,当ECU检测到某个系统或部件出现故障时,它会生成一个DTC,每个DTC都唯一对应一个特定的故障类型或诊断事件。通过读取和分析DTC,技术人员可以了解故障的具体信息,如触发条件、解除条件以及系统的功能表现等。
2、DTC的构成
根据ISO 15301-6和ISO 14229-1的故障诊断码格式规定,故障码信息由四字节组成,如下表
其中前三个字节表示故障诊断码即DTC,StatusOfDTC表示故障码状态。其中DTCHighByte、DTCMiddleByte这两个字节表示故障内码,对应五位标准故障码,第一位是字母,后面四位是数字;而故障代码的低字节代表故障失效类型信息。
3、故障码解析
1、故障诊断码高字节的第一位是字母,表示故障所属系统
2、故障诊断码高字节的第二位是数字0、1、2或3,表示故障类型
3、故障诊断码高字节的第三位是数字,表示故障所属的子系统,以动力系统故障为例
0:表示燃油和空气计量辅助排放控制整个系统;
1:表示燃油和空气计量系统;
2:表示燃油和空气计量系统(喷油器)
3:表示点火系统;
4:表示废气控制系统;
5:表示巡航、怠速控制系统;
6:车载电脑和输出信号;
7、8:传动系统控制;
4、标准故障码的第四、五位也是数字,表示具体故障对象和类型;DTCLowByte则是描述故障种类和子类型,该部分内容遵循ISO 15031-6,对于不需要该字节的DTC,可填充为0x00。
具体故障种类在ISO 15031-6中详细定义:
4、DTC状态掩码(StatusOfDTC)
DTC状态位,又叫DTC状态掩码,用来指示DTC所对应的故障是否发生,是否被确认等状态。包含1个byte,每个bit都有各自的含义,但是这8个bit不一定都要使用,各个主机厂可以根据自己的需求使用其中的几个,下图为DTC状态掩码表:
4.1、DTC状态掩码详细解释
bit 0 : testFailed
如果在最近的一次测试中,在某个错误路径中发现了故障,则相应DTC的这一个状态位就要被置1。也就是DTC的testFailed位被置1,但是它不一定被ECU存储到EEProm中,只有当pending DTC或confirmed DTC被置1时故障码才会被存储。
指示最近执行test的结果,test失败置1,但是它不一定被ECU存储到EEprom中,只有当bit2或bit3被置1时DTC才会被存储。test通过则置0,如果调用了14服务清除DTC的话,也需要重新置0
0:DTC测试的最新结果表明未检测到故障。
1:DTC测试的最新结果表明了一个确认的失败结果。
DTC Bit0 更新逻辑
bit 1 : testFailedThisOperationCycle
用于标识某个DTC在当前的operation cycle中是否出现过testFailed置1的情况,即是否出现过错误,也就是在当前操作循环内的测试结果,该操作循环内只要发生过错误,就置"1"; 开始新的操作循环或发送清故障码服务后,就置"0";
该位表示在当前test中,诊断test是否已经报告了一个testFailed结果。当新的检测循环开始时,这个位需要置0,在调用了14服务后也需要置0。如果该位置1,那么一直保持置1状态直到新的检测循环开始,因此bit1可以理解为当前DTC。如果bit2和bit3通常一起使用。对于没有网络管理的 ECU,这个起始点就是 KL15 通断。也就是说上电时间内出现的故障,该位都会置1,不管是否存储。
0:testFailed:在当前操作周期内或在当前操作周期内调用ClearDiagnosticInformation后,尚未报告testFailed结果。
1:testFailed:在当前操作周期中至少报告了一次testFailed结果。
DTC Bit1更新逻辑
bit 2 : pendingDTC
当前循环内,故障发生,pendingDTC = 1,但是在下一个循环内,故障没有了,pendingDTC 仍然为 1,再下一个循环内,故障仍不存在,那么pendingDTC 就可以置0了。如果接下来的两个循环内,这个DTC都还存在,那么confirmedDTC就要置1了。
根据ISO 14229的定义,当一个test结束时,若某个DTC满足故障触发条件,则bit2置1。bit2位其实是表示DTC处于testFailed和confirmedDTC之间的一个状态,称为待定DTC。因为DTC并不是一达到触发位就会被报出来的,而是故障出现一段时间后才会被确认,而中间的这个状态就用bit2位来表示,因此bit2位又可被称为待定DTC。当某个DTC刚达到判定条件的时候,bit2被置1,若一段时间后故障条件不满足了,则bit2置0,若一段时间后故障仍然存在,那么bit3就要置1了。
0: 在完成测试完成且未检测到故障的操作循环后或调用ClearDiagnosticInformation服务时,该位应设置为0。
1: 如果在当前操作循环中检测到故障,则该位应设置为1并锁定
DTC Bit2更新逻辑
bit 3 : confirmedDTC
当confirmedDTC = 1时,则说明某个DTC已经被存储到ECU的EEProm中,说明这个DTC曾经满足了被confirmed的条件。但是请注意,confirmedDTC = 1时,并不意味着当前这个DTC仍然出错,如果confirmedDTC = 1,但testFailed = 0,则说明这个DTC表示的故障目前已经消失了。将confirmedDTC 重新置0的方法 UDS 14服务(清除故障码)。
当bit3置1时,说明故障已经发生了一段时间,也就是bit2至少有一次被置1了。需要注意的是,bit3置1的时候,DTC被存储在EEprom中,但并不代表现在故障还存在,所以可以理解为历史故障。在调用14服务清除DTC后需要置0。
0:自上次调用ClearDiagnosticInformation后,或在满足故障诊断码的老化条件(或由于故障记忆溢出而清除了故障诊断码)后,从未确认过故障诊断码。
1: 自上次调用ClearDiagnosticInformation后至少确认一次的DTC,且尚未满足老化标准
DTC Bit3更新逻辑
bit 4 : testNotCompletedSinceLastClear
因为并不是所有的DTC测试都是从上电就开始的,所以该位用来表示上次调用14服务清除诊断消息后,是否进行过完整的test。如果进行了完整的test,无论结果如何,都置0,否则置1。
0:自上次清除诊断信息以来,DTC测试至少返回一次测试结果(无论通过或失败)。
1:自上次清除诊断信息后,DTC测试尚未运行到完成。
DTC Bit4更新逻辑
bit 5 : testFailedSinceLastClear
该位表示在上次调用14服务清除后DTC后,若test DTC未进行测试或者测试了但结果是pass时置0,如果test运行完成并且返回结果为fails,那么该位置1。在调用14服务清除DTC后需要置0。bit4和bit5通常一起使用。
0 :自上次清除诊断信息后,DTC测试未显示失败结果。如果满足老化阈值或发生故障记忆溢出,则车辆制造商应负责将该位重置为零(“0”)。
1:自上次清除诊断信息以来,DTC测试至少返回一次失败结果。
DTC Bit5更新逻辑
bit 6 : testNotCompletedThisOperationCycle
该位表示在当前检测循环周期过程中DTC test是否通过,每次进入新的cycle都会先置0,若完成了置0,未完成置1。在调用ClearDiagnosticDTC后需要置1。
0 :在当前operation cycle中(或自上次在当前操作循环期间清除诊断信息以来)完成。
1 :在当前operation cycle中(或自上次清除此操作循环的诊断信息后),DTC测试尚未运行到完成。
DTC Bit6更新逻辑
bit 7 : warningIndicatorRequested
该位报告警告指示,比如说仪表盘上的警示灯等。
但不是所有的DTC都会有警告指示,如果没有和DTC相关的警告存在,该位应置0;
如果该DTC有相关警告指示,bit3置1的时候,bit7也要置1。在调用14服务清除DTC后需要置0。
0:ECU不请求激活警告指示。
1:ECU请求激活警告指示。
DTC Bit7更新逻辑
4.2、历史故障与当前故障
历史故障是过去发生但当前还没有清除的故障码,历史故障产生的原因有两种情况,一种是故障己经排除,只是未清除故障码,此代码清除后,故障就不会再次发生;另一种是故障并未排除,只是当前没有发生,此代码清除后,当故障再次发生时,故障还会出现。
当前故障是正发生的故障产生的故障码,当前故障是确实存在的故障引起的,它属于持续性故障产生的故障码,它不会被清除。
历史故障与当前故障对应上表,当前故障为bit0是1的故障,历史故障是指bit0为0但bit3为1的故障。
5、快照数据和扩展数据
除了DTC本身之外,项目中最常用的功能就是快照数据和扩展数据。
DTC快照数据
DTC快照指与某个DTC相关的特定数据记录,存储在服务器内存中,DTCSnapshot通常用于在检测到系统故障时存储对应数据。
DTCSnapshot可作为自系统发生故障后数据值的快照。DTCSnapshot内存储的数据参数应该与DT相关联。
一般是指电源模式、温度、时间戳、车速等信息。
如何获取DTC快照数据
通过19 04服务,诊断工具可以获取相关的DTCSnapshot信息,通过获取DTC快照数据,通过DTC特定数据参数可以帮助技术人员在检修时减少错误的故障隔离操作。
DTC扩展数据
在故障发生时其他的辅助故障信息,DTC故障发生次数、老化次数、故障持续时间、故障后行驶里程等,可以通过19 06服务获取DTC扩展数据。
6、相关术语
测试(test)
就是判断当前条件是否满足故障码上报的条件,不同DTC的判断条件不同,判断时机和周期也不同,有些故障在一个操作循环内仅运行一次,有些则是周期性判断。
操作循环(operation cycle)
定义了测试开始和结束条件,operation cycle开始时开始检测故障,结束时停止检测。
老化(aging)
被记录的DTC,如果这个故障不再出现,那就不会一直被记录下去,这时是需要一个过程:当测试结果连续出现多少次通过,才可以将这个DTC清除,这个过程就叫老化,多少次称为老化阈值。
常用老化阈值:40cycle