UDS中每一个DTC都用一个字节(8bit)来表示一个DTC的状态,每一bit都有不同的含义:
bit0:testFailed
一般的情况下,ECU内部会周期性的检查一些条件,比如每20ms要检查电压、温度等,当检测到过压,过温时,就会报相应的DTC,这时就会把bit0置位;如果下一周期发现,过压,过温消失了,就会把bit0置0;因此bit0可以认为是我们在用诊断仪查询DTC的时候,最近一次DTC的测试是否通过;
清DTC操作会将bit0置0,但是如果执行了清楚DTC操作后,ECU有检测到报DTC的操作又满足了,那么bit0又会被置1;
bit1:testFailedThisOperationCycle
bit1表示ECU在当前运行周期内bit0是否被置起过,ECU当前运行周期可以理解为对KL15电(没有网络管理)就是从上电到下电整个过程,对KL30电(有网络管理)就是从ECU唤醒到ECU休眠整个过程;只要在ECU当前运行周期内bit0被置过1,那么bit1就会被置1;
因此会存在bit0为0但是bit1为1的情况,比如某时刻故障发生了,bit0被置1,同时bit1也被置1,但是过了一会故障消失了,bit0就被置0了,但是bit1不会变,会保持1;
bit1只有重新上下电或者执行DTC清除操作,才会被置0;
bit2:pendingDTC
有些故障产生的时候,不会被立刻确认,即bit0被置1,但是bit3不会被立即置1,只有当多