文章目录
- 简介
- 用途
- 依赖知识
-
- 1、测试(test)
- [2、操作循环(operation cycle)](#2、操作循环(operation cycle))
- 3、老化(aging)
- DTC状态位
-
- [1、Bit 0:Test Failed](#1、Bit 0:Test Failed)
- [2、Bit 1:Test Failed This operation cycle](#2、Bit 1:Test Failed This operation cycle)
- [3、Bit 2:Pending DTC](#3、Bit 2:Pending DTC)
- [4、Bit 3:Confirmed DTC](#4、Bit 3:Confirmed DTC)
- [5、Bit 4:Test Not Complete Since Last Clear](#5、Bit 4:Test Not Complete Since Last Clear)
- [6、Bit 5:Test Failed Since Last Clear](#6、Bit 5:Test Failed Since Last Clear)
- [7、Bit 6:Test Not Complete This Operation Cycle](#7、Bit 6:Test Not Complete This Operation Cycle)
- [8、Bit 7:](#8、Bit 7:)
- [操作循环中的DTC 状态掩码](#操作循环中的DTC 状态掩码)
- 参考
简介
DTC状态位(StatusOfDTC
),又叫DTC状态掩码(DTCStatusMask
),是用来指示DTC所对应的故障是否发生,是否被确认等状态。
用途
用状态掩码去查找与其相匹配的故障个数,通过 $19 服务诊断仪能够请求ECU中DTC状态与DTC状态掩码相匹配的故障码个数。
如果某一个故障码的实际状态位为1,并且DTC状态掩码中的相应位也为1,那么就认为该故障码的状态与DTC状态掩码相匹(即:如果DTC状态掩码字节与DTC实际状态字节进行逻辑"位与"运算后的结果为非零值,那么两者就相匹配);此时则将故障数+1。
依赖知识
1、测试(test)
所谓 测试(test),实际上就是 判断当前条件是否满足故障码上报的条件。
不同 DTC 的判断条件不同,判断时机和周期也不同,有些故障判断在一个操作循环内仅运行一次,有些则是周期性判断。
2、操作循环(operation cycle)
定义了测试的开始和结束条件,Operation Cycle
开始时开始检测故障,结束时停止检测。
3、老化(aging)
所记录的DTC,如果这个故障不再出现,那就不会一直被记录下去,这时需要通过一个过程:当测试结果连续出现多少次Passed,才可将这个DTC清除,这个过程就叫老化。多少次称为老化阈值。
常用老化阈值为:40 cycle
DTC状态位
DTC状态位包含1个字节数据长度
,当条件成立时,该Bit位置1,通过读取各Bit的置位信息即可得知当前及过去DTC的情况,当然也可以通过诊断命令对状态位进行清除
但并不是每一位不一定都要使用,具体取决于各OEM的需求,在ISO14229-1中,除了bit3: ConfirmedDTC是强制约束外,其他都没有强制约束。
位 | 状态缩写 | 术语 | 描述 |
---|---|---|---|
Bit 0 | TF | Test Failed | 故障位(当前故障) 1 表示当前结果为故障状态 |
Bit 1 | TFTOC | Test Failed This operation cycle | 当前操作循环检测故障位 1 表示当前操作循环中至少检测到一次故障 |
Bit 2 | PD | Pending DTC | 待确定的DTC 1 表示上一次或者当前操作循环中至少检测到一次故障 |
Bit 3 | CDTC | Confirmed DTC | DTC确认(历史故障) 1 表示存在历史故障 |
Bit 4 | TNCSLC | Test Not Complete Since Last Clear | 在故障清除后 test 没有完成 1 表示从上次进行清除诊断信息后,DTC Test 尚未完成 |
Bit 5 | TFSLC | Test Failed Since Last Clear | 在故障清除后测试失败 1 表示从上次进行清除诊断信息后,DTC测试当前结果为故障状态 |
Bit 6 | TNCTOC | Test Not Complete This Operation Cycle | 当前操作循环测试没有完成 1 表示在当前操作循环内(或在本次操作循环内,清除上一次诊断信息后)未完成DTC测试 |
Bit 7 | WIR | Waring | 请求警告指示灯 1 表示有报警输出,报警指示灯亮起 |
1、Bit 0:Test Failed
经Debounce(消抖)后最终的故障状态,表示当前是否有故障发生
- 满足以下条件之一时,
Bit 0 = FALSE(0)
:- DEM初始化完成
- 测试结果通过
- 14服务清除DTC
- 满足以下条件之一时,
Bit 0 = TRUE(1)
:- 测试结果为不通过
注意:test失败置1,但是它不一定被ECU存储到EEprom中,只有当bit2或bit3被置1时DTC才会被存储。
2、Bit 1:Test Failed This operation cycle
在当前操作循环是否出现一次测试结果为Failed,如果出现了,则DTC的状态位bit1置1。
通常和 bit2 和 bit3 一起使用,也就是表示当前操作周期或从上一次命令清零后已经监测到一次故障。
通过Bit0我们可以知道当前该DTC的状态,通过Bit1知道某DTC在当前operation cycle是否出现过错误,即使后面被修复,该Bit1仍将置位。
- 满足以下条件之一时,
Bit 1 = FALSE(0)
:- DEM初始化完成
- 操作循环开始
- 14服务清除DTC
- 满足以下条件之一时,
Bit 1 = TRUE(1)
:- 测试结果为不通过
3、Bit 2:Pending DTC
在上一次或当前操作循环是否出现一次测试结果为Failed,如果出现了,则相应DTC的状态位bit2就置1。
Pending DTC其实是表示DTC处于testFailed和confirmedDTC之间的一个状态,称为待定DTC。因为DTC并不是一达到触发位就会被报出来的,而是要对故障进行Debounce(消抖),防止故障误报。
而中间的这个状态就用bit2位来表示。若一段时间后故障条件不满足了,则bit2置0,如果几次Debounce(消抖)后故障仍存在,则对应ConfirmedDTC状态位就会置位。
- 满足以下条件之一时,
Bit 1 = FALSE(0)
:- DEM初始化完成
- 操作循环结束后(测试完成)且未检测出任何故障(bit1 和 bit4 都是0)
- 14服务清除DTC
- 满足以下条件之一时,
Bit 1 = TRUE(1)
:- 测试结果为不通过
注意:(如果某次Operation Cycle未完成测试,则调过本次Operation Cycle不计数)
4、Bit 3:Confirmed DTC
Bit3(ConfirmedDTC)对应Bit2(PendingDTC)即已确定的DTC,当PendingDTC置位多次达到可以确定failed标准后即成为ConfirmedDTC,故障数据存储至EEPROM
- 满足以下条件之一时,
Bit 1 = FALSE(0)
:- DEM初始化完成
- 满足老化条件
- 14服务清除DTC
- 满足以下条件之一时,
Bit 1 = TRUE(1)
:- 测试结果为不通过并且故障 Debounce(消抖)后仍存在
注意:当confirmedDTC = TRUE时,并不意味着当前这个DTC仍然出错,也可能Bit0(TestFailed) = FALSE,即为历史故障。
5、Bit 4:Test Not Complete Since Last Clear
表示上次调用14服务清除诊断消息后,某DTC是否进行了一个完整的测试(不管测试结果是什么,只关心是否测了),
无论结果如何,都置0,否则置1。
- 满足以下条件之一时,
Bit 1 = FALSE(0)
:- 在调用 14 服务后,该 DTC 进行了一个完整的测试
- 满足以下条件之一时,
Bit 1 = TRUE(1)
:- 14服务清除故障状态
- 在调用 14 服务后,该 DTC 未进行了一个完整的测试
6、Bit 5:Test Failed Since Last Clear
表示自从上次故障信息被清除,是否出现某DTC测试结果为Failed。
如果出现了,则该DTC的状态位bit5置1;如果被置1,那么只有当操作循环改变且满足老化阈值条件,或者使用诊断设备执行了清除DTC指令等,该位才能被重置为0。
与Bit1(TestFailedThisOperationCycle)置位逻辑类似,差别在于Bit5(TestFailedSinceLastClear)计算起点是从上次清除故障开始,如出现故障则该Bit置为TRUE,否则为FALSE。
- 满足以下条件之一时,
Bit 1 = FALSE(0)
:- 14服务清除故障状态
- 故障老化
- 故障替代
- 满足以下条件之一时,
Bit 1 = TRUE(1)
:- 在调用 14 服务后,test 再次为 Failed
7、Bit 6:Test Not Complete This Operation Cycle
本位表示,在当前操作循环内,是否已进行并完成DTC 测试(或在当前操作循环期间上一次发出ClearDiagnosticlnformation(清除诊断信息)请求后完成测试)。
无论结果如何,都置0,否则置1。
- 满足以下条件之一时,
Bit 1 = FALSE(0)
:- 该 DTC 进行了一个完整的测试
- 满足以下条件之一时,
Bit 1 = TRUE(1)
:- 14服务清除故障状态
- 该 DTC 未进行了一个完整的测试
- 操作循环变化
8、Bit 7:
该位报告警告指示,比如说仪表盘上的警示灯等。
但不是所有的DTC都会有警告指示,如果没有和DTC相关的警告存在,该位应置0;
如果该DTC有相关警告指示,bit3置1的时候,bit7也要置1。
操作循环中的DTC 状态掩码
Todo