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

SAE J1939分层结构模型:

SAE J1939标准的文档构成:

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

车辆网络实例

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 J1939CAN的仲裁场与控制场

参数群编号( 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

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

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

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

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

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

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

目标地址( 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

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

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

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

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

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

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

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

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

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

地址分配准则
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协议(一)相关推荐

  1. AUTOSAR协议解析篇(一)-J1939协议解析

    SAE J1939协议是基于CAN2.0B协议之上的应用层协议,但是SAE J1939协议并不仅仅是个应用层协议,她对物理层,数据链路层,网络层,应用层,故障诊断, 网络层管理层等都做了详细的规定,只 ...

  2. 788_AUTOSAR_RS_SystemTemplate3_通信2_时序以及SAE J1939等

    全部学习汇总: GitHub - GreyZhang/hack_autosar: learning autosar documents, aha, very hard! 继续学习AUTOSAR的文档, ...

  3. CAN2.0和J1939协议的关系

    转发自http://www.cankau.cn/support/help/can-vs-j1939.html 很长时间没搞明白j1939与CAN2.0的关系,这篇文章让我明白了. CAN2.0是一种总 ...

  4. J1939协议与CAN2.0对应关系图表

    SAE J1939 消息帧格式定义与CAN 2.0B帧格式对应关系 J1939应用层协议详细描述了用于J1939网络的每个参数,包括其数据长度.数据类型.分辨率.范围及参考标签,并为每个参数分配了一个 ...

  5. J1939协议中CAN ID 与PGN互换--遇到了广播报文

    Ref:J1939 Explained - A Simple Intro (2021)– CSS Electronics Ref:CAN 帧ID 与J1939 PGN 转换例子_horse_2007s ...

  6. SAE J1708协议

    SAE J1708协议 1.协议简介 1708是SAE(Society of Automotive Engineers:美国机动车工程师学会)专门针对重型车辆(卡车和客车)起草文件中J标准规范之一,该 ...

  7. SAE J1587协议简介

    原文地址::http://blog.csdn.net/bbs598598/article/details/52022741 SAE J1587简介 背景 这个协议是由卡车和客车电气和电子委员会的一个分 ...

  8. SAE J1708协议详解

    1,协议简介 1708是SAE(Society of Automotive Engineers:美国机动车工程师学会)专门针对重型车辆(卡车和客车)起草文件中J标准规范之一,该协议旨在推广微控制器模块 ...

  9. SAE J2534协议 车辆诊断编程接口

    J2534是对上承接应用软件,对下承接上位机的编程接口.按理来说,如果单纯开发自己的诊断软件和诊断设备(VCI),其实并不用到J2534也是可以实现功能的,但是副作用就是耦合度高,以后诊断软件 想和其 ...

  10. 详解CAN的高层协议(三)

    CAN做为应用比较广泛的通信总线,受到了越来越多的客户喜欢和青睐,广泛应用于工业和汽车,常见的高层协议有CANopen,J1939,DeviceNet等,在公众号曾经分享过超过15篇有关CAN的高层协 ...

最新文章

  1. Redis 笔记(11)— 文本协议 RESP(单行、多行字符串、整数、错误、数组、空值、空串格式、telnet 登录 redis)
  2. 触发transition的几种方式--转
  3. Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型
  4. 最短编辑距离 python_最短编辑距离算法实现
  5. Linux下第一个java程序没有成功
  6. 【PHPStorm使用手册】如何设置字体大小?
  7. 【转:理论知识】SAP在建工程转固定资产
  8. linux mkfs 源码,mkfs工具怎么移植到嵌入式平台下面
  9. 阿里公共DNS正式发布:223.5.5.5 223.6.6.6
  10. QC使用流程(1)之安装篇
  11. MySQL 之 索引
  12. css标签resolution,html/css to fit all screen resolution
  13. LeetCode 384. 打乱数组(rand)
  14. Collaborative topic modeling(推荐)算法实现中的大数组问题
  15. java 常量池溢出_Java方法区和运行时常量池溢出问题分析(转)
  16. JavaScript中的字面量
  17. C# Access 读写数据库
  18. 服装企业为什么要用湖州管家婆ERP管理软件?
  19. Python模拟QQ群发邮件
  20. Docker基础之containerd的shim

热门文章

  1. 使用PMBus总线监控电源管理芯片UCD90120
  2. IAR8.3安装步骤
  3. 这款开源的中文字体,太惊艳了!
  4. MAC地址生成器(可带跳数)
  5. erp服务器慢_ERP系统服务器维护经验谈
  6. 视频教程-程序员面试宝典——助你拿到好offer-招聘/面试
  7. shell编程复习 第二次
  8. carrot2中lingo实现总结(一)
  9. “飞客”蠕虫 执子之手 与子携老
  10. oracle物理结构视频教学,教你轻松掌握Oracle数据库中的物理结构