星期三, 26 05月 2021 05:35

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

CAN2.0B协议数据定义与SAE J 1939协议消息中R,DF,PF,PS,SA,PGN,SPN的对应的关系.
CAN2.0是一种总线规范,是数据链路层的技术。J1939是SAE(美国汽车协会)定义的基于CAN总线的规范,目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。

J1939应用层协议详细描述了用于J1939网络的每个参数,包括其数据长度、数据类型、分辨率、范围及参考标签,并为每个参数分配了一个编号(SPN)。由于J1939协议是以协议数据单元(PDU)的形式进行传输,而一个PDU包含8个字节数据,因此,需要对这些参数进行组合。在J1939应用层协议中还详细定义了参数组,包括每组参数的更新率、有效数据长度、数据页、PDU格式、PDU细节、默认优先权及参数组的内容,并为每个参数组分配一个参数组编号(PGN)。

       PGN(parameter group number)是一个24位的值,包括保留位(R)、数据页位(DP)、PF(PDU格式场)和PS(群扩展场)等要素。

       SPN(SPN:Suspect Parameter Number)是PG(参数组)下面的具体参数的一个编号,而PGN是参数组编号,可以理解为一个PGN包含了按一定方法分类的一组参数,而每个具体参数又有它自己的编号(就是SPN)。
      SAE J1939的应用层以PGN和SPN的方式具体规定了车辆使用的每个参数的数据长度,数据类型,分辨率和数据范围等。

1、J1939和CAN2.0的关系

J1939是在CAN2.0B的基础上,对仲裁场部分的29位ID的重新解释;其它部分完全一样。
29位ID分为:3位的优先级、8位的PF(帧格式)、8位的PS(帧扩展)、8位的SA(源地址)、1位的DP(Data Page数据页)、1位的保留位。
其中1位的DP、8位的PF、8位的PS组成了PGN;
PGN是Parameter Group Number;是参数组列表。
在J1939中,将消息分为了PDU1和PDU2两种格式。
PDU1格式的消息发送给特定地址的ECU,地址用8位的PS记录;PDU2格式的消息则发送给所有的ECU,8位的PS用于扩展。
当PF的值在0-239时,表示该消息为PDU1格式,PS为DA(目地地址)。
当PF的值在240-255时,表示该消息为PDU2格式,PS为扩展地址。

2、J1939的物理特性:

总线最大长度为40M;最大支持30个节点;节点最大长度为1M;传输速率最大为250Kbps;3根线(CAN_H、CAN_L、GND)
J1939的分层:
J1939/11:物理层:物理介质、总线设计、长度、节点;
J1939/21:数据层:PGN信息、帧格式;
J1939/31:网络层;
J1939/71/73:应用层;信息分享、控制、广播、故障诊断;

3、PGN

PGN是Parameter Group Number的简称。J1939中最大支持(240+16×256)×2个PGN。
当消息为PDU1格式时,PGN=DP×256×256+PF;
当消息为PDU2格式时,PGN=DP×256×256+PF*256+PS;
在J1939中,消息的传递以参数组的形式,每个参数组中有若干参数,每个参数是一个SPN;

4、SPN

SPN:Suspent Parameter Number:特定的参数编号;例如:SPN 190表示发动机转速。

5、CAN2.0与J1939的关系、J1939与特定的厂商协议的关系

CAN2.0是一种总线规范,是数据链路层的技术。J1939是SAE(美国汽车协会)定义的基于CAN总线的规范,目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。J1939定义了 一系列的PGN和SPN,这些PGN包含了发动机、变速器、车轴等汽车上各部件的信息;对参数的表示方法(状态和值)又定义了SLOT(Scaling比例、Limit界限、Offset偏移、Transfer传送)。ECU厂商都应该遵循这个规范。ECU模块的功能不同,厂商不同,在J1939的基础上,又表现出其多样性:支持或者不支持某些PGN、SPN和SLOT;新增了某些J1939未定义的PGN和SPN。

6、PDU消息包在CAN2.0上的拆包和重组

CAN2.0的数据场最多支持8字节的数据,如果PDU的数据小于等于8字节,1个PDU用1个CAN2.0帧传输即可;如果PDU的数据大于8字节,就需要在发送时进行拆包,在接收时进行重组。接收端如何识别是否需要重组以及怎么重组呢?J1939的做法是在拆包的情况下,将8字节的数据区的第一个字节用于表示拆包后的序号(1-255);因此,最长的PDU为255×7字节。

7、PDU的内容解析

PDU:Protocol Data Unit:协议数据单元。
在数据链路层CAN之上的就是PDU,包含了CAN2.0中仲裁场、控制场和数据场部分的内容。对J1939协议的解析其实就是对PDU的协议解析,先对接收到的包进行重组,构建一个完整的PDU包;再从PDU中数据包中提取出PGN和SPN对应的值。

      下表展示了CAN2.0B协议数据定义与SAE J 1939协议消息中R,DF,PF,PS,SA,PGN,SPN的对应的关系


定义: P 是优先级, R 是保留位, DP 是数据页, PF 是PDU 格式, PS 是特定PDU, SA 是源地址

示例:
ID:18DB33F1
 110   0   0   11011011  00110011  11110001  (//18 = 00011000,前面补3个000)
 P3~1  R1  DP    PF8~1    PS8~1     SA8~1
PGN = R1 | DP | PF | PS = 56115  (//if PF<=240,PS = 0)

P Priority
R Reserved
PS PDU Specific
SA Source Address
PF PDU Format
DLC Data Length Code 

DTC (4字节)有四个部分组成:

1、可疑参数码:SPN19位;

2、失效模式标识符:FMI   5位;

3、故障发生次数: OC 7位;

4、SPN转换方式: CM 1位;

 

CAN扩展数据帧:

j1939 can extended 0
PDU = ID+数据场;

PGN:

j1939 can extended 01

 

例子2:

;----------------------------------------------------------------------  (特定目标地址通讯)
                                 PDU1

      P    R     DP      PF       PS(DA)          SA      Data Field
      3    1     1       8         8              8       0-64

;----------------------------------------------------------------------  (广播)
                                 PDU2
      P    R     DP      PF       PS(GE)          SA      Data Field
      3    1     1       8        8               8       0-64

;---------------------------------------------------------------------
18FEDF00

110| 0 0 | 11111110 11011111 | 00000000
优 |     |                   |
先 |     |        PGN        |  源地址
级 |     |                   |

优先级:110 or 6
参数组:FEDF or 65247DEC
源地址:00H

j1939 can extended 2
j1939 can extended 3

查看 9979 最后修改日期 星期三, 26 05月 2021 07:03