了解J1939协议和J1939数据记录仪(车辆工程机械中的黑匣子)

article/2025/10/19 11:13:42

在这里插入图片描述

SAE J1939是由汽车工程师协会(SAE J1939)定义的标准,专门用于提供微处理器系统之间的串行数据通信。虽然CAN存在并且被广泛用于小型车辆,但SAE J1939被设计为大型车辆复杂网络的专用通信和诊断协议。J1939通常应用于重型车辆,如卡车,拖拉机,拖车,农用车辆,船舶,援助和救援以及许多此类越野车辆。今天,它已被世界各地的柴油发动机制造商广泛认可。

SAE J1939是一种基于控制器局域网(CAN)的高层协议(HLP),这是一种专门的内部通信网络,可互连车辆内部的组件。正如CAN总线作为这种通信的硬件一样,J1939可以更好地理解为它所使用的语言。SAE J1939已成功取代了先前存在的SAE J1708和J1587标准。它已成为多个制造商之间的标准通信方法,不仅提供了设定的通信标准,此外还提供了:

• 指定如何处理多数据包信息

• 支持跨大型复杂网络的通信

• 指定如何将数据转换为人们可读的信息

• 定义了自己的诊断接口

在这里插入图片描述

标准CAN总线支持11位或29位报文ID,几乎每个波特率可高达1 Mbps。SAE J1939 仅限于 250kbps 或 最大500 kbps的 29 位报文ID,这是为了最大程度上保证J1939的可靠性。但它可以支持大于8个数据字节的报文。大多数J1939报文在CAN 上广播(BAM),但有些数据只能通过CAN总线请求(CM)才能获得(本文稍后会解释)。J1939 报文由 18 位参数组号 (PGN) 标识,而 J1939 信号称为可疑参数编号 (SPN)。通过 J1939 传输协议,最多支持 1785 字节的 PGN。

关于这个细节,下图应该可以清楚地描绘出 29位CAN标识符如何在 SAE J1939消息格式中的表达方式:

在这里插入图片描述

在这里:

•帧的开始(SOF):如 CAN 中所定义,标记帧的开始,并且始终为主一个显性0。

•远程请求位(RTR):在 SAE J1939 中始终设置一个显性的 0。

其他字段就如在CAN标准中定义那样。这里有趣的是,所有J1939数据包(请求包除外)都包含8个字节的数据和一个包含名为参数组号(PGN)的索引的标准头。其中包含一个名为参数组编号 (PGN) 的索引,嵌入在报文的 29 位标识符中。参数组编号 (PGN) 是指保留位、数据页、PDU 格式和 PDU 特定字段的值(组合成单个 18 位值)。

J1939结构中使用的29位标识符以下面给出的方式表示。在这里,PDU 代表协议数据单元,这是消息格式:

在这里插入图片描述

•优先级:在仲裁过程中控制消息的优先级。“0”具有最高优先级,通常赋予高速控制消息。例如,来自制动器的信息总是优先于来自车辆环境温度的信息。

•扩展数据页和数据页:PGN 中包含这些位,以便计为最高有效位。数据页位扩展了标识符可以表示的可能参数组的数量。数字范围排列在以下四页中:

扩展数据页面 数据页面 描述
0 0 SAE J1939 和 ISO 11783
0 1 SAE J1939 NMEA 2000*
1 0 SAE J1939-保留
1 1 ISO 11992 诊断
(无 J1939 布局)
(在 SAE J1939中仅使用了3个)

•PDU 格式:确定是使用目标地址传输消息还是始终以广播消息的形式传输消息。

•PDU 特定:PDU 特定字段根据 PDU 格式值而改变

▶PDU 格式介于 0 到 239 之间:

▷ 报文是可寻址的,并且 PDU 特定字段包含目标地址。它指定对等通信(CM)
▷ 如果将全局(255)用作目标地址,则该参数组将针对所有设备。在这里,PGN仅由PDU格式形成
▶ PDU 格式介于 240-255 之间:
▷ 只能是广播报文 (BAM)
▷ PDU 格式和 PDU 特定字段中的组扩展构成了所传输参数组的 PGN
▷ 这个组扩展扩展标识符可以表示可能的广播参数组的数量
•源地址:其中包含传输消息的设备的地址。地址是指定用于唯一访问网络上给定设备的特定标签。对于任何给定的网络,每个地址都必须是唯一的。总共有254个不同的地址可用。没有两个不同的设备(ECU)可以使用相同的地址。

SAE J1939 中的 PGN 和 SPN

在这里插入图片描述

参数组编号 (PGN)是 J1939 标准中的唯一帧标识符,用于引用将保留位、数据页、PDU格式和 PDU特定字段的值组合成单个 18 位值。参数组包含了每个报文的 8 字节 CAN 数据字段中的参数分配、重复率和优先级。

参数组编号 可分为两种类型:

  1. 全局参数组编号
    此类PGN识别广播(发送给所有人)的参数组。这里,PDU格式>=240,并且PDU特定字段是组扩展。
  2. 特定参数组编号
    这些用于对等发送(到特定设备)的参数组。如果PDU格式<=239,并且PDU特定字段设置为0,则无论两个 PGN 的类型如何, PDU 格式、PDU 特定字段、数据页和扩展数据页都用于识别相应的参数组。

可疑参数编号 (SPN) 是 SAE 分配给参数组中特定参数的编号。它们用作数据字节中CAN信号的标识符。SPN 也被定义为内部协议信息,用于诊断目的,以报告和识别 控制器应用程序 (CA) 的异常操作。

SPN 是一个 19 位数字,其范围从 0 到 524287。 从520192到524287的范围被保留给专有参数。除字母数字数据外,SPN 解释始终从 LSB 为 MSB(从右到左)。SPN 可能存在于多个 PGN 中。PGN对 SPN 进行分组,它 通过提供以下信息来详细描述参数:

• 数据长度(以字节为单位)

• 规模

• 数据类型

• 单位

• 分辨率

• 偏移

• 范围

• 参考标签(标识)

参数组(PG) 包含具有共同特征的 SPN,它们使用参数组编号(PGN) 在整个网络中传输。

SAE J1939 中的传输协议

如前所述,通过 J1939 传输协议支持高达 1785 字节的 PGN。但是,要发送 超过 8 字节的报文,需要在传输端将较大的报文分解为较小的数据包。每个数据包与 CAN报文一起发送(也称为多数据包传输),并在接收端重新组合。定义报文如何被分解、传输和重建的规则称为 SAE J1939 的传输协议。

SAE J1939 中定义了两种传输协议类型:

  1. 广播通告消息 (BAM):

• 一对多的沟通方式。

• 使用全局目标地址。

• 报文将传输到所有节点。在这里,发射器负责管理整个网络中的整个数据。

• 接收者用任何方式都不能干扰这种通信。即使没有收到任何数据包,接收方也无法示意它。

• 发送者全权负责保持两个数据包传输之间的特定时间间隔(范围从50-200ms)。因此导致整个网络的通信速度比较慢,但它也允许速度较慢的节点跟上通信的步伐。

  1. 连接模式 (CM):

• 点对点的连接。

• 涉及特定设备,其中传输端发送带有指示发送请求(RTS)的控制字节的CM报文,包括字节数,数据包数以及数据被传送的PGN。

• 接收者使用 CM 报文进行响应,该报文在控制字节中包含了“清除发送” (CTS),包括接收方接下来预期的数据包数和要开始的数据包数。

• 在这里,接收方负责控制数据流和各个数据包的流动。但是发射器和接收器都可以在任何时间点终止通信。

• 传输不受时间限制, 每个节点都以其最大速度运行。因此,此模式更快。

SAE J1939 中的诊断故障代码

在J1939标准中,存在特殊的诊断故障代码。ECU中的每个故障都记录为诊断故障代码。它们识别并记录任何SPN 行为异常的任何错误属性,并使用故障指示器来缩小特定错误背后的原因。

在这里插入图片描述

SPN: - 指定有故障的 SPN (0-524,287)

FMI:- 故障模式指示器指定错误的类型/性质 (0-31)

OC :- 发生率计数器,指定给定故障的发生次数 (0-127)

CM: - 通过定义 DTC(0-1)中的字节来排列来指定转换方法

例如:
在这里插入图片描述

J1939 数字附件:

在这篇文章中读到这里,“CAN DBC”可能听起来很熟悉。与 CAN 一样,J1939也可能有自己的数据库文件,这是有道理的。但 SAE 不维护或定义 J1939 的任何 DBC。相反,SAE 维护和销售名为 J1939 数字附件的 excel 文件,以传达为 J1939 创建 DBC 文件所需的所有技术信息。在J1939DA 的帮助下,人们可以根据制造商的产品需要的信息类型创建他们的 DBC 文件。

此外,还有来自不同制造商的许多应用程序都可以读取 DBC 文件,例如“Influx DiaLog”。来自Influx的RebelReXgen 系列 CANbus 数据记录仪支持J1939数据的记录。ReXgen 可以根据J1939过滤器(SA,DA,PGN)记录数据,并且可以根据DM1计数器设置触发。
Rebel系列总线记录仪
Rebel 系列总线记录仪

ReXgen系列总线记录仪
ReXgen系列总线记录仪


http://chatgpt.dhexx.cn/article/x3FyT8T3.shtml

相关文章

SAE J1939协议(一)

SAE J1939 是 基 于 CAN 总 线 的 协议&#xff0c;波特率可达250Kbps&#xff0c;是一种传输速率较高的C类通信网络协议。SAE J1939主要用于卡车、客车等的网络系统控制与通信。 SAE J1939分层结构模型&#xff1a; SAE J1939标准的文档构成&#xff1a; 1、 SAE J1939物理层…

J1939 学习(一)

J1939简介 SAE J1939&#xff08;以下简称J1939&#xff09;是美国汽车工程协会&#xff08;SAE&#xff09;的推荐标准&#xff0c;用于为中重型道路车辆上电子部件间的通讯提供标准的体系结构。它由“卡车与大型客车电气与电子委员会”&#xff08;Track & Bus Electric…

J1939协议解析

关于对J1939的一点理解&#xff0c;有错误的话请指正。 缩写定义 PGN 在CAN数据帧的数据域中需要指明参数群时&#xff0c;PGN是表示成24位。PGN是一个24位的值&#xff0c;包括以下要素&#xff1a;保留位、数据页位、PDU格式域&#xff08;8位&#xff09;和群扩展域&#…

J1939协议简介【小白入门】

文章目录 J1939协议简介J1939主要特性报文格式及使用方法(J1939/21)地址和名称 (J1939/81)地址请求报文传递(J1939/21和J1939/7x)TP_BAM报文TP_CM报文报文接收(J1939/21和J1939/7x)ECU设计(J1939/1x&#xff0c;J1939/21和J1939/7x)接线布局 &#xff0d; 物理层(J1939/1x)如何…

J1939 入门教程

SAE J1939协议是基于CAN2.0B协议之上的应用层协议&#xff0c;但是SAE J1939协议并不仅仅是个应用层协议&#xff0c;她对物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;应用层&#xff0c;故障诊断&#xff0c; 网络层管理层等都做了详细的规定,只不过这其中很多…

神经网络炒股出现的问题,炒股容易得神经病吗

听朋友说他用盈首AI全自动炒股机器人炒股&#xff0c;效果很好&#xff0c;请问一下用过的朋友&#xff0c;不知道是否是真的&#xff1f; 应该是真的&#xff0c;现在是人工智能时代&#xff0c;科学炒股是必然选择&#xff0c;国家也在出了很多支持人工智能的政策&#xff0…

竟然可以用python炒股?

由于笔者并无深厚的数学功底也无深厚的金融知识, 所以不会在本文中引用各种高深的投资模型或数学模型&#xff0c;参考书籍主要是《海龟交易法则》《以交易为生》。 交易系统 在交易之前&#xff0c;我们应该首先有一个交易系统用于指导我们自己交易&#xff0c;不一定有什么规…

用深度学习算法预测未来股票走势

最近研究了一下用深度学习算法来预测股票未来的走势&#xff0c;看了网上不少别人分享的案例&#xff0c;也实际进行了测试&#xff0c;感觉用 LSTM 算法比较适用。长短期记忆网络&#xff08;LSTM&#xff0c;Long Short-Term Memory&#xff09;是一种时间循环神经网络&#…

AI in Finance<量化交易人工智能金融投资>(下)

7 机器学习量化策略7.1 基于股价涨跌分类/回归模型7.1.1 特征选择(遗传算法因子挖掘)7.1.2 Linear Regression股价回归预测7.1.3 Logestic Regression涨跌分类预测7.1.4 Random Forests涨跌分类预测7.1.5 SVM涨跌分类/回归预测7.1.6 MLP涨跌分类/回归预测7.1.7 集成学习 涨跌分…

(转)人工智能无处不在,这次是有公司用它来炒股

这事情能成吗&#xff1f; 人工智能是现在科技界一个比较热门的话题&#xff0c;不管公司大小、做什么&#xff0c;都在谈人工智能&#xff0c;好像这是唯一的选择。 现在有人想用它来炒股。 Shaunak Khire 的团队开发了一套机器智能系统 Emma AI&#xff0c;正在募资成立一…

AI 量化机器人,人工智能如何助你从股市发家?

量化交易是不是很高大上&#xff1f; 量化交易&#xff0c;听起来很高大上&#xff0c;其实就是众多投资方法中的一种。 要理解什么是量化交易&#xff0c;首先我们来说说什么叫“量化”。 我们来想象一种场景&#xff1a; 假如有人做了两道菜&#xff0c;让大家去评价这两道菜…

如何用深度强化学习自动炒股

向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习 公众号&#xff1a;datayx 深度学习技术在股票交易上的应用研究调查 http://gregharris.info/a-survey-of-deep-learning-techniques-applied-to-trading/ 文中缩写&#xff1a; DBN 深度信…

如何用人工智能预测股票(完整项目)

本文由 沈庆阳 所有,转载请与作者取得联系! 前言 十分钟实现人工智能股价预测&#xff0c;是一个深度学习的练习项目。其通过机器学习算法&#xff0c;根据过去几年与某只股票相关的K线走势、公司相关报道的情感分析作为数据集&#xff0c;通过训练来得到可以预测股价的机器学…

想靠AI炒股致富,结果恐怕会让你怀疑人生

来源&#xff1a;脑极体 作者&#xff1a;藏狐 经历了漫长熊市的A股&#xff0c;在农历新年后迎来了一个超乎想象的春天。最能够代表牛市来临的信号&#xff0c;不是领跑全球的历史性涨幅&#xff0c;而是连你老家的大妈都准备拿出首付甚至卖房抄底了&#xff0c;各路股神纷纷出…

手把手带你玩转Spark机器学习-使用Spark进行文本处理

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

大数据笔记--Spark机器学习(第二篇)

目录 一、梯度下降法 1、什么是梯度&#xff1f; 2、梯度下降法与梯度上升法 3、梯度下降法的直观解释 4、梯度下降法的相关概念 5、梯度下降法原理 6、梯度下降法的算法参数 7、梯度下降法-家族&#xff08;BGD&#xff0c;SGD&#xff0c;MBGD&#xff09; 8、总结 …

Spark机器学习(一)-Spark工程搭建

目录 概述 环境准备 搭建Spark项目的代码工程 创建maven项目工程 创建scala测试类 整合spark环境 概述 最近自己在加强AI这块&#xff0c;以前做Java、大数据分析比较多&#xff0c;所以对CDH那套东西都比较熟悉&#xff0c;例如Hadoop、Spark。但Spark这块中的ML用得不…

【Spark】实验6 Spark机器学习库MLlib编程实践

Spark机器学习库MLlib编程实践 一、实验目的 通过实验掌握基本的MLLib编程方法&#xff1b;掌握用MLLib解决一些常见的数据分析问题&#xff0c;包括数据导入、成分分析和分类和预测等。 二、实验平台 新工科智慧平台。数据集1&#xff1a;下载Adult数据集(http://archive.i…

手把手带你玩转Spark机器学习-使用Spark进行数据降维

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

spark之常见的机器学习算法

1、分类、回归、聚类 分类回归是一种重要的机器学习和数据挖掘技术。分类的目的是根据数据集的特点构造一个分类函数或分类模型(也常常称作分类器)&#xff0c;该模型能把未知类别的样本映射到给定类别中的一种技术。 即&#xff1a; 向量X[x1,x2...xn]但标签C[c1,c2...,ck]的…