SAE J1939协议学习笔记

article/2025/10/19 8:07:38

引用百度百科:

SAE J1939(以下简称J1939)是美国汽车工程协会(SAE)的推荐标准,用于为中重型道路车辆上电子部件间的通讯提供标准的体系结构。它由“卡车与大型客车电气与电子委员会”(Track & Bus Electrical & Electronics Committee)下属的“卡车与大型客车控制和通讯网络附属委员会”(Track & Bus Control and Communications Network Subcommittee)开发编写。

J1939基于德国Bosch公司(Robert Bosch GmbH)开发的控制器局域网络(CAN:Controller Area Network),可达到250Kbps的通讯速率。它描述了重型车辆现场总线的一种网络应用,包括CAN网络物理层定义、数据链路层定义、应用层定义、网络层定义、故障诊断和网络管理。在SAE J1939协议中,不仅仅指定了传输类型、报文结构及其分段、流量检查等,而且报文内容本身也做了精确的定义。目前,J1939是在商用车辆、舰船、轨道机车、农业机械和大型发动机中应用最广泛的应用层协议。

CAN总线原理参考文章:https://blog.csdn.net/tq384998430/article/details/79126597、https://www.cnblogs.com/spoorer/p/6649303.html

目前国家开始执行国二升国三标准,据我所知对于柴油机而言国二和国三标准的最大差别就是国三是电喷,国二是传统机械式的,虽然我不是很了解汽车电子行业,但是我知道使用电喷就需要有专门的电子电路进行电喷控制,这个控制设备就是ECU或者叫ECM模块。ECU模块就是一个嵌入式设备用于汽车发动机控制,也可以叫做行车电脑,是控制发动机的核心部件,当然,一辆完整的汽车控制系统了需要ECU之外还有其他控制设备,例如刹车系统、安全气囊、转向系统等等。各个控制设备之间使用CAN总线连接到一个局域网中,CAN总线的优越特性使得其适合汽车行业,并且得到了广泛的使用。

不过汽车网络是很复杂的,虽然都是基于CAN总线协议进行通信但是不同的系统使用的上层协议是有差别的,例如家用汽车使用的协议标准和卡车使用的协议标准是不一样的。国三标准规定柴油机必须遵循SAE J1939协议,SAE J1939是在CAN总线基础上定义的,它的数据链路层规定了CAN总线使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps。这里不讨论SAE J1939协议的物理层,只专注软件层面。

SAE J1939协议将CAN 2.0B的29bit扩展帧标识符进行的分段定义:

最高的三位为Priority(优先级)字段。接下来的18位为PGN,PGN由EDP(1bit)、DP(1bit)、PF(8bits)、PS(8bits)组成,剩下的8位为SA(Source Address 源地址)。参考我之前的文章《CAN总线学习①-总线仲裁机制》介绍的CAN总线的仲裁原理,可以知道Priority字段数值越小在仲裁的时候会被优先分配到总线占用权利。我上面说过一个完整的汽车系统不仅仅只有一个ECU模块,还需要有很多其他的控制设备(功能模块),SAE J1939协议将每个控制设备都用一个目标地址来寻址,SA源地址字段正是出于这个目的设计的,各种不同的控制设备的源地址如下表:

标识符

装置

Hex

Dec

 

0x 00

0

发动机控制单元

0x 03

3

传动系统控制单元(变速箱)

0x 0B

11

电控刹车系统 (EBS)

0x 0F

15

发动机缓速器

0x 10

16

驱动系统缓速器

0x 17

23

仪表

0x 21

33

车身

0x 24

36

PTO

0x 27

39

车辆智能中心

0x 29

41

排气缓速器

0x 2B

43

车载诊断系统

0x EE

238

转速表

0x F9

249

故障诊断-售后服务工具

PGN是最重要的一个字段,全称为Parameter Group Number,组成元素包括EDP(Extended Data Page)、DP(Data Page)、PF(PDU Format)、PS(PDU Specific),其中PDU是Protocol Data Unit的简写。我没有深究这些字段的含义,因为我看资料一般都是写PGN:65226之类的,并没有将PGN拆开解释。

SAE J1939协议发送小于等于8字节的报文时使用一个CAN帧就可以,发送长度大于8字节的报文是需要分成多个CAN帧的。这里只讨论数据长度小于等于8字节时的报文。SAE J1939的CAN扩展帧定义:

可以看出来SAE J1939协议其实就是在CAN协议的基础上封装了一层,相比较计算机网络的7层协议来说已经简单很多了,可能这就是SAE J1939协议的设计目的,不为了多强大的性能和丰富的功能,只要稳定和速度。

下面以一个SAE J1939的报文ET1为例操刀解析一下。

ET1报文是由发动机的ECU模块以1000ms的周期发送出来的。报文的优先级为6,PGN为0xFEEE,拆开PGN得到EDP和DP都为1,PF为0xFE,PS(DA)为0xEE。报文的SA源地址为0x00,表示报文来自的控制设备为发动机控制单元就是ECU。数据字段的第一个字节为发动机冷却液温度,第二个字节为发动机燃油温度,第三个字节为发动机机油温度,5到8字节未定义。这样如果我们设计的设备通过CAN总线连接到ECU模块上的话会接收到来自ECU的ET1报文,我们将报文的数据解析出来就可以获取到发动的三个重要运行参数了,同理,其他众多的参数也是这样获取到的。

当然了,除了可以读取来自ECU的数据,我们还能够写数据到发动机中去,按照SAE J1939协议设置好CAN帧的优先级、PGN、源地址和数据,发送给ECU即可。

附 缩写表:

 

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/0oqw4LiJ.shtml

相关文章

J1939学习(二)

PDU 应用或网络层提供被同化为协议数据单元(PDU)的信息串。PDU提供了一个框架,用于组织对发送的每个CAN数据帧至关重要的信息。SAE J1939 PDU由七个字段组成:(1)P、(2)EDP、&#x…

CAN总线(J1939)速成指南【1】

本文转载在我的微信公众号:古德曼汽车工业。公众号文章都会知识星球、知乎进行转载,请有兴趣的朋友可以关注我的微信公众号 原文地址:CAN总线(J1939)速成指南【1】 很久以前当思想对CAN总线还一窍不通的时候,尝试百度搜索过非常…

J1939协议实用指南与J1939数据记录方案

“没错,这是一份SAE J1939协议的简单、实用指南。”—虹科 开篇:在这篇介绍中,我们介绍了J1939协议的基本知识,其中包括PGN和SPN。因为这是一篇偏向应用的简介,所以您还将会学习到如何通过DBC文件解码J1939数据、如何记…

车载通信——J1939故障码

一、诊断 UDS是统一诊断系统 冻结帧:出现故障码时,ECU存储故障码出现时的数据,就是冻结帧。 二、J1939故障诊断 SAE J1939应用层定义了12种诊断报文(Diagnostic Message,DM)、诊断故障码(DTC&#xff0…

UDS,ISO14229,ISO15765,ISO15031,J1939车辆诊断协议入门系列

(图片来源于网络) 目录 摘要1. 基础概念1.1 诊断的概念1.2 诊断的目标1.3 诊断的实现1.4 诊断是分层的 2. 项目应用3. 协议栈开发 摘要 回想当年刚进去汽车行业,做新能源车的某个“ECU”,和客户沟通需求时,人家上来就…

J1939故障码诊断说明

1:1939整体协议说明 这里主要说明1939不同的协议,对应不同的网络分层 注意了,这里只进行文档解析说明,具体查看去搜素协议的关键字进行理解 2:DMx和FMI 说明 想知道每个代号的具体含义,可以去 saeJ1939…

J1939协议之通俗易懂----简介

J1939简介 J1939协议简介 J1939协议是由美国汽车工程师协会(SAE) (SAE协会简介)定义的一组标准。J1939标准用于卡车、公共汽车和移动液压等重型车辆。在许多方面,J1939标准类似于旧版J1708和J1587标准,但J1939标准协议建立在CAN…

J1939协议简介

J1939简介 J1939协议简介 J1939协议是由美国汽车工程师协会(SAE) (SAE协会简介)定义的一组标准。J1939标准用于卡车、公共汽车和移动液压等重型车辆。在许多方面,J1939标准类似于旧版J1708和J1587标准,但J1939标准协议建立在CAN&…

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

SAE J1939是由汽车工程师协会(SAE J1939)定义的标准,专门用于提供微处理器系统之间的串行数据通信。虽然CAN存在并且被广泛用于小型车辆,但SAE J1939被设计为大型车辆复杂网络的专用通信和诊断协议。J1939通常应用于重型车辆&…

SAE J1939协议(一)

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

J1939 学习(一)

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

J1939协议解析

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

J1939协议简介【小白入门】

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

J1939 入门教程

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

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

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

竟然可以用python炒股?

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

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

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

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 集成学习 涨跌分…

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

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

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

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