好长时间没有做与DTC开发的工作了,恰逢最近开始需要做DTC的软件开发与测试内容,借此回顾下DTC的基础内容,比如什么是DTC,DTC是什么等内容。
source:具有高级功能的经济实惠的汽车诊断读码器 (fixmyoldride.com)
为什么这么说呢?我发现做软件开发的人不会关注DTC是什么,只会关注哪个故障对应哪个DTC;我发现做系统的人可能会关注DTC是什么,因为有时候想拒绝或纠正主机厂的DTC变更,所以要掌握DTC的内容;我也发现主机厂做诊断的人就需要懂DTC是什么了,因为要做出一个完整且系统的诊断系统,那必须得把故障层次分清楚,得把DTC的定义吃透才行。了解总比不知道好,话不多说,那直入话题:
1 DTC是什么
DTC的全称是Diagnostic Trouble Code,即诊断故障码,它是由各个ECU(电子控制单元)识别的故障状态的数字通用标识符。
1)DTC的定义
从最简单的入手,看看DTC长什么样,如下所示:
P0127 -- 代表进气温度过高; B0001 -- 代表驾驶员正面第1阶段展开控制; C0031 -- 代表左前轮速度传感器; U0105 -- 代表与喷油器控制模块通讯丢失。
为什么是这样?标准协议规定DTC由一系列的字母和数字组成,可通过ISO15031-6对DTC的定义来详细了解:
00 = P,代表动力总成(发动机和传动系统)故障; 01 = C,代表底盘故障,如制动系统或底盘控制模块故障; 10 = B,代表车身故障,如车身电子系统故障; 11 = U,代表网络通信故障,表示车辆各系统之间的通信故障。
00 = 0,代表ISO/SAE标准定义的故障码; 01 = 1,代表汽车制造商自定义的故障码; 10 = 2,ISO/SAE预留; 11 = 3,ISO/SAE预留。
第3个字符占用4位数据长度,表示故障所属的子系统,以动力系统为例,
“0” 表示燃油和空气计量辅助排放控制整个系统;
“1” 表示燃油和空气计量系统;
“2” 表示燃油和空气计量系统(喷油器)等。
U0101,后2个字符01代表的具体故障对象和类型是与TCM通讯丢失; U0302,后两字符02代表的具体故障对象和类型是与变速器控制模块软件不兼容; U0405,后两字符05代表的具体故障对象和类型是从巡航控制模块接收的数据无效。
以上就是对于DTC的基本认识,可以这么理解DTC就是故障类型的"身份ID",一个DTC映射一个故障类型。
2) DTC格式
ISO-14229-1,SAE J2012 OBD DTC和SAE J1939-73都对DTC的格式有明确定义,归纳起来可以将DTC格式分为non OBD和OBD两种,如下所示:
在OBD诊断当中用的最多的格式是SAE_J2012-DA_DTCFormat_00,即上面的OBD的DTC格式;在UDS诊断当中用的最多的格式是ISO_14229-1_DTCFormat,即上面的non OBD的DTC格式。
所以设置好DTC格式标志字,就定义好了哪种DTC格式,当然不同OEM可能会在这个标准的基础上添加自定义的DTC,此时需要参考该OEM提供的DTC解释表或相关文档。
高字节和中字节与OBD格式的DTC定义一样,对应5位标准故障码;
低字节表示故障类型,包含了DTC故障类别和DTC故障子类型,它代表了电路或系统中的故障类型。比如常见的 timeout 应该用 0x87,信号无效为 0x81 等,具体不同的编码代表不同的详细故障情况,一般OEM都会提供其每个编码的具体含义。
DTC故障类别的定义如下:
一般电器故障:编码为 0x01,通常指车辆电气系统中一些较为普遍的电气类问题,涉及电路、电源、用电设备等方面出现的故障。比如电路出现间歇性故障,时而导通时而断开;又或者电路中的某个电器元件损坏而导致无法正常通电或断电控制,如车灯不亮、喇叭不响、电动车窗无法升降等。
一般信号故障:编码为 0x02,主要是指车辆各系统之间用于传输信息的信号出现了问题,包括信号的产生、传输、接收等环节出现异常,比如传感器损坏无法准确测量并输出正确的信号;信号传输线路断路、短路、信号干扰等导致信号在传输丢失、失真或错误;ECU故障而无法正确处理接收到的信号。 FM(调频)/PWM(脉宽调制)故障:编码为 0x03,指调频或脉宽调制信号出现问题,如信号频率异常、占空比错误等,导致相关系统无法正常工作,像发动机的电子节气门控制可能因 PWM 信号故障而无法准确控制节气门开度。 系统内部故障:编码 0x04,涉及系统内部的非特定硬件或软件问题,可能是系统逻辑错误、内部数据传输故障等,比如ECU程序运行出现异常,但又不属于明确的软件编程或硬件损坏问题。 系统编程失败:对应 0x05,通常是系统的软件编程过程出现错误,如ECU程序写入失败、配置参数编程错误等,可能造成控制单元无法按照预期功能工作。 基于算法的故障:编码为 0x06,意味着系统中基于算法的计算或逻辑判断出现错误,如ABS控制算法在计算车轮转速、制动力分配等参数时出现错误,导致 ABS 功能异常。 总线信号 / 消息故障:0x08 表示总线信号或消息方面的故障,如 CAN 总线通信中信号丢失、数据错误、帧格式错误等,会影响多个控制单元之间的通信,进而导致车辆多个系统出现故障。 部件故障:编码 0x09,泛指某个具体部件出现问题,但不属于前面特定的电路、传感器、执行器等故障类型,可能是部件本身的质量问题、磨损、老化等导致的故障。
接下来对 DTC故障子类型 稍作说明,假设故障类型为一般信号故障,那么DTC故障子类型可能有以下多种:
0x21 Signal Amplitude < Minimum:信号幅值小于最小值,意味着信号的强度或幅度低于系统正常运行所需的最低阈值,可能导致接收端无法正确识别信号。
0x22 Signal Amplitude > Maximum:信号幅值大于最大值,即信号强度或幅度超出了系统能够处理的最大范围,可能使信号失真或对接收设备造成损坏。 0x23 Signal Stuck Low:信号卡住低,表明信号一直处于低电平状态,无法按照正常的逻辑或规律变化。 0x24 Signal Stuck High:信号卡住高,与 Signal Stuck Low 相反,信号一直保持在高电平状态,不能正常变化,影响系统的正常判断和运行。 0x25 Signal Shape / Waveform Failure:信号形状 / 波形故障,说明信号的波形不再符合正常的标准形状,可能出现畸变、变形等情况,会使信号携带的信息产生错误或丢失。 0x26 Signal Rate of Change Below Threshold:信号变化率低于阈值,即信号的变化速度过慢,低于系统要求的最低变化速率,可能导致系统无法及时响应或正确处理信号。 ......
B0039-10 代表第1排右前方阶段部署控制,一般电器失效;
C0031-23 代表左前轮速传感器 ,一般信号故障, 信号卡在低位。
最后再了解一个DTC的概念,DTC数值的表示形式。通过诊断通信获取的DTC通常是16进制数值,而非5个字符形式,这意味着需要将字符形式转换为16进制,具体转换操作如下:
2 小结
到此,就比较完整介绍DTC是什么,就是当你看到一个DTC码,你大概就是它为什么长这样,以及它是哪种格式,它代表了怎样的故障,不管它是字符形式还是16进制形式。下篇文章就开始介绍如何来获取DTC。
创作不易,欢迎点赞再看收藏关注!
汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车从业人员。