UDS协议是描述车载诊断内容的通用协议,诊断的功能伴随着ECU整个生命运行周期一直在运行。当控制器(ECU)运行过程中出现需求规范中所定义的故障类型,控制器通过相应的判定机制来判断这个故障是否达到一定阈值,满足产生DTC的条件(需要将DTC以及Status位存储在ECU内存中)。因此首先明白判定机制。老规矩,还是举一个例子辅助理解。
对于具体一个控制器,定义诊断需求规范时,首先会定义它支持的DTC以及每个DTC名称、Enable Criteria、Test Frequency、Set condition、Correct Actions等等。比如控制器正常工作电压值是8-12 V,当控制器供电电压超过18 V为电压过载故障,并定义故障码为DTC1。众所周知,车载运行是一个非常复杂的运行状态,运行过程中不可避免会出现电涌等现象(电压出现峰值),当出现电涌,电压值大于18 V,又很快恢复正常电压,因此DTC不应该被记录。所以会有如下机制:
- 在规范中会定义检测频率,并设置一个Counter值;
- 每一个检测周期,通过采样模块,获取当前电压值;
- 若当前检测周期测出当前电压值大于18 V,Counter &