星期三, 26 05月 2021 06:44

SAE J1939 学习整理

介绍数据链路层和应用层

缩写:

PGN:参数组(群)编号           

PDU:协议数据单元

SPN:可疑参数编号

SOF:帧起始位

SRR:代用远程请求

RTR:远程传输请求

IDE:标识符扩展为

DLC:数据长度码 

J1939-21 数据链路层:

数据链路层:为物理链接之间提供一种可靠的数据传输(发送CAN数据帧必需的同步、出错控制、顺序控制和流控制)。 

有几个概念先介绍下:

帧 (Frame):组成一个完整信息的一系列有序的数据位;

其中CAN帧以帧起始(SOF)开始,以帧结束(EOF)结尾;

标准帧:定义为11位标识符

扩展帧:定义为29位标识符

报文(Message):一个或多个具有相同参数组编号(PGN)的CAN数据帧;(一个或多个

CAN数据帧具有相 同PGN号,就是报文)

包(Packet):一个单一的CAN数据帧就是1个包;(一个报文包含参数组的长度小于等

于8字节,也称为包)

多包报文:当具有相同参数组编号(PGN)的所有数据需要使用多个CAN数据帧来传输时使

用的一种J1939报 文。(每个CAN数据帧拥有相同的标识符,但每个包中数据不同) 

协议数据单元(PDU):

格式如下图:

 

优先级

扩展数据页(保留)

数据页位

PDU格式

PDU特定域

源地址

数据域

P

R

DP

PF

PS

SA

DATA

3

1

1

8

8

8

8Byte

                 

其中,

优先级(P):3位用来表示优先级范围,所有控制 消息的缺省值是3(0112),其他所有信息、专用、请求和ACK的缺省优先级是6(1102

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

数据扩展页(EDP)和数据页(DP)关系:

扩展数据页位

(EDP)

数据页位

(DP)

功能描述

0

0

SAE J1939 第0页PGN

0

1

SAE J1939 第1页PGN

1

0

SAE J1939 保留

1

1

定义位ISO 15765-3报文

 

 

PDU格式(PF)和PDU特定域(PS)的关系:

PDU格式(PF)

PDU格式

PDU特定域(PS)

PF<240

PDU1格式

PS是目标地址(DA)

PF = 240-255

PDU2格式

PS是组扩展(GE)值

 

PDU1和PDU2时的参数组编号(PGN)数目为:

EDP 

DP

PF

PS 

PDU1时参数组编号

0

0或者1

0-239

目标地址

 2X240(PF的值)=480

 

EDP 

DP

PF 

PS 

PDU2时参数组编号

0或者1 

 

240-255共16个数

组扩展值0-255

(共256个数)

2X16X256=8192

 

其中PGN计算公式为:

    PGN = DP<<|PF<<8|PS;

例:数据页位:0,PDU格式:235,特定PDU段:目标地址(对于TP.CM_BAM数据传送使用全局地址(DA=255))(对于RTS/CTS数据传送不允许用全局地址) 

        则PGN = 235*256+0 = 60160(0xEB0016)

                           11101011<<8|0

 

多包发送:

BAM:广播通知/公告消息

DT:数据传送消息

多包数据发送拆装与重组:大于8字节消息发送,必须拆分,

拆分原则:数据域的首字节定义为数据包序列编号:1-255;

           最大拆分数据长度是255包*7字节/包 = 1785个字节

其中,RTS(发送者),请求发送

     CTS(响应者),准备发送

广播数据传送次序如下图:

missed

上图中广播公告消息格式为(TP.CM_BAM):全局目标地址   

字节:

1

控制字节=32,广播公告消息(BAM)

 字节:

2,3

整个消息大小,字节数目

 字节:

4

全部数据包的数目

 字节:

5

保留给SAE设定使用,该字节应设为FF16

 字节:

6-8

所装载数据的参数群编号

而数据传送消息格式(TP.DT):

   Byte:               序列号 1-255(1Byte)

          2-8        分组数据(7 Bytes)

                      注意多包参数组的最后一个包可能需要不到8个字节数据,多余的字节填充0xff16   

 

故障诊断

故障诊断代码DTC构成:

   a、可以参数编号(SPN)

   b、故障模式标志(FMI)

   c、发生次数(OC)

   d、可以参数标号的转换方式(CM)

其中,DM1:当前故障码(正在发送的所有故障)

   DM2:历史故障码 

DTC由四个字节构成 

DTC

字节3

SPN低8位

(第8位为最高有效位)

字节4

SPN第2字节

(第8位为最高有效位)

字节5

SPN高3位(第8位为最高有效位)

FMI低5位(第5位为最高有效位)

字节6

SPN

FMI

CM

OC

8bit

3bit

5bit

1bit

7bit

查看 7569 最后修改日期 星期三, 26 05月 2021 06:59
本栏更多文章: « 解析CAN的J1939协议PDU报文