SAE J1939是由汽车工程师协会(SAE J1939)定义的标准,专门用于提供微处理器系统之间的串行数据通信。虽然CAN存在并且被广泛用于小型车辆,但SAE J1939被设计为大型车辆复杂网络的专用通信和诊断协议。J1939通常应用于重型车辆,如卡车,拖拉机,拖车,农用车辆,船舶,援助和救援以及许多此类越野车辆。今天,它已被世界各地的柴油发动机制造商广泛认可。

SAE J1939是一种基于控制器局域网(CAN)的高层协议(HLP),这是一种专门的内部通信网络,可互连车辆内部的组件。正如CAN总线作为这种通信的硬件一样,J1939可以更好地理解为它所使用的语言。SAE J1939已成功取代了先前存在的SAE J1708和J1587标准。它已成为多个制造商之间的标准通信方法,不仅提供了设定的通信标准,此外还提供了:

• 指定如何处理多数据包信息

• 支持跨大型复杂网络的通信

• 指定如何将数据转换为人们可读的信息

• 定义了自己的诊断接口

标准CAN总线支持11位或29位报文ID,几乎每个波特率可高达1 Mbps。SAE J1939 仅限于 250kbps 或 最大500 kbps的 29 位报文ID,这是为了最大程度上保证J1939的可靠性。但它可以支持大于8个数据字节的报文。大多数J1939报文在CAN 上广播(BAM),但有些数据只能通过CAN总线请求(CM)才能获得(本文稍后会解释)。J1939 报文由 18 位参数组号 (PGN) 标识,而 J1939 信号称为可疑参数编号 (SPN)。通过 J1939 传输协议,最多支持 1785 字节的 PGN。

关于这个细节,下图应该可以清楚地描绘出 29位CAN标识符如何在 SAE J1939消息格式中的表达方式:

在这里:

•帧的开始(SOF):如 CAN 中所定义,标记帧的开始,并且始终为主一个显性0。

•远程请求位(RTR):在 SAE J1939 中始终设置一个显性的 0。

其他字段就如在CAN标准中定义那样。这里有趣的是,所有J1939数据包(请求包除外)都包含8个字节的数据和一个包含名为参数组号(PGN)的索引的标准头。其中包含一个名为参数组编号 (PGN) 的索引,嵌入在报文的 29 位标识符中。参数组编号 (PGN) 是指保留位、数据页、PDU 格式和 PDU 特定字段的值(组合成单个 18 位值)。

J1939结构中使用的29位标识符以下面给出的方式表示。在这里,PDU 代表协议数据单元,这是消息格式:

•优先级:在仲裁过程中控制消息的优先级。“0”具有最高优先级,通常赋予高速控制消息。例如,来自制动器的信息总是优先于来自车辆环境温度的信息。

•扩展数据页和数据页:PGN 中包含这些位,以便计为最高有效位。数据页位扩展了标识符可以表示的可能参数组的数量。数字范围排列在以下四页中:

扩展数据页面 数据页面 描述
0 0 SAE J1939 和 ISO 11783
0 1 SAE J1939 NMEA 2000*
1 0 SAE J1939-保留
1 1 ISO 11992 诊断
(无 J1939 布局)
(在 SAE J1939中仅使用了3个)

•PDU 格式:确定是使用目标地址传输消息还是始终以广播消息的形式传输消息。

•PDU 特定:PDU 特定字段根据 PDU 格式值而改变

▶PDU 格式介于 0 到 239 之间:

▷ 报文是可寻址的,并且 PDU 特定字段包含目标地址。它指定对等通信(CM)
▷ 如果将全局(255)用作目标地址,则该参数组将针对所有设备。在这里,PGN仅由PDU格式形成
▶ PDU 格式介于 240-255 之间:
▷ 只能是广播报文 (BAM)
▷ PDU 格式和 PDU 特定字段中的组扩展构成了所传输参数组的 PGN
▷ 这个组扩展扩展标识符可以表示可能的广播参数组的数量
•源地址:其中包含传输消息的设备的地址。地址是指定用于唯一访问网络上给定设备的特定标签。对于任何给定的网络,每个地址都必须是唯一的。总共有254个不同的地址可用。没有两个不同的设备(ECU)可以使用相同的地址。

SAE J1939 中的 PGN 和 SPN

参数组编号 (PGN)是 J1939 标准中的唯一帧标识符,用于引用将保留位、数据页、PDU格式和 PDU特定字段的值组合成单个 18 位值。参数组包含了每个报文的 8 字节 CAN 数据字段中的参数分配、重复率和优先级。

参数组编号 可分为两种类型:

  1. 全局参数组编号
    此类PGN识别广播(发送给所有人)的参数组。这里,PDU格式>=240,并且PDU特定字段是组扩展。
  2. 特定参数组编号
    这些用于对等发送(到特定设备)的参数组。如果PDU格式<=239,并且PDU特定字段设置为0,则无论两个 PGN 的类型如何, PDU 格式、PDU 特定字段、数据页和扩展数据页都用于识别相应的参数组。

可疑参数编号 (SPN) 是 SAE 分配给参数组中特定参数的编号。它们用作数据字节中CAN信号的标识符。SPN 也被定义为内部协议信息,用于诊断目的,以报告和识别 控制器应用程序 (CA) 的异常操作。

SPN 是一个 19 位数字,其范围从 0 到 524287。 从520192到524287的范围被保留给专有参数。除字母数字数据外,SPN 解释始终从 LSB 为 MSB(从右到左)。SPN 可能存在于多个 PGN 中。PGN对 SPN 进行分组,它 通过提供以下信息来详细描述参数:

• 数据长度(以字节为单位)

• 规模

• 数据类型

• 单位

• 分辨率

• 偏移

• 范围

• 参考标签(标识)

参数组(PG) 包含具有共同特征的 SPN,它们使用参数组编号(PGN) 在整个网络中传输。

SAE J1939 中的传输协议

如前所述,通过 J1939 传输协议支持高达 1785 字节的 PGN。但是,要发送 超过 8 字节的报文,需要在传输端将较大的报文分解为较小的数据包。每个数据包与 CAN报文一起发送(也称为多数据包传输),并在接收端重新组合。定义报文如何被分解、传输和重建的规则称为 SAE J1939 的传输协议。

SAE J1939 中定义了两种传输协议类型:

  1. 广播通告消息 (BAM):

• 一对多的沟通方式。

• 使用全局目标地址。

• 报文将传输到所有节点。在这里,发射器负责管理整个网络中的整个数据。

• 接收者用任何方式都不能干扰这种通信。即使没有收到任何数据包,接收方也无法示意它。

• 发送者全权负责保持两个数据包传输之间的特定时间间隔(范围从50-200ms)。因此导致整个网络的通信速度比较慢,但它也允许速度较慢的节点跟上通信的步伐。

  1. 连接模式 (CM):

• 点对点的连接。

• 涉及特定设备,其中传输端发送带有指示发送请求(RTS)的控制字节的CM报文,包括字节数,数据包数以及数据被传送的PGN。

• 接收者使用 CM 报文进行响应,该报文在控制字节中包含了“清除发送” (CTS),包括接收方接下来预期的数据包数和要开始的数据包数。

• 在这里,接收方负责控制数据流和各个数据包的流动。但是发射器和接收器都可以在任何时间点终止通信。

• 传输不受时间限制, 每个节点都以其最大速度运行。因此,此模式更快。

SAE J1939 中的诊断故障代码

在J1939标准中,存在特殊的诊断故障代码。ECU中的每个故障都记录为诊断故障代码。它们识别并记录任何SPN 行为异常的任何错误属性,并使用故障指示器来缩小特定错误背后的原因。

SPN: - 指定有故障的 SPN (0-524,287)

FMI:- 故障模式指示器指定错误的类型/性质 (0-31)

OC :- 发生率计数器,指定给定故障的发生次数 (0-127)

CM: - 通过定义 DTC(0-1)中的字节来排列来指定转换方法

例如:

J1939 数字附件:

在这篇文章中读到这里,“CAN DBC”可能听起来很熟悉。与 CAN 一样,J1939也可能有自己的数据库文件,这是有道理的。但 SAE 不维护或定义 J1939 的任何 DBC。相反,SAE 维护和销售名为 J1939 数字附件的 excel 文件,以传达为 J1939 创建 DBC 文件所需的所有技术信息。在J1939DA 的帮助下,人们可以根据制造商的产品需要的信息类型创建他们的 DBC 文件。

此外,还有来自不同制造商的许多应用程序都可以读取 DBC 文件,例如“Influx DiaLog”。来自Influx的RebelReXgen 系列 CANbus 数据记录仪支持J1939数据的记录。ReXgen 可以根据J1939过滤器(SA,DA,PGN)记录数据,并且可以根据DM1计数器设置触发。

Rebel 系列总线记录仪


ReXgen系列总线记录仪

了解J1939协议和J1939数据记录仪(车辆工程机械中的黑匣子)相关推荐

  1. FTP协议和Samba服务在linux中的应用

    FTP协议和Samba服务在linux中的应用 FTP服务 实验环境 匿名账户 本地账户 虚拟账户 Samba服务 Samba 服务基础 主配置文件smb.conf FTP服务 ftp的作用:用于文件 ...

  2. FTP协议和Samba服务在linux中的应用__GongWei1997

    FTP协议和Samba服务在linux中的应用 FTP服务 实验环境 匿名账户 本地账户 虚拟账户 Samba服务 Samba 服务基础 主配置文件smb.conf FTP服务 ftp的作用:用于文件 ...

  3. 计算机网络 -广域网WAN (PPP协议和HDLC协议)

    文章目录 广域网WAN PPP协议 PPP协议需要实现的三个功能 PPP协议帧格式 HDLC协议 PPP协议 and HDLC协议 广域网WAN 广域网覆盖层次:物理层,链路层,网络层 局域网覆盖层次 ...

  4. ISO和SAE标准组织制定的OBD协议,ISO协议和SAE协议对应关系

    ISO和SAE标准组织制定的OBD协议,ISO协议和SAE协议对应关系如下: SAE文件          ISO文件                         描述 无             ...

  5. osi七层协议和tcp/ip四层协议

    (大部分内容为转载) OSI(Open System Interconnection)是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范,共包含七层协议.OSI七层协议是由ISO (I ...

  6. Bytom BIP-32协议和BIP-44协议解读

    我们知道HD(分层确定性)钱包,基于 BIP-32:多币种和多帐户钱包,基于 BIP-44:最近比原社区的钱包开发者对比原的BIP-32和BIP-44协议有疑问,所以我今天就专门整理了一下该协议的内容 ...

  7. 3.7 PPP协议和HDLC协议

    3.7 PPP协议和HDLC协议

  8. 如何用过滤器过滤HTTP协议和非HTTP协议编码

    2019独角兽企业重金招聘Python工程师标准>>> 在编写web时,最苦恼的事情就是乱码了. 一直没怎么考虑过JSP第一句话中 <%@ page language=&quo ...

  9. HTTP协议和web工作原理

    HTTP协议和web工作原理 http://blog.csdn.net/kjfcpua/archive/2009/12/04/4932597.aspx 本章学完之后能干什么? 要把 知识点学好,那就需 ...

  10. RabbitMQ MQTT协议和AMQP协议

    RabbitMQ MQTT协议和AMQP协议 1        序言... 1 1.1     RabbitMq结构... 1 1.2     RabbitMq消息接收... 4 1.3     Ex ...

最新文章

  1. Sublime Text2.0.2注册码
  2. 【数据结构】顺序循环队列及其实现(C语言)
  3. Sql Server 日志清理 (数据库压缩方法)
  4. 小师妹学JavaIO之:用Selector来发好人卡
  5. 20145308刘昊阳 《Java程序设计》实验五报告
  6. layerconfirm 自动关闭问题 没有阻塞问题_微信新版本自动更新?赶紧关闭这个功能...
  7. DM工作笔记-查看会话(session)信息与关闭会话
  8. python qt gui快速编程 pdf_翻译:《用python和Qt进行GUI编程》——介绍
  9. python 中的 __name__
  10. sql查询初学者指南_适用于初学者SQL Server查询优化技巧与实际示例
  11. java多线程 线程安全_Java中的线程安全
  12. 如何在苹果Mac中使用聚焦搜索 NTFS 格式磁盘?
  13. matconvnet 尝试将 SCRIPT vl_imreadjpeg 作为函数执行:
  14. 使用ArcPy将nc格式数据转换为tif格式数据
  15. Gradle 学习 ----Gradle 入门
  16. 教你使用powerDesigner反向生成oracle数据库模型
  17. python制作辅助和易语言的区别_为什么多数外挂都用易语言?
  18. ubuntu多显卡风扇转速控制
  19. 第一章:深度学习引言
  20. 数学建模笔记(1)——评价类问题

热门文章

  1. 知网论文复制格式问题-文本修改器
  2. 解决vagrant up出现:An error occurred while downloading the remote file. The errormessage
  3. python RTL自动生成_用Python自动生成快闪文字视频
  4. MSI Afterburner 官网链接指南
  5. Altium Designer使用-----快速覆铜脚本的使用
  6. 微信小程序转盘实现(真心话大冒险)
  7. spss分析方法-判别分析
  8. 试试这个AI实验:把2D图像转换成3D
  9. vSphere Client 连接ESXi 或者是vCenter 时虚拟机提示VMRC异常的解决办法
  10. 短视频解析,去水印原理整理汇总