SAE J1939协议详解

目录

一、概述

二。物理层(SAE J1939-11)

三、数据链路层

3.1.协议数据单元(PDU)

3.2.报文类型

3.3.多帧传输机制

四、网络层

五、应用层

一、概述

SAE J1939协议是由美国汽车工程师协会(SAE)制定的主要针对商用车的CAN总线通讯协议,其基础是CAN2.0B协议,面向对象为客车和载重货车;船舶、农业机械等非路面设备。

1.SAE J1939协议文档结构如下图:

ff3cc68f21f746d29bf050388bda75f4.png

2.CAN的发展概况

20世纪80年代,Bosch的工程人员开始研究用于汽车的串行总线系统,1986年, Bosch在SAE(汽车工程师协会)大会上提出了 CAN,1987年,INTEL就推出了第一片CAN控制芯片—82526; 随后Philips半导体推出了82C200。 1991年9月BOSCH公司发布了CAN技术规范2.0,该技术规范包括A和B两部分。 1993年,CAN的国际标准ISO11898公布,1994年,美国SAE以CAN 2.0B通信协议为基础,制定了面向客车和载重货车的CAN网络通信协议SAE J1939.

3.SAE J1939与OSI模型的关系

b203ec6e5bac4981a30c15827680cbf0.png

二。物理层(SAE J1939-11)

物理层主要定义电气接口和物理介质,实现网络中电控单元 (ECU)之间的电连接。

机械特性—指明接口所用接线器的形状和尺寸、引线数目 和排列、固定和锁定装置等等。

电气特性—指明在接口电缆的各条线上出现的电压范围。

功能特性—指明某条线上出现的某一电平的电压表示何种 意义。

实现方式:由半导体厂家以及其他元器件生产厂家提供器件来实现。

以J1939/11为例,物理介质为特征阻抗120Ω的屏蔽双绞线,传输速率为250 kbit/s,差分电压方式传输信号,终端电阻为120Ω,最大传输线长度为40M,考虑到总线上的电气负担,同一网络内最多ECU数目为 30个。

354f984b948a4904ad8821c17a149acd.png

三、数据链路层

数据链路层:为物理连接之间提供可靠的数据传输。 包括发送CAN 数据帧所必需的同步、顺序控制、 容错控制和流控制。 实现方式:主要通过IC厂家提供的CAN控制器来实现。

3.1.协议数据单元(PDU)

协议数据单元由七部分组成,分别是优先级,保留位,数据 页,PDU 格式,PDU特定域(可作为目标地址、组扩展或 专用),源地址和数据域。PDU 被封装在一个或多个CAN 数据帧中,通过物理介质传送到其他网络设备。每个CAN 数据帧只能有一个PDU。

65cd15b0c42a4fe7a846c7b03db344de.png

优先级(P):这三位仅在总线传输中用来优化报文延迟,接受者对其忽略。报文优先级可从最高0(000)设置到最低 7(111)。所有控制报文的缺省优先级是3(011)。 其他所有报文、专用、请求和ACK 报文的缺省优先级是 6(110)。当定义新的参数组编号,或总线上通信量变化时,优先级可以升高或降低。当报文被添加到应用层,将给出一个推荐的优先级。OEM 可以对网络做相 应调整,优先级域应当是可重编程的。

保留位(R):扩展数据页位(EDP)

数据页位(DP):

扩展数据页位 (EDP)数据页位 (DP)功能描述
00SAE J1939 第0页PGN
01SAE J1939 第1页PGN
10SAE J1939 保留
11定义为ISO 15765-3的报文

PDU 格式(PF):8位。确定PDU 的格式,也是组成PGN的域之一。协议规定:PF<240为PDU1格式;PF=240‾255 为PDU2格式。

PDU 特定域(PS):8位。它的定义取决于PDU 格式,根据PDU 格式它可能是目标地址或者组扩展。 PDU1 格式下PS域是目标地址; PDU2 格式下PS域为组扩展(GE)值。

目标地址(DA):这个域定义了报文发送到的特定目标的地址。注意, 对于任何设备,如果其地址与接收到的报文的目标地址不同应忽略此报文。所有设备作为报文的响应者应对全局目标地址(255)作出监听和响应。

组扩展(GE):组扩展与PDU 格式域的低四位(注意:当PDU 格式域最高四位被置1,说明PS 域是组扩展)规定了每个数据页4096 个参数组。

PDU1格式下的PGNs:

b3a0907b73d049d08a98cbeef5cc22c2.png

PDU2格式下的PGNs:

8a6e6625d6e444e5a6d66a21df443a5c.png

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

PDU1格式主要分配给必须指明目标地址的PGNs,数量有限;PDU2格式下的PGNs不能用于必须指明目标地址的情况。大部分PGNs都定义在PDU2段。为了保证实时性,报文更新速率小于100ms时不允许多包发送。PDU1和PDU2格式下均支持单包报文和多包报文。无论是PDU1还是PDU2格式,其前半段PGNs标识的报文更新速率小于100ms,不允许多包发送;后前半段PGNs标识的报文更新速率大于100ms,允许多包发送。

3.2.报文类型

(1)命令报文 :命令类型的报文是指那些从某个源地址向特定目标地址或全局目标地址发送命令的参数组。目标地址接收到命令类型的报文后,应根据接收到的报文采取具体的动作。PDU1 格式(PS 为目标地址)和PDU2 格式(PS 为组扩展)都能用作命令。

(2)请求报文 :请求类型的报文提供了从全局范围或从特定目标地址请求信息的能力。 最典型的一个请求类型的报文是“请求PGN”报文。

“请求PGN”报文的定义:

7a11b746388a45689d8373e9fd76ab2a.png

对于特定目标地址的请求,目标地址必须做出响应。如果目标地址不支持请求的PGN,也必须发出一个NACK 的响应以表明它不支持该PGN。有些PGN 是多包的,因此一个单帧请求的响应可能有多个CAN数据帧。如果是全局请求, 当一个节点不支持某个PGN 时,不能发出NACK 响应。

(3)广播/响应报文 :此报文类型可能是某设备主动提供的报文广播,也可能是命令或请求的响应。 这是最常见的一类报文。总线上的数据交换大多采用这类报文。如一个ECU以一定的周期广播某个参数;或者一个ECU接受其它ECU的PGN请求而发送参数。

(4)确认报文 :确认报文有两种形式:第一种是CAN协议规定的,它由一个“帧内”确认ACK组成,用来确认一个消息已被至少一个节点接收到。 第二种形式的确认报文由应用层规定,是对于特定命令、请求的 “ACK”或“NACK”等的响应。 最典型的一个确认类型的报文是“Acknowledgment” 报文。

Acknowledgment报文的定义:

f00882bf24f24e85998b05d0e196b550.png

其控制字节定义为: 

肯定确认:控制字节 = 0 (ACK)

否定确认: 控制字节 = 1 (NACK)

拒绝访问: 控制字节 = 2

无法响应: 控制字节 =3

 3 至255 保留给CATARC 分配。

(5)组功能报文 :这种类型报文用于特殊功能组(如专用功能、网络 管理功能、多包传输功能等)。

3.3.多帧传输机制

采用多包报文,在连接管理报文的协调下进行多帧传输。 长度大于8字节的报文无法用单个CAN 数据帧来装载。因此,它们必须被拆分为若干个小的数据包, 然后使用单个的数据帧对其逐一传送。而接收方必须能够接收这些单个的数据帧,然后解析各个数据包并重组成原始的信息。 CAN 数据帧包含一个8字节的数据域。由于组成长信息的单个数据包必须能被识别出来以便正确重组,因此把数据域的首字节定义为数据包的序列编号。 每个数据包都会被分配到一个从1 到255 的序列编号。 由此可知,多帧传输最大的数据长度是(255 包×7字节/包=)1785 个字节。

序列编号是在数据拆装时分配给每个数据包,然后通过网络传送给接收方。接收方接收后,利用这些编号把数据包重组成原始信息。 序列编号从1 开始,依次分配给每个数据包,直到整个数据都被拆装和传送完毕。这些数据包从编号为1的数据包开始按编号的递增顺序发送。 第一个数据传送包包含序列编号1 和字符串的头7 个字节,其后的7 个字节跟随序列编号2 存放在另一个CAN 数 据帧中,再随后的7 个字节与编号3 一起,直到原始信息中所有的字节都被存放到CAN 数据帧中并被传送。

传送的每个数据包(除了传送队列中的最后一个数据包) 都装载着原始数据中的7 个字节。而最后一个数据包的数据 域的8 个字节包含:数据包的序列编号和参数组至少一个字节的数据,余下未使用的字节全部设置为“FF16” 。 多包广播报文的数据包发送间隔时间为50 到200 毫秒。 对于发送到某个指定目标地址的多包消息,发送者将保 持数据包(在CTS 允许多于一个数据包时)发送间隔的最长时间不多于200毫秒。响应者必须知道这些数据包都具有相同的标识符。 数据包被顺序接收。按照序列编号的顺序把多包消息的数据包重新组合成一多字节字符串。这个字符串被作为 长信息的应答传送给应用程序模块。

四、网络层

网络层描述:定义了网段之间的连接协议,当同时存在不同传输速度或使用不同传输介质的多个网段时,必须有至少一个网络互连电控单元提供从一个网段到另一个网段的报文传递功能。

网络层功能:报文转发、报文过滤、波特率转换、地址翻译、协议转换

五、应用层

应用层为应用过程访问OSI 环境提供了一种方法,包括支持应用的管理功能和通用的机制。它以PGN和SPN的方式具体规定了车辆使用的每个参数的数据长度,数据类型,分辨率和数据范围等。 应用层报文使用PGN作为一组参数的标号。一组参数称为“参数组”(PG),PGN是其唯一的标识号。参数组内有一 个或多个具体的参数,每个具体参数都有一个唯一的标号, 称为“怀疑参数编号”,即SPN。

  • 32
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值