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协议学习笔记

 

 

 

 

 

 

 

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • shell运维脚本实例_100个必会的shell脚本

    shell运维脚本实例_100个必会的shell脚本无论是系统运维,还是应用运维,均可分为“**纯手工”—>“脚本化”—>“自动化”—>“智能化”**几个阶段,其中自动化阶段,主要是将一些重复性人工操作和运维经验封装为程序或脚本,一方面避免重复性操作及风险,另一方面提高执行效率。在自动化运维的转变过程中,经常使用的可能就是shell脚本了。很多人认为shell脚本简单,但其实Shell的小脚本却有大智慧。别小看几十行代码,它夹杂着系统设计、代码规范和操作经验等等细节,在建设自动化运维的工作中,还是很值得我们研究学习的。为了帮助大.

    2022年9月28日
    0
  • System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation=”true”/>

    System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation=”true”/>关于在同一个页面中使用Gridview控件的时候发现气updaeting事件无法被服务器所响应,看来它的错误报警然后查询了部分资料现在将整理的解决方法总结如下:点击update事件无法响应原因出在回发或回调参数无效。在配置中使用或在页面中使用启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用Clie

    2022年7月24日
    6
  • Java判断回文字符串_java将字符串反转输出

    Java判断回文字符串_java将字符串反转输出java判断回文字符串几种简单的实现:1.将字符串倒置后逐一比较,实现如下:publicclassHuiWenTest{/***@SERLIN*/publicstaticvoidmain(String[]args){Stringstr=””;System.out.println(“请输入一个字符串”);Scannerin

    2022年5月3日
    45
  • 分子模拟软件amber_容天AMBER优化的GPU解决方案

    分子模拟软件amber_容天AMBER优化的GPU解决方案AMBER认证的GPU系统AMBER认证GPU系统提供商容天更快地运行MD仿真容天与AMBER的主要开发商合作开发了交钥匙解决方案,为GPU加速的生物分子模拟提供增值系统。经过验证的系统,每个用户的CPU,GPU,内存和存储具有适当的平衡。从工作站到超级计算机的高度可扩展系统,具有3年保修和支持。容天AMBER优化的GPU加速系统更快地完成MD仿真并不需要花费很多。我们的AMBERG…

    2022年5月9日
    104
  • 【转载】ViewState的用法

    【转载】ViewState的用法

    2021年11月21日
    34
  • win10应用商店错误代码0x8000FFFF_错误代码0xc000007b

    win10应用商店错误代码0x8000FFFF_错误代码0xc000007b控制面板内打开网络和Internet Internet选项 连接 设置 自动检测设置

    2022年9月2日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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