ISO-14229标准中对车辆的故障码DTC进行了一定的规范要求——每个DTC都有一个状态字节,字节有8个bit位,从不同程度上代表故障的“过去、现在、未来”—— 例如:这个故障是不是满足了检测条件、是不是在当前发生过,本次驾驶循环又没发生过,之前的驾驶循环发生过等等。
为什么要知道故障的“过去、现在、未来”呢?其实还是为了方便对系统故障进行准确的识别,不误报也不漏报。汽车上电子控制系统的运行环境非常复杂,有时候因为干扰会导致故障触发了一下很快又消失,但是不影响系统功能,可以不记录该故障,但这个的情况连续发生多次说明系统还是有潜在的问题,也是需要记录下来进一步分析。所以,根据不同的场景需求,归纳出这几种通用故障状态,便于对控制器故障进行进一步分析。
官方的定义如下:
Bits | Description | Meaning |
---|---|---|
0 | Test Failed | The bit indicates the qualified result of the most recent test. |
1 | Test Failed This Operations Cycle | The bit indicates if during the active operation cycle the event was qualified as failed. |
2 | Pending DTC | This bit indicates if during a past or current operation cycle the event has been qualified as failed, and has not tested 'passed' for a whole cycle since the failed result was reported. |
3 | Confirmed DTC | The bit indicates that the event has been detected enough times that it was stored in long term memory. |
4 | Test Not Completed Since Last Clear | This bit indicates if the event has been qualifed (passed or failed) since the fault memory has been cleared. |
5 | Test Failed Since Last Clear | This bit indicates if the event has been qualified as failed since the fault memory has been cleared. |
6 | Test Not Completed This Operation Cycle | This bit indicates if the event has been qualified (passed or failed) during the active operation cycle. |
7 | Warning Indicator Requested | This bit indicaties if a warning indicator for this event is active. |
是不是看的有点蒙,这里面还是有一些语言语义理解的差异会让人容易头晕。
Test:故障检测程序,一般是周期性的检测
Failed : 就是指故障发生了,测试没通过
Pass:故障没发生,测试通过
Completed:完成表示更改确定当前操作是否有故障,并不表示发生故障
Operation Cycle: 一个操作周期,例如:上下电,或者一次唤醒到休眠 期间为一个操作周期;AUTOSAR DEM中定义了常见定义的有4类:
K15 点火上下电
OBD驾驶循环
OBD Warm up 循环
电源 开关
Pending:故障在本周期或者上个周期发生了,但是还待定,原意看下个操作周期还是不是发生,还发生就确诊,本周期和下周期不发生,就清除了。但目前也有引申用法,可以引申到多个操作周期。(之所以会有Pending这种跨周期的故障,是因为在燃油车排放后处理中,有一些催化还原反应,相关的故障是需要多个连续周期判断的,在新能源纯电动车中,这种情况反而遇到的少,这个bit有时候待定也被车企定义做其他特殊的待定含义或者保留了)
Clear: 指用UDS的清除命令(SID:0x14)清除相应的DTC
Event:我们说DTC其实是某类故障的统称,Event 是故障检测的基本单元,多个Event可以mapping 同一个DTC,而同一个Event不能mapping 多个DTC
了解了上面这些概念是不是,再看上面那段英文表格是不是会清晰一点?
如果更直白一点,我们干脆拆解一下每个BIT何时会被置1,何时会被置0
Bits | 描述 | 置1的条件 | 置0的条件 | 备注 |
---|---|---|---|---|
0 | Test Failed | 故障发生置1 | 故障消失置0,或新测试未完成时收到清除DTC命令也置0 | |
1 | Test Failed This Operations Cycle | 故障发生置1 | 置1后本次循环内不会置0,重新开始下个循环才会置0,清除命令也无效 | |
2 | Pending DTC | 故障发生或确认置1 上个循环有故障发生或确认也置1(即使本次循环无故障) | 上次/上N次循环无故障,到本次循环结束也无故障则置0 | Pending的用法策略比较灵活,这里仅仅是举了常见的例子 |
3 | Confirmed DTC | 故障确定已经发生了,经过了确认期例如滤波,循环次数确认等等(按不同故障需求),置1 | 命令删除DTC,置0 (即使故障恢复也不会自动置0) | |
4 | Test Not Completed Since Last Clear | 上次删除DTC命令后,测试条件未满足时置1 (删除DTC后先置1) | 上次删除DTC命令后,测试条件满足过就置0 | |
5 | Test Failed Since Last Clear | 上次清除DTC命令后,故障出现置1 | 清除DTC命令置0 | |
6 | Test Not Completed This Operation Cycle | 在当前循环中还未完成过对DTC的测试,置1 | 当前循环中已完成过对DTC的测试,置0 | |
7 | Warning Indicator Requested | 关联驾驶员警告的故障,故障发生时置1 | 关联驾驶员警告的故障,故障置0的策略可自定义 | 可以同步Test Failed或者Confirmed DTC |
通过DTC上面的这些位,我们就知道故障是当前存在,历史存在,还是未来可能确定等等。
声明:文章会首发在 微信公众号 “智说电控”, 欢迎搜索关注!