SAE-J1939协议入门解析

SAE-J1939协议入门解析最近刚接触重型卡车的项目 所使用的是 J1939 协议以及 OSEK 网络 于是就顺便记录些笔记分享出来 欢迎指点哈 J1939 协议是由美国汽车工程师协会 SAE SAE 协会简介 定义的一组标准

大家好,欢迎来到IT知识分享网。


前言

最近刚接触重型卡车的项目,所使用的是J1939协议以及OSEK网络,于是就顺便记录些笔记分享出来,欢迎指点哈~

物理层(J1939/11) 描述了针对客车的电气接口。
数据链路层(J1939/21) 描述了构建报文、访问总线以及诊断传送故障的规则。
应用层(J1939/71和J1939/73) 定义了在网络中传送的每条报文的具体数据,包括PGN以及SPN详情内容解释等。

在这里插入图片描述

话不多说,走你~

一、SAE J1939物理层

二、SAE J1939数据链路层

J1939协议的精髓全在这里,那就让我们展开叙述。

1、帧结构

就此而言, SAE J1939也能够自适应这两种CAN数据帧格式。但是, SAE J1939只使用扩展帧格式全面定义了标准化的通信。所有标准帧格式消息都按照规则作为专用消息使用。因此, SAE J1939设备必须使用扩展帧格式。标准帧格式消息可以在网络中存在,但只能以规定的方式运行。
在这里插入图片描述

1.1、帧起始(SOF)

占1bit,SOF信号只有一个数据位,是一个显性电平(逻辑0),它用于通知各个节点将有数据传输,
其他节点通过帧起始信号的电平跳变沿来进行硬同步。
(这一点和CAN保持一致)

1.2、优先级(P)

1.3、扩展数据页EDP(R)

占1bit,扩展数据页(EDP)联合数据页(DP)可以决定CAN报文帧中CAN ID的结构,目前为保留位,均设置为0。

1.4、数据页(DP)

1.5、替换远程请求Substitute Remote Request (SRR)

占1bit,只存在于扩展帧格式,扩展帧中的SRR位为隐性位(隐性电平(逻辑1))

1.6、标识符扩展位(IDE)

1.7、PDU格式(PF)

占8bit,PF用来确定PDU的格式,两种格式计算得到PGN的方式不同,我们在下面介绍这两种计算方式。

1.8、PDU特定域(PS)

1.9、目标地址(DA)

1.10、组扩展(GE)

1.11、源地址(SA)

占8bit,发送报文的设备的地址,网络上只能有一个具有给定源地址的设备。因此,源地址根据CAN的要求,字段确保CAN标识符是唯一的。地址管理和分配情况详见SAE J1939-81。在SAE J1939-81中定义了程序,以防止源地址的重复。有关源地址分配,请参考SAE J1939附录B,表B2至表B9。

1.12、远程传输请求位(Remote Transmission Request ,RTR)

当RTR=逻辑0时,表示数据帧;=逻辑1时,表示遥控帧。在 SAE J1939 中始终设置一个显性的 0。
(这一点和CAN保持一致)

1.13、控制段

1.14、CRC段

1.15、ACK段

1.16、帧结束

1.17、参数组编号(PGN)

是 J1939 标准中的唯一帧标识符,用于引用将保留位®、数据页(DP)、PDU格式(PF)和 PDU特定字段(PS)的值组合成单个 18 位值。
参数组还包含了每个报文的 8 字节 CAN 数据字段中的参数分配、重复率和优先级。PGN是J1939标准中唯一的帧标识符(J1939-71文档中列出了PGN以及SPN)。
参数组编号 可分为两种类型:
a)全局参数组编号
此类PGN识别广播(发送给所有人)的参数组。这里,PDU格式(PF) >= 240,并且PDU特定字段(PS)是组扩展。
b)特定参数组编号
这些用于对等发送(到特定设备)的参数组。如果PDU格式(PF) <= 239,并且PDU特定字段(PS)设置为0,则无论两个 PGN 的类型如何, PDU 格式、PDU 特定字段、数据页和扩展数据页都用于识别相应的参数组。





Tips: 如有不明白,看最后的例子即可。

1.18、怀疑参数编号(SPN)

在这里插入图片描述

2、Protocol Data Unit (PDU) Formats 协议数据单元格式

2.1、PDU1

2.2、PDU2

2.3、PDU总结

(1) PDU1和PDU2格式下PGN的总数为:( 240+(16*256))*2 = 8672

(2) PDU1格式主要分配给必须指明目标地址的PGNs,数量有限;PDU2格式下的PGNs不能用于必须指明目标地址的情况。大部分PGNs都定义在PDU2段。

(3) 为了保证实时性,报文更新速率小于100ms时不允许多包发送。

(4) PDU1和PDU2格式下均支持单包报文和多包报文。无论是PDU1还是PDU2格式,其前半段PGNs标识的报文更新速率小于100ms,不允许多包发送;后前半段PGNs标识的报文更新速率大于100ms,允许多包发送。

(5) 目前支持五种类型消息,分别为:命令、请求、广播/响应、确认和群扩展。特定消息类型由其分配的参数群编号识别。
RTR位(在CAN协议远程帧中定义)不可用于隐性状 态 ( 逻 辑 1 ) 。
因 此 , 远 程 传 输 请 求( RTR=1)在SAE J1939中不适用。

三、举栗子

3.1、选择DBC文件的报文

在这里插入图片描述

3.2、按位解析

3.3、查询文档

步骤一, 在SAE-J1939-21中查询PGN,如下图,发现竟然里面的描述和我们上面按位解析的一致(说明以后我们第一步先找PGN)
在这里插入图片描述

步骤二, 继续查询并分析SPN190,所谓SPN我认为就是对数据域做了解析。(下图DBC告诉我们该信号处于4-5byte,SPN为190)
在这里插入图片描述
步骤三, 解析SPN190,如下图。
(和DBC的信号属性对比之后,发现分辨率略有区别。无需纠结,可能是整车厂定义了这个参数。但是具体信号的其他属性均和文档一致)
在这里插入图片描述
在这里插入图片描述




总结

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130346.html

(0)
上一篇 2025-08-15 22:00
下一篇 2025-08-15 22:10

相关推荐

发表回复

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

关注微信