“没错,这是一份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的历史

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协议典型的特征

J1939的比特率通常为250Kb/s(最近还能支持500Kb/s),并且拥有18位扩展标识符共29位标识符(CAN 2.0B)

大多数J1939报文都是以广播的形式在CAN总线上进行传播,而一些数据只能通过请求方式从CAN总线来获得数据

J1939报文中,使用18位的PGN(参数组编号,Parameter Group Numbers)作为一组参数的标号,参数组内有一个或者多个具体的参数;而参数组中的每个具体的参数在J1939中被19位的SPN(怀疑参数编号,Suspect Parameter Numbers )标识出来

多字节数变量先发送有效字节的最低位(Intel字节顺序)。根据传输协议支持最大1785字节的PGN

以下是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数据记录方案相关推荐

  1. CAN FD协议实用指南

    "您是否需要一份CAN FD协议的简要的实用指南?"-来自虹科的问候. ** CANFD 指南前言 ** 在本指南中,我们会介绍CAN FD(CAN Flexible Data-r ...

  2. arduino读取水位传感器的数据显示在基于i2c的1602a上_基于PC-CAN适配卡和总线技术实现潜水电机分布式监控系统的应用方案...

    目前,国内外已有多家公司开发出针对个体潜水电机的智能电了保护装置,虽然可以达到保护电机的目的,但无法实现集中管理.因此,对潜水电机群的实时监控与统一管理的要求日益迫切.本文设计了基于CAN现场总线的潜 ...

  3. 计算机科学与技术专业修读指南,计算机类专业培养方案修读指南.pdf

    文档介绍: 博学远志明德至诚--福州大学校训前 言 同学们,欢迎你们踏入福州大学校门,成为数学与计算机科学学院的一名新成员."大学到底是什么样的,我能学到什么,四年后我能成为什么样的人--& ...

  4. 大数据:技术与应用实践指南_大数据技术与应用社团 社会实践总结篇

    不知不觉,我们已经在家里呆了七个月了 也不知道宿舍还好吗 小伙伴们有没有在家好好学习 在这个漫长的假期里,我们热爱学习的大数据技术与应用社团举办了为期七天的社会实践活动. 本次实践活动主要内容为网页设 ...

  5. V-RAY NEXT FOR MAYA 实用指南助您掌握 V-Ray 的关键技术

    由 VFX 艺术家 Rusty Hazelden 所制作,这个系列教程视频将帮助您解锁许 多 V-Ray Next for Maya 的强大功能. 在<V-Ray的艺术>Vol. 1教程视 ...

  6. 《黑客秘笈——渗透测试实用指南(第2版)》目录—导读

    版权 黑客秘笈--渗透测试实用指南(第2版) • 著 [美] Peter Kim 译 孙 勇 责任编辑 傅道坤 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 3 ...

  7. Python 无监督学习实用指南:1~5

    原文:Hands-on unsupervised learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编 ...

  8. 学习笔记10--CAN总线技术

    本系列博客包括6个专栏,分别为:<自动驾驶技术概览>.<自动驾驶汽车平台技术基础>.<自动驾驶汽车定位技术>.<自动驾驶汽车环境感知>.<自动驾驶 ...

  9. Fedora和Red Hat Enterprise Linux实用指南(第6版)(上、下册)( 入行必读的Linux圣经)

    Fedora和Red Hat Enterprise Linux实用指南(第6版)(上.下册)( 入行必读的Linux圣经) (美)苏贝尔(SobellL,M.G.)著 李洋等译 ISBN 978-7- ...

  10. Fedora和Red Hat Enterprise Linux实用指南(第6版)(上、下册)( 入行必读的Linux圣经)...

    Fedora和Red Hat Enterprise Linux实用指南(第6版)(上.下册)( 入行必读的Linux圣经) (美)苏贝尔(SobellL,M.G.)著 李洋等译 ISBN 978-7- ...

最新文章

  1. Nginx 代理 WebSocket
  2. python中的cli模块_Python 快速实现CLI 应用程序的脚手架
  3. 用户测评 | EDAS Serverless 上手体验 1
  4. html走马观花效果,走马观花台湾行 用EF-S 10-18来记录风景
  5. linux pmap 内存泄露,一个驱动导致的内存泄漏问题的分析过程(meminfo-pmap-slabtop-alloc_calls)...
  6. 腾讯广告:广告场景下有哪些视觉算法应用?
  7. JAVA常用算法一:二分查找【递归 or 非递归】
  8. Nokia Imaging SDK滤镜使用入门
  9. better-scroll插件 api
  10. 华为荣耀Linux笔记本评测,华为荣耀 篇一:荣耀MagicBook Pro详细评测 当下最值得推荐的高性能全面屏笔记本...
  11. 离线底图瓦片,可用于Cesium加载使用【图说GIS】
  12. h5怎么做分享到QQ 、朋友圈、微信 、微博等功能
  13. 有道云笔记、印象笔记(evernote)哪个更好?
  14. HTML+CSS 模拟QQ邮箱登录界面
  15. 数据通信与网络教材目录
  16. 基于单片机的蓝牙电子秤系统设计(#0493)
  17. pda扫描枪屏幕_pda和条码扫描枪的区别
  18. selenium控制日历控件
  19. 城市间紧急救援(Dijkstra算法)
  20. kaggle 入门 泰坦尼克 处理过程

热门文章

  1. Funcode-黄金矿工
  2. Summary_zTree的 setting 配置详解
  3. 海思Hi3559AV100ES Camera芯片处理器参数
  4. 如何下载网页中的flash SWF文件
  5. 提取swf素材_swf素材提取工具
  6. 新手指南|欢迎来到CSDN
  7. 在Mac上安装SoapUI
  8. Windows Shell 编程学习总结
  9. 黑莓7290软件_黑莓7290,我买的是情怀
  10. 数学建模——线性规划篇