J1939协议简介
缩写
ACK Acknowledgment:应答
BAM Broadcast Announce Message:广播通知消息
CAN ontroller Area Network:控制器局域网
CRC Cyclic Redundancy Check:循环冗余校验
CTS Clear-To-Send:清除发送
DA Destination Address:目标地址
DLC Data Length Code:数据长度代码
DP Data Page:数据页
EOF End of Frame:框架结束或帧结束
ID Identifier:标志符
IDE Identifier Extension Bit:标志符扩展位
LLC Logical Link Control:逻辑连接控制
LSB Least Significant Byte or Least Significant Bit:最小有意义位或字节
MAC Medium Access Control:媒体通道控制
MF Manufacturer:制造商
MSB Most Significant Byte or Most Significant Bit:最大有意义位或字节
NA not Allowed:不应答
NACK Negative-Acknowledgment:错误应答
P Priority:优先级
PDU Protocol Data Unit:协议数据单元
PF PDU Format:协议数据单元格式
PGN Parameter Group Number:参数组代码
PS PDU Specific:协议数据单元细节
GE Group Extension:组扩展
DA Destination Address:目标单元地址
R Reserved:保留
RTR Remote Transmission Request:远程传输请求
RTS Request-To-Send:发送请求
SA Source Address:原地址
SOF Start of Frame:帧开始
SRR Substitute Remote Request:替代远程请求
TP Transport Protocol:传送协议
Th Hold Time:保持时间
Tr Response Time:响应时间
un Undefined:没有定义
CAN2.0B包含两种格式的说明:标准格式和扩展格式。SAE J1939必须使用扩展格式。在CAN网络上也可以有标准格式
图1:标准格式
图2:扩展格式
SAE J1939信息框架格式――CAN扩展格式信息,如图2所示,包含了一个协议数据单元(PDU)。PDU包含7个预先定义的部分:优先级、保留位、数据页、PDU格式、PDU细节、原地址和数据部分。
表1:
29位标志符
CAN |
29位标志符
J1939
|
位的位置
|
11位标志符
CAN
|
11位标志符
J1939(1)
|
SOF
|
SOF(2)
|
1
|
SOF
|
SOF(2)
|
ID28
|
P3
|
2
|
ID11
|
P3
|
DI27
|
P2
|
3
|
ID10
|
P2
|
ID26
|
P1
|
4
|
ID9
|
P1
|
ID25
|
R1
|
5
|
ID8
|
SA8
|
ID24
|
DP
|
6
|
ID7
|
SA7
|
ID23
|
PF8
|
7
|
ID6
|
SA6
|
ID22
|
PF7
|
8
|
ID5
|
SA5
|
ID21
|
PF6
|
9
|
ID4
|
SA4
|
ID20
|
PF5
|
10
|
ID3
|
SA3
|
ID19
|
PF4
|
11
|
ID2
|
SA2
|
ID18
|
PF3
|
12
|
ID1
|
SA1
|
SRR(r)
|
SRR(r) (2)
|
13
|
RTR(x)
|
RTR(2)(d)
|
IDE(r)
|
IDE(r) (2)
|
14
|
IDE(d)
|
IDE(2)
|
ID17
|
PF2
|
15
|
r 0
|
r 0(2)
|
ID16
|
PF1
|
16
|
DLC4
|
DLC4
|
ID15
|
PS8
|
17
|
DLC3
|
DLC3
|
ID14
|
PS7
|
18
|
DLC2
|
DLC2
|
ID13
|
PS6
|
19
|
DLC1
|
DLC1
|
ID12
|
PS5
|
20
|
|
|
ID11
|
PS4
|
21
|
|
|
ID10
|
PS3
|
22
|
|
|
ID9
|
PS2
|
23
|
|
|
ID8
|
PS1
|
24
|
|
|
ID7
|
SA8
|
25
|
|
|
ID6
|
SA7
|
26
|
|
|
ID5
|
SA6
|
27
|
|
|
ID4
|
SA5
|
28
|
|
|
ID3
|
SA4
|
29
|
|
|
ID2
|
SA3
|
30
|
|
|
ID1
|
SA2
|
31
|
|
|
ID0
|
SA1
|
32
|
|
|
RTR(r)
|
RTR(r)(2)(d)
|
33
|
|
|
r 1
|
r 1(2)
|
34
|
|
|
r 0
|
r 0(2)
|
35
|
|
|
DLC4
|
DLC4
|
36
|
|
|
DLC3
|
DLC3
|
37
|
|
|
DLC2
|
DLC2
|
38
|
|
|
DLC1
|
DLC1
|
39
|
|
|
- 11位标志位要求的格式
- CAN定义位,在SAE J1939里面没有改变
- 注释:
SOF - Start of Frame Bit :框架开始位
ID## - Identifier Bit #n :标志符位
SRR - Substitute Remote Request :替代远程请求
RTR - Remote Transmission Request Bit :远程传送请求
IDE - Identifier Extension Bit :标志符扩展位
r# - CAN Reserved Bit #n :CAN保留位
DLC# - Data Length Code Bit #n :数据长度代码位
(d) - dominant bit :显性位
(r) - recessive bit :影性位
(x) - bit state dependent on message :位状态,有信息决定
P# - SAE J1939 Priority Bit #n :SAE J1939优先级位
R# - SAE J1939 Reserved Bit #n :SAE J1939保留位
SA# - SAE J1939 Source Address Bit#n :SAE J1939原地址位
DP - SAE J1939 Data Page :SAE J1939数据页
PF# - SAE J1939 PDU Format Bit #n :SAE J1939 PDU 格式位
PS# - SAE J1939 PDU Specific Bit #n :SAE J1939 PDU详细位
表1 显示了29位标志符CAN、J1939,11位标志符的CAN、J1939仲裁和控制字段。在5。2章节里面定义了每一个SAE J1939的完整定义。
参数组代码:PGN。
在CAN数据框架内有必要标志一个参数组,参数组代码用24位表示。PGN参数组代码是一个24位的值,由如下要素组成:保留位、数据页位、PDU格式域和组扩展域。将域位转换成PGN参数组代码有如下规格。如果PF的值小于240(F0),PGN的低字节设置为0。
注意并不是所有的131071个组合都是可用的。
表2:PGN参数组代码
PGN
BYTE1 |
PGN BYTE1
|
PGN
BYTE1
|
PGN
BYTE 2
|
PGN
BYTE3
|
|
|
|
|
|
Bits 8-3
|
R
Bit2
|
DP
Bit1
|
PF
Bits 8-1
|
PS
Bits 8-1
|
PGN
Dec10
|
PGN
Hex16
|
|
|
|
0
|
0
|
0
|
0
|
0
|
0
|
000000
|
239
|
239
|
SAE
|
0
|
0
|
0
|
238
|
0
|
60928
|
00EE00
|
|
0
|
0
|
0
|
239
|
0
|
61184
|
00EF00
|
1
|
240
|
MF
|
0
|
0
|
0
|
240
|
0
|
61440
|
0F000
|
3840
|
|
SAE
|
0
|
0
|
0
|
254
|
255
|
65279
|
00FEFF
|
4080
|
|
0
|
0
|
0
|
255
|
0
|
65280
|
00FF00
|
256
|
|
|
0
|
0
|
0
|
255
|
255
|
65535
|
00FFFF
|
4336
|
MF
|
0
|
0
|
1
|
0
|
0
|
65536
|
010000
|
240
|
|
|
0
|
0
|
1
|
239
|
0
|
126720
|
01EF00
|
4576
|
SAE
|
0
|
0
|
1
|
240
|
0
|
126976
|
01F000
|
4096
|
|
|
0
|
0
|
1
|
255
|
255
|
131071
|
01FFFF
|
8672
|
SAE
|
|
|
|
|
|
|
|
8672
|
8672
|
|
Protocol Data Unit (PDU):协议数据单元
应用层或网络层会对PDU进行处理。SAE J1939协议数据单元由7部分组成,他们分别是优先级、保留位、数据页、PDU格式、PDU细节(可以是目标单元地址、组扩展或所有权)、原地址和数据段。这7个部分会被封装成一个或多个CAN数据框架并且通过物理层发送给其他的网络设备。每一个CAN数据框架只有一个PDU。需要注意的是一些PGN定义需要多个CAN数据框架去发送相应的数据。
CAN数据框架中的一些段并没有定义在PDU里面,因为他们是由CAN规格定义的,对于数据链接层之上的OSI层是不可见的。这些字段是由CAN协议定义的在SAE J1939里面没有改变。这些字段包括:SOF、SRR、IDE、RTR、CRC、ACK、EOF。
在图3中显示了这7个字段。在PDU中的每一个字段在后来的应用中都有定义。
图3
P:优先级
R:保留位
DP:数据页
PF:PDU格式
PS:PDU细节
SA:原地址
Date Field:数据字段
P优先级:有三个位用来表示信息发送到总线的优先级。对于接收者来说这三个位应该都认为0,被忽略掉。信息的优先级可以设置为0,最高,或者7,最低。所有控制信息默认的优先级是3,所有的其他的优先级默认为6。
R保留位:SAE为了以后应用保留下来的,暂时无意义。
DP数据页:对于参数组描述选色一个辅助的页。请参考图4。
PDU Format(PF):协议数据单元格式。PF是一个8位的字段,由这8个位决定了PDU的格式。这8个位是决定PGN参数组代码字段的一部分。PGN参数组代码是用来确定或者标志命令、数据、一些请求、应答或不应答。PGN参数组代码确定或标志的信息要求一个或多个CAN数据框架发送这些信息。如果多于8个字节的需要描述的话就需要发送多个CAN数据。如果是8个或者少于8个字节可以描述的信息,则只需要一个CAN 数据即可。一个PGN参数组代码可以描述一个或多个参数信息。当然一个PGN参数组信息可以只描述一个参数,但是推荐尽可能将一个CAN数据的8个字节全都用上。
PDU Specific(PS)协议数据单元细节:PS是一个8个位字段描述,它由PDU FORMAT格式决定。由PF决定PS是目的单元地址还是组扩展。如果PF字段的值小于240,PS字段表示的是目的单元地址。如果PF字段的值是240~255,PS字段表示组扩展值。见表3,参考图4 PGN参数组代码范围。
表3:PDU SPECIFIC
|
PDU Format(PF) Field
|
PDU Specified(PS) Field
|
PDU1 Format
|
0~239
|
Destination Address
|
PDU2 Format
|
240~255
|
Group Extension
|
Destination Address(DA)目的单元地址:这个字段定义了信息发送的特殊地址。注意所有其他的设备应该忽略这个字段。全局目的单元地址(255)要求所有接收到这个信息的设备都必须相应这个信息。
DP = Date Page(1 bit) GE=Group Extension(8bits)
PF = PDU Format (8bits) P=Priority
PS = PDU Specific(8bits) NA=Not Allowed
DA = Destination Address(8bits) un=Undefined
PGN =Parameter Group Number(3bytes)
图4:SAE J1939 PARAMETER GROUP NUMBER TEMPLATE
Group Extension(GE)参数组扩展:参数组扩展字段,由PF字段的高四位决定(当PF高四位都为1后,PS字段就为GE)。每一页有4096个参数组。这些4096个参数组只能用PDU2格式。另外使用PDU1格式每一页可以有240个参数组提供。总共有8672个参数组是可以使用的。
可以使用的参数组的数目可以通过一下发放计算:
(240+(16 * 256))*2=8672
240 =每一页可以使用的PDU格式的数据(例如PDU1格式,PS字段表示为目的单元地址)
16= 每一个组扩展值的PDU格式的值(例如PDU2格式)
256=所有可以使用的组扩展值的个数(例如PDU2格式)
2=数据页的状态(两种PDU格式)
Source Address(SA)原地址:8位。在一个网络里面每一个设备应该有一个唯一的原地址。原地址保证了CAN通讯标志符的是唯一的。原地址的管理和分配在SAE J1939-81里面有描述。
Date Field:数据字段。当8个或者小于8个的字节可以描述一个给定的参数组,一个CAN数据框架的8个字节都可以使用。当描述一个给定的参数组需要9~1785个字节时,需要多个CAN数据框架描述。
Protocol Data Unit(PDU)Formats:在图5中介绍了可用的PDU格式。有两种PDU格式定义:PDU1格式(PS=目的单元地址)和PDU2格式(PS=组扩展)。
图5:AVAILABLE PDU FORMATS
PDU1格式:这种格式允许参数组发送特殊的或者全局的目的单元。PS字段表示DA目的单元地址。PDU1格式可以用作要求或发送一个未被请求的信息。PDU1格式是由PF字段决定的。当PF字段的值0~239,表示这个信息是PDU1格式。
PDU2格式:这种格式只能将参数组做为全局信息来通讯。PDU2格式的信息可以用作要求或发送未被请求的信息。PDU2格式是由PF决定的,当PF的值在240~255之间,表示这个信息是PDU2格式。
信息类型:当前能够提供5中信息类型:命令、请求、广播/相应,应答和组功能。这些特殊的信息类型可以由相关的PGN参数组。
命令:这种参数类型将那些命令一个特殊或全局目的但于的参数组加以分类。目的单元根据接收的命令信息执行特殊的动作。PDU1和PDU2格式都可以用做命令格式。例如命令类型的信息包括:发送控制、地址请求、扭矩/速度控制等等。