J1939协议中的故障诊断

目录

  • 一、诊断故障码的组成
  • 二、故障代码类型
    • [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-停帧参量)

一、诊断故障码的组成

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数据报文。