SAE J1939协议学习笔记

SAE J1939协议学习笔记引用百度百科:SAEJ1939(以下简称J1939)是美国汽车工程协会(SAE)的推荐标准,用于为中重型道路车辆上电子部件间的通讯提供标准的体系结构。它由“卡车与大型客车电气与电子委员会”(Track&BusElectrical&ElectronicsCommittee)下属的“卡车与大型客车控制和通讯网络附属委员会”(Track&BusContro…

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

引用百度百科:

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/79126597https://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扩展帧标识符进行的分段定义:

SAE J1939协议学习笔记

最高的三位为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协议学习笔记

可以看出来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即可。

附 缩写表:

SAE J1939协议学习笔记

 

 

 

 

 

 

 

 

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

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

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

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

(0)
blank

相关推荐

  • python控制mt4自动交易软件排名_股票自动交易软件排名

    python控制mt4自动交易软件排名_股票自动交易软件排名原标题:股票自动交易软件排名提起股票自动交易软件,大家都很不陌生了,很多用户也使用过很多不同品牌的产品,那么谁比较好呢?接下来我们就为大家来总体排名一下:第一名:智能A股管家股票自动交易系统把它排在第一名是因为它的性价比高,功能上虽然比不上第二名,但它的价格确实普罗大众用户可以接受的功能:可以实现多种条件任务自动执行买卖,内置9种智能交易任务策略,止盈止损,拐点交易,自动T+0,闪电交易,双向卖…

  • java依赖jar包的方式_java打包命令

    java依赖jar包的方式_java打包命令大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的mainclass作为你这个jar包的程序入口。具体的方法是修改jar包内目录META-INF下的MANIFEST.MF文件。比如有个叫做test.jar的jar包,里面有一个拥有main函数的mainclass:test.someClassName。我们就只要在MANIFEST.MF里面添加如下一句话:…

  • GTSAM中ISAM2和IncrementalFixedLagSmoother说明[通俗易懂]

    GTSAM中ISAM2和IncrementalFixedLagSmoother说明[通俗易懂]GTSAM

    2022年10月30日
  • 给你的wordpress博客中加入喜欢的鼠标指针

    想给你的博客加个喜欢的鼠标指针吗?其实很简单的,wordpress中要加入只需修改皮肤中的css。在body中插入cursor:url(‘鼠标指针网址’)}就可以了,如果想修改鼠标指针接触到链接的鼠标样式,那只要在a中插入cursor:url(‘鼠标指针网址’),我用的是个企鹅,挺好玩的。我也发上来,喜欢的可以用用。鼠标指针转载于:https://www.cnblogs.com/joyp…

  • idea激活码 mac 2021.023月最新在线激活

    idea激活码 mac 2021.023月最新在线激活,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Jacob 调用金税系统

    Jacob 调用金税系统1.调用打印方法时,若是有预览弹窗提示,程序会阻塞住,并在控制台打印一行:C:\ProgramFiles(x86)\��Ʊ���\914601007603699430.0\Config\Print\PrinterManager.xml(乱码部分是金税盘中文路径名)经检测,此文件是打印机选择文件,已安装过的的打印机,此文件编码未知,用编辑器试了好几种编码格式打开打开都是一堆乱码。若是…

发表回复

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

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