DTC我们在测试某个DTC Code时,首先会触发这个DTC产生的条件,然后用CANoe的诊断控制台或ODIS工具读取ECU所有的DTC,然后在显示的DTC列表里查看是否有这个DTC出现,它的状态是否是当前DTC,然后再取消触发这个DTC的条件(不满足),然后再去读取DTC,看这个DTC的状态是否变成了历史DTC。这就是测试DTC功能的一般流程,现在我们看下如何在capl中自动地实现它
读DTC的诊断服务SI是0x19,它支持子功能,其中0x02子功能用于列出所有DTC及它的状态码
一个DTC格式:
可以看出一个DTC由4个字节组成,前三个字节是DTC故障码,最后一个字节是这个DTC的状态
我们一般只会确认当故障条件满足时,这个DTC是否存在,同时它的DTCStatus是否是当前状态;当故障条件不满足时,这个DTC是否存在,同时它的DTCStatus是否是历史状态
如何确认状态,肯定是通过DTCStatus byte位的值来确定,而DTCStatus的8个bit位有不同的含义
其中bit0表示:该DTC最近的测试结果为失败,所以它才是用来表示DTC的当前状态的,bit0为1说明是当前DTC,bit0为0说明是历史DTC
什么叫历史DTC?
通俗



