[资料] J1939协议应用设计编程说明
391 查看
2 回复
 楼主 | 发布于 2018-03-25 | 只看楼主
分享到:

J1939协议应用设计编程说明

一、J1939协议简介

J1939协议是目前在大型汽车中应用最广泛的应用层协议,可达到250Kbit/s的通讯速率。J1939协议由美国SAE( Society of Automotive Engineer)组织维护和推广。

J1939协议具有如下特点:

1)以CAN2.0B协议为基础,物理层标准与ISO11898规范兼容并采用符合该规范的CAN控制器及收发器。通讯速率最高可达到250Kbit/s

2)采用PDU( Protocol Data Unit协议数据单元)传送信息,每个PDU相当于CAN协议中的一帧。由于每个CAN帧最多可传输8个字节数据,因此PDU的传输具有很高的实时性。

3)利用CAN2.0B扩展帧格式的29位标志符定义每一个PDU的含义及该PDU的优先级。

4J1939协议主要作为汽车中应用的通讯协议,对汽车中应用到的各类参数都进行了规定。参数的规定符合ISO11992标准。

 

J1939协议通讯报文内容解析

J1939协议实质是将CAN扩展帧格式中未明确定义的11ID18位扩展ID进行了明确定义,紧随ID的是8个字节的数据。

 

为了实现J1939协议报文的正确接收,必须首先明确其仲裁场(如上所示)是如何确定的。下面将逐一介绍:

优先级:29位标志符的前3位用于在仲裁过程中决定报文的优先级P。值000是最高的优先级。高的优先级用于高速要求的报文。低的优先级用于时间要求不紧迫的数据。

标志符位(R)保留位。在传输报文时此位置为0。此位留作将来SAF委员会定义其它目的使用。

数据页( DP)位:DP位用于选择两页参数组中的其中一页。0页包含现在被定义的所有报文。1页预备将来额外的扩展能力。在0页用完后才被分配。

PDU格式(PF)PDU代表协议数据单元。PF场识别能被传送的两个PDU格式。

SRRIDE位:CAN 2. 0B己被详细定义。它们被置为隐性位。这使扩展帧的优先级低于标准格式数据帧的优先级。

PDU专用(PS)它们由PF的值决定。如果PF的值在0239之间( PDU 1)PS场包含一个目的地址;如果PF的值在240255之间(PDU 2)PS场包含一个对PF的组扩展。组扩展提供更大的一组值以标识网络中能被广播的所有ECU的报文。在J1939标准下,要被广播的大多数报文用PDU 2格式。用PDU 2格式在网络中传输的数据不能被直接到达一个明确目的地。当报文必须要直接传送到一个专用ECU,必须在PDU1格式数的范围分配一个PGN(参数组数),以至少在报文标志符内能包括一个专用的目的地址。

源地址(SA)标志符的最后8位包含ECU传送报文的地址。对于一个给定的网络,每一个地址必须是唯一的,两个不同的ECU不能同时用同一个地址。

 

29ID生成说明

基于以上分析,只要将相关参数填入如下的表中,即可得到相应的29ID。此类参数可以从SAE J1939-71文档中得到,该文档介绍了J1939应用层上,路面车辆的推荐操作规程。

 

下面以获取发动机为例说明。从SAE J1939-71Jun 2006496页中,可以得到发动机转速的相关J1939协议参数,如下所示:

优先级(P):3

数据页面(DP):0

PDU格式(PF)240

PDU专用(PS)4

另外,以康明斯发动机为例,发动机源地址(SA)被定义为0值。

因此,可以得到PGN61444的扩展ID信息为:

 

所以,其ID0C F0 04 00。识别出该ID的报文后,可以在随后跟随的8个字节的数据域中的第45字节,得到发动机转速值。

(0 ) (0 )
回复 举报

回复于 2018-03-26 沙发

感谢分享;
(0 )
评论 (0) 举报

回复于 2018-03-26 2#

多谢分享!!
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部