大家好,又见面了,我是你们的朋友全栈君。
“没错,这是一份SAE J1939协议的简单、实用指南。”—虹科
开篇:在这篇介绍中,我们介绍了J1939协议的基本知识,其中包括PGN和SPN。因为这是一篇偏向应用的简介,所以您还将会学习到如何通过DBC文件解码J1939数据、如何记录J1939、典型的应用案例和实用技巧。下面,来了解下这份简单易懂的J1939介绍吧~
什么是J1939?
J1939简介
简而言之,SAE J1939其实是一套标准,重型车辆ECU间就是按照这套标准在CAN总线上进行通信的。当今大多数车辆都通过CAN(Controller Area Network)进行ECU通信。但是,CAN总线仅仅只是提供了通信的基础(就像是电话),但是没有提供对话的“语言”来进行更复杂的操作。在大多数大型车辆中,这个“语言”就是汽车工程师协会(SAE)定义的SAE J1939标准。那用专业点术语来解释就是:基于CAN这个“物理层”,J1939提供了一个高层协议HLP(higher layer protocol)。
J1939属于“更高层的协议”
J1939是基于CAN的,CAN提供了基本的“物理层”和“数据链路层”,这是OSI模型的最低层。
基本上CAN只允许在CAN总线上进行简单通信,但仅此而已。而J1939作为高层协议,可以实现更复杂的通信。
一个更高层的协议使大型、复杂网络之间进行通信成为可能。例如,SAE J1939协议规定了如何处理“ 多包数据报文 ”,即,当需要传输大于8字节的数据时。同样地,它规定了如何将数据解析为人类可读的数据。它通过提供一系列标准来实现这一点。J1939-71这份文档,其中详细说明了如何将大量已经在众多制造商中使用的J1939报文转换为所需的人类可读数据信息(有关更多信息,请参见下文)。
还有许多其他基于CAN的更高层协议,例如CANopen,DeviceNet,UDS服务。尽管它们都可以由制造商进行扩展,但它们通常在各自的行业代表一种一定程度的标准。
相比之下,乘用车的车企都会用自定标准。换句话说,您可以使用相同的J1939.dbc文件来解析来自不同车企的两辆卡车发动机转速,但是您不能使用标致207车型的.dbc文件去解析Audi A4车型的数据。
J1939是一种广泛应用于重型车辆以及电动充电桩的标准
简单来说,就是J1939将ECU之间的通信标准化了,或者换句话说:J1939为不同的供应商提供了一种通用的语言。相比之下,乘用车会使用OEM自定的专用协议。
J1939的历史
- 1994年:发布了第一批文档(J1939-11,J1939-21,J1939-31)
- 2000年:发布了初始最高级的文档
- 2000年:CAN正式被纳入J1939标准
- 2001年:J1939开始取代以前的SAE J1708 / J1587标准
J1939应用案例
J1939最广为人知的其中一个应用是在重型车辆(例如客车或货车)上的应用(不过,现在在一些基础工业领域还会用到SAE J1939的衍生标准,如:ISO 11783,MilCAN,NMEA 2000,FMS):
- 林业机械:伐木机、运材车、集木机等
- 矿用车辆:推土机、挖掘机等
- 军用车辆:坦克、运输车辆等
- 农用车辆:拖拉机、收割机等
- 建筑领域:液压移动升降机、起重机等
- 救援机械:救护车、消防车等
- 其他:船、电动汽车、发电设备以及泵类机械等
未来的J1939
随着重型车辆的远程信息处理技术兴起,J1939在车联网市场中扮演的角色越来越重要。因此, J1939 IoT(物联网)记录器的安全性越来越受到重视。同时,OEM将会从传统CAN逐渐转向CAN FD ,向具有可变数据域速率的J1939协议过渡。
此外,在电动汽车的充电桩领域同样以J1939作为应用层标准。比如国标GBT27930-2015电动汽车非车载传导式充电机与电池管理系统之间的通信协议中,定义了J1939应用层的通信参数组等等。随着电动汽车的稳步发展,J1939应用的节点将会越来越多。
“到2020年,车载连接(硬件以及应用可以为驾驶员或者车队带来了各种各样的新功能)的市场预计将达到1200亿欧元。”
源自:Boston Consulting Group, Connected Vehicles and the Road to Revenue
J1939的关键特征
J1939协议典型的特征
- 250Kb/s的比特率和29位的扩展ID
J1939的比特率通常为250Kb/s(最近还能支持500Kb/s),并且拥有18位扩展标识符共29位标识符(CAN 2.0B)
- 广播与请求
大多数J1939报文都是以广播的形式在CAN总线上进行传播,而一些数据只能通过请求方式从CAN总线来获得数据
- PGN和SPN
J1939报文中,使用18位的PGN(参数组编号,Parameter Group Numbers)作为一组参数的标号,参数组内有一个或者多个具体的参数;而参数组中的每个具体的参数在J1939中被19位的SPN(怀疑参数编号,Suspect Parameter Numbers )标识出来
- 多字节数的变量和多包报文
多字节数变量先发送有效字节的最低位(Intel字节顺序)。根据传输协议支持最大1785字节的PGN
- 其他J1939特性
以下是J1939协议的一组其他特征:
保留的PGN: J1939包含大量的标准PGN,但PGN的 00FF00至00FFFF是保留的
特殊的PGN:数据字节为0xFF(255)反映N / A数据,而0xFE(254)反映错误
拓展:PGN(参数组编号)
J1939中的PGN包括扩展帧29位CAN ID中的18位。PGN是J1939标准中唯一的帧标识符(J1939-71文档中列出了PGN以及SPN,您可以查看下这份文件)。
示例:J1939 PGN 61444(EEC1)
假设您记录了一条J1939报文,其ID为0CF00401。在这里,PGN从第9位开始,长度为18(从索引1开始(indexed from 1))。PGN就是0F004或用十进制来表示就是61444。在SAE J1939-71文档中进行查找,发现它是“ 发动机电子控制器1-EEC1 ”。另外,该文件里面包含了PGN的详细信息,包括优先级、传输速率和相关SPN,详见上图。
在这个PGN中,有七个SPN(例如,发动机转速,RPM),可以在J1939-71文档中查询每个SPN的详细信息。
拆分J1939 PGN
上面只是简单的说明,因为J1939的29位标识符可以进一步细分。CAN ID中包括优先级(3位),PGN(18位)和源地址(8位)。
此外,PGN还可以分为四个部分:保留位(1位),数据页位(1位),PDU格式域(8位)和组扩展域(8位)。
如果想了解更多,我们这有一个非常受欢迎的在线转换器,可用于将CAN ID转换为PGN,并查看PGN子组件计算背后的公式,可以私信获取在线转换器。如果您对J1939 DBC文件感兴趣的话,这可能会让您更容易去理解并且还有可能帮到您。
拓展:SPN(怀疑参数编号)
J1939中的SPN作为数据库中包含的CAN信号(参数)的标识符,SPN按照PGN来分组,可以根据其位起始位置、位长度、精度(比例)、偏移量和单位(将SPN数据提取和缩放为物理值所需的信息或者量)来描述。
示例:解析J1939中SPN 190(发动机转速)
假设您记录了原始的J1939报文,如下所示:
CAN ID | 数据字节 |
---|---|
0CF00401 | FF FF FF 68 13 FF FF FF |
通过将CAN ID转换为J1939的PGN,您可以知道这是之前提到的PGN 61444。从J1939-71文档中,您可以查到该PGN中的SPN之一是发动机转速(SPN 190),其详细信息如表所示。
使用这些详细信息,可以提取“发动机转速”物理值数据,可用于绘制图像等。因此,请您注意PGN信息中位于第4和5字节中相关的数据,即十六进制数据字节中的68和13。将十六进制的1368(Intel字节顺序)转换成十进制,即4968。为了得到RPM,我们使用偏移量0和0.125 RPM /位的精度对此值进行缩放。最终得到的物理值(即缩放工程值)是621 RPM。
注意上面的一些数据字节是FF或是255,即不可用。虽然PGN理论上是可以支持在此范围内的SPN,但是填充了FF就意味着这特定应用程序不支持这些参数。
SPN 190 发动机转速
实际的发动机转速,是通过最小曲轴角度720度除以气缸的数量来计算的
PGN | 61444 |
---|---|
SPN | 190 |
位开始 | 24 |
位长度 | 16 |
精度 | 0.125 rpm /位 |
偏移量 | 0 |
最小值 | 0 |
最大值 | 8031.875 |
示例:J1939 DBC文件
实际上,您不需要通过查PDF的方式去解析J1939数据的内容,这个信息可以存储在一个CAN数据库文件(.dbc文件)中。
J1939 DBC文件可用于解码大多数重型车辆上的数据。原始的J1939数据可以用CAN总线数据记录器记录,并在支持DBC转换的CAN软件工具(例如PCAN-Explorer6软件)中进行分析。
这通常能解析市面上40-60%车辆的数据,其他的则是OEM专用的数据,这里就需要逆向工程了。
高阶:J1939的请求和多包报文
J1939 请求报文
J1939协议支持各种高级操作,例如请求、多包报文和多路复用:
大多数J1939报文以广播的形式在CAN总线上传播,但有些信息是需要请求的(例如一些J1939诊断故障代码)。这是通过“请求报文”(PGN 59904)来实现的,这是仅有3个数据字节的J1939报文。它的优先级为6,传输速率可变,可以作为全局或特定地址的请求发送。数据字节从第1位到第三位中,应包含请求的PGN(Intel字节顺序),这里的J1939请求报文中包含了诊断信息(DM)。对于OBD2来说,您可以利用我们CANedge中的传输列表来建立SAE J1939的请求报文。
J1939 多包信息
PGN和SPN的示例中是基于8个数据字节的J1939报文,这是大多数报文的大小。但是还有其他两种类型的报文:3个数据字节的请求报文和数据字节可变的报文。后者的数据字节超出了CAN总线格式通常的8字节限制。此类消息称为J1939的多帧或多包报文。J1939协议规定了如何拆解、传输和重组数据包的过程,这一过程被称为传输协议(cf. J1939-21),传输多包报文有两种方式:
1、 连接管理(点对点传输):适用于特定的设备
2、 广播通知报文(使用全局地址):适用于整个网络
简单来说,广播通知报文是基于发送ECU发送原始广播通知报文组来建立传输工作的。广播通知报文定义了多包PGN标识符以及要发送的数据字节和数据包的数量,数据包个数最多达255个。每个数据包中的第一个数据字节都用于存放序列号(1到255),然后后面跟7个数据字节。所以最大的传输数据字节数为7字节x 255 = 1785字节。最后的数据包中至少得包含一个字节的数据,后面没有用到的都会填充FF。在广播通知报文模式下,消息之间的间隔为50-200ms。最后,转换软件能将多条报文中的数据组合成为一个字符串,并根据多包报文中的PGN和SPN进行解析。
J1939卡车样本数据分析
下面我们会告诉你真正的J1939数据是什么样的。这是使用CANedge2从重型卡车上记录下来的“原始” J1939数据,而“物理值”是经PCAN-Explorer6软件的J1939 DBC解析插件解析后的输出。
示例:卡车J1939原始的数据(CSV)
用CANedge记录的数据会以一个标准化的二进制格式保存为.mdf4文件,可以通过我们的.mdf4文件转换器将其转换为任何文件格式(例如,转换为CSV,ASC,TRC等)。以下是原始J1939框架的CSV版本。请注意,CAN ID和数据字节均采用十六进制格式:
您可以在我们CANedge2的介绍文档中下载完整的原始J1939 .mdf4文件示例。该示例数据还包括一个示例J1939 DBC,以便您可以通过PCAN-Explorer6软件尝试解析J1939报文。
示例:卡车J1939解码后物理值数据(CSV)
一旦J1939原始数据被解码并导出,结果就是如油温,发动机转速,GPS,燃油率和速度之类带有时间戳的参数,想了解更多J1939记录数据示例,可以联系虹科详细了解~
CANedge J1939记录仪与应用示例
该CANedge记录仪能让您轻松记录J1939数据到8-32 GB的SD卡。只需将其连接到重型车辆上即可开始记录,并可以通过PCAN-Explorer6软件和我们的J1939 DBC来解码数据。
J1939数据记录—应用示例
- 重型车队远程信息处理
来自卡车,公共汽车,拖拉机等的J1939数据可用于车队管理,以降低成本或提高安全性
- 实时诊断
通过将解码后的J1939数据传到PC端,技术人员可以实时分析和诊断车辆
- 预见性维护
可以通过云端的IoT CAN记录仪监控车辆,基于J1939的数据预测并避免故障
- 重型车辆的黑匣子
CAN记录仪可以用作重型车辆的“黑匣子”,为纠纷或诊断等提供数据
- 电动汽车充电桩数据监测
您是否有J1939数据想解析?请联系虹科,我们应该能帮到您~
J1939数据记录的6个实用技巧
我们许多终端用户会在现场进行J1939的记录,下面,我们会分享6条实用的记录技巧:
1. J1939记录仪和J1939数据接口
具有SD卡的独立J1939数据记录仪非常适合记录车辆数周或数月的数据。WiFi版的J1939记录仪还能支持远程信息处理。如果用J1939 USB-PC接口就得PC端实时传输来自CAN总线的数据。WiFi版的J1939记录仪对于诊断或分析数据就显得尤为方便了。
CLX000支持两种操作模式,CANedge2会非常适合远程信息处理。
2. 连接器与非接触式读取
要将CAN分析仪接到用J1939通信的机器(例如卡车)上时,通常可以使用9针J1939连接器。我们能给您提供DB9-J1939连接器,该连接器适合许多重型车辆中使用的9针deutsch连接器。或是,您可能想通过CANCrocodile将CAN记录仪连接到CAN总线上。这些方法都能在不干扰CAN总线传输的基础上记录数据,不需要断开任何CAN线。
3. WiFi与蜂窝(3G / 4G)数据上传
对于车队管理和远程信息处理,您通常会通过WiFi或3G / 4G上传数据。利用CANedge2,您可以通过连接WiFi来传输数据,WiFi可以是由WLAN路由器或3G / 4G热点产生的。如果您需要行驶中卡车的数据,那么可以安装CANedge2并用其为一个3G / 4G USB热点供电。这样做的好处是您可以不间断访问该设备,除非设备没有了信号。但是,如果在只需要定期上传数据,那就可以在车辆去特定区域(例如车库,维修店等)时通过WLAN上传数据,从而降低了数据传输成本。
4.软件选择和1939 DBC文件
在记录或传输J1939数据时,用于后处理的软件是关键。特别是,该软件应支持基于J1939 DBC解析,这样可以轻松获得人类可读的数据。我们的PCAN-Explorer6软件就支持此功能,并能实时进行DBC解析。此外,在与SAE合作的基础下,我们还能提供J1939 DBC文件的下载。
5. 考虑对请求PGN的需要
一些J1939 PGN需要请求才能提供,这意味着您需要通过不断地询问 CAN总线来记录这些信息。CANedge和CLX000能够发送自定义的CAN报文,这些报文可用于定期发送PGN请求。但是,如果您将记录仪设置成“只听模式”(silent mode)的话则不能将此功能使能(即,记录仪如果通过CANCrocodile等连接,这项功能也是不能使能的)。
6. 过滤、压缩和加密数据
为了优化J1939数据的记录,许多高级配置可能会对此有所帮助。特别是,CANedge的高级过滤器和采样率选项有助于优化记录的数据量,这是最大限度地减少蜂窝带宽使用的关键。其他选项包括只听模式和循环记录,后者能使记录仪始终能够对最新的数据进行优先级排序(在黑匣子记录中很有用)。
由于J1939是标准化的,因此在“存储”(at rest)(在SD卡上)和“传输”(在上传过程中)中加密数据是至关重要。这样就能减少您在数据处理过程面临的各种安全风险,包括面临 GDPR / CCPA的罚款、机密信息的泄露和数据完整性的破坏。更多有关保护J1939数据记录的详细信息,请与虹科联系。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132929.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...