您的位置:首页 > 编程语言

Yanmar(洋马)发动机SPN-FMI代码在仪表显示

2016-06-04 15:54 1486 查看
分享一个自己在仪表上显示洋马发动机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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息