SAE1939-21协议

更新时间:2024-01-23 14:45:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

商用车控制系统局域网络(CAN )通信协议

第 4 部分:数据链路层

(英文名称)

(SAE1939-21:1999 MOD )

前 言

GB/T××××《商用车控制系统局域网络(CAN 总线)通信协议》包括 11 个部分: —第 1 部分:物理层—屏蔽双绞线(250K 比特/秒) —第 2 部分:物理层—非车载诊断连接器

—第 3 部分:物理层—非屏蔽双绞线(250K 比特/秒) —第 4 部分:数据链路层 —第 5 部分:应用层—车辆 —第 6 部分:应用层—诊断 —第 7 部分:网络管理 —第 8 部分:参数组分配 —第 9 部分:地址和标识分配 —第 10 部分:可疑参数编号(SPN) —第 11 部分:网络层

本标准为 GB/T××××的第 4 部分,对应于 SAE1939-21:2001 《数据链路层》,本 标准与 SAE1939-21 的一致性程度为修改采用(技术内容完全等同),主要差异如下: —增加了“范围”及“规范性引用文件”

—原文引用了 1939 概述部分的术语,本标准将适用的大部分术语抄写过来,并给出了 定义.

本标准的附录 A、B、C、D 均为资料性附录。

汽车控制系统局域网络(CAN 总线)通信协议

第 4 部分:数据链路层

1 范围

本部分规定了 CAN 总线的数据链路层的技术要求。 本部分适用于 M2、M3 及 N 类车辆。

2 规范性引用文件 下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所

有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而鼓励根据本标准达成协议的各 方研究是否可使用这些文件的最新版本。凡是不注日期的引用文

GB/T××××.5 应用层—车辆 GB/T××××.7 网络管理 GB/T××××.8 参数组分配 GB/T××××.9 地址和标识分配

3 术语和定义

本标准采用下列术语和定义。 3.1

帧 Frame

组成一个完整消息的一系列数据位。帧又被划分成几个域,每个域包括了预定义类型的数据。 3.2 CAN 数据帧 CAN Data Frame

组成传输数据的 CAN 协议帧所必需的有序位域,以帧起始(SOF)开始以帧结束(EOF)结尾。

3.3

扩展帧 Extended Frame CAN2.0 规范中定义的使用 29 位标志符的 CAN 数据帧; 3.4

标准帧 Standard Frame

CAN2.0b规范中定义的使用 11 位标识符的 CAN 数据帧; 3.5

包 Packet 一个单一的 CAN 数据帧就是一个包。当一条消息包含参数组的数据长度小于等于8个字节时,这 样的消息也称为包。

3.6

消息 Message

指一个或多个具有相同参数组编号的“CAN 数据帧”。 3.7

多包消息 Multipacket Messages

当具有相同参数组编号的所有数据需要使用多个 CAN 数据帧来传输时使用的一种J1939消息。 每个 CAN 数据帧拥有相同的标识符,但在每个包中数据不同。

3.8

参数组 Parameter Group(PG)

在一消息中传送参数的集合。参数组包括:命令、数据、请求、应答和否定应答等。不论是单包消 息还是多包消息,参数组都被看作数据。因为参数组与源地址无关,因此可以从任何源地址发送任意的 参数组。

3.9

参数组编号 Parameter Group Number(PGN)

3 字节,24 位,包括保留位、数据页、PDU 格式和组扩展域等。参数组编号唯一标识一个参数组; 3.10

协议数据单元 Protocol Data Unit(PDU) 协议数据单元是一种特定的CAN数据帧格式。 3.11

协议数据单元格式 Protocol Data Unit Format(PF)

29 位标识符中的一个8位数据域,用于识别协议数据单元的格式,并且全部或部分用作参数组的 标号。另外,它还是PGN的一个域。 3.11

特定协议数据单元 PDU Specific(PS)

29 位标识符中的一个 8 位数据域,其具体定义由协议数据单元格式(PF)的值决定。该域可能 是表示目标地址(DA),也可能是组扩展(GE)。另外,它还是PGN的一个域。3.12

1 型协议数据单元 PDU1 Format

用于发送到指定目标地址(DA)的消息。特定协议数据单元(PS)中包含了目标地址(特定或全 局); 3.13

2 型协议数据单元 PDU2 Format 用于发送使用组扩展技术的消息。这种协议数据单元不包含目标地址。对于这种格式的协议数据单 元,特定协议数据单元(PS)域表示组扩展;

3.14

标识符 Identifier

CAN 仲裁域的标识部分 3.15

数据域 Data Field

CAN 数据帧中包含应用层定义的 0-64 位数据; 3.16

数据页 Data Page

CAN 数据帧标识符中用来选择两页参数组编号中一页的一个位。它为参数组编号将来的扩展提供 了可能。另外,它还是PGN的一个域。3.17

目标地址 Destination Address,DA

29位CAN标识符中的PS域,表明需要接收该消息ECU的地址。 3.18

帧起始 Start of Frame(SOF)

CAN 数据帧中用来表示帧开始的第一个数据位; 3.19

帧结束 End of Frame,EOF 标志 CAN 数据帧结束的 7 位的域;

3.20

组扩展 Group Extension(GE) CAN 数据帧 PDU 中的一个域,是决定参数组编号时必不可少的信息; 3.21

优先权 Priority 在标识符中一个 3 位的域,设置了传输过程中的仲裁优先级。最高优先级为 0,最低优先级为 7。 3.22

保留位 Reserved Bit 在 29 位标识符中为将来定义而保留的一个数据位。另外,它还是PGN的一个域。 3.23

肯定应答 Acknowledgement,ACK

确认所请求的动作已经被理解并完成; 3.24

否定应答 Negative-Acknowledgment NACK

表明某个设备不能理解一个消息或者无法实现一个请求操作。 3.25

节点 Node

将电控单元与网络相连的硬件。一个节点在网络中可能拥有多个地址; 3.26

地址 Address

8位位域,用于决定消息源(或者目标)。 3.27

位填充 Bit Stuffing

用于保证发送或接收的消息具有保持最小数量的显性位或隐性位跳变的处理程序,进而实现 CAN 数据帧中的位流正确的再同步。更详细的讨论参见 CAN 的说明; 3.28

空闲状态 Idle

没有节点传输或试图传输数据时的 CAN 总线状态; 3.29

首选地址 Preferred Address

在声明地址时,电控单元首先尝试使用的地址。 3.30

仲裁 Arbitration 解决一个或多个 ECU 在获取对共用总线的访问权时冲突的过程。

4 符号缩写的含义

ACK BAM CAN CRC CTS DA DLC DP

确认

广播公告消息 控制器局域网 循环冗余码校验 清除发送 目标地址 数据长度码 数据页

NACK P PDU PF PGN PS GE DA

否定 优先级

协议数据单元 PDU 格式 参数组编号 特定 PDU 组扩展 目标地址

EOF ID IDE LLC LSB MAC MF MSB NA

帧结束 标识符

标识符扩展位 逻辑链路控制 最低有效字节或位 介质访问控制 制造商

最高有效字节或位 禁用 R RTR SA SOF SRR TP Th Tr un 保留

远程传输请求 源地址 帧起始

代用远程请求 传输协议 保持时间 响应时间 未定义

5 要求

数据链路层为物理连接之间提供可靠数据传输。包括发送 CAN 数据帧所必需的同步、顺序控制、 出错控制和流控制。流控制是以统一的消息(帧)格式实现的。

5.1 消息/帧格式

消息格式遵循 CAN 规范。本标准参考的 CAN 规范是 1991 年 9 月的“CAN2.0B”。但必须分清本 标准与 CAN 规范的差别,二者有冲突的地方必须以本标准为准。比如,在消息路由部分,CAN 规范中 定义不使用节点地址,而在本标准中规定必须使用节点地址。本标准定义的网络要求采用节点地址寻址 以防止多个节点使用同一个标识符(ID)。另外,本标准中有许多在 CAN 规范中没有定义的附加要求。 “CAN 2.0B”包括两种消息格式:标准帧和扩展帧。与“CAN 2.0B”的兼容性意味着,在同一网络 中通过采用位编码的方式可以识别出这两种格式的消息。因此,在本标准定义的网络中这两种格式的消 息都可以存在。但本标准只针对扩展帧格式定义了一套完整的标准化通信策略。所有标准帧格式消息都 必须按照本标准中定义的规则作为专用消息使用。 采用本标准的设备必须使用扩展帧格式。网络中可以有标准帧格式消息,但仅限于本标准中定义的部分。

注:标准帧设备不响应网络管理消息,不支持标准化通信。

如图 1 所示,CAN 数据帧被分成不同的位域。CAN 标准帧和扩展帧格式消息的区别在于仲裁域和 控制域的位数和对位域的识别不同。CAN 标准帧消息如 A 所示,仲裁域有 11 位标识符。CAN 扩展帧 消息如 B 所示,仲裁域有 29 位标识符。本标准将 CAN 数据帧格式的仲裁域的 29 位标识符作了进一步 的定义,如表 1。在表 1 中分别描述了 CAN 网络的 29 位标识符、本标准的 29 位标识符、CAN 网络的 11 位标识符和本标准的 11 位标识符中的仲裁域和控制域。本标准每个位分配的详细定义见 5.2。在本 标准中,CAN 数据帧数据域包括从字节 1 到字节 8。字节 1 的最高位(位 8)是紧接着 DLC 域发送的 第一位,字节 8 的最低位(位 1)是最后发送的数据位,紧接着的是 CRC 域。 5.1.1 消息帧格式—CAN 2.0B 扩展帧格式

CAN 扩展帧的格式如图 1 所示,包含一个单(个)一的协议数据单元(PDU)。PDU 包含 7 个域。 这些域的信息由应用层提供,包括优先级、保留位、数据页、PDU 格式、特定 PDU(目标地址、组扩展 或专用)、源地址和数据域。PDU 将被封装在一个或多个 CAN 数据帧中,通过物理介质传输到其他网 络设备。本标准支持的开放系统互连(OSI)模型如图 2 所示。

注:某些参数组定义要求使用一个以上的 CAN 数据帧来发送消息。 A. CAN 标准帧格式

CAN数据帧 位填充为127位的最大帧长度

仲裁段12位 控制段6数据段 CRC分隔符 位

S R I O 标识符 T D r ACK E段 O 位 F R E 0 DLC 数据段 CRC F 1 11 1 1 1 4 0-64 15 1 2 7

位填充 无位 填充

B.CAN 扩展帧格式

CAN扩展数据帧 位填充为150位的最大帧长度

控制 仲裁段32位 段 6数据段 CRC分隔符 位 S S R O I 标识符 R D 标识符 ACK E T r r 位 F R E 扩展 R 1 0 DLC 数据段 CRC 段 O F 1 11 1 1 18 1 1 1 4 0-64 15 1 2 7

位填充 无`位

填充 图 1 CAN 数据帧

节点 1

节点 5

应用层

优先级,R,DP,PF,SA,数据

优先级,R,DP,PF,SA,数据

应用层

网络层

网络层

数据链路 逻

逻辑链接控制 一个或多个 PDU

一个或多个 PDU

数据链路

辑链接控制

介质访问控制

一个或多个 CAN 数据帧

一个或多个 CAN 数据帧

介质访问控制

物理层定义: R 物理层

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

图 2 OSI 在本标准中的应用

表 1

本标准和 CAN 的仲裁域与控制域的对照表

29 位标识符

CAN SOF ID28 ID27 ID26 ID25 ID24 ID23 ID22 ID21 ID20 ID19 ID18 SRR(r) IDE(r) ID17 ID16 ID15 ID14 ID13 ID12 ID11 ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR(x) r 1 r 0 DLC4 DLC3 DLC2 DLC1

29 位标识符 本标准 SOF(2) P3 P2 P1 R1 DP PF8 PF7 PF6 PF5 PF4 PF3 SRR(2) IDE(2) PF2 PF1 PS8 PS7 PS6 PS5 PS4 PS3 PS2 PS1 SA8 SA7 SA6 SA5 SA4 SA3 SA2 SA1 RTR (2)(d) r 1(2) r 0(2) DLC4 DLC3 DLC2 DLC1

帧位位置

11 位标识符

CAN SOF ID11 ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 RTR(x) IDE(x) r 0 DLC4 DLC3 DLC2 DLC1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

11 位标识符

()

本标准1

SOF(2) P3 P2 P1 SA8 SA7 SA6 SA5 SA4 SA3 SA2 SA1

RTR(2) (d) IDE(2) DLC4 DLC3 DLC2 DLC1

1. 2. 3.

专用 11 位标识符的要求格式。

在 CAN 中定义的位,在本标准中定义不变。 备注: SOF - 帧起始位 ID## - 标识位#n SRR - 代用远程请求 RTR - 远程传输请求位

P# - 本标准优先级位#n R# - 本标准保留位#n SA# - 本标准目标地址#n DP - 本标准数据页

IDE - 标识符扩展位 PF# - 本标准 PDU 格式位#n r # - CAN 保留位 PS# -本标准 特定 PDU 位#n DLC# - 数据长度码位#n (d)- 显性位

(r)- 隐性位 (x)- 消息状态位

5.1.2 参数组编号(PGN)

在识别 CAN 数据帧的数据域属于哪个参数组时,需要一个 24 位的值。这个 24 位的值首先发送最 低字节(见表 2,最低字节先发送,其次是中间字节,最后是最高字节)。PGN 是一个 24 位的值,包括 以下部分:保留位、数据页位、PDU 格式域(8 位)和组扩展域(8 位)。这些位域转换到 PGN 的过程 如下。若 PF 值小于 240(F016),PGN 的低字节置 0。否则,将其值设为组扩展域的值。表 2 是 PGN 及 其组成部分位域对应的十进制值示例。注意:用本文档规定的范例,并非全部 131,071 种组合都可用于 分配(计算如下:2 页*[240+(16*256)]=8,672)。见 GB/T××××.8,可查现行的最新分配。参见 PGN 表,表 2,PGN 位域和其相应的十进制值的转换。 5.1.3 本标准支持的“CAN 2.0B”标准帧格式消息

本标准网络中的控制器可以支持 CAN 标准帧(11 位标识符)消息格式。虽然与本标准消息结构不 兼容,但为了协调这两种格式的共存,在最底层做了定义。在该层定义中允许使用此格式的设备与其他 设备不发生干扰。CAN 标准帧格式消息是用来专用的,参见表 1,11 位标识符功能分析如下:最高三 位用作优先级位,最低八位定义 PDU 的源地址。优先级位的定义见 5.2.1。源地址在源地址表中定义(见

GB/T××××.9)

备注:两个不同格式的消息试图同时访问总线时可能产生错误的总线仲裁。标准帧消息中的源地址(SA)比扩展帧 消息中的优先级高。含有 11 位标识符的消息(标准帧)含有源地址,其优先级比含有保留位、数据页位和 PF 的 29 位 标识符消息(扩展帧)高。三位优先级位是用来实现正确的总线仲裁的。

本标准只针对扩展帧格式定义了一套完整的标准化通信策略。符合 CAN2.0A 规范的硬件一定不能 用在本网络中,因为这种硬件禁止扩展帧格式的消息进行通信。

表 2 参数组编号(PGN)示例

PGN 子部 PGN 子部 PGN 子部 PGN PGN PGN (MSB) (MSB) (MSB) 字节 1 字节 1 字节 1 在 CAN 数 据帧中第

三发送

R DP 位 2 位 1 位 8-3

PGN 子部

PGN

字节 2 在 CAN 数 据帧中第 二发送 PF 位 8-1

PGN 子部

PGN (LSB) 字节 3 在 CAN 数 据帧中首 先发送 PS 位 8-1

CATARC

或制造商 分配

Dec10

PGN

Hex16

PGN

可分配 PG 的数目 累加的 PG 数目

0 60928 61184 61440

00000016 00EE0016 00EF0016 00F00016

239 1 3840 256 240 4096

239 240

MF SAE SAE

0 0 0 0

0 0 0 0

0 0 0 0

0 238 239 240

0 0 0 0

0

0 0 0 0 0 共

0 0 0 0 0 0 0

0 0 0 1 1 1 1

254 255 255 0 239 240 255

255 0 255 0 0 0 255

65279 65280 65535 65536 126720 126976 131071

00FEFF16 00FF0016 00FFFF16 01000016 01EF0016 01F00016 01FFFF16

4080

MF

4336

SAE

4576 8672

SAE

8672 8672

5.2 协议数据单元(PDU)

协议数据单元由七部分组成,分别是优先级,保留位,数据页,PDU 格式,特定 PDU(可作为目 标地址、组扩展或专用),源地址和数据域。PDU 被封装在一个或多个 CAN 数据帧中,通过物理介质 传送到其他网络设备。每个 CAN 数据帧只能有一个 PDU。需要指出的是,有些参数组编号定义需要多 个 CAN 数据帧才能发送其数据。

注:某些 CAN 数据帧的域不是在 PDU 中定义,它们完全由 CAN 规范决定,对 OSI 数据链路层以上的层是不可见 的。它包括 SOF,SRR,IDE,RTR,控制域部分,CRC 域,ACK 域和 EOF 域。这些域由 CAN 协议定义的,本标准不 作修改。这七个 PDU 域如图 3 所示。PDU 中的每一段在后继的章节中定义。

位 J1939 PDU P D R P PF PS SA ... 数据段

定义:

3 1 1 8 8 8 0-64

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

地址

图 3 协议数据单元(PDU)

5.2.1 优先级(P)

这三位仅在总线传输中用来优化消息延迟,接收机必须对其做全局屏蔽(即忽略)。消息优先级可 从最高 0(0002)设置到最低 7(1112)。所有控制消息的缺省优先级是 3(0112)。其他所有信息、专用、 请求和 ACK 消息的缺省优先级是 6(1102)。当定义新的参数组编号,或总线上通信量变化时,优先级 可以升高或降低。当消息被添加到应用层,将给出一个推荐的优先级。OEM 可以对网络做相应调整, 优先级域应当是可重编程的。

5.2.2 保留位(R)

保留此位以备今后开发使用。不能将此位与 CAN 保留位混淆。所有消息应在传输中将 SAE 保留位 置 0。今后新的定义可能扩展 PDU 格式域,定义新的 PDU 格式,扩展优先级段或增加地址空间。 5.2.3 数据页(DP)

数据页位选择参数组描述的辅助页。在分配页一的 PGN 之前,先分配完页零的可用 PGN。 5.2.4 PDU 格式(PF)

PF 域,8位。确定 PDU 的格式,也是确定数据域对应参数组编号的域之一。参数组编号用来确定 或标识命令、数据、请求、确认和否定等。参数组编号所确定或标识的信息需要一个或多个 CAN 数据 帧进行通信。若消息长于 8 字节,必须将消息分包发送(见 5.10)。如消息长小等于 8 字节,则使用单 个 CAN 数据帧。参数组编号可以包含一个或多个参数,这里参数是指如发动机转速之类的数据。尽管 一个参数组编号可以只包含一个参数,我们推荐对多个参数进行组合以利用数据域的全部 8 字节。

已经定义好了两种专有参数组编号,允许使用 PDU1 和 PDU2 两种格式(共定义了两种 PDU 格式: PDU1 格式和 PDU2 格式)。专有信息的解释因制造商而异。例如,即使两个不同的发动机使用同一个 源地址,制造商 A 的专用通信极可能与制造商 B 不同。 5.2.5 特定 PDU(PS)

特定 PDU 是一个 8 位域,它的定义取决于 PDU 格式,根据 PDU 格式它可能是目标地址或者组扩 展。 若 PDU 格式(PF)域的值小于 240,特定 PDU 域是目标地址。若 PF 域的值在 240 和 255 之间, 特定 PDU 包含组扩展(GE)值,见表 3。参数组编号的范围参见图 4。

表 3 特定 PDU

PDU1 格式 PDU2 格式

PDU 格式(PF)域 0-239 240-255

特定 PDU(PS)域 目标地址 组扩展

5.2.5.1 目标地址(DA) 这个域定义了消息发送的特定目标地址。注意,对于任何设备,如果源地址与接收到消息的目标地址

不相同应忽略此消息。所有设备作为消息响应者应对全局目标地址(255)作出监听和响应。 图注:

DP PF PS DA PGN

= = = = =

数据页 PDU 格式 特定 PDU 域 目标地址 参数组编号

(1 位) (1 位) (1 位) (1 位) (3 字节)

GE P NA Un

= = = =

组扩展 优先级 禁用 未定义

(8 位)

P

DP

0 0 . 界限 x . . 0 0

PF

0 1

PS

DA DA

参数组定义

PDU1 格式- 100ms 或更短时间 多包

禁止 PGN

000 256

238 239 240 240

DA DA 0 1

PDU1 格式- 100ms 或更长时间 专用 PDU2 格式- 100ms 或更短时间

允许 允许 禁用

60928 61184 61440 61441

0 0 . 界限 y . 0 0 0

254 254 255 0 1

254 255 un DA DA

PDU2 格式- 100ms 或更长时间 PDU2 格式- 专用 PDU1 格式- 100ms 或更短时间

允许 允许 禁止

65278 65279 65280-65535 65536 65792

1 1 . 界限 x1 . 1 1

238 239 240 240

DA DA 0 1

PDU1 格式- 100ms 或更长时间 PDU1 格式- 100ms 或更长时间 PDU2 格式- 100ms 或更短时间

允许 禁止

126464 126720 126976 126977

1 1 . 界限 y1 . 1 1 1

255 255 255 253 254 255

PDU2 格式- 100ms 或更长时间 PDU2 格式- 100ms 或更长时间 允许 允许 131070 131071

5.2.5.2 组扩展(GE)

图 4 参数组编号模板

组扩展与 PDU 格式域的低四位(注意:当 PDU 格式域最高四位被置 1,说明 PS 域是组扩展)规 定了每个数据页 4096 个参数组。这 4096 个参数组只能使用 PDU2 格式。另外,每个数据页中有 240 个参数组只能使用 PDU1 格式。综上,使用这两个数据页一共可以定义 8672 个参数组。

可用参数组的总数目如式 1 所示:

(240 +(16*256))*2 = 8672 (式 1)

其中:

240 = 每个数据页中 PDU 格式域可用值的数目(即 PDU1 格式,PS 域是目标地址) 16 = 每个组扩展 PDU 格式值(即 PDU2 格式) 256 = 组扩展可能值的数目(即 PDU2 格式) 2 = 数据页数(两种 PDU 格式) 5.2.6 源地址(SA)

源地址域 8 位。网络中一个特定源地址只能匹配一个设备。因此,源地址域确保 CAN 标识符符合 CAN 协议中的唯一性要求。地址管理和分配详见 GB/T××××.9。处理过程在 GB/T××××.9 中定义,以防止源地址重复。 5.2.7 数据域 5.2.7.1 长度从 0 字节到 8 字节的数据

如果给定参数组用于表示不多于 8 字节的数据时,可使用 CAN 数据帧全部的 8 个字节。通常,建 议对所有的参数组进行分配时,将 8 个字节分配或保留以备今后扩展之用。这样可以很容易地添加新参 数,并确保与只定义了部分数据域的旧版本的兼容。一旦与参数组编号相关的字节数目确定,字节数目 将不可更改(也不能改为多包,除非原先定义为多包)。当数据长度不多于 8 字节时,将预定义的参数 组数据长度值赋予 CAN 数据长度码(DLC);否则,如果参数组的数据长度大于 8,将 CAN 数据长度 码(DLC)赋值为 8。必须注意,每个组功能(见 5.4.5)的参数组数据域长度必须相同,因为 CAN 数 据域传输特定组的子功能时,CAN 标识符是完全相同的,只能通过 CAN 数据域来对其作出不同的解释。 5.2.7.2 长度从 9 字节到 1785 字节的数据

如果一个给定的参数组数据长度为 9 至 1785 字节时,数据通信是通过多个 CAN 数据帧实现的。 因此,用“多包“来描述这种类型的参数组编号。如果参数组的定义为多包,在少数特定场合只传输少 于 9 字节的数据时,参数组以单帧 CAN 数据帧发送,其中 DLC 置 8。如果某特定参数组传输 9 字节或 者更多字节,将使用“传输协议功能”。通过传输协议功能的连接管理能力来建立和关闭多包参数组的 通信。传输协议功能的数据传输能力,通过传送一系列包含分包数据的 CAN 数据帧(包),能独自实 现数据通信。另外,传输协议功能还提供了对于目标地址特定的传输的流控制和握手功能。见 5.10。 所有与特定多包应答相关的 CAN 数据帧必须置 DLC 为 8。所有没用的字节应置为“不可用”(见 GB/T××××.5)。每组中的字节数目是固定的,但是,本标准中定义的多包消息其包数是可变的或 固定的。活动的诊断码的参数组编号即是多组消息中包数可变的一个例子。只有当发送的字节数超过 8 时,定义为多包的参数组才使用传输协议进行传输。 5.3 协议数据单元(PDU)格式

PDU 格式如图 5 所示。共定义了两种 PDU 格式:PDU1 格式(PS 为目标地址)和 PDU2 格式(PS 为组扩展)。PDU1 格式实现 CAN 数据帧定向到特定目标地址(设备)的传输。PDU2 格式仅用于不指 向特定目标地址(设备)的 CAN 数据帧的传输。使用两种 PDU 格式,不但能实现定向到特定目标地 址的通信,还能提供尽可能多的参数组编号组合。已定义的专用参数组能够使用这两种 PDU 格式进行 通信。在专用通信中采用一套标准的方法,这样可以防止在标识符的使用上可能产生的冲突。 已定义的两种专用参数组能够使用 PDU1 和 PDU2 格式进行通信。专有信息的解释因制造商而异。 例如,即使发动机制造商 A 和 B 都使用同一个源地址,二者的专有信息也极可能不同。

PDU1 P D R P PF PS(DA) SA ... 数据段 3 1 1 8 8 8 0-64

位 PDU2 P D R P PF PS(DA) SA ... 数据段

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

图 5 可用的 PDU 格式

5.3.1 PDU1 格式

发送到特定目标地址或全局目标地址采用的参数组 PDU1 格式。目标地址(DA)放在特定 PDU(PS) 域中。PDU1 格式消息可以请求发送,或主动发送。

PDU 格式(PF)域决定 PDU1 格式的消息。当 PDU 格式域的值在 0 到 239,消息是 PDU1 格式。 PDU1 消息的格式如图 5 所示。另见图 6,PDU1 格式。 对于要求传向特定的目标地址并有最小时延的

参数组,采用 PDU1 格式,其 PF 取值从 0 开始递增 直到 x(或 x1),参见图 4。

对于要求传向特定的目标地址但对延时要求不严的参数组,采用 PDU1 格式,其 PF 取值从 238 开 始递减直到 x(或 x1),参见图 4。

值为 239 的 PF(保留位为 0,数据页为 0)留作专用。在此情形下,特定 PDU(PS)是目标地址 (见 5.4.5)。专用 A 的 PGN 值为 61184。

5.3.2 PDU2 格式

图 6 PDU1 格式(R)

采用这种格式的参数组只能作为全局消息进行通信。PDU2 格式消息可以请求发送,或主动发送。 选择 PDU2 格式(同时分配 PGN)可以避免 PGN 被定向到特定目标地址。特定 PDU(PS)是组扩展 (GE)。

PDU2 消息的 PDU 格式(PF)值在 240 和 255(见图 4)。PDU2 消息的格式如图 5 所示。另见图 7, PDU2 格式。

对于传输周期短的(通常小于 100ms)消息,其参数组编号的 PF 值从 240 开始递增直到 y(或 y1)。 参见图 4。

对于只在请求时、有变化时,或传输周期长(通常间隔大于 100ms)的消息,其参数组编号的 PF 值从 254 开始向递减直到 y(或 y1),参见图 4。

值为 255 的 PF(保留位为 0,数据页为 0)留作专用。在此情形下,特定 PDU 段留给制造商定义 使用。专用 B 的 PGN 值在 65280 至 65535 范围之内。

图 7 PDU2 格式

5.4 消息类型

目前共支持五种类型的消息,分别为:命令、请求、广播/响应、确认和组功能。消息的具体类型 可由其分配的参数组编号识别。参见 GB/T××××.8 中 PGN 分配的例子。RTR 位(在 CAN 协议远 程帧中定义)不可用于隐性状态(逻辑 1)。因此,在本标准中不能使用远程传输请求(RTR=1)。

CAN 数据帧数据域中的多字节参数,先存放最低字节。应用中的特例(如,ASCII 数据)要注明。 例如,如果要把一个 2 字节的参数存放在 CAN 数据帧的字节 7 和字节 8 中,把 LSB 放在字节 7,MSB 放在字节 8。 5.4.1 命令

命令类型的消息是指那些从某个源地址向特定目标地址或全局目标地址发送命令的参数组。目标地 址接收到命令类型的消息后,应根据接收到的消息采取具体的动作。PDU1 格式(PS 为目标地址)和 PDU2 格式(PS 为组扩展)都能用作命令。命令类型的消息可例子有传动控制、地址请求、扭矩/速度 控制等等。

5.4.2 请求

请求类型的消息提供了从全局范围或从特定目标地址请求信息的能力。对特定目标地址的请求称

为指向特定目标地址的请求。图 8 中给出了 “请求 PGN”参数组的 PGN 定义。此信息与 GB/T××

××.5 中规定的参数组格式相同。表 D1 有分配给这个信息的参数的可疑参数号(SPN)。

参数组名称:

定义:

复传输速率: 数据长度: 数据页: PDU 格式: 特定 PDU 域: 缺省优先级: 参数组编号: 字节:1,2,3

请求 PGN

用于从一个或多个网络设备请求参数组 重用户自定义,推荐每秒请求不多于 2 或 3 次 3 字节 0 234

目标地址(全局或特定) 6

59904(00EA0016)

被请求的参数组编号(见 5.1.2)

图 8 请求 PGN 的定义

表 4 重述了 PDU1 和 PDU2 格式 PGN 的请求/响应的可能性。从表 4 可以看出,消息传送者的请求 是指向特定目标地址还是全局目标地址决定了请求的类型。表 4 还表明,对于传送者可以主动传输的消 息,如果其数据长度大于 8 字节,传送者可以选择以特定目标地址还是全局目标地址的的方式传输 PDU1 PGN 和 PDU2 PGN。如果 PDU2 PGN 的数据长度小于等于 8 字节,传送者只能以全局目标地址的的方 式传输数据。见表 4。

表 4 PDU1 和 PDU2 传输、请求和响应要求

被请求 被 请 求 请求 PGN 的 PDU PGN 的数据 PGN 59904

格式 长度 1 ≤8 字节 特定 DA 1 ≤8 字节 全局 DA 1 无 ≤8 字节 1 1 1 2 2 2 2 2 2

响应 特定 DA 全局 DA 全局 DA 特定 DA 特定 DA 全局 DA 全局 DA 特定 DA 全局 DA 全局 DA 全局 DA 特定 DA 全局 DA 全局 DA 特定 DA

使用传输协

议 NA NA NA NA RTS/CTS BAM BAM RTS/CTS NA NA NA RTS/CTS BAM BAM RTS/CTS

> 8 字节 > 8 字节 > 8 字节

特定 DA

全局 DA 无 特定 DA 全局 DA 无 特定 DA 全局 DA 无

≤8 字节 ≤8 字节 ≤8 字节 > 8 字节 > 8 字节 > 8 字节

决定发送 PGN 到全局或特定地址的一般规则:

1. 若发送请求到全局地址,则响应也发送到全局地址 a) 注意—NACK 禁止作为全局请求的响应

2. 若发送请求到特定地址,则发送响应到特定地址 a) 注意 — 若不支持请求的 PGN,需要作出 NACK 响应。 b) 若数据长度大等于 8 字节,则发送响应到特定地址时必须用传输协议 RTS/CTS。 c) 例外:

i) 8 字节或短于 8 字节的 PDU2 格式 PGN 只能发送到全局目的地,因为在 PDU2 格 式中没有目标地址段。

ii)即使对目标地址的请求可能被发到特定地址,地址请求 PGN 还是被发送到全局目

标地址。

iii)即使引起确认响应(ACK)的 PGN 是指向特定地址的,确认 PGN 响应(ACK) 还要用全局目标地址。

3. 对于周期性广播或主动传输的消息 a) PDU1 格式 PGN 或 PDU2 格式 PGN 可以发送到全局或特定目标地址

i) 例外:不长于 8 字节的 PDU2 格式 PGN 只能发送到全局目的地,因为在 PDU2 格 式中没有目标地址段。

4. 以上规则的特例确实存在,并都作出了说明。这些特例在定义 PGN 的应用文档中有注 释。有以下两种类型的特例:

a) 当作出响应的目标地址不指明对应请求的源地址时,一些例子已经在前面说明(如, 地址请求 PGN 和确认 PGN)。 b) 当 PGN 不支持所有可用地址的格式时,也就是,某些 PGN 可能不能设计为支持对 于 PDU1 和 PDU2 格式的消息适用的地址。

表 5 两个使用请求 PGN 的例子。

表 5 的 PDU1 格式特定段的应用

消息类型 全局请求

特定请求

PF 234 234

PS(DA) 255 多响应 SA2 响应者

SA SA1 请求者 SA1 请求者

数据 1 PGN lsb(1) PGN lsb(1)

数据 2 PGN PGN

数据 3 PGN msb(1) PGN msb(1)

1.数据域中参数组编号用于标明被请求消息。

对于特定目标地址的请求,目标地址必须做出响应。如果目标地址不支持请求的 PGN,也必须发 出一个 NACK 的响应以表明它不支持该 PGN。有些 PGN 是多包的,因此一个单帧请求的响应可能有 多个 CAN 数据帧。

如果是全局请求,当一个节点不支持某个 PGN 时,不能发出 NACK 响应。 可以直接发送请求 PGN 到特定目标地址检查是否支持特定参数组(即被请求的目标地址是否传送 特定 PG)。对请求的响应取决于该 PGN 是否被支持。若支持,响应设备会发送被请求的信息。若确认 PGN 是正确的,则控制字节置 0 或 2 或 3;若不支持该 PGN,响应的设备会发送控制字节值为 1 的确 认 PGN,作为否定应答。PDU 格式和参数组其他的参数组要正确地填写(参见 5.4.4)。“不支持”意味 着该参数组不会被发送。不能使用这种方法决定一个设备对接收到的 PG 是否作出响应。 5.4.3 广播/响应 此消息类型可能是某设备主动提供的消息广播,也可能是命令或请

求的响应。 5.4.4 确认

确认 ACK 有两种形式。第一种是 CAN 协议规定的,它由一个“帧内”确认 ACK 组成,用来确认 一个消息已被至少一个节点接收到。另外,如果没有出现 CAN 出错帧,消息将被进一步确认。不出现 出错帧表明所有其他的开启上电并连接在总线上的设备都正确地收到了此消息。

第二种形式的确认 ACK 由应用层规定,是对于特定命令、请求的“普通广播”或“ACK”或“NACK” 的响应。确认 ACK 参数组的定义见图 9。表 D1 有分配给这个信息的参数的可疑参数号(SPN)。某些 参数组所需确认 ACK 的类型在应用层中定义。

对于组功能参数组(见 5.4.5),组功能值参数允许某设备标识一个被确认的特定组功能。每个组功 能参数组对应一个唯一的组功能值。组功能值合适的取值范围在 0 到 250 之间。

参数组编号: 确认 定义: 用来提供发送方和接收方之间的握手机制 重复传输速率: 收到需要此类型的确认的 PGN 时

数据长度: 8 字节 数据页: 0 PDU 格式: 232

()

特定 PDU: 目标地址1=全局(255) 缺省优先级: 6 参数组编号: 59392(00E80016) 此消息类型使用的参数的数据范围: 控制字节: 0 至 3 见以下定义

3 至 255 保留给 CATARC 分配

组功能值 0-250 可用时对每个 PGN 作具体的定义

大多数情况下位于适用组功能参数组数据域的第一个字 节。 251-255 按 GB/T××××.5 的规定

肯定确认: 控制字节 = 0

字节: 1 控制字节 = 0,肯定确认(ACK)

2 组功能值(若适用) 3-5 保留给 CATARC 分配,置各字节为“FF16” 6 被请求消息的参数组编号(参数组编号的 8 低 8 位,位 8

是最高位)

7 8

否定确认: 字节:

控制字节 = 1

1

被请求消息的参数组编号(参数组编号的 2mid 字节,位 8

是最高位)

被请求消息的参数组编号(参数组编号的高 8 位,位 8 是最高位)

控制字节 = 1,否定确认(NACK) 组功能值(若适用)

保留给 CATARC 分配,置各字节为“FF16” 被请求消息的参数组编号(见上)

拒绝访问: 字节:

无法响应: 字节:

2

3-5 6-8 控制字节 = 2

1

2

3-5

6-8 控制字节=3 1

控制字节 = 2,拒绝访问(PGN 支持但被拒绝) 组功能值(若适用)

保留给 CATARC 分配,置各字节为“FF16” 被请求消息的参数组编号(见上)

控制字节=3,无法响应(PGN 支持但是 ECU 忙无法立 刻响应。稍后重新请求数据) 组功能值(若适用)

为 CATARC 分配保留,这些字节应放 FF16 被请求消息的参数组编号(见上)

(1)

2 3-5 6-8

全局目标地址使对所有确认消息可以过滤同一个 CAN 标识符

图 9 确认 PGN 的定义

5.4.5 组功能

这种类型消息用于特殊功能组(如专用功能、网络管理功能、多包传输功能等)。每个组功能由其 PGN 识别,见图 10 和图 11。在数据结构中(一般是在数据域的第一个字节)定义功能。专用组功能和

传输协议在后续章节中详细解释。使用专用组功能,可以消除在传输专用消息时,不同制造商之间使用 CAN 标识符造成的冲突。必要时,也为使用专有消息的接收和辨识提供了一种方法。如果本标准中定 义的消息不够用,可以自行规定组功能的请求,ACK 和(或)NACK 机制。

使用 PGN 59904 请求(参见 5.4.2)能够检查目标地址是否支持某消息类型的特定参数组或组功能。 若支持,则响应设备发送确认 PGN,其中控制字节值为 0(肯定确认)或 2(拒绝访问)或 3(不能应 答)。若不支持,则响应设备发送确认 PGN,其中控制字节值为 1(否定确认)。PDU 格式和参数组其 他的参数组要正确地填写(参见 5.4.4) 注意,在本节每个定义中,术语“不支持”意味着该参数组不会被发送。不能使用这种方法决定一个设 备对接收到的 PG 是否作出响应。

参数组名称: 专用 A 定义: 这个专用 PG 使用目标地址特定的 PDU(PDU1)格式,允许制造

商将他们的专用信息定向到特定目标节点。各制造商决定如何使用 消息的数据域。使用专用信息由制造商决定,但应该遵循避免专用 信息超过整个网络信息的 2%的约束。

重复传输速率: 用户自定义 数据长度: 0 至 1785 字节(支持多包) 数据页: 0 PDU 格式: 239 特定 PDU: 目标地址 缺省优先级: 6 参数组编号: 61184(00EF0016) 字节: 1-8 制造商专用(见 5.1.2) 群功能的参数数据范围: 未定义

图 10 专用 A 的 PGN 定义

参数组名称: 专用 B 定义: 这个专用 PG 使用 PDU2 格式消息,允许制造商按需定义 PS(GE)

域内容。但应该遵循避免使专用信息超过整个网络信息的 2%的约 束。制造商决定消息数据域和 PS(GE)域的用法、消息数据长度。 因此,在传输时,两制造商可能使用相同的 GE 值而数据长度码不 同。信息响应者要区别此二者的不同。

重复传输速率: 用户自定义 数据长度: 0 至 1785 字节(支持多组) 数据页: 0 PDU 格式: 255 特定 PDU: 组扩展(制造商分配) 缺省优先级: 6 参数组编号: 65280 至 65535(00FF0016 至 00FFFF16) 字节: 1-8 制造商定义(见 5.1.2) 组功能的参数数据范围:

整车制造商定义该参数组的用法,允许每个零部件供应商和源地址的数据长度码不同。多 个源地址出于不同的目的,可能使用同一个专用B参数组编号(PGN=65280),所以使用该参 数组时务必小心。

图 11 专用 B 的 PGN 定义

5.4.6 请求 2

利用请求 2 参数组,请求者可以指定响应者是否使用传输 PGN51712。使用传输 PGN,响应者可 以把它准备的数据集报告给所有的设备(见 5.4.7)。在接收到与 PGN59904(正确格式化的传输 PGN) 请求的 PGN 相同的 PGN 时,包括响应设备在内的所设备都要正常报告,并报告每个设备的数据集。例 如,如果“使用传输 PGN”参数是“yes(01)”,响应中要包含所有已知与请求 PGN 相关的数据。如 果“使用传输 PGN”是 00,PGN 请求 2 与请求 PGN(59904)相同。请求 2 的响应在“使用传输 PGN” 等于 00 时不用“传输 PGN”来发送,与请求“PGN 请求”(也就是 PGN59904)完全相同。见下面图 12。表 D1(in0)中分配有请求 2 消息的参数的 SPN。

当某个设备准备报告关于多个设备的 PGN 和数据时,就要用到“请求 2”和“传输”PGN。例如 车辆标识,零部件的标识和软件标识。

对请求 2 的支持是可选的 参数组名字: 请求 2 定义: 用来向网络设备请求一 PGN,并详指明响应 者是否使用传输 PGN 重复传输速率: 根据使用者需求,一般推荐请求的发生速率 不多于 2 到 3 次/秒。如果设备支持请求 2, 当不支持被请求的参数组时,需要发送一个 NACK。 数据长度: 8 字节(支持多包) 0 数据页: 201 PDU 格式: 目标地址(全局或者特定) 特定 PDU: 6 缺省优先级: 数据组编号: 51456(00C90016) 字节 1-3: PGN 请求 特殊指令 字节 4: 8-3 位: 保留作 SAE 分配用 利用 PGN 传输来响应 2-1 位: (00=否,01=是,10=没定义,11=NA) 字节 5-8: 留作 CATARC 分配用

图 12 PGN 请求 2 格式

5.4.7 传输

作为请求 2(见 5.4.6)的响应,传输 PGN 提供了一种机制,用来报告给定 PGN 的多组数据集。“数 据集”的定义见图 13。对于给定 PGN 的多组数据集,要求每组数据集有一个长度,并可以用 GB/T×

×××.7 中定义的 4 字节名字来表示。这 4 个字节名字用来识别每个设备。在响应中,响应设备报告

的第一组数据集是和 PGN59904 相同的信息。如果设备只有一组数据集,响应时必须使用传输 PG。

当某个设备准备报告关于多个设备的 PGN 和数据时,就要用到“请求 2”和“传输”PGN。例如 车辆标识,零部件的标识和软件标识。

见下面图 13。表 D1(in0)在此信息中有 SPN 参数分配。 参数组名字: 传输 定义: 当“响应使用传输 PGN”置位时,用于响应 请求 2 的数据传输 重复传输速率: 当“响应使用传输 PGN”=01 时,响应请求 2 数据长度: 9 至 1785 字节(支持多包) 0 数据页: 202 PDU 格式:

特定 PDU: 缺省优先级: 数据组编号: 字节 1-3: 字节 4: 字节 5-8: 字节 5 位 8-4 目标地址(全局或者特定) 6 51712(00CA0016) 请求 2 来请求的 PGN 报告的关于设备识别的 PGN 的数据长度(如 标识的第 5 到第 8 字节 与 PGN 和数据相关的设备的标识。 这里的字节 5 到字节 8 是 GB/T××××.7 中定义的 4 字节名字 功能实例(位 8 是最高位) ECU 实例(位 3 是最高位) 功能(位 8 是最高位) 车辆系统(位 8 是最高位) 保留 竞争地址 工业组(位 7 是最高位) 车辆系统实例(位 4 是最高位) 数据域包含一个或更多个数据集。而一个数 据集包括“请求 2 请求的 PGN”,“设备标识” 和“请求 2 的数据请求的 PGN”。格式定义见 如下 位 3-1 字节 6: 位 8-1 字节 7: 位 8-2 位 1 字节 8: 位 8 位 7-5 位 4-1 字节 9-X 格式: a,b,c,d,b,c,d,b,c,d… a:当“传输模式”被置位,请求 2 请求的 PGN b:第一个数据集:连接 ECU 的标识和相关 PGN 数据的长度之和 长度=b+c+d c:与数据域 d 相关的 ECU 标识 d:针对特定 ECU 的被请求 PGN 的数据 b:第二个数据集:连接 ECU 的标识和相关 PGN 数据的长度之和 长度=b+c+d c:数与数据域 d 相关的 ECU 标识 d:针对特定 ECU 的被请求 PGN 的数据 ?? 例如:对于给定的车辆,发动机 ECU 知道拖车和挂车的 VIN 号。另外一个设备向全局 目标地址发出求 2,请求 VIN 并将“使用传输 PGN”设置成 01。发动机的响应是: 使用 BAM 传输“传输 PGN”,报告拖车和挂车的 VIN。 如果请求将“使用传输 PGN”设置成 00,响应将是: 使用 BAM 传输拖车的 VIN 但不用传输 PGN。 图 13 传输 PGN 格式 5.5 消息优先级

CAN 数据帧的优先级遵循 CAN 规范 2.0 版 B 部分。CAN 标识符的值决定了消息优先级。较小值 (29 位标识符均为 0)具有较高优先级,而最大的 CAN 标识符的优先级最低(29 位标识符均为 1)。 消息优先级在应用层中定义。 5.6 总线访问

当总线空闲时,任何节点都可以传送数据帧。若两个或两个以上节点要同时传送数据帧,总线访问 冲突用 CAN 数据帧的标识符通过基于竞争的仲裁来解决。仲裁机制保证无论消息还是时间节拍都不会 出错。具有最高优先级的帧取得总线访问权。

5.7 竞争仲裁

仲裁时,每个传送者对传输位的电平和总线上被监测的电平进行比较。若二者相等,则节点继续传 送。当发送“隐性”电平而监测到“显性”电平时,节点会失去仲裁,必须取消发送数据。当发送“显

性”电平而监测到“隐性” 电平时,节点则检测到一个位错(参见 CAN2.0 版本 B 部分)。 5.8 错误检测

错误监测有以下方法:

a. 15 位循环冗余码校验(CRC) b. 填充宽度为 5 的可变填充位

c. 帧格式检查 传送者对发送位电平和总线检测的位电平进行比较

有关错误检测的更多详细解释可参见 CAN 2.0 文档的第 2.1.1 部分中。

5.9 源地址和参数组编号的分配过程

共有两种格式的协议数据单元,PDU1 和 PDU2。参数组被明确分配为使用 PDU1 或者 PDU2 格式。 一旦为参数组分配了其中一种格式,则另外一种格式就不可分配给该参数组。如果一个参数组需要发送 到指定的目标地址,就必须使用 PDU1 格式。分配参数组时应当包含以下的特性:优先级、更新速度、 数据包的数据对于其他网络设备的重要性以及与该参数数据的长度。如申请分配新的源地址或参数组编 号,要填写申请表向 CATARC 申请。 图 4 是一个分配参数组编号的模板。其中,优先级一列用于为每个 PGN 的优先级分配一个缺省值。 针对每个 PGN,优先级域应可编程。这样,OEM 厂商在必要时可以调整网络。虽然可以申请任何一个 PGN,但极不赞成为那些已经属于周期性广播的消息提出 PGN 的分配申请。 只有当某消息的参数是

用来直接控制(命令)某个特定设备,就要为该消息分配一个需要带目标地

址的参数组编号。否则,应该选择不带目标地址的参数组编号,以使任何一个设备都能获取消息中的参 数。

源地址可以通过依次排列编号来分配,不需要考虑消息的优先级、更新速度或者重要性。 根据参数组编号和源地址申请表所要求的准则,参数组编号被依次分配在图 4 中的各个区。需要注 意的是,当重复率大于或等于 10 次/秒,不允许使用多包消息。 5.9.1 地址分配准则 在本标准中,未被分配的地址数目是有限的,因此必须有效地分配新的地址。在整

个系统中,可分

配的地址数目最大不能超过 256。因此,新的地址定义必须限于车辆中的重要功能,例如目前已定义地 址的发动机、传动系统、刹车系统、燃料系统等重要功能。其他需要在标准中获得地址分配的功能,都 应与目前已定义地址的适用范围相似,并且对于大部分使用者是有用的。

有些设备可能会使用可用的动态地址分配方案。在这种情况下,动态地址可以由服务工具来设置, 并且(或者)可以在网络上电时分配。使用动态地址分配方案特别要考虑到,并非所有的网络设备都支 持这种操作模式。

5.9.2 参数组分配准则 于本标准适用对象所需要的大量参数组相比,本标准中尚未分配的可用参数组

的数目是相当有限

的。本标准制定时已经考虑到根据特征设置参数组,这样可以避免大量使用参数组。在本标准中有三种 主要的通信方法,适当运用各种类型的通信方法,可以有效使用现有的参数组编号。这三种通信方法是: a. PDU1 格式(PS=允许指定目的地通信的目标地址)

b. PDU2 格式通信(PS=组扩展)

c. 使用两个预定义的专用参数组编号的专用通信 每种通信方法都有其适用场合。当同一消息必须发送到众多目标地址中的某一个时,需要使用指定 目标地址参数组。例如,本标准定义了一个转矩控制消息,要发送给一个发动机。如果有多个发动机时, 这个消息必须只发送给所期望的发动机。这时需要使用指定目标地址参数组并对已经分配了该参数组。

PDU2 格式通信应用于以下场合:

a. 从一个或多个源地址发送消息到一个目标地址 b. 从一个或多个源地址发送消息到多个目标地址

PDU2 格式通信不能用于发送消息到众多目标地址中的一个。 在本标准中,通过使用专用的参数组编号实现了第三种通信方法,专用通信。有一个参数组编号 被分配用于非指定目标地址专用通信,而另一个参数组编号被分配用于指定目标地址专用通信。此时可 以实现两种功能:(a)某个特定的源地址可以通过带有由用户定义 PS 域的 PDU2 格式(非指定目标地 址)发送专用消息;(b)在一个服务工具需要与某个控制器组中的某个特定目标地址进行通信这种情况 时,可以使用 PDU1 格式发送消息。例如,有一个发动机使用多个控制器,而且它所有的控制器都连接 在同一个网络上,现在它想要完成诊断任务。这时,需要使用指定目标地址的专用协议。

专用通信应用于以下两种情况: a. 在不需要进行标准通信的场合

b. 在进行专用信息通信很重要的场合 由同一制造商构造的节点之间的通信,大部分通信并不需要标准通信。这些通信信息对于网络上

其他设备来说一般是无用的。在这种情况下,可以使用专用参数组编号。 在准备分配参数组时,应当

依次考虑使用专用通信方法和 PDU2 格式。如果是进行专用信息的通

信,则应当用专用通信方法。如果通信的信息不通用,则应当用专用通信方法。如果信息通用,而且不 需要指定消息发送到某个特定节点,那么应该考虑采用 PDU2 格式的分配。最后,如果信息通用,但要 求指定发送到众多设备中的某一个,那么需要用指定目标地址并分配一个 PDU1 格式的参数组。 5.9.3 数据域的定义

由 CAN 系统中,最短的消息也需要全部使用数据域(全部 8 个字节)。除非消息对时间要求非常 苛刻,都应把相关的参数组合起来,占用数据域的 8 个字节。依照这一原则,可以保存参数组编号以备 以后分配使用。除非有特别需要,一般不允许定义未充分使用数据域的参数组。

5.10 传输协议功能 传输协议功能是数据链路层的一部分,它可再细分为两个主要功能:消息的拆装

和重组以及连接管 理。“发送者”(originator)指那些发出请求发送消息(RTS)的电控单元或设备。“响应者”(responder) 指那些发出应答发送消息(CTS)的电控单元或设备。 5.10.1 (消息)拆装和重组

长度大于 8 字节的消息无法用单个 CAN 数据帧来装载。因此,它们必须被拆分为若干个小的数据 包,然后使用单个的数据帧对其逐一传送。而接收方必须能够接收这些单个的数据帧,然后解析各个数 据包并重组成原始的信息。

5.10.1.1 数据包

CAN 数据帧包含一个 8 字节的数据域。由于组成长信息的单个数据包必须能被识别出来以便正确 重组,因此把数据域的首字节定义为数据包的序列编号。

每个数据包都会被分配到一个从 1 到 255 的序列编号。由此可知,最大的数据长度是(255 包×7 字节/包=)1785 个字节。

5.10.1.2 序列编号 序列编号是在数据拆装时分配给每个数据包,然后通过网络传送给接收方。接收方接

收后,利用这

些编号把数据包重组成原始信息。

序列编号从 1 开始,依次分配给每个数据包,直到整个数据都被拆装和传送完毕。这些数据包从编 号为1的数据包开始按编号的递增顺序发送。 5.10.1.3 (数据)拆装

消息过长是指无法用单个 CAN 数据帧装载全部的数据(例如,数据域长于 8 个字节的消息)。 考虑本协议的用途,过长的数据被认为是一个 9 字节及以上的字符串参数组。第一个数据传送包包 含序列编号 1 和字符串的头 7 个字节,其后的 7 个字节跟随序列编号 2 存放在另一个 CAN 数据帧中, 再随后的 7 个字节与编号 3 一起,直到原始信息中所有的字节都被存放到 CAN 数据帧中并被传送。

传送的每个数据包(除了传送队列中的最后一个数据包)都装载着原始数据中的 7 个字节。而最后

一个数据包的数据域的 8 个字节包含:数据包的序列编号和参数组至少一个字节的数据,余下未使用的 字节全部设置为“FF16”。

多包广播信息的数据包发送间隔时间为 50 到 200 毫秒(参考 5.12.3)。对于发送到某个指定目标地 址的多包消息,发送者将保持数据包(在 CTS 允许多于一个数据包时)发送间隔的最长时间不多于 200 毫秒。响应者必须知道这些数据包都具有相同的标识符。 5.10.1.4(数据)重组 数据包被顺续接收。按照序列编号的顺序把多包消息的数据包重新组合成一多字

节字符串。这个字

符串被作为长信息的应答传送给应用程序模块。

5.10.2 连接管理 连接管理是在特定目标地址传输时,用于处理节点间虚拟连接的打开、使用和关闭。虚

拟连接,是 指在网络环境中,为了传送一条由单个参数组编号(参考附录 D,图 C1 和图 C2)描述的长消息,在 两个节点间建立的临时连接。如果连接是一点到多点,则不提供数据流控制和关闭的管理功能。(参考 附录 D,图 C3)。 5.10.2.1 多包消息广播

长消息可能是广播消息而没有指定目标地址。如果某个节点要广播一条多包消息,它首先要发送 一条广播公告消息(BAM)。这条公告消息必须传送到全局目标地址,作为一个长消息预告发送给网络 上的节点。BAM 消息包含了即将广播的长消息的参数组编号、消息大小和它被拆装的数据包的数目。 准备接收该数据的那些节点需要分配好接收和重组数据所需的资源。然后,使用数据传输 PGN (PGN=60160)来发送相关的数据。

5.10.2.2 连接初始化 当某个节点传送一条请求发送消息给一个目标地址时,连接就开始了。请求发送消

息(RTS)包含

整个消息的字节数,要传送的消息包数,响应一个 CTS 能发送的最大数据包数,以及传送信息的参数 组编号。

节点一接到请求发送消息(RTS),就可以选择是接收连接或者拒绝连接。如果选择了接收连接, 响应者发送一条准备发送消息(CTS)。准备发送消息(CTS)包含了节点可接收数据包的数目,和它 想要接收的第一个数据包的序列编号。响应者必须确认自己有充足的资源来处理即将接收的这些数据 包。对于刚刚打开的连接,数据包的序列编号是 1。需要注意的是,准备发送消息(CTS)可以提出不 提供该消息的所有数据包。如果选择拒绝连接,响应者将发送一条放弃连接消息。连接被拒绝可以有很 多种原因,例如,缺少资源、存储空间等等。

当发送者(例如,RTS 设备)接收到来自响应者(例如,CTS 设备)的 CTS 消息时,就可以认为 发送者的连接已经建立了。在响应者成功传送了对一个 RTS 消息响应的 CTS 消息后,就可以认为响应 者的连接已经建立了。这些定义用于决定什么时候发送连接放弃消息以关闭连接。

如果响应者收到 RTS 消息并决定不建立连接,那么它应该发送一条放弃连接消息。这样可以让发 送者转移到一个新的连接而不必等到超时。

5.10.2.3 数据传输 当连接的发送者接收到准备发送消息(CTS)后,数据传输正式开始。其中有一种例

外的情况,就

是当节点发送了“广播公告消息”后开始数据传输,这时,不需要使用准备发送消息(CTS)。用于数 据传输的 PGN 将包含在每个数据包的 CAN 标识符域。数据域的首字节将存放数据包的序列编号。

如果消息传向指定目标地址,由响应者负责调整节点间的数据流控制。如果一个连接已打开,响应 者想即刻停止数据流,它必须使用准备发送消息(CTS)把它要接收的数据包数目设置为零。当数据流 传输需要停止几秒时,响应者必须每 0.5 秒(Th)重复发送一次准备发送消息(CTS),来告知发送者连 接没有中断。其他的数据域都设为 1(无关重要)。

5.10.2.4 连接关闭 在传输没有出错时有两种关闭连接的情形。第一种是连接到全局目标地址,第二种

是连到接指定目

标地址。在第一种情形下,接收完数据后将没有关闭连接的操作。见 5.10.3 和 5.10.3.4。在第二种情形 下,当接收到数据流的最后一个数据包时,响应者将发送一个消息结束应答(TP.CM_EndOfMsgAck) 给消息的发送者。这个信号是告诉发送者,连接被响应者关闭了。连接关闭时需要使用“消息结束应答 (TP.CM_EndOfMsgAck)”来释放连接,以供其他设备使用。 如果是连接到全局目标地址(例如,

BAM),响应者不允许使用“放弃连接”消息(TP.CM_Abort)。

见 5.10.3 和 5.10.3.4。如果是连接到指定目标地址,发送者或者响应者都可以在任何时候使用“放弃连 接”消息(TP.CM_Abort)来终止连接。可参阅 5.10.2.2 中关于为发送者和响应者建立连接的解释。例 如,如果响应者认为已经没有可用的资源来处理消息,那么它可以简单地通过发送放弃连接消息 (TP.CM_Abort)来放弃连接。当接收到放弃连接消息(TP.CM_Abort)时,所有已传送的数据包将被 丢弃。

(两方中的)任一方发生传输故障也会导致连接的关闭。例如,在收到上一个数据包后等待下一个 数据包(CTS 允许有更多)的时间间隔大于(T1)秒;发送一条 CTS 消息被后等待时间大于(T2)秒 (发送者发生故障);发送完最后一个数据包后等待 CTS 或者 ACK 消息的时间大于(T3)秒(响应者 发生故障);发送保持连接的 CTS(0)消息后等待下一条 CTS 时间大于(T4)秒,这些都将会导致关 闭连接发生。见附录 C 中的图 C1 和 5.12.3 节关于超时的部分。无论发送者还是响应者,由于某一原因 (包括超时)决定要关闭连接,它都应该发出一条放弃连接消息。

Tr=200 mS Th=500 mS T1=750 mS T2=1250 mS T3=1250 mS T4=1050 mS

根据这部分和那些在 5.10 下所有部分的定义,可以得出以下结论: 1.适用于广播公告消息(BAM)的连接关闭,包括: a. 在以下状况,可以认为连接被关闭,当发送者:

i) 发送了最后一个数据传输包

b. 在以下状况,可以认为连接被关闭,当响应者:

i) 接收到最后一个数据传输包 ii) 出现一次 T1 连接超时

2.适用于请求发送/准备发送消息的连接关闭,包括: a. 在以下状况,可以认为连接被关闭,即发送者:

i) 在完成整个 PGN 的数据传输时接收到 TP.CM_EndOfMsgAck 消息 ii) 因为任何原因发送了放弃连接消息(例如,由于一次 T3 或者 T4 的超时) iii)接收到放弃连接消息

b. 在以下状况,可以认为连接被关闭,当响应者:

i) 在完成整个 PGN 的数据传输后发送了 TP.CM_EndOfMsgAck 消息 ii) 接收到放弃连接消息

iii) 由于某种原因发送了放弃连接消息(例如,包括希望提早停止通信,由于一次 T1 或者 T2 的连接超时等等)

5.10.3 传输协议—连接管理消息

这种消息类型是用于建立和关闭连接,以及控制数据流。传输协议提供了以下 5 种传输协议连接管 理消息:连接模式下的请求发送,连接模式下的准备发送,消息结束应答,放弃连接,以及广播公告消 息。图 14 表示了在“传输协议——连接管理”的参数组定义中这些消息的使用格式。在表 D1(in 0) 中分配有该消息参数的 SPN。

参数组名称: 定义: 传输协议——连接管理(TP.CM) 用于 9 字节及以上的数据的参数组的传输。5.10.3.1 和 5.10.3.5 节中 包括的每个具体消息的定义也属于传输协议的一部分。 重复传输速度: 由传送的参数组编号决定 数据长度: 8 个字节 0 数据页位(DP): 236 PDU 格式(PF): 目标地址 特定 PDU(PS): 7 默认优先级: 参数组编号(PGN): 60416(00EC0016) 本参数组功能所使用的参数范围: 控制字节: 0-15,18,20-31,33-254 保留给 SAE 分配 整个消息大小的字节数: 9 到 1785(2 字节),0 到 8 和 1786 到 65535 禁用 全部数据包数: 2 到 255(1 字节),0 禁用 数据包的最大值: 2 到 255(1 字节),0 到 1 禁用 可发送的数据包数: 0 到 255(1 字节) 下一个要发送的数据包编号: 1 到 255(1 字节),0 禁用 序列编号: 1 到 255(1 字节),0 禁用 连接模式下的请求发送(TP.CM_RTS):指定目标地址 1 字节: 控制字节=16,指定目标地址的请求发送(RTS) 2,3 整个消息大小的字节数 4 全部数据包数 5 保留给 SAE 设定使用,该字节应设为 FF16 6-8 打包消息的参数组编号 6 打包消息的参数组编号(参数组编号的 LSB,高位在位 8) 7 打包消息的参数组编号(参数组编号的第二字节,高位在位 8) 8 打包消息的参数组编号(参数组编号的 MSB,高位在位 8) 连接模式下的准备发送(TP.CM_CTS):指定目标地址 1 字节: 控制字节=17,指定目标地址的准备发送(CTS) 2 可发送的数据包数 3 下一个要发送的数据包编号 4,5 保留给 SAE 设定使用,该字节应设为 FF16 6-8 打包消息的参数组编号 消息结束应答(TP.CM_EndofMsgAck):指定目标地址 1 字节: 控制字节=19,消息结束应答 2,3 整个消息大小的字节数 4 全部数据包的数 5 保留给 CATARC 设定使用,该字节应设为 FF16 6-8 打包消息的参数组编号 放弃连接(TP.CM_Abort):指定目标地址 1 字节: 控制字节=255,放弃连接 2-5 保留给 CATARC 设定使用,该字节应设为 FF16 6-8 打包消息的参数组编号 广播公告消息(TP.CM_BAM):全局目标地址 1 字节: 控制字节=32,广播公告消息(BAM) 2,3 整个消息大小的字节数 4 全部数据包的数

保留给 CATARC 设定使用,该字节应设为 FF16 打包消息的参数组编号 图 14 传输协议的消息格式 5.10.3.1 连接模式下的请求发送(TP.CM_RTS)

TP.CM_RTS 消息用于通知一个节点,在网络上有另一节点希望和它建立一个虚拟连接。在 TP.CM_RTS 消息中,源地址域设置发送节点的地址,目标地址段设置所期望的接收节点的地址,余下 的字段根据将要发送的参数组编号进行适当设置。

该消息的第 5 个字节允许发送者限制响应者准备发送的数据包数。见附录 D 图 C4 和图 C5。响应 者遵从这个限制就可以确保发送者重新发送无论因何种原因造成响应者没有收到的包。

如果接收到来自同一源地址的关于相同 PGN 的多个 RTS 消息,那么就要丢弃以前的 RTS,采用最 新的 RTS。在这种特殊情况下,无需为那些被丢弃的 RTS 消息发送放弃连接的消息。

TP.CM_RTS 消息只能由发送者发送。

5.10.3.2 连接模式下的准备发送(TP.CM_CTS)

TP.CM_CTS 消息用于响应请求发送消息。它通知对方节点,它已经准备好接收一定数量的长消息 数据。准备发送的长消息数据的总量不应超过发送者的 TP.CM_CTS 消息第 5 字节的值。

对于一个已经建立的连接,如果收到多个 CTS 消息,就要关闭连接。如果是发送者放弃连接,它 就要发送放弃连接消息。

响应者只有在已经接收到最后一个来自于前一个 CTS 消息的数据包,或者等待超时,才发送下一 条 CTS 消息。

如果在连接尚未建立时接收到 CTS 消息,那么该消息将被忽略。 CTS 消息控制数据流,另外,在确认 CTS 消息数据包编号之前先要确保数据包被正确接收。因此, 如果前一个 CTS 的信息被破坏,就应该先为被破坏的信息发送一条 CTS 消息,然后再继续发送队列中 的下一个数据包。

TP.CM_CTS 消息只能由响应者发送。

5.10.3.3 消息结束应答(TP.CM_EndofMsgACK)

TP.CM_EndofMsgACK 消息是由长消息的响应者传送给消息的发送者,表示整个消息已经被接收并 正确重组。在最后一个数据传输完成后,响应者可以不马上发送 TP.CM_EndofMsgACK 消息保持连接。 这样,在需要时响应者可以获得重发的数据包。

如果发送者在最后的数据传输之前接收到消息结束应答,那么发送者将忽略这条应答消息。 消息结束应答的发送,向发送者表示长消息已被接收并正确重组。 TP.CM_EndofMsgACK 消息只能由响应者发送。 5.10.3.4 放弃连接(TP.Conn_Abort)

TP.Conn_Abort 消息有两个用途:第一,虚拟连接中的任一节点在没有完成整个消息的传输时关闭 连接;第二,阻止启动一个连接。

当一个节点接收到连接模式下的请求发送消息时,它必须确定是否具有充足的可用资源来处理这个 连接将要传输的消息。例如,如果设备必须从系统的堆中获得存储空间,那么它就不能宣称有足够的资 源接收整个消息;或者,设备正在处理其他占用大量处理器资源的任务,以致无法处理长消息的传输。 在这些情况下,即使连接尚未建立,也可以发送放弃连接消息。这样可以使发送者无需先等到超时就可 以尝试别的虚拟连接。

对于发送者或响应者,在数据传输完成之前,出于包括超时在内的任何原因,决定关闭连接时,都 要送一条放弃连接消息并说明放弃连接原因。 值 1 2 放弃连接原因(R) 描述 已经存在于一个或多个连接管理会话,不能支持更多的连接管理会话 系统资源被另一任务占用,此连接管理会话被终止 表 6 5 6-8

3 4-250 251-255 发生超时,本 TP.Conn_Abort 用于关闭会话 为 CATARC 分配保留 由 GB/T××××.5 定义 一般情况下,发送者(例如,RTS 节点)在接收到发自 CAN 通信协议设备的放弃连接消息后会马 上停止传输数据。如果不能,停止传送数据包的过程中不能超过发送 32 个数据包的时间并不能超过 50 毫秒。在发送或接收了放弃连接消息后,必须忽略所有已接收相关的数据包。TP.Conn_Abort 消息可以 由发送者或者响应者发送。

5.10.3.5 广播公告消息(BAM)

TP.CM_BAM 消息用于通知网络上所有节点将要广播一条长消息。它定义了要发送消息的参数组和 字节数。发送 TP.CM_BAM 消息后,发送包含拆装好的广播数据数据传送消息。

TP.CM_BAM 消息只能由发送者发送。 5.10.4 传输协议—数据传送消息(TP.DT)

TP.DT 消息用于与同一个参数组相关的数据通信。它是多包消息传送中的单个数据包(见图 11)。 例如,通信时,一条长消息为了被分割成 5 个数据包,就有 5 个 TP.DT 消息。附录 D 列举了 TP.DT 消 息使用的例子。

TP.DT 消息只能由发送者发送。

传输协议——数据传送(TP.DT) 用于有 8 字节以上数据的参数组的传送。 由传送一个参数组决定 8 字节 0 235 目标地址(对于 TP.CM_BAM 数据传送使用全局地址(DA=255)) (对于 RTS/CTS 数据传送不允许用全局地址) 7 默认优先级: 参数组编号: 60160(00EB0016) 图 15 传输协议—数据传送消息(TP.DT) 本参数组功能所使用的参数范围: 序列号 1-255(1 字节) 1 字节 序列号 2-8 消息包数据(7 字节)。注意多包参数组的最后一个包 可能不足 8 个字节数据。没使用的字节设为 FF16 5.10.5 连接的限制 如果一个节点不能处理其它的会话通信,就应该拒绝其它节点的建立连接要求。

同样,也必须拒绝 对于来自同一个源地址,发往同一个目标地址的 RTS 消息。出现这些情况时,可以发送放弃连接消息 拒绝新的会话。这样,设备无需等待超时就可以转移到一个新的连接。

5.10.5.1 节点必须支持的连接数目和类型 网络上的每个节点每次可以发起一个给定目标地址的指定

目标地址连接传送。这是因为 TP.DT 消 息只包含要传送数据的源地址和目标地址,而非 PGN 值。 在一个指定时刻,一个发送者只能发送一个

多包 BAM 消息。这是因为 TP.DT 消息不包含目前的

PGN 值或者连接标识符。但是,响应者(例如,本例中的接收设备)必须能识别来自多个不同发送者 的多包消息,接收时不能搞混。

一个节点必须能够支持同时来自于同一个源地址的一个 RTS/CTS 会话和一个 BAM 会话。因此, 响应者必须用这两种传输协议消息的目标地址来正确区分它们。其中一种传输协议消息使用全局目标地 址,另一种消息使用指定目标地址。因为 TP.DT 消息不包含目前的 PGN 值和连接标识符,所以只能通

参数组标称符: 定义: 重复传输速度: 数据长度: 数据页位: PDU 格式: 特定 PDU 段: 过目标地址来区分这两种消息。

不管一个节点能不能够支持多个同时发生的传输协议会话(RTS/CTS 与/或 BAM),它都必须确保 来自同一源地址但带有不同目标地址的 TP.DT 消息能够被区别开来。接收方必须使用目标地址和源地 址以确保消息的数据接收正确。 5.10.5.2 传输协议的使用

制定传输协议是为了传送数据在9字节或以上的 PGN 提供一种机制(见 5.2.7.2)。对于一个定义为 多包的 PGN 消息,在特殊情况下要传送少于 9 个字节的消息,就应该使用一个 DLC 被设为 8 的单个 CAN 数据帧来发送(见 5.2.7.1)。 5.10.5.3 并发 PGN 接收

一些特定的 PG 可能当它们少于或等于 8 个字节时,会使用非传输协议的形式来发送,而当它们大 于 8 个字节时,则使用传输协议的形式来发送。也有可能同一 PG 的两种形式同时进行发送。

需要注意的是,使用非传输协议形式的 PGN 不是会话,所以发送该类消息不会关闭同一个使用传 输协议形式的 PGN 消息的发送。 5.11 PDU 处理所需的条件

PDU 的处理需要有特定的过程。在附录 A 中描述了建议使用的解释 PDU 的流程。附录 B 列举了 使用消息类型和 PDU 格式的例子。

当数据链路使用达到 100%的时候,设备必须有足够快的速度来处理数据链路的消息,以避免数据 丢失。这也就是说,如果在低使用率的情况下存在背对背消息传送,那么每个设备都必须在这种背对背 消息传送的环境下,有足够快的速度处理消息,以免丢失数据。这里所指的有足够快的速度处理消息, 并不意味着需要对消息马上做出响应,而是指新消息的处理不能超前于前一条消息的处理。 5.12应用注解

5.12.1 高速数据更新

当遇到数据的更新速度很高,要求在很短的时间做出反应时,如果可能的话,允许使用基于硬件的 消息过滤。

5.12.2 请求调度 如果正在准备请求发送的消息在请求之前已经被接收到了,那么这个请求调度应该被

取消。换言 之,如果在请求调度之前的“50 毫秒”消息已经被接收了,那么就不再发出请求。被推荐用于广播的 参数组不应该被提出请求。但推荐使用的广播时间超过特殊需求时,可以例外。 5.12.3 设备响应时间和默认超时

所有被要求作出响应的设备,必须要在 0.20 秒(Tr)内做出响应。所有等待响应的设备在放弃或 重试前必须等待至少 1.25 秒(T3)。这些时间确保了所有由于总线访问或消息传送经过桥接器的延时时 间不会导致不必要的超时。对于具体的应用场合,可以根据需要使用不同的时间值。例如,高速控制消 息希望等待响应的时间为 20 毫秒。必要时可通过重排缓冲消息来实现更快的响应。对于如何缩短响应 时间没有限制。

对于发送至指定目标地址的多包消息,数据包之间的时间间隔是 0 到 200 毫秒。这意味着可能产生 背对背消息并且它们的标志符相同。使用 CTS 机制可以确保数据包之间有指定的时间间隔。多包广播 消息中,数据包之间所需要的时间间隔是 50 到 200 毫秒。50 毫秒的最短时间可以保证响应者有时间从 CAN 硬件中收取数据。这时,响应者应使用 250 毫秒的超时(提供 200 毫秒的时间间隔余量)。

a. 在桥接器中的最大传输延迟时间是 50 毫秒 桥接器的总数=10(例如,

1 拖车+5 挂车+4 台车=10 桥接器) 在一个方向上,总的网络延迟时间为 500 毫秒 b. 请求重试的次数 = 2(共有 3 次请求),这包括使用 CTS 消息请求数据包的重发 c. 有 50 毫秒的超时余量 附录 D 中,图 C1 和 C3 有定时要求的定义。图 C1 中的时间值是在假设有 10 个桥接器的最坏情况

下计算出来的。接收方的超时被定义为一个时间值,传送方传输时间被指定为小于或等于这个时间值, 需要注意的是,发送者和响应者分别有自己的传输和接收时间要求。

5.12.4 必需的响应

对于全局地址的请求要求包括请求者在内的拥有被请求 PG 的设备做出响应。但不允许对全局的请 求作确认应答。

如果一个设备在发送请求(例如,“地址请求”)中使用全局目标地址(DA=255),而它又有被请求 的数据,那么也应该给自己发送一个响应。因为这时要求所有的设备都做出响应。因为如果提出发送请 求的设备自己没有做出响应,那么其他网络设备会对所请求的信息做出错误结论。 5.12.5 指定或全局目标地址的 PGN 的传输 大部分时候,总是倾向于

周期性地发送广播 PGN 到全局目标地址。 5.12.6 CTS 中推荐的数据包数

在正常的车辆运行期间,建议把每个 CTS 中可发送的数据包最大数目设置为 16。

附录 A

(资料性附录)

PDU 处理过程—典型的接收流程

A.1 接收中断

当微处理器通过 CAN 芯片接收到消息的时候,为了要解析消息并决定是否保存消息和保存在哪里, 需要完成若干个测试。表示优先级的三位只能用于总线仲裁,因此,他们不能被接收设备使用。还需要 注意的是,如果指定设备可以完成多种功能,那么它可能有多于一个的地址(见图 A1)。 IF PGN=请求 PGN AND 目标地址是指定的 ;指定目标的请求 THEN

IF DA=被分配的地址(目标地址) THEN

把 4 字节的 ID 和 3 字节的数据包存在请求队列中

IF PGN=请求 PGN AND 目标地址是全局的 ;全局目标的请求 THEN

把 4 字节的 ID 和 3 字节的数据包存在请求消息队列中 IF PF<240 THEN

IF DA=全局地址 THEN ;PDU1 格式(DA=全局地址)

用跳转表查询需要的 PGN 值 AND IF SA=指定需要的 ID THEN

把 8 字节的数据保存到专用的缓冲区 ELSE

把 12 字节的消息(ID 和数据)保存到循环队列中

ELSE(DA=指定地址) ;PDU1 格式(DA=指定地址)

用跳转表查询需要的 PGN 值 AND IF SA=指定需要的 ID THEN

把 8 字节的数据保存到专用的缓冲区

ELSE

把 12 字节的消息(ID 和数据)保存到循环队列中

IF PF>=240 THEN ;PDU2 格式

用跳转表查询需要的 PGN 值 AND

IF SA=指定需要的 ID THEN

把 8 字节的数据保存到专用的缓冲区 ELSE

把 12 字节的消息(ID 和数据)保存到循环队列中

图 A1 典型的接收流程

图 C5 数据传送不能利用 RTS 数据包的最大数的能力

附录 D

D.1 SPN 分配

表 D1 是 SPN 的分配。 行 数 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24 25. 26. 27. 28. 29. 30 31. PGN 或别的参数 PGN59904 请求 PGN59392 应答 (资料性附录)

SPN 参数分配(R)

表 D1 SPN 用法(R) SPN 名字 SPN 数字 2SPN 位 2540 参数组(RQST) 2541 控制位(ACKM) 2542 组功能值(ACK) 2543 参数组编号(ACK) 2544 功能组值(NACK) 2545 参数组编号(NACK) 2546 功能组值(NACK_AD) 2547 参数组编号(NACK_AD) 2548 功能组值(NACK_Busy) 2549 参数组编号(NACK_Busy) PGN61184 2550 厂商特别信息 专用 A (PropA_PDU1) 2551 用作厂商自定义 PGN65280 至 65535 (PropB_PDU2) 专用 B 2574 PGN51456 请求 2 参数组编号(RQST2) 2575 用传送模式 PGN51712 传送 请求消息的参数组编号(XFER) 2552 据报告的 PGN 的数 据长度 2553 (XFER) 2554 目前的报告器件的简称 2555 传送数据 2556 PGN60416 传输协议- 控制字节(TP.CM) 连接管理 TP.CM_RTS 整个消息的大小(TP.CM_RTS) 2557 数据包的总数(TP.CM_RTS) 2558 2559 最大数据包的编号 2560 数据包消息的参数组编号 TP.CM_CTS 2561 能被发送的数据包数 2562 下一个被发送的数据包编号 数据包信 息的参数 组编号 2563 (TP.CM_CTS) TP.CM_EndofMsgACK 整 个 消 息 的 大 小 2564 (TP.CM_EndofMsgACK) 2565 全部数据包数 数据包消 息的参数 组编号 2566 (TP.CM_EndofMsgACK) TP.Conn_Abort 2570 放弃连接的原因 数据包消 息的参数 组数目 2571 24 8 8 24 8 24 8 24 8 24 64 至 14280 64 至 14280 24 2 24 8 32 72 至 14216 8 16 8 8 24 8 8 24 16 8 24 8 24

(TP.Conn_Abort) 32. TP.CM_BAM 16 整个消息大小(TP.CM_BAM) 2567 33. 8 全部数据包数(TP.CM_BAM) 2568 34. 24 数据包消 息的参数 组编号 2569 (TP.CM_BAM) 35. PGN60160 传输协议— 数据包序号 2572 8 —数据传输 36 2573 包数据(TP.DT) 72 至 14272 2 在此栏的数字表示了被 SPN 识别的数据项的位的多少。因为有些项少于一个字节,所以以位作为 单位。

本文来源:https://www.bwwdw.com/article/rt6o.html

Top