诊断故障码(Diagnostic Trouble Code-DTC)
Posted 诊断协议那些事儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了诊断故障码(Diagnostic Trouble Code-DTC)相关的知识,希望对你有一定的参考价值。
诊断协议那些事儿
诊断协议那些事儿专栏系列文章,本文将由浅入深的介绍DTC(Diagnostic Trouble Code)。
关联文章:
$19服务:DTCStatusMask和statusofDTC bit 定义
19服务List
文章目录
DTC(Diagnostic Trouble Code)
Diagnostic Trouble Code直译即为诊断故障码,简称DTC,一种用来记录当某ECU发生或检测到某种故障时所呈现在大家眼前的标识码,通过该标识码便可以查表的方式获得该故障信息,如故障触发条件、故障解除条件、系统功能表现等。这是当前供应商与主机厂普遍用来监测并识别故障的基础手段,在OBD-II之后形成标准规范,普遍使用的标准是ISO15031-6,该标准中规定了DTC的基本组成,DTC如何命名等信息。
DTC格式标识符
本参数值规定了服务器所报告的DTC格式,给定服务器仅允许支持一个DTCFormatIdentifier(DTC格式标识符)
DTC组成
Root DTC in UDS with ISO 15031-6 / SAE J2012-DA
PBCU开头码
DTC由以下两个部分组成:DTC Catogory 与Failure Type,其中DTC Catogory 又可以根据Powertrain、Body、Chasis、N etwork四大子系统来进一步定义其范围,简称PBCU四大子系统,如下表所示:
System | Code categorles | Hex value | Appendix |
---|---|---|---|
Powertrain | P0xxx-P3xxx | 0xxx-3xxx | P |
Chassis | C0xxx-C3xxx | 4xxx-7xxx | C |
Body | B0xxx-B3xxx | 8xxx-Bxxx | B |
Generic/Network and vehicle integration | U0xxx-U3xxx | Cxxx-Fxxx | U |
在客户诊断问卷调查表中普遍使用P(00)、C(01)、B(10)、U(11)来描述DTC诊断显示码与日常使用的3字节DTC转换关系,实际上只需要将PBCU四个子系统对应的bit组合关系替换进去,便可以得到我们常说的DTC。
类别
Failure Type
如常见的Timeout应该用0x87,信号无效应该为0x81等,ISO给出了标准的规范,一般对于排放相关的ECU的DTC最低字位均为00,而对于非排放相关的ECU则需要参考ISO标准来定义。
以非排放相关的ECU为例,可以将DTC故障类型分为以下几个部分:
①硬件故障;如RAM、Flash、CPU时钟等硬件本身失效的问题
②软件故障;如配置字故障,标定故障或客户定义的软件功能性故障
③外部环境故障;电压过高或者欠压、环境温度过高或过低等
④通讯相关故障;如报文丢失、信号无效,Checksum/AliveCounter故障等
DTCofStatus bit
可参考文章进行深入学习:$19服务:DTCStatusMask和statusofDTC bit 定义
每一个DTC均有对应的DTC状态位,该DTC状态位由一个字节表示,每个bit都有其重要含义,具体解释如下图所示:
Bit0: 请求时刻测试结果为失败;
Bit1: 在当前点火循环至少失败过1次;
Bit2: 在当前或者上一个点火循环测试结果不为失败;
Bit3: 请求时刻DTC被确认,一般确认是在一个点火周期内发生错误1次;
Bit4: 自上次清除DTC之后测试结果已完成,即测试结果为PASS或者FAIL结果;
Bit5: 自上次清除DTC后测试结果都不是FAIL;
Bit6: 在当前点火周期内测试结果已完成,即为PASS或FAIL状态;
Bit7: ECU没有得到点亮警示灯请求;
在实际项目中,非排放ECU往往仅需关注Bit0和Bit3即可(StatusAvailabilityMask = 0x09):
读取DTC信息
19服务详细介绍,后续会逐渐展开,下图消息流示例可供参考理解,针对本文欢迎各位评论,提出宝贵意见,另外对于诊断协议那些事儿专栏建设,读者有建议可私聊,小编也会持续更新,以提供更好的作品。
以上是关于诊断故障码(Diagnostic Trouble Code-DTC)的主要内容,如果未能解决你的问题,请参考以下文章
使用Debug Diagnostic Tool排除内存泄漏故障
编译器处理警告错误 #pragma GCC diagnostic ignored "-Wunused"
Windows无法启动 Diagnostic policy service服务(位于本地计算机上)错误1069:由于登录失败而无法启动服务