目录
- 一、诊断故障码的组成
- 二、故障代码类型
- [2.1 DM1-当前故障代码](#2.1 DM1-当前故障代码)
- [2.1.1 单帧DM1报文](#2.1.1 单帧DM1报文)
- [2.1.2 多帧DM1报文](#2.1.2 多帧DM1报文)
- [2.2 DM2-历史故障代码](#2.2 DM2-历史故障代码)
- [2.3 DM3-历史故障诊断清除/复位](#2.3 DM3-历史故障诊断清除/复位)
- [2.4 DM11-当前故障码诊断数据清除/复位](#2.4 DM11-当前故障码诊断数据清除/复位)
- [2.5 DM4-停帧参量](#2.5 DM4-停帧参量)
- [2.1 DM1-当前故障代码](#2.1 DM1-当前故障代码)
一、诊断故障码的组成
SAE J1939协议中定义了详细的诊断故障代码Diag-nostic Trouble Code,简称DTC,用来描述故障的详细情况。诊断故障代码由4个字节构成,划分为4个部分:未知参数的编号SPN(19位)、故障模式标志FMI(5位)、发生次数OC(7位)、未知参数编号的转化方式CM(1位)。
其中,CM是未知参数编号SPN的转化方式控制位,也就是19位的SPN排列顺序定义,用CM外加不同的版本号定义,以便正确读出故障代码中的SPN编号。
二、故障代码类型
2.1 DM1-当前故障代码
DM1报文的作用是及时报告正在发生的故障。
2.1.1 单帧DM1报文
假设是发动机电控单元(0x00)发出的故障信息,当前故障代码DM1的报文格式如图。
其中数据区的字节1为故障灯状态,字节1中8-7位是故障指示灯状态(排放相关的故障),6-5位是红色停止灯状态(非常严重的故障),4-3位是琥珀色警告灯状态(警告信息),2-1位保护灯状态(不是车辆电路系统引发的故障信息)。
分析收到如下的DM1报文,分析是发生了什么故障?
DM1在发生故障时,每1s发送一次。当由故障激活状态变为没有发生故障时,也是1s发送一次。不过,没有障碍时,发动机电控单元发送的DM1报文是:0x18FECA00 0x00 0xFF 0x00 0x00 0x00 0x00 0xFF 0xFF
2.1.2 多帧DM1报文
(结合上一章的传输协议进行学习)假设是发动机电控单元发生2个故障:发动机机油温度高于正常数值、发动机燃油温度高于正常数值时,均发生1次故障,要求红色停止灯点亮。其中,SPN为175为发动机机油温度,温度高于正常数值时,其DTC为0x010300AF,FMI=3,表示机油温度高于正常数值;oc=1表示出现1次故障。SPN为174为发动机燃油温度,温度高于正常数值时,其DTC为0x010300AE,FMI=3,表示燃油温度高于正常数值;oc=1表示出现1次故障。
(1)BAM通告报文
(2)第一条数据报文
(3)第二条数据报文
2.2 DM2-历史故障代码
DM2报文的作用是被询问的时候,报告已经发生过的故障。报文格式如下(其中字节1为故障灯状态,如2.1.1):
举例:故障诊断仪(0x2B)向发动机电控单元(0x00)发送请求报文,询问其历史故障信息情况。步骤如下:
(1)发动机电控单元向故障诊断仪发送请求报文
(2)发动机电控单元应答请求报文,发送DM2历史故障报文
假设发动机历史故障是:机油温度超过正常数值时,SPN是175(0xAF),为发动机机油温度,DTC为0x020300AF。其中,FMI=3,表示机油温度高于正常数值;0c=2,表示出现过2次故障;这时让琥珀警告灯亮。
(3)发动机电控单元不支持该请求报文,发送NACK应答报文
2.3 DM3-历史故障诊断清除/复位
DM3报文的作用是清除历史故障。
假设故障诊断仪(0x2B)向发动机电控单元(0x00)发送请求报文,希望能清除发动机历史故障信息。步骤如下:
(1)故障诊断仪向发动机电控单元发送请求报文
(2)发动机电控单元不支持该请求报文,发送NACK应答报文
(3)发动机电控单元支持该请求报文,发送ACK应答报文
2.4 DM11-当前故障码诊断数据清除/复位
DM11报文的作用是清除当前激活状态的故障。
假设故障诊断仪(0x2B)向发动机电控单元(0x00)发送请求报文,希望能清除发动机当前激活状态的故障信息。步骤如下:
(1)故障诊断仪向发动机电控单元发送请求报文
(2)发动机电控单元不支持该请求报文,发送NACK应答报文
(3)发动机电控单元支持该请求报文,发送ACK应答报文
2.5 DM4-停帧参量
DM4报文的作用是报告故障发生时的状态,如车速、发动机转速、扭矩等。停帧指的是当接收到一个诊断的故障代码时,控制模块记录该时刻的一系列状态参数。停帧包含要求的参数以及任何一个制造商的专用信息。
假如发动机发生燃油温度过高的故障,SPN是174(0xAE),为发动机燃油温度,温度高于正常数值时,其DTC为0x010300AE。其中,FMI=3,表示燃油温度高于正常数值;0c=1,表示出现一次故障。现故障诊断仪(0x2B)向发动机电控单元(0x00)发送请求报文,希望获取其停帧信息,步骤如下:
(1)故障诊断仪向发动机电控单元发送请求报文
(2)发动机电控单元不支持该请求报文,发送NACK应答报文
(3)发动机电控单元没有累积的诊断故障代码时的响应报文结构
(4)假如发动机发生燃油温度过高的故障,13字节(不包括制造商专用信息)
首先,发送BAM通告报文。
其次,发送TP.DT数据报文。