UDS-如何在CAPL中实现读取DTC和它的状态

我们在测试某个DTC Code时,首先会触发这个DTC产生的条件,然后用CANoe的诊断控制台或ODIS工具读取ECU所有的DTC,然后在显示的DTC列表里查看是否有这个DTC出现,它的状态是否是当前DTC,然后再取消触发这个DTC的条件(不满足),然后再去读取DTC,看这个DTC的状态是否变成了历史DTC。这就是测试DTC功能的一般流程,现在我们看下如何在capl中自动地实现它

DTC

读DTC的诊断服务SI是0x19,它支持子功能,其中0x02子功能用于列出所有DTC及它的状态码

一个DTC格式:

UDS-如何在CAPL中实现读取DTC和它的状态_第1张图片

可以看出一个DTC由4个字节组成,前三个字节是DTC故障码,最后一个字节是这个DTC的状态

我们一般只会确认当故障条件满足时,这个DTC是否存在,同时它的DTCStatus是否是当前状态;当故障条件不满足时,这个DTC是否存在,同时它的DTCStatus是否是历史状态

如何确认状态,肯定是通过DTCStatus byte位的值来确定,而DTCStatus的8个bit位有不同的含义

其中bit0表示:该DTC最近的测试结果为失败,所以它才是用来表示DTC的当前状态的,bit0为1说明是当前DTC,bit0为0说明是历史DTC

什么叫历史DTC?

通俗

你可能感兴趣的:(【付费专栏】汽车通信协议,汽车总线协议,UDS,DTC)