CAN总线J1939协议报文的数据解析与换算

发布于:2025-02-10 ⋅ 阅读:(38) ⋅ 点赞:(0)

目录

1.数据段

2.CAN报文解析公式:

3.转速解析换算

4.冷却液温度和机油压力解析换算

5.机油压力解析换算


在现代汽车系统中,CAN(Controller Area Network)总线已成为连接各电子控制单元(ECU)的核心通信手段。其中,J1939协议作为CAN总线在汽车领域的一个重要应用标准,为重型车辆和移动机械提供了标准化的数据通信方法。J1939报文不仅承载着丰富的车辆状态信息,还通过特定的数据格式和解析方法,实现了对车辆性能的精准监控和诊断。本文将探讨CAN J1939报文的数据解析与换算过程,不讲理论,直接上方法,只是对数据段进行讲解。

1.数据段

数据段用于存放当前报文所要传输的数据。每一帧数据最大可以存放8个字节,共64个位的数据。这64个位可以包含好很多个信号,定义了每一个信号的起始位置、长度、分辨率、偏移量等。具体可以通过查询SAE J1939相关的PGN、SPN、SLOTS、源地址等信息查询表或者在SAEJ1939-71文档里面直接搜索,查看到相关信息后,代入下面公式计算。

2.CAN报文解析公式:

解析值=原值*分辨率+偏移量(用于接收)

原值=(解析值-偏移量)/分辨率(用于发送)

3.转速解析换算

在查询中搜索“61444”

SPN是190,对应Engine Speed,查看分辨率【Resoultion】每一个bit位代表的是0.125转,偏移量【Offset】是0,SPN在PGN的位置【SPN Position in PGN】是4-5,代表第4和第5字节代表转速【Engine Speed】,通过4-5位置来获取原值。用CAN分析仪采集到PNG是F004的数据帧是0x 00 7D 7D 30 2F 00 FF 7D

这2个字节对应的转速解析算法如何计算呢?报文的低字节在前,高字节在后,第4是0X30和第5字节0X2F,组合到一起就是0X2F30,对应的十进制是0X2F30=12,080,再结合每一个bit代表0.125转,所以2F30对应的实际转速值为:

转速解析值=原值*分辨率+偏移量=12,080*0.125+0=1510转每分钟。

类似地,再介绍冷却液温度和机油压力解析换算。

4.冷却液温度解析换算

冷却液温度的PGN是0xFEEE,SPN长度是1 byte,每一个bit位代表的是1 °C/bit ,偏移是-40 °C,范围是-40 to 210 °C,在PGN的位置是1,读取的数据是0X 70 FF 4C 2B FF FF FF FF ,取第一位是0X70,对应的十进制是0X70=112。

冷却液温度解析值=原值*分辨率+偏移量=112*1+(-40)=72°C

5.机油压力解析换算

机油压力的PGN是0xFEEF,SPN长度是1 byte,每一个bit位代表的是4 kPa/bit,偏移是0,范围是0 to 1000 kPa,在PGN的位置是4,读取的数据是0X 00 FF FF 80 FF FF FF 02 ,取第4位是0X80,对应的十进制是0X80=128。

机油压力解析值=原值*分辨率+偏移量=128*4+0=512kpa

单位转换 :512kpa = 5.12bar

其他数据类似方法,不再列举。

序号 PGN(10进制) PGN(16进制) SPN Name SPN SPN Name(英文) SPN Position in PGN SPN Length(字节数) Resolution(分辨率) Offset(偏移)
1 61444 F004 转速 190 Engine speed 4-5 2 bytes 0.125 rpm per bit 0
2 65271 FEF7 电池电压 168 battery voltage 2 bytes 0.05 V/bit 0
3 65263 FEEF 机油压力 100 oil pressure 4 1 byte 4 kPa/bit 0
4 65262 FEEE 冷却液温度 110 water temperature 1 1 byte 1 °C/bit -40 °C
5 65263 FEEF 机油温度 175 oil temperature 2 bytes 0.03125 °C/bit -273 °C
6 65276 FEFC 燃油液位 96 fuel level 1 byte 0.4 %/bit 0
7 65266 FEF2 燃油消耗率 183 Fuel Rate 2 bytes 0.05 l/h per bit 0
8 65262 FEEE 燃油温度 174 Fuel  temperature 1 byte 1 °C/bit -40 °C
9 65263 FEEF 燃油压力 94 Fuel Press 1 byte 4 kPa/bit 0
10 65263 FEEF 机油液位 98 Oil Level 1 byte 0.4 %/bit 0
11 65270 FEF6 涡轮压力 102 boost press(Engine Intake Manifold #1 Pressure) 1 byte 2 kPa/bit 0
12 65269 FEF5 大气压力 108 Barometric Press 1 byte 0.5 kPa/bit 0
13 65269 FEF5 环境温度 171 Ambient temperature 2 bytes 0.03125 °C/bit -273 °C
14 65270 FEF6 进气歧管温度 105 Intake manifold temperature 1 byte 1 °C/bit -40 °C
15 65270 FEF6 排气温度 173 Exhaust temperature 2 bytes 0.03125 °C/bit -273 °C
16 65263 FEEF 冷却液位 111 Coolant Level 1 byte 0.4 %/bit 0
17 65257 FEE9 发动机本次油耗 182 Engine Trip Fuel 4 bytes 0.5 l/bit 0
18 65257 FEE9 发动机累计油耗 250 Engine Total Fuel Used 4 bytes 0.5 l/bit 0
19 65214 FEBE 发动机额定转速 189 Engine Rated Speed 2 bytes 0.125 rpm per bit 0
20 65214 FEBE 发动机额定功率 166 Engine Rated Power 2 bytes 0.5 kW/bit 0
21 61443 F003 负载百分比 92 Engine Percent Load At Current Speed 1 byte 1 %/bit 0
22 61444 F004 扭矩百分比 513 Actual Engine - Percent Torque 1 byte 1 %/bit -125%
23 65247 FEDF 名义摩擦扭矩百分比 514 Nominal Friction - Percent Torque 1 byte 1 %/bit -125%
24 65129 FE69 发动机冷却液温度2 1637 Engine Coolant Temperature (High Resolution) 2 bytes 0.03125 °C/bit -273 °C
25 65188 FEA4 发动机油温2 1135 Engine Oil Temperature 2 2 bytes 0.03125 °C/bit -273 °C
26 65188 FEA4 发动机ECU温度 1136 Engine ECU Temperature 2 bytes 0.03125 °C/bit -273 °C

本内容仅供参考,衷心感谢每一位读者对本文的关注与宝贵支持。若您在阅读过程中有任何疑问、建议或需要进一步的帮助,请随时与我取得联系。同时,如果您觉得本文对您有所启发或帮助,非常欢迎您进行关注、评论与转发。


网站公告

今日签到

点亮在社区的每一天
去签到