前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAE J1939协议(一)

SAE J1939协议(一)

作者头像
全栈程序员站长
发布2022-08-27 13:31:31
1.1K0
发布2022-08-27 13:31:31
举报
文章被收录于专栏:全栈程序员必看

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

SAE J1939 是 基 于 CAN 总 线 的 协议,波特率可达250Kbps,是一种传输速率较高的C类通信网络协议。SAE J1939主要用于卡车、客车等的网络系统控制与通信。

SAE J1939分层结构模型:

SAE J1939协议(一)
SAE J1939协议(一)

SAE J1939标准的文档构成:

SAE J1939协议(一)
SAE J1939协议(一)

1SAE J1939物理层 SAE J1939的物理层描述了电气接口和物理介质,定义的内容包括: 1. 物理介质为屏蔽双绞线; 2. 传输速率为250Kbps3. 同一网络上最大子系统数为30个; 4. 最大传输线长度为40m5. 物理层还定义了数据的物理特性及总线的电气连接特性。

车辆网络实例

SAE J1939协议(一)
SAE J1939协议(一)

2SAE J1939数据链路层 SAE J1939CAN2.0B为基础,通过CAN总线进行数据通信。它的数据链路层定义了信息帧的数据结构、编码规则,包括通信优先权、传输方式、通信要求、总线仲裁、错误检测及处理,它负责将CAN扩展帧的29位标识符重新分组定义,使报文的标识符就能够描述报文的全部特征,包括目标地址、源地址等内容。

2.1 消息/帧格式(1)

消息格式需适应CAN网络的要求变化。需要指出的是,当CAN规范和SAE J1939有差异之处时,参照SAE J1939CAN文档规定,在消息路由选择中不使用节点地址。某些CAN网络中正确的应用并不一定适用于SAE J1939SAE J1939网络定义中规定,节点寻址是用来防止多节点使用同样的CAN网络标识符字段,许多SAEJ1939中的附加要求在CAN网络中并没有规定。

“CAN 2.0B”包括两种消息格式的规范,标准帧和扩展帧。 “CAN 2.0B”的兼容性意味着通过使用不同的帧格式位码,保证二者能同时在同一网络中使用。就此而言, SAE J1939也能够自适应这两种CAN数据帧格式。但是, SAE J1939只使用扩展帧格式全面定义了标准化的通信。所有标准帧格式消息都按照规则作为专用消息使用。因此, SAE J1939设备必须使用扩展帧格式。标准帧格式消息可以在网络中存在,但只能以规定的方式运行。

SAE J1939消息帧格式

SAE J1939协议(一)
SAE J1939协议(一)

SAE J1939CAN的仲裁场与控制场

SAE J1939协议(一)
SAE J1939协议(一)

参数群编号( PGN) 在CAN数据帧的数据场中需要指明参数群时所使用的编号, PGN是表示成24位。 PGN是一个24位的值,包括以下要素:保留位、数据页位、 PDU格式场( 8位)和群扩展场( 8位)。

标准帧格式的SAE J1939支持 SAE J1939网络中的控制器支持CAN标准帧( 11位标识符)消息格式。虽然与SAE J1939消息结构不兼容,但为了协调这两种格式的共存,在最低层次做了定义。此最低层次定义允许使用此格式的设备与其他设备不发生干扰。CAN标准帧格式消息是用来专用的。11位标识符中最高三位用作优先级位,最低八位定义PDU的源地址。

2.2 协议数据单元( PDU) 协议数据单元定义了一个框架,用来组织那些对于每个要发送的CAN数据帧都 具有重要意义的消息。 SAE J1939协议数据单元由七部分组成,分别是优先级,保留位,数据页,PDU格式,特殊PDU(可作为目标地址、组扩展或专用),源地址和数据场。 PDU将被分组封装在一个或多个CAN数据帧中,通过物理介质传送到其他网络设备。每个CAN数据帧只可能有一种PDU

协议数据单元( PDU

SAE J1939协议(一)
SAE J1939协议(一)

P是优先级, R是保留位, DP是数据页, PFPDU格式, PS是特定PDUSA是源地址

优先级(P) 这三位仅在总线传输中用来优化消息延迟,接收机必须对其做全局屏蔽(即忽略)。消息优先级可从最高00002)设置到最低71112)。所有控制消息的缺省优先级是31102)。其他所有信息、专用、请求和ACK消息的缺省优先级是61102)。 当定义新的参数群编号,或总线上通信量变化时,优先级可以升高或降低。当消息被添加到应用层,将给出一个推荐的优先级。虑及OEM应能对网络做相应调整,优先级场应当是可重编程的。

保留位(R) SAE保留此位以备今后开发使用。不能将此位与CAN保留位混淆。所有消息应在传输中将SAE保留位置0。今后新的定义可能扩展PDU格式场,定义新的PDU格式,扩展优先级段或增长地址空间。

数据页( DP) 数据页位选择参数群描述的辅助页。在分配页一的PGN之前,先分配完页零的可用PGN

PDU格式( PFPDU格式是一个确定PDU格式的8位构成的场,也是一个确定数据场对应参数 群编号的场。 两种专有参数群编号的定义已经建立起来,来确保PDU1PDU2两种格式的使用。专有信息的意义因制造商而异。例如,即使两个不同的发动机使用同一个源地址,制造商A的专用通信极可能与制造商B不同。

特定PDUPS) 特定PDU是一个8位场,它的定义取决于PDU格式,根据PDU格式它可能是目标地址或者群扩展。 若PDU格式( PF)段的值小于240,特定PDU段是目标地址。若PF段的值在240255之间,特定PDU包含群扩展( GE)值。

SAE J1939协议(一)
SAE J1939协议(一)

目标地址( DA) 这个场中定义了消息发送的特定目标地址。需要指出的是,任何其他设备应忽略此消息。全局目标地址( 255)要求所有设备作为消息响应者作出监听和响应。

群扩展( GE) 群扩展字段与PDU格式场的低四位(注意:当PDU格式场最高四位被置1,说明PS场是群扩展)规定了每个数据页4096个参数群。这4096个参数群仅在使用PDU2格式时才适用。 另外,对于仅使用PDU1格式,每个数据页中有240个参数群。综上,对于目前使用两种数据页来说有8672种参数群可以定义。

源地址( SA) 源地址场长8位。网络中一个特定源地址只能匹配一个设备。因此,源地址场确保CAN标识符符合CAN协议中的唯一性要求。地址管理、分配和处理过程在SAE J1939-81中定义。

数据场 当用不多于8字节的数据即表示一个给定参数群时,可使用CAN数据帧全部的8个字节。当一个特定参数群以长度从91785字节的数据来表示时,数据通信是通过多个CAN数据帧实现的。

2.3 协议数据单元( PDU)格式 两 种 PDU 格 式 定 义 为 : PDU1 格 式( PS为目标地址)和PDU2格式( PS为群扩展)。 PDU1格式允许CAN数据定向到特定目标地址(设备)。 PDU2格式只用于无特定目标地址(设备)的CAN数据帧的传输。使用两种不同PDU格式是为了在通信中提供更多参数群编号的组合。

PDU1PDU2

SAE J1939协议(一)
SAE J1939协议(一)

P是优先级, R是保留位, DP是数据页, PFPDU格式, PS是特定PDUSA是源地址

PDU1格式 此格式允许适用的参数群被发送到特定目的地或全局目的地。特定PDUPS)场包含目标地址( DA)。 PDU1格式消息能被请求,或以主动提供的方式发送。PDU1格式的消息由PDU格式( PF)段决定。当PDU格式场的值在0239之间时是PDU1格式。

SAE J1939协议(一)
SAE J1939协议(一)

PDU2格式 此格式只能用在作为全局消息的参数群通信中。 PDU2格式消息能被请求或以主动提供的形式发送。选择PDU2格式(同时分配PGN)可以避免PGN被定向到特定目的地。特定PDU包含了群扩展 ( GE)。PDU2格式的消息是指PDU格式( PF)值在240255之间的消息。

SAE J1939协议(一)
SAE J1939协议(一)

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

对于出现在CAN数据帧中数据场的多字节参数,它们要首先存放在最低字节。因此,如果要将一个2字节的参数存放在CAN数据帧中的字节7和字节8LSB要被放在指字节7MSB放在字节8

命令 此消息类型包括那些从某个源地址命令特定目的地或全局目的地的参数群,目的地接收到命令类型的消息后应该采取特定的动作。 PDU1格式( PS为目标地址)和PDU2格式( PS为群扩展)都能用作命令。命令类型的消息可能包括传动控制、地址请求、扭矩/速度控制等等。

请求 此消息类型规定了从全局范围或从特定目的地请求信息的功能。对于某目的地址的请求称为目的地指定请求。

SAE J1939协议(一)
SAE J1939协议(一)

广播/响应 此消息类型可能是某设备主动提供的消息广播,也可能是命令或请求的响应。

确认 只有两种可能的确认形式。第一种是CAN协议规定的,它由确认消息已被至少一个节点接收的帧内确认组成。另外,如果没有出现CAN出错帧,消息将被进一步确认,不出现出错帧意味着所有 其他的开启并连接在总线上的设备都正确地收到了此消息。 第二种形式的确认由应用层规定,是对于特定命令、请求的普通广播“ACK”“NACK”响应。

SAE J1939协议(一)
SAE J1939协议(一)
SAE J1939协议(一)
SAE J1939协议(一)

地址分配准则 在SAE J1939中,未被分配的地址数目是有限的,因此必须有效地分配新的地址。在整个系统中,可分配的地址数目最大不能超过256。 有些设备可能会使用已有用的动态地址分配方案。在这种情况下,动态地址可以由服务工具来设置,并且(或者)可以在网络上电时分配。特别需要预先考虑的是,当使用动态地址分配方案时,并非所有的网络设备都支持这种操作模式。

参数群设定准则 在SAE J1939中有三种主要的通讯方法,适当运用各种类型的通讯方法,可以使已有的参数群编号得到有效的使用。这三种通讯方法是: a. PDU1格式( PS=允许指定目的地通讯的目标地址) b. PDU2格式通讯( PS=群扩展) c. 使用两个预定义的专用参数群编号的专用通讯

在准备参数群的时候,应当依次考虑使用专用通讯方法和PDU2格式。如果是进行专用信息的通讯,则应当用专用通讯方法。 如果信息有广泛影响,而且不需要指定消息发送到某个特定节点,那么应该考虑采用PDU2格式的分配。 如果信息有广泛影响,但要求指定发送到众多设备中的某一个,那么需要用指定的目标地址和PDU1格式来对参数群进行分配。

数据场的定义 由于基于CAN的系统中,最短的消息也需要全部使用数据场(全部8个字节)。除非是在传送时间要求非常急迫的消息的情况,一般地,相关的参数都应该组合起来占用8个字节的数据场。依照这一原则,可以保存参数群编号以备以后分配使用。除非有特别需要,一般不允许定义未充分使用数据场长度的参数群。

高速数据更新 当遇到数据的更新速度很高,要求在很短的时间做出反应时,如果可能的话,允许使用基于硬件的消息过滤。

请求调度 如果正在准备请求发送的信息在请求之前已经被接收到了,那么这个请求调度应该被取消。换言之,如果在请求调度之前的“50毫秒信息已经被接收了,那么就不再发出请求。 被推荐用于广播的参数群不应该被提出请求。但在超过推荐使用的广播时间的特殊情况时,可以例外。

设备响应时间和默认超时 所有的设备在被要求作出响应时,必须要在0.20秒内做出响应。所有等待响应的设备必须在放弃或重试前,至少等待1.25秒。 这些时间确保了所有由于总线访问或消息传送经过桥接器的等待时间不会导致不必要的超时。需要时,可以为特定的应用使用不同的时间值。

3. SAE J1939 网络层 与其他上层协议不同, SAE J1939网络管理的主要任务就是节点的地址分配或确定,但它不 能实现其他上层网络协议中的节点监测功能。因此, SAE J1939网络必须通过应用程序来实现节 点监测。 节点地址是SAE J1939网络正常工作的前提条件,这和单纯的CAN网络不同。 SAE J1939网 络初始化期间,所有节点都要检查它们自己静态配置的节点地址,从而确定这个地址在网络中是 独一无二的,每个节点在获得响应的地址后才能进行正常通信。

典型卡车和客车应用的SAE J1939车辆网络

SAE J1939协议(一)
SAE J1939协议(一)

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档