缩写:
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报 文。...
缩写:
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
|
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 序列号 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
|