有些功能,ECU 在一个操作循环只检测一次,而对于更多的功能,ECU 可能会周期性的去检测。
测试完成(test complete):
测试结束和测试完成的概念是不一样的,只有有了测试结果才能称为测试完成。故障检测计数器(Fault Detection Counter)的概念,这个值的初始值是0,如果出现了一次故障,则故障检测计数器会加上一个步长(根据各个故障类型不同而不同,在BCM中一般取52),如果出现一次功
能正常,则故障检测计数器会减去一个步长(根据各个故障类型不同而不同,在BCM中一般取26)。
当故障检测计数器增加到255,或减少到0时,就认为一次测试完成。
测试失败(test failed):
功能测试失败的标准由ECU 的供应商或者主机厂来确定。当故障检测计数器增加到255时,认为出现了一次测试失败。
当故障检测计数器处于0到255中的一个数值时,认为测试结果处于PreFailed状态。
测试通过(test passed):
功能测试通过的标准由ECU 的供应商或者主机厂来确定。当故障检测计数器
减少到0时,认为出现了一次测试通过。
监控(monitor):
将一次测试完成的过程定义成监控,监控由多个测试过程组成。
监控周期(monitor cycle):
监控周期是指一次监控所需的时间,根据上面的描述,这个时间是不确定的,有可能很长,也有可能很短。一般将一次测试的时间定义为10ms,监控周期则是10ms 的若干倍,根据上面的定义,如果需要出现一次测试失败,至少需要60ms。只要经历了一个监控周期,那么测试肯定是有结果了。需要注意的是,测试的结果并不能改变DTC 的状态信息,而只有监控的结果才能改变状态信息。
操作循环(operation cycle):
根据ISO14229 协议的规定,对于与非排放相关的ECU,一个操作循环如何判定是由ECU 供应商或主机厂来确定的。而对与排放相关的ECU,则由法规来确定。对BCM,现在大部分都将IGN OFF到ON的过程定义为操作循环的开始,将BCM进入休眠状态定义为操作循环的结束。
从上面定义可以看出,操作循环的时间也是一个很大的范围,可以是很长一段时间,也可以是很短一段时间。
故障检测计数器(Fault Detection Counter)
故障检测计数器在上文中已经提到,这个值是用来判断测试是否完成的。
故障出现计数器(Fault occurrence counter)
故障出现计数器用于自上次清除DTC 后((接收14 诊断服务(ClearDiagnosticInformation service))),故障出现次数的计数。该计数器应保存于非易失存储器中。如果状态信息中的“本次操作循环测试失败”位由“0”变为“1”,则故障出现测试加1。如果数值溢出,则其应保持在255。
需要注意的是,故障出现计数器在每个操作循环最多只增加一次,而不是出现了故障就加1。
故障待定计数器(Fault pending counter)
故障待定计数器是指进入未确认故障阶段的次数标称值。应注意的是,对于每个操作循环,进入未确认故障阶段只发生一次。处于不同操作循环之间时,此值必须保存与非易失性存储器。在无故障的操作循环内,一旦“未确认的诊断故障代码”位清零,则该计数器应重置为“0”。对于非排放相关DTC,故障待定计数器的阀值应为1。对于排放相关的OBD DTC,故障待定计数器的阀值取决于DTC 确认准则,而DTC 确认准则由OBD法规定义。
已老去计数器(Aged counter)
已 老去计数器用于自上次清除DTC 后( 接收14 诊断服务(ClearDiagnosticInformation service)),DTC 已老去次数的计数。该数值应存储于非易失性存储器。DTC老化的概念后续描述。
老化计数器(Ageing counter)
老化计数器用于特定DTC 的测试都没有失效的连续操作循环的计数。该数值应存储与非易失性存储器。如果在一个操作循环中有任何已失效的测试结果出现,则其将重置为“0”。
bit0 --- 测试失败(testFailed)
这个位可以实时显示检测结果的正确与否,如果测试结果正确则该位是0;如果测试结果错误则该位是1。该bit的初始化数值是0。
bit1 --- 本次操作循环测试失败(testFailedThisOperationCycle)
在一个操作循环中,只要有一次测试失败,则该bit就置1。并且在本操作循环内不会再变更值。只有在下一个操作循环开始才会初始化为0。
bit2 --- 未确认DTC(pendingDTC)
在一个操作循环中,如果首次检测到故障,则该bit和testFailedThisOperationCycle位会同时被置1。这两个bit不同的地方在于,在每次操作循环开始时,testFailedThisOperationCycle位都会被重置为0,但是pendingDTC只有在上一次操作循环没有出现一次testFaild才会在本次操作循环开始的时候置0。
bit3 --- 确认DTC(confirmDTC)
对于非OBD相关的DTC,只要pendingDTC被置1,则该bit也会置1。而与OBD相关的DTC,pendingDTC置1时,confirmDTC不置1。需要连续若干个操作循环都出现故障,该bit才会置1。其中只要有一个操作循环没有出现故障,则计数器需要重新计数。
confirmDTC的清除也很麻烦,AgingCounter 这个变量就是用来说明bit3(confirmDTC)何时清除的。只有连续AgingCounter 个操作周期都不出现错误时,bit3(confirmDTC)才会被清除。而其
中只要有一个操作循环出现了故障,AgingCounter 都需要重新开始计数。其实,这就是DTC老化的过程。
bit4 --- 自上次清除后未测试完成(testNotCompleteSinceLastClear)
这个位自上次接收到14 诊断服务(ClearDiagnosticInformation service)后,只要完成了一次test complete(无论结果是正确还是错误),这个值就一直是1 了。除非再次收到14 诊断服务(ClearDiagnosticInformation service),这个值才会被重置0。
bit5 --- 自上次清除后测试失败(testFailedSinceLastClear)
这个位和bit4(testNotCompleteSinceLastClear)一样,自上次接收到14 诊断服务(ClearDiagnosticInformation service)后,只要出现了一次测试失败,这个值就一直是1了,除非再次收到14诊断服务(ClearDiagnosticInformation service),这个值才会被重置0。
bit6 --- 本次操作循环未测试完成(testNotCompleteThisOperationCycle)
在一个操作循环中只要完成了一次test complete(无论结果是正确还是错误),该位就会置1,并且在下一个操作循环开始之前一直保持为1,不会再发生变化。在每次操作循环开始时该位都要重新置为0。
bit7 --- 警告指示请求(warningIndicatorRequested)
某些比较重要的DTC,主机厂会为这个DTC 安排一个故障指示灯,
当达到 bit7(warningIndicatorRequested)置1 的要求时,会点亮故障指示灯;
当达到bit7(warningIndicatorRequested)置0的要求时,会将故障指示灯熄灭。
bit7(warningIndicatorRequested)置1 或置0 的条件由供应商或者主机厂来确定,一般是bit3(confirmedDTC)置1时将bit7置1;
当连续三个周期没有出现测试失败时,将bit7(warningIndicatorRequested)置0。