SAE J1939 – 简短介绍[通俗易懂]

SAE J1939 – 简短介绍[通俗易懂]SAEJ1939–简短介绍在商用车辆领域,标准化的,串行的协议用于单个电子控制单元(ECU)和传动系统组件之间的通讯已有一段时间。通过使用标准化的串行协议,可具有以下优势:组件制造商只需要采用一个协议;这主要是商用车辆才会涉及的问题,因为生产量低。商用车辆制造商可依靠不同供应商的组件。可确保组件之间的互操作性,来自不同制造商的组件不用调整就可一同工作。由国际汽车工程师协会…

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

SAE J1939 – 简短介绍

在商用车辆领域,标准化的,串行的协议用于单个电子控制单元(ECU)和传动系统组件之间的通讯已有一段时间。通过使用标准化的串行协议,可具有以下优势:

  • 组件制造商只需要采用一个协议;这主要是商用车辆才会涉及的问题,因为生产量低。
  • 商用车辆制造商可依靠不同供应商的组件。
  • 可确保组件之间的互操作性,来自不同制造商的组件不用调整就可一同工作。

 

由国际汽车工程师协会(SAE)定义的SAE J1939协议替代了SAE标准J1587/J1708,并且根据ISO 11898在CAN高速的物理层工作。

SAE J193使用于重型商用机械,既包括”路用”(卡车和拖车)也包括”非路用的”(建筑用车辆,吊车等等)。在农业和林业领域在ISO11784之后应用机械ISOBUS,在海运环境下,使用NMEA2000协议,而在军事领域适合使用MilCAN – 所有这些协议都基于J1939。

由于现有J1708/J1587协议对于CAN报文标识符从11向29位扩展的兼容性需求,就要求J1939在CAN模块的开发和相应协议的实施中支持此种报文格式。

通过J1939,可以传输测量数值和控制数据,也可配置组件。此外,还可以阅读或删除单个组件的诊断数据,并且可以进行单个控制的校正。

在J1939协议中,不仅仅规定了传输模式,报文结构及其分段,流量控制等等,而且还精确地定义了报文内容本身。 

 

 

ISO/OSI参考模型中的SAE J1939

根据OSI参考模型SAE J1939被划分成多个文件,文件编号指的是参考模型中的对应层级。第5层和6层在SAE J1939中不需要,这和任意现场总线类似,因此也没有详细说明。

 

J1939-Technology-ISO-OSI-Layers

图表:在ISO/OSI参考模型中的SAE J1939

 

 

物理层

 

SAE J1939协议基于CAN总线,并且将其作为物理层使用(控制器局域网,ISO 11998-1和ISO 11998-2)。有如下规格说明:

  • SAE J1939/11 定义了CAN高速总线连接,符合ISO/DIS 11898,带屏蔽双绞线和接地。数据传输速率是250 kbit/s,最大节点数量是30,最大线缆长度是40米。
  • SAE J1939/12描述的版本时具有四线制传输线和活跃的总线终端。这免除了屏蔽的需要,并且因此允许使用成本低的线缆。
  • 规格说明SAE J1939/14双倍加速了数据传输速率,从250 kbit/s到500 kbit/s。
  • SAE J1939/15允许使用非屏蔽双绞线,在此情况下允许每个网络不能超过10 ECU。 

 

数据链路层

 

SAE J1939/21描述了通过基于CAN的CAN 2.0B规范进行的数据通讯。特殊的是,这种“扩展的模式”用于通讯;”标准的模式”仅用于供应商特定的应用。
该规范因此决定了如何使用11位标识符,以排除各个供应商特定报文之间的标识符冲突。除了分配和使用29位标识符,该规范本质上描述了各种各样用于报文请求模式、应答传输、以及大规模数据块分段传输的网络服务。

 

网络层

 

SAE J1939/31本质上描述了用于两个网段之间报文传输的网桥的功能。由于网桥中现存的过滤功能,这主要用于减少单个网段的通讯量,例如在拖拉机与其拖车之间。

 

应用层

 

应用层相关的文档SAE J1939/71描述了实际数据(参数或具有数值范围的网络变量,分辨率,物理单元和传输类型)。每个报文都具有独特的编码(参数组号:PGN)。

 

网络管理

 

J1939网络管理分散化,也就是说,每个控制单元必须采用最小的功能。网络管理功能在文档SAE J1939/81中有描述。由于网络管理可视为能够达到硬件(第1层)的独立单元,它在图表的右侧作为独立的功能块。

 

 

设备名称,报文结构,地址声明(J1939/81)

 

设备地址

 

电子控制单元(ECU)的软件是控制器应用(CA)。一个ECU可能包含一个或多个CA。每个CA具有独一无二的地址和相关的设备名称。每个由CA发送的报文都包含此源地址。

 

J1939-Technology-device-address

在J1939的地址空间,具有256个可能的设备地址:

  • 0..127 – 用于CA首选的地址和定义功能 
  • 128..247 – 所有CA可用
  • 248..253 – 用于CA首选的地址和定义功能 
  • 254 – 空
  • 255 – 全球

 大多数CA如引擎,传输等,都有首选地址。 

 

设备名称

 

J1939定义了设备名称,每个代表了一个64位的(8字节)长标签并且用于识别设备及其功能。该设备名称被划分成不同的元素,这些元素有些是相互依赖的。独立的区域包括”行业组”和”制造商代码”。

 

J1939-Technology-device-name

图表:设备名称的结构

 

  • 通过行业组决定了网络所需的功能,因为J1939协议不仅仅用于传统的商用车辆,也用于农业工程,或者用于海事领域。
  • SAE中必须应用制造商代码,并且也由此分配。该制造商代码和额外的身份代码(例如序列号)让整个设备的名称在全球独一无二。
  • 如果多个CA具有相同的功能时就需要功能实例。

 

CAN标识符

 

J1939报文基于CAN 2.0B规范,并且使用特定的”扩展帧”。它们使用29位的标识符而不是通常的11位标识符。J1939-21使用这个29位标识符定义区域,如下所示。

J1939-Technology-Identifier

图表:结构参数组

 

  • 首三位(优先区:P)定义了网络上报文的优先级,并且确保具有更高重要性的报文比低优先级的报文先发送;P=0的报文具有最高优先级。
  • 使用扩展数据页位置(EDP)和数据页位(DP),对于J1939报文(参数组)可选择四个不同的”数据页”:

    EDP        DP            描述
    0              0              SAE J1939参数组
    0              1              NMEA2000定义的
    1              0              SAE J1939预留的
    1              1              ISO 15765-3定义的
     

  • PDU格式区(协议数据单元格式,PDU F)定义了报文是为网络上的特定设备所用,还是为整个网络所用。如果PDU F <240,就应该处理特定的设备,如果PDU F > = 240,报文就为所有设备所用。
  • PDU Specific(PDU S)区的定义基于PDU F区的值。

    a.) 如果报文为特定的设备所用(PDU F <239),PDU S就被翻译成该设备的地址;在这种情况下,PDU S区被叫做“目的地址区”(PDU 1)。

    b.) 如果报文位所有设备所用(PDU F> = 240),PDU S就被翻译成“组扩展区”。这种组扩展(PDU 2)用于提升可广播报文的数量。

  • 最后8位CAN标识符用于识别发送当前报文的设备的地址 = “源地址区”。

 

地址声明

在CA使用地址前,它必须在网络中对该地址进行声明;这个过程叫做”地址声明” (ACL)。 
在此,使用独一无二的设备名称来解决地址分配冲突:数值越小,优先级越高。在启动时,CA发送“地址声明PGN”(ACL, PGN 00EE00h)并且等待预定的时间以响应。如果在此期间没有其他CA声明相同的地址,CA就可以开始正常通讯。

J1939-Technology-Address-Claiming 

图表:地址声明过程

 

如果网络上的另一个CA已经使用了相同的地址,这就产生了地址冲突。设备名称中具有更高优先级的CA就获得该地址。这取决于CA接下来如何工作的”地址能力” :
如果CA具有”非自配置”的地址能力,就必须发送带有“源地址”0(254)”的“不能声明地址”PGN。否则,就需要从空闲地址池(128-247)中为自己挑选新地址。

 J1939-Technology-Address-Claiming-Conflict

图表:具有地址冲突的地址声明过程

 

J1939报文示例(参数组)

 

名称:引擎温度
– PG号:65262 (FEEE Hex)
– PDU格式:254 (FE Hex)
– PDU特有:238 (EE Hex)
– 默认优先级:6
– 传输速率:1 s
– 数据长度:8字节

数据描述
字节1:发动机冷却液温度
字节2:燃油温度
字节3,4:发动机机油温度
字节5,6:涡轮油温
字节7:发动机中间冷却器温度
字节8:未定义

 

 

分散传输大数据块

在SAE J1939报文中,具有多于8字节的数据通过“分散传输”得以传输。这就构成了订阅者导向的通讯(“点对点”)和总体通讯(“广播”)之间的区别。

 

点对点

 

在点对点通讯中,规定了目的地址(目的地址)。该数据分配给特定的订阅者,然后就可确认传输:

  • 点对点的通讯由接收器通过”清除发送”(CTS)报文的方式控制。
  • 传输器可能只能传输接收器CTS(0-255)定义的数据分段数量。
  • 接收器可以通过“约束”功能推迟信息流(具有0数据分段的CTS)
  • 如果发送器接收到了”报文中止” (EOM),那么传输就成功完成了。
  • 点对点报文
    – 发送请求(RTS)
    – 清除发送(CTS)
    – 连接中止(CA)
    – 报文中止应答(EOM)
    – 数据传输报文(DTM)

J1939-Technology-Peer-to-Peer

图表:点对点报文

 

广播

 

广播是没有确认的通讯(没有通讯量控制)。传输器/发送器不知道报文的接收对象是谁。将应用如下过程:

  • 传输的启动是由“广播通知报文”(BAM)来通知的。该报文包括字节数量,分段数量以及要传输的数据参数组数量。
  • 为了给所有的潜在接收者足够时间准备接收所通知的数据块,传输器可能只有在BAM报文之后50ms才开始传送第一个数据段。而且必须遵守单独的数据段之间具有50 ms的时间间隔。
  • 如果接收器接收报文有问题,就不允许其通过“连接中断”来中断传输,因为通常它不是唯一的接收者。
  • 广播报文
    – 广播通知报文(BAM)
    – 数据传输报文(DTM)

J1939-Technology-Broadcast

图表:广播报文

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133683.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • eclipse import导入报错_project2016安装出错

    eclipse import导入报错_project2016安装出错【转载请注明出处:http://blog.csdn.net/zjbpku/article/details/7370347】本文只介绍方法不解释原因:0,如果R.layout.main有误,将importandroid.R删除一,删除gen文件,会自动生成一个新的gen(Project下的BuildAutomatically要选上)二、右键点击有误文件,选择BuildP

  • 关于sstream的灵活使用

    关于sstream的灵活使用问题有10000个队伍参加。经过工作人员认真负责的统计,本来已经统计好了这一万个队伍的分数和排名,并按照排名从高到低依次进行了编号(从1到10000)但是由于一个非常偶然的因素,导致其中三个编号的数据丢失,而且剩余编号的顺序也全被打乱了。你需要编写一个程序,根据还保留的统计数据,来判断哪些编号的数据丢失了,并将这些编号按照从小到大的顺序重新拼接为一个新数字,然后计算这个新数字除以11的余数。如…

  • 请问:关于织梦dedecms点击导航上的父栏目进去默认显示第一个子栏目的列表的问题…

    请问:关于织梦dedecms点击导航上的父栏目进去默认显示第一个子栏目的列表的问题…

  • Android—Gradle教程(一)「建议收藏」

    Android—Gradle教程(一)「建议收藏」前言在前几篇中,讲解了Groovy的基础语法,学习新语法过程总是枯燥的,但为了更好的掌握Gradle,那就必须经过该过程。当然从这一篇将会从零基础开始,开展对Gradle的讲解。1.掌握Gradle基础1.1环境配置去官网下载gradle或者从本地用户文件夹下的.gradle/wrapper/dists找到本地缓存的gradle开发工具包(注意带bin文件夹的这个grade-x.x)系统属性配置:添加GRADLE_HOME:C:\Users\sheji.gradle\wrapper\

  • mysql语句截取字符串_sql截取字符串的函数

    mysql语句截取字符串_sql截取字符串的函数今天建视图时,用到了MySQL中的字符串截取,很是方便感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用。函数:1、从左开始截取字符串left(str,length)说明:left(被截取字段,截取长度)例:selectleft(content,200)asabstractfrommy_content_t2、从右开始截…

  • 基于51单片机八路抢答器课程设计(含proteus仿真图及代码)

    基于51单片机八路抢答器课程设计(含proteus仿真图及代码)一、设计要求:1、可满足8个选手的抢答2、具有主持者控制开关,用来控制系统清零和抢答开始3、抢答器具有数据锁存功能、显示功能和声音提示功能4、抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数5、码管上显示选手的编号,同时灯亮且伴随声音提示,还要禁止其后的抢答输入二、实验设计和分析1 总体设计方案方案一:采用数字电路控制。采用数字显示电路的好处就是设计简单。用以在P0口…

    2022年10月20日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号