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