一、DM1报文简介和功能
1.1 DM1报文是Diagnostic Message 1, Active Diagnostic Trouble Codes (DTCs)缩写,由1939-73定义,具体参考其5.7.1;
1.2 实现诸如MIL灯、红色停机灯等点亮,并周期性播报控制器中处于激活状态的故障码。
二、DM1报文格式
2.1 DM1报文各Byte定义
DM1 | |
---|---|
传输速率 | 1s |
数据长度 | 可变 |
扩展数据页(EDP) | 0 |
数据页(DP) | 0 |
PDU格式(PF) | 254 |
PDU细节(PS) | 202 |
默认优先级(P) | 6 |
参数组编号(PGN) | 65226(0x00FECA) |
Byte1 | Bits 8-7 故障指示灯(MIL) |
Bits 6-5 红色停机灯 | |
Bits 4-3 琥珀色警告指示灯 | |
Bits 2-1 保护指示灯 | |
Byte2 | Bits 8-7 闪烁故障指示灯(MIL) |
Bits 6-5 闪烁红色停机灯 | |
Bits 4-3 闪烁琥珀色警告指示灯 | |
Bits 2-1 闪烁保护指示灯 | |
Byte3~6 | 激活状态的DTC1 |
Byte7~10 | 激活状态的DTC2 |
Byte(4n-1~4n+2) | 激活状态的DTC n |
2.2报文填充
2.2.1 当不存在激活故障码或存在1个激活故障码时,DM1的报文字节长度为8个Byte:
Byte1-2:OBD相关控制器,Byte1 Bits 8-7即SPN1213和Byte2 Bits 8-7即SPN3038可用于点亮和排放相关的故障指示灯,非OBD设备,SPN1213和SPN3038应禁用,当前已完成开发软件,可使用002填充,将来新开发软件使用112填充,其余Bit按定义状态填充即可;
Byte3-6,无故障填充00 00 00 0016,存在1个故障时,按照故障SPN和FMI填充,如4B ED E9 0316,将在第三部分详细说明故障码转化;
Byte7-8,填充FF FF16
例:发动机发出的DM1,ID为0X18FECA00,当不存在故障时,完整填充如下:
2.2.2 当存在多个DTC时,使用多包报文传输协议,由1939-21定义,多包传输以全局地址发送的发动机DM1为例说明:
TP.CM_BAM,Transport Protocol-Connection Management_Broadcast Announce Message,广播连接报文,告诉CAN总线的其他节点,即将进行多包传输报文的PGN,总的字节数量和打包数量,定义PGN 为0x00EC00,当优先级为6,进行广播时,源地址为00的发动机广播连接报文ID为0x18ECFF00,报文长度为8个Byte:
Byte1:控制字节,固定发2016,代表TP.CM的BAM类型
Byte2-3:总报文字节数
Byte4:总报文包数
Byte5:1939预留填充FF16
Byte6-8:打包发送报文的PGN
TP.DT,Transport -Protocol_Data Transfer,多包传输报文载体,定义PGN 为0x00EB00,源地址为00的发动机多包传输报文ID为0x18EBFF00,报文长度8个Byte:
Byte1:包序列号
Byte2-7:数据内容,如果最后一包报文传输内容小于7个字节,额外的字节采用FF16填充。
例:当发动机存在7个激活的故障码,故障码28个Byte及故障灯灯状态2个Byte,共30个Byte,拆分成5包,报文填充如下
三、DTC解析
3.1 故障码组成
可疑参数组编号SPN:19个Bit
故障模式FMI:5个Bit
发生次数OC:7个Bit
可疑参数组编号SPN转化方式CM:1个Bit
推荐SPN19个bit转化方式按全部采用Intel格式,即CM=0,4B ED E9 0316故障码解析为:
E916=1110 10012 取高3位01112=0716
0316=0000 00112 ,该故障发生过3次OC=3,CM=0,SPN的19个bit按Intel格式处理
SPN=07 ED 4B16=519499
FMI=0 10012=9
查故障码手册:
该SPN+FMI组合表示:制动系统TSC1_AR报文超时故障