1:1939整体协议说明
这里主要说明1939不同的协议,对应不同的网络分层
注意了,这里只进行文档解析说明,具体查看去搜素协议的关键字进行理解
2:DMx和FMI 说明
想知道每个代号的具体含义,可以去 saeJ1939-73 里面搜索对应查看,比如直接搜索 “Active Diagnostic Trouble Codes (DM1)”;其它专用名词可以搜索 j1939-73–“4. ABBREVIATIONS” 或 “FMI=0”查看释义
3:DM1故障码示例
根据 J1939-73–"Page 26 of 172"描述,“无论是否存在DTC,每秒发送一次DM1消息”, J1939车型应该是一直主动发送 DM1故障码的;如果CAN上没有广播DM1,则需要联系客户进行确认;请注意,当存在多个活动DTC时,此参数组将需要使用“多数据包传输”参数组(参考SAE J1939-21)。
4BYTE故障码解释说明,参考J1939-73–“5.6 Diagnostic Trouble Code Definition”
3.1 无故障
// 先利用 DM5报文 查看故障码数量
0x18fece00 00 05 29 00 00 00 00 00 // BYTE[1] 表示已激活的故障码,其它可参考 J1939-73 "Diagnostic Readiness 1 (DM5)"的描述
// 进而查看 DM1报文 的故障码描述
0x18feca00 03 FF 00 00 00 00 FF FF // BYTE[1] 的 bits8-7 表示MIL灯状态, 其它可参考 J1939-73 "Active Diagnostic Trouble Codes (DM1)"的描述
3.2:单个故障
// 先看DM5的数量
0x18fece00 01 04 29 00 00 00 00 00 // BYTE[1]表示有一个故障码,其它可参考 J1939-73 "Diagnostic Readiness 1 (DM5)"的描述
// 再看DM1的故障码
0x18feca00 40 FF 6E 16 09 12 FF FF // BYTE[1] 的 bits8-7 表示MIL灯状态,故障指示灯点亮,其它可参考 J1939-73 "Active Diagnostic Trouble Codes (DM1)"的描述
// 提取单个故障码 6E 16 09 12
SPN(5742)+FMI(9)+CM(0)+OC(18) // 解析完成之后,可以根据客户提供的 故障码清单 进行对比解析; 参考J1939-73--"5.6 Diagnostic Trouble Code Definition"。
//故障码详细信息参考
//SPN(可疑参数编号)可以参考 j1939-71的SPN定义或客户文档的私有定义
//FMI(故障模式标识符)可以参考 j1939-73 "A.1.2.1 FMI=0 - Data Valid But Above Normal Operational Range - Most Severe Level"
//CM(SPN转换方法):(spn转化方法,一般固定为0,表示适用于”saej1939-73“文档)
//OC(故障发生次数)
3.3:多帧故障
SAE J1939-21 定义的多包传输 PGN=60416(0xEC00) 和PGN=60160(0xEB00)
广播公共消息(BAM) 0xEC00定义,参考 :SAE J1939 多包传输 "表 5 TP.CM_BAM 参数描述”
数据传送消息(TP.DT)0xEB00定义,参考 SAE J1939 多包传输 “4.1 点对点会话”
// 实车数据没有发送 DM5 故障信息
// 0x20:控制字节=32(固定);0x000A有效BYTE数为10;0x02-有效数据包2个;0x00FECA-打包报文为 DM1故障码报文的pgn,后面多包将发送DM1的报文。详细请参考SAE J1939 多包传输 "表 5 TP.CM_BAM 参数描述"
0x18ecff00 20 0A 00 02 FF CA FE 00
// 提取 DM1 故障码数据 40 FF CE 0C 00 04 55 F1 E0 05,01表示包编号;40表示灯状态,bit7-8为1(MIL点亮),其他灯参考J1939-73 "Active Diagnostic Trouble Codes (DM1)"的描述;故障码为 CE 0C 00 04 和 55 F1 E0 05
0x18ebff00 01 40 FF CE 0C 00 04 55
0x18ebff00 02 F1 E0 05 FF FF FF FF
SPN(3278)+FMI(0)+CM(0)+OC(4)
SPN(61768)+FMI(0)+CM(0)+OC(5)// 解析完成之后,可以根据客户提供的 故障码清单 进行对比解析; 参考J1939-73--"5.6 Diagnostic Trouble Code Definition"。
3.4 请求故障码或数据
J1939请求单帧数据
// 单帧请求
如: 请求FEE9(燃油累积量)
1939请求 --- 0x18EA0021 E9 FE 00 FF FF FF FF FF // 注意前面三个BYTE为请求 PGN
1939控制器回复 0x18FEE900 FF FF FF FF 11 22 33 44 // 自己参考 J1939-71的PGN进行数据解析
// 多帧请求-参考J1939-21
RX 0x18ec0000 10 0A 00 02 FF CA FE 00 // 请求发送
TX 0x18ec0000 11 02 01 FF FF CA FE 00 // 允许发送
RX 0x18ebff00 01 40 FF CE 0C 00 04 55 // 数据传输
RX 0x18ebff00 02 F1 E0 05 FF FF FF FF