Bit | 描述 |
0 | TestFailed |
1 | TestFailedThisOperationCycle |
2 | PendingDTC |
3 | ConfirmedDTC |
4 | testNotCompletedSinceLastClear |
5 | testFailedSinceLastClear |
6 | TestNotCompletedThisOperationCycle |
7 | WarningIndicatorRequested |
下面先对以上八种状态进行详细说明‘Bit0 testFailedBit0 testFailed的默认值为0。故障诊断通常是周期性执行的,如果当前周期检测到故障条件满足,表示故障发生了,Bit0testFailed会立即置1,下一个周期如果检测到同一故障的使能条件为满足,则Bit0位会立即恢复为0。从下图可知,Bit0复位还有两种条件:一种调用Dem<…>clearDTC函数清楚该故障的状态位(通常是USD 14服务被执行),第二种调用Dem_ResetEventStatus函数对该故障状态位进行复位。AUTOSAR的标准中对Bit0还有关于是否需要存储的描述,可以通过配置项DemStatusBitStorageTestFailed进行配置。对于支持WWH-OBD的控制器则需要将该配置项配置为true。 Bit1 TestFailedThisOperationCycleBit1的默认值为0,Bit1用于表示当前运行循环是否出现过testFailed = 1。一旦Bit0 testFailed出现过被置位为1的情况,Bit1会被置1,Bit1只有一下两种情况下才能恢复为0:一种是用Dem<…>clearDTC函数清楚该故障的状态位(通常是USD 14服务被执行);第二种是该循环结束新的循环开始,Bit置位和恢复的示意图请参照图2。Bit2 PendingDTCBit2默认值为0,Bit2PendingDTC表示故障在当前循环或者上一个循环出现过Bit0 testFailed被置位为1,并且Bit2 PendingDTC的状态只有在当前循环测试完毕之后才会更新,也就是说如果上一个循环故障发生了,Bit2 PendingDTC位置1,当前循环故障没有发生,但是Bit2 PendingDTC仍为1,只有在下一个循环才会恢复为0。该位有两种条件可以恢复0:第一种是用Dem<…>clearDTC函数清楚该故障的状态位(通常是USD 14服务被执行);第二种是当前运行Bit1未置位为1,并且Bit6未位置为1,并且运行循环结束或者开始一下一个运行循环。示意图如下图。 Bit3 confirmedDTCBit3默认值为0,Bit3 confirmedDTC表示故障已经确认,故障数据存储至EEPROM或者FEE(如果支持实时存故障数据)。另外有一点需要注意Bit3 confirmedDTC置位为1不表示故障还发生,故障当前是否发生主要由Bit0 testFailed状态确定。相对其他bit而言,Bit3的复位条件比较苛刻,有以下三种:第一种为故障老化,第二种为故障替代,第三种是用Dem<…>clearDTC函数清楚该故障的状态位(USD 0x14服务被执,OBD为 0x04服务),该位的逻辑图如下所示。Bit4 TestNotCompletedSinceLastClearBit4的初始默认值为1,Bit4表示自从上次调用Dem<…>clearDTC函数清除DTC后,是否成功执行对故障进行检测,bit4=1表示该故障自从上次清除之后还未进行检测,bit4 =0,表示该故障自从上次清除之后已成功进行检测,该位的逻辑跳转图如下所示。 Bit5 TestFailedSinceLastClearBit5的初始默认值为0,Bit5表示自动上次动用Dem<…>clearDTC函数清除DTC之后,bit0 testFailed是否出现过置位为1。Bit5=0表示自动上次清除DTC之后,故障未发生过,bit5=1表示自动上次清除之后故障又发生过。该位的复位条件有三种:第一种为调用Dem<…>clearDTC函数,第二种是故障老化,第三种为故障替代,逻辑图如下图所示。Bit6 testNotCompletedThisOperationCycleBit6的初始默认值为1;bit6表示该运行循环故障是否进行检测,故障是否进行测试。Bit6=0表示当前循环已对该故障进行检测,进行测试,bit6=1表示当前循环还未对该故障进行检测,进行测试。Bit6的逻辑图见下图。Bit7 WarningIndicatorRequestedBit7初始值为0,bit7用于某些故障发生需要通过仪表盘的MIL灯通知车主。Bit7=1表示请求点亮仪表盘的MIL灯。Bit7=0表示不请求点亮仪表盘的MIL灯。对于不需要通过仪表盘告知用户的故障,Bit7始终为0。 上面主要对DTC status的各位进项的介绍,下面通过一张图来介绍各状态位的变化。其中:0 表示接收到清除诊断信息命令,初始化DTC status byte。1、2表示在运行循环1中故障检测,或者说故障测试已经开始,所以bit4、bit6状态发生变化。3、4、5、6:testFailed,testFailedThisMonitoringCycle,pendingDTC和testFailedSinceLastClear位同时从0变为1,表示已检测到故障发生,但该故障需要两个运行周期才能确认,所以confirmedDTC还是为0. 7表示故障恢复;8表示故障再次发生;9、10:表示在运行循环1结束,运行循环2开始的分界点,由于运行循环2中故障还未进行故障诊,所以testFailedThisOperationCycle状态从1变成0,testNotCompletedThisOperationCycle状态从0变成1.11表示在运行循环2中故障检测还未开始,这时testfailed的状态可以有制造商指定是否保留上一个循环中testFailed的状态,在AUTOSAR中可以通过DemStatusBitStorageTestFailed配置项配置。12表示在运行循环2中故障检测已经执行;13、14表示在运行循环2中故障发生了,所以testfailed、testFailedThisMonitoringCycle置位为1.15、由于故障在两个循环中都存在,confirmedDTC置位为116、用于记录故障连续在多少个运行循环出现,用于确认故障的confirmedDTC是否达到置1的条件。关于DTC status就介绍到此,主要介绍了各位的含义,以及通过一个简单的例子对DTC status各位的变化。