笔记:J1939协议之DM1
一、基本概念
符号缩写的含义
DM1 诊断信息1,当前故障码
DM2 诊断信息2,历史故障码
DM3 诊断信息3,历史故障码的清除/复位
DM4 诊断信息4,停帧参量
DM5 诊断信息5,诊断准备就绪
DM6 诊断信息6,持续监视系统测试结果
DM7 诊断信息7,指令非持续监视测试
DM8 诊断信息8,非持续监视系统测试结果
DM9 诊断信息9,氧传感器测试结果
DM10 诊断信息10,非持续监视系统测试标志符识别支持
DM11 诊断信息11,当前故障码清除/复位
DM12 诊断信息12,发送排放相关的当前故障码
DM13 诊断信息13,停止启动广播
DTC 诊断故障代码
FTP 联合测试程序
MIL 故障指示灯
NA 不支持
PID 参数标志符(SAE J1578 或SAE J1979)
OBDⅡ 第二代车载诊断系统
DM14 内存存取请求
DM15 内存存取响应
DM16 二进制数据转换
DM17 引导载入数据
DM18 数据安全性
DM19 标定信息
DM20 监视工作比率
DM21 MIL 激活时的行程距离
EDC 错误检测和/或校准
EDCP 错误检测和/或校准参数
FMI 故障模式指示器
MA 内存存取
PG 参数组
OC 出现次数
SPN 可疑参数编号
二、 DTC(诊断故障代码)

DTC | ||||||||||||||||||||||||||||||||
字节3 SPN的低8位有效位 (第8位位最高有效位) | 字节4 SPN的第2字节 (第8位位最高有效位) | 字节5 SPN高3位有效位与FMI有效位 (第8位为SPN的最高有效位及第5位为FMI的最高有效位) | 字节6 | |||||||||||||||||||||||||||||
SPN | FMI | CM | OC | |||||||||||||||||||||||||||||
8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
SPN是发生故障的参数编号,FMI是发生故障的类型(具体查表SAE J1939-73 附录A),
CM是SPN转换序列,OC为本故障的发生次数。当故障第一次发生时,OC加1,如果故障一直存在,OC不累加,
当故障成为先前发生的故障后,故障再次发生时,OC累加1。故障取值为0~126,即使大于126时,OC也保持126。
CM(SPN Conversion Method,SPN转化方法)
定义DTC对齐方式。值为“0”表示“Structure of a DTC”模式4的对齐方式;
如果值为“1”,则必须区分是标准曾经定义过的3种方式之中的哪一种。系统必须了解这一点。


三、DM1(激活状态的诊断故障代码)


3.1 故障指示灯
只用于传达排放相关的故障代码信息。当有一个排放相关的故障代码处于激活状态时才被点亮。
红色停止灯,用于传达整车出现严重故障,必须停车检修的故障代码信息。
琥珀色警告灯,用于传达告知车辆系统出现问题,但不须立即停车检修的故障代码信息
保护灯,用于传达一种代码信息,提示告知车辆系统出现问题且极有可能不是相关电路子系统引起的故障。
3.2 单帧报文
优先级 | R | DP | PF | PF | SA | 数据区(8字节) | ||||
3位 | 1位 | 1位 | 8位 | 8位 | 8位 | 1 | 2 | 3-6 | 7 | 8 |
6 | 0 | 0 | FE | CA | 00 | 00 | FF | DTC | FF | FF |
3.3 多帧报文

优先级 | R | DP | PF | PF | SA | 数据区(8字节) | |||||||
3位 | 1位 | 1位 | 8位 | 8位 | 8位 | 1 | 2-3 | 4 | 5 | 6 | 7 | 8 | |
6 | 0 | 0 | EC | FF | 00 | 20 | LSB | MSB | FF | 8LSB | 2ND | 8MSB | |
ID:0X 18 EC FF 00 | 控制字 | 数据字节数 | 数据帧数 | 保留 | 数据的PGN |
Byte6 | Byte7 | Byte8 | |
DM1 | CA | FE | 00 |
(2)发送TP.DT数据报文,PGN=0xEBFF
举例ID:0x 18 EB FF 00
激活的故障代码DM1,发送的故障码有两部分组成,假设,故障灯为a, DTC为b,c,d,e等四个字节。
多个故障码时,打包的顺序是a b c d e b c d e….。如果最后一个报文中数据字节不到7位,则填充0X FF。
优先级 | R | DP | PF | PF | SA | 数据区(8字节) | ||||
3位 | 1位 | 1位 | 8位 | 8位 | 8位 | 1 | 2 | 3 | 4-7 | 8 |
6 | 0 | 0 | EB | FF | 00 | SN=1 | 故障灯 | DTC1 | DTC2字节1 |
优先级 | R | DP | PF | PF | SA | 数据区(8字节) | ||
3位 | 1位 | 1位 | 8位 | 8位 | 8位 | 1 | 2-4 | 5-8 |
6 | 0 | 0 | EB | FF | 00 | SN=2 | DTC2字节2-4 | DTC3 |
优先级 | R | DP | PF | PF | SA | 数据区(8字节) | ||
3位 | 1位 | 1位 | 8位 | 8位 | 8位 | 1 | 2-? | |
6 | 0 | 0 | EB | FF | 00 | SN=n | DTCm | FF |
参考资料
附件列表
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律