分享一个自己在仪表上显示洋马发动机SPN-FMI代码过程的记录。
1、问:SPN和FMI什么意思?
答:见SAE_J1939-73
5.6 诊断故障码定义
诊断故障代码(DTC)由4 个独立域构成,这4 个部分是:
a. 可疑参数的编号(SPN) 19位
b. 故障模式标志(FMI) 5位
c. 发生次数(OC) 7位
d. 可疑参数编号的转化方式(CM) 1 位
由SPN-FMI故障代码对照附录可查具体故障。
2、代码传送格式
CAN总线传输,扩展帧。
①单故障
地址 | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
18FECA00 | | | SPN 12-19bit | SPN 4-11bit | SPN 1-3bit | FMI (5位) | | | |
②多故障
地址 | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
18EBFF00 | 0x01(循环No.) | | | SPN 12-19bit | SPN 4-11bit | SPN 1-3bit | FMI (5位) | CM (1位) | OC | SPN 12-19bit |
0x02 | SPN 4-11bit | SPN 1-3bit | FMI (5位) | CM (1位) | OC | SPN 12-19bit | SPN 4-11bit | SPN 1-3bit | FMI (5位) | CM (1位) | OC |
0x03 | …… | | | | | | | |
0x04 | …… | | | | | | | |
0x05 | …… | | | | | | | |
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
循环数1 | | | 代码1 | 代码1 | 代码1 | | 代码2 |
循环数2 | 代码2 | 代码2 | | 代码3 | 代码3 | 代码3 | |
循环数3 | | 代码4 | 代码4 | 代码4 | | 代码5 | 代码5 |
循环数4 | 代码5 | | 代码6 | 代码6 | 代码6 | | 代码7 |
循环数5 | 代码7 | 代码7 | | …… | | | |
循环数6 | | | | | | | |
取代码思路:
1、 取最大循环数
2、 将每个发过来的帧存在二维数组N行8列
3、 将上面的二维数组错误代码取出来,按先后顺序,从第一条开始存在N行2列的另一个二维数组中第一列是SPN代码第二列是FMI代码。每列SPN和FMI组合参考附录D可查出具体故障。
4、 按条显示出来
示例:
则故障代码:
SPN FMI
522242 04
522251 04
522252 04
522253 04
522254 04
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)