诊断故障码(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四大子系统,如下表所示:

SystemCode categorlesHex valueAppendix
PowertrainP0xxx-P3xxx0xxx-3xxxP
ChassisC0xxx-C3xxx4xxx-7xxxC
BodyB0xxx-B3xxx8xxx-BxxxB
Generic/Network and vehicle integrationU0xxx-U3xxxCxxx-FxxxU

在客户诊断问卷调查表中普遍使用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)的主要内容,如果未能解决你的问题,请参考以下文章

diagnostic service host 无法启动

汽车obd接口定义是啥

使用Debug Diagnostic Tool排除内存泄漏故障

编译器处理警告错误 #pragma GCC diagnostic ignored "-Wunused"

联想主板诊断卡显示81,这怎么处理?

Windows无法启动 Diagnostic policy service服务(位于本地计算机上)错误1069:由于登录失败而无法启动服务