车用总线技术 | J1939协议实用指南与J1939数据记录方案

车用总线技术 | J1939协议实用指南与J1939数据记录方案“没错,这是一份SAEJ1939协议的简单、实用指南。”—虹科开篇:在这篇介绍中,我们介绍了J1939协议的基本知识,其中包括PGN和SPN。因为这是一篇偏向应用的简介,所以您还将会学习到如何通过DBC文件解码J1939数据、如何记录J1939、典型的应用案例和实用技巧。下面,来了解下这份简单易懂的J1939介绍吧~什么是J1939?J1939简介简而言之,SAEJ1939其实是一套标准,重型车辆ECU间就是按照这套标准在CAN总线上进行通信的。当今大多数车辆都通过CAN(Con…

大家好,又见面了,我是你们的朋友全栈君。

车用总线技术 | J1939协议实用指南与J1939数据记录方案

“没错,这是一份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数据记录的详细信息,请与虹科联系。

车用总线技术 | J1939协议实用指南与J1939数据记录方案

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132929.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • nv12转yuv420_百转

    nv12转yuv420_百转YU12格式也叫I420格式,是YUV420p其中的一种,NV12是YUV420sp的一种。YU12和NV21中YUV数据的排列方式为:YU12:YYYYYYYYUUVVNV12:YYYYYYYYUVUV针对数据排列顺序结构,本文将NV12转为YU12。主要转换接口实现为:intNV12toYU12(char*data,char*out,intwidth,intheight);具体代码如下:/************************************

  • qnap系统安装_snailsvn安装配置教程

    qnap系统安装_snailsvn安装配置教程QNAP安装subversion服务器背景安装1.安装Entware2.安装Subversion配置1.创建仓库2.配置仓库启动svn1.杀掉已有的svn进程2.启动)背景买了一台QNAPTS-453Bmini。是x86的机器,性能强大,最高能装16G内存。某日偶然网上发现有人做svn服务器,于是打算试试。为啥不用Gitlab呢。因为发现Container的网络ip…

    2022年10月17日
  • 微型计算机的字节取决于什么的宽度,计算机的字长取决于什么?

    微型计算机的字节取决于什么的宽度,计算机的字长取决于什么?满意答案mini_i2013.07.06采纳率:49%等级:9已帮助:614人计算机的字长取决于数据总线的宽度.字长是指计算机内部参与运算的数的位数。它决定着计算机内部寄存器、ALU和数据总线的位数,直接影响着机器的硬件规模和造价。字长直接反映了一台计算机的计算精度,为适应不同的要求及协调运算精度和硬件造价间的关系,大多数计算机均支持变字长运算,即机内可实现半字长、全字长(或单字长)和双倍…

  • pycharm创建django项目报错[通俗易懂]

    pycharm创建django项目报错[通俗易懂]ErrorcreatingDjangoapplication:Erroronpythonside.Exitcode如果创建Django项目的时候出现如上截图错误,则是Django下载失败,需要检查本机django是否下载成功,有的时候是因为缺少pytz包而导致django下载失败解决方案:关于pytz包缺失error:CouldnotfindsuitabledistributionforRequirement.parse(‘pytz’)首先去官网下载pytz包:http

    2022年10月31日
  • DVWA之反射型XSS代码审计

    DVWA之反射型XSS代码审计目录lowmediumhighimpossible从整个cms的角度去分析这个漏洞low前端代码如下。定义了一个表达以get的方式发送请求形式为?name=。然后包含了一个$html的变量源码如下。array_key_exists()函数检查某个数组中是否存在指定的键名,如果键名存在则返回true,如果键名不存在则返回false。$_GET为超全局变量。直接将输入的name值赋值给变量$html然后前端再引用这个变量,所以触发xss<?php.

  • 薏米红豆粥的功效和实践演示

    薏米红豆粥的功效和实践演示

    2021年12月17日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号