前言
本系列SAE推荐操作规程是由卡车及客车电子电气委员会所属的卡车及客车控制及通信小组委员会制定的。该小组委员会的目标是针对电控单元的需求、设计和使用,提交信息报告、制定推荐操作规程。这些电控单元在汽车部件之间传递着电子信号和控制信息。本规程的使用不限于卡车和客车应用,其对于其他的应用也可以提供直接的支持,正如已在建筑及农业设备和固定式的动力系统。
本推荐操作规程的最终目标是形成工业标准,因此可能为适应实际应用和技术进步作出经常性的调整。
本推荐操作规程中描述的控制局域网(Controller Area Network,CAN)协议是博世公司(Robert Bosch GmbH,Bosch)的知识产权。博世将给予所有要生产或设计控制局域网电控单元的企业一个证书。只有包含了控制局域网协议的集成芯片或软件的制造商需要办理版权证书的手续,对控制局域网协议的使用并不需要申请证书。有关证书授权的信息和典型应用可以在下述地址获得:
Robert Bosch GmbH
Attn: Licensing Department
PO Box 106050
D-70049 Stuttgart
Federal Republic of Germany
本推荐操作规程的制定是作为在J1708、J1587和J1922推荐操作规程中所完成工作的延续。但J1939系列的推荐操作规程相比上述早期文件提供了更高的性能。
1 目标
本推荐规程供轻型、中型或重型的车辆或者合适的使用车辆派生部件(如发动机组)的固定设施使用。涉及的车辆包括(但不限于):卡车及其拖车;建筑设备以及农业设备和器具。
本推荐规程的目的是提出一个电子系统间的开放互联系统。即通过提供一个标准的框架使电控单元(Electronic Control Units,ECU)之间可以实现相互通信。
1.1 开放程度
一个J1939的网络开放到这样一种程度,即两个遵循同一个J1939/0X文件的电控单元可以通过该网络连接以及彼此通信而不需要实现额外的功能接口。J1939/0X文件描述了某种特定类型的应用,典型的情形是代表了与其相关的一个特定的工业,如农业机械或重型卡车。遵循不同J1939/0X的电控单元之间有可能不能进行直接的相互通信,并且它们的混用在有些情况下有可能引起整个网络的工作失常或完全崩溃。
1.2 执行验证
目前并没有一个流程来测试、验证或正式批准使用J1939网络的电控单元。委员会希望每个开发者都能按照本推荐规程的宗旨,以及遵循本推荐规程的相应约定来设计他们的产品。在J1939/11和J1939/21中对针对本规程的自我验证做出了规定。委员会希望在将来能够定义并实现用来测试新产品与所有适用J1939文件的完全兼容性的流程。在此之前,特定产品对本规程的执行程度将只能作名义上的判断。针对本规程的任何部分的使用或解释的疑问都应该被提交到SAE控制和通信小组委员会来进行决议。
2 参考
2.1 出版物
ISO 7498 信息处理系统——开放系统互连——基本参考模型
ISO 11898 路面车辆——数字信息交换——控制局域网(高速),1992年12月
ISO 11992 路面车辆——牵引车辆或被牵引车辆的电气连接——数字信息交换(第
1、2、3部分)
SAE J1213 汽车电子术语表
SAE J1708 重型汽车微机系统串行数据连接的推荐操作规程
SAE J1587 重型汽车微机系统电子数据连接的推荐操作规程
SAE J1922 高速公路中型或重型柴油车辆的电子控制设备的传动控制接口
SAE出版物可在SAE,400 Commonwealth Drive, Warrendale, PA 15096-0001获得。ISO出版物可在ANSI,11 West 42nd Street, New York, NY 110036获得。
2.2 定义及缩写
本文件中的定义将取代SAE J1213中相应的定义。SAE J1213中的定义在其他地方是完全适用的。
2.2.1 定义
应答(Acknowledgement,ACK)—— 确认所要求的动作已经被理解并完成;
地址(Address) —— 定义消息的源节点(或在适用情况下为目的节点)的一个(或一些)8位域;
仲裁(Arbitration)—— 一个或多个ECU在获取对共用总线的访问权时解决冲突所使用的过程;
位填充(Bit Stuffing)—— 一个被用来保证发送或接收消息具有最小1-0跳变并使CAN数据帧中的比特流能够正确的再同步的处理方式。更详细的讨论参见CAN的说明;
桥接器,桥路(连接器)(Bridge)—— 两个J1939网段之间存储并转发消息的设备。它保证不同网段间介质、电器接口和数据传输率的转换。桥接器两端的协议和地址空间保持不变,但请注意为了尽可能减小各网段总线的负载,桥接器可能会选择性的过滤掉某些通过它的消息;
总线(Bus)—— 见网段;
CAN数据帧(CAN Data Frame)—— 组成传送数据的CAN协议帧所必需的有序比特流,以帧起始(SOF)开始以帧结束(EOF)结尾;
循环冗余校验(Cyclic Redundancy Check,CRC)—— 一种错误控制算法。这里使用了15位的CRC来检测传输错误。对于k比特的消息或帧,发送器产生一个n位帧检测序列。这样由k+n位组成的结果帧对这个预先定义的数就是可分的。接收器按该数对收到的数据进行除法运算,若没有余数则可认为没有错误发生;
数据域(Data Field)—— CAN数据帧中包含应用层(文档J1939/7X)定义的0-64位数据;
数据页(Data Page)—— CAN数据帧的标志符中用来在两页参数群编号中选择其中一页的一个比特。它为参数群编号将来的扩展提供了可能。它也是用来确定标明CAN数据帧中的数据域的参数群编号的各个域之一;
目标地址(Destination Address,DA)—— 用来指出要接收J1939消息的ECU的29位CAN标志符中的特定协议数据单元域;
设备(Device)—— 具有一个或多个ECU和网络连接的实际的部件;
电(子)控(制)单元(Electronic Control Unit,ECU)—— 可以发出J1939消息的计算机化的电子装置;
帧结束(End of Frame,EOF)—— 标志CAN数据帧结束的7位的域;
扩展帧(Extended Frame)—— CAN2.0规范中定义的使用29位标志符的CAN数据帧;
帧(Frame)—— 形成整个消息的一系列数据位。帧又被划分成几个域,每个域包括了预定义类型的数据。参见CAN数据帧;
功能(Function)—— 具有一个或多个连接在J1939总线网段上的ECU的车辆系统的能力。功能的值在64位ECU名称中的8位功能域中被定义;
网关(Gateway)—— 该设备使数据可以在两个使用不同协议或消息组的网络中传输,网关提供了在从一个网段向另一个传送消息时将参数重新包装到新的消息中的手段;
群扩展(Group Extension(GE))——这是J1939 CAN数据帧PDU中的一个域,是决定参数群编号时必不可少的信息;
标识符(Identifier)——CAN仲裁域的标识部分;
空闲状态(Idle)——没有节点传输或试图传输数据时的CAN总线状态;
装置(Implement)——由一个或多个电控单元组成的机构,可以附在车辆上或脱离车辆单独使用;
介质(Media)——网络中在电控单元间承载电气传输(或相似通信方法)的物理实体。对J1939/11而言,介质是屏蔽双绞线;
消息(Message)——“消息”是指一个或多个拥有相同参数群编号的“CAN数据帧”。例如,在总线上传送的编号相同的和参数群信息可能包含多个CAN数据帧;
多组消息(Multipacket Messages)——一种J1939消息,在当前拥有相同参数群编号的所有数据需要多个CAN数据帧来传送时使用。每个CAN数据帧拥有相同的标识符,但在每个信息包中包含不同的数据;
名称(NAME)——被用来标识电控单元主要功能及其实例的8字节数值。一个设备的名称必须是唯一的,在当前车辆网络中不可以有两个设备共享同一个名称;
节点(Node)——将电控单元与网络相连的硬件。一个节点在网络中可能拥有多个地址;
非易失性(Non-Volatile)——在任何情况甚至断电情况下,保持可变内存数据的能力。该功能被用于电控单元的地址和名称等在使用过程中会更改的重要数据。只读存储器从技术上来讲具有非易失性,但因为其数据无法在使用过程中更改,因此不是本文所推荐的;
拒绝应答(Negative-Acknowledgment(NACK))——该应答表明,某个设备不能理解一个消息或者无法实现一个请求操作;
信息包(Packet)——一个CAN数据帧就是一个信息包。信息包还可以是,用一个CAN数据帧就可以包含被传送的全部参数群的消息;
参数群(Parameter Group(GP))——在同一个J1939消息中传送的参数集合。参数群可以包括:命令、数据、请求、应答和拒绝应答等。不论是在一个单信息包消息还是在多组消息中,参数群都被看作数据。因为参数群不必包含源地址,因此任何设备都可以送出参数群;
参数群编号(Parameter Group Number(PGN))——3字节,24位,包含了保留位、数据页、PDU格式和群扩展域等信息。参数群编号唯一的标识了一个确定的参数群;
协议数据单元格式(PDU Format(PF))——29位标识符中一个8位数据,表明了协议数据单元的格式,并且被部分或完全的用来为参数群提供标志。该数据在参数群中还被用来标注CAN数据帧的数据域;
特定协议数据单元(PDU Specific(PS))——29位标识符中一个8位数据,其具体数据由协议数据单元格式的值决定。该数据可能是一个目标地址(DA),还可能是群扩展(GE)信息。该数据在参数群中也被用来标注CAN数据帧的数据域;
1型协议数据单元(PDU1 Format)——用在将被发送到指定目标地址(DA)的消息中。特定协议数据单元(PS)中包含了目标地址(特定或全局);
2型协议数据单元(PDU2 Format)——该格式用来发送被使用群扩展技术标注的信息。这种协议数据单元不包含目标地址。在该格式下,特定协议数据单元(PS)中包含的是群扩展信息;
首选地址(Preferred Address)——在申请地址时,电控单元首先尝试使用的地址。首选地址由委员会分配;
优先权(Priority)——在标识符中占一个3比特区域,设置了传输过程中的仲裁优先级。最高优先级为0,最低优先级为7;
协议数据单元(Protocol Data Unit(PDU))——一个协议数据单元指一个J1939特定CAN数据帧格式;
远程传输请求(Remote Transmission Request(RTR))——CAN协议的特性之一就是允许一个电控单元请求其他电控单元发送消息。该CAN特性没有在J1939中使用,取而代之的是另一种专门为J1939设计的请求机制;
中继器(Repeater)——一种可以使来自于一个媒体段的数据信号再生并送到另一个媒体段的设备。该设备允许在总线上接入更多电气负载(设备),或者连接另一种类型的媒介(物理层扩展)。在中继器两端的速度(数据传输速率)、协议(数据链路层)和地址空间应该是相同的。J1939要求,重新生成数据信号产生的延时相对于每位数据的传输都要保持在一个很小的比率以下;
保留位(Reserved Bit)——SAE在29位标识符中为将来定义而保留的一个数据位。同时也是标注CAN数据帧中数据域的参数群编号的一个域;
路由器(Router)——一种容许拥有不同地址空间、不同数据传输速率和不同媒体的网段进行消息交换的设备。该设备使得每个网段有最小的总线负载,同时可以从远程网段获得关键消息。跨越各网段的协议要保持一致。注意为了把消息从网段1上的地址X翻译并路由到网段2上的地址Y,路由器必须要拥有对应的查询表;
网段(Segment)——指当前网络的物理介质和网络中没有通过网络互连电控设备连接的节点。在网络中同一段内的电控单元可以同时检测到信号(例:在不同的网络电气部分间没有中间设备)。网络的不同段可以通过网络互连电控单元,包括中继器、桥接器和路由器等,连接在一起;
源地址(Source Address(SA))——在29位标识符中表示消息来源的8位数据域。源地址域中保存了发出消息的电控单元的地址;
标准帧(Standard Frame)——符合CAN 2.0b规范,采用11位标识符的CAN数据帧;
帧起始(Start of Frame(SOF))——CAN数据帧中用来表示帧开始的第一个数据位;
子网(Subnetwork)——当有多个段的被使用的时候,在一个特定的SAE J1939段内的网络活动(消息传递)。子网可以包括:牵引车、 拖车、装置和刹车系统。注意,子网可由桥接器、路由器或网关分离开,以减少网段内的总线通信量。综上,SAE J1939车辆网络由各种子网构成;
车辆(Vehicle)——在大多数应用中,可以驱动自己和一个或多个J1939段的机械。车辆由连接在一起的一个或多个车辆系统装配而成;
车辆系统(Vehicle System)——车辆的组成部分,或者与车辆的组成部分相似的部分,包括一个或多个可以连接或从车辆上断开的J1939段。一个车辆系统可由多个功能组成,而且拥有多个连接在车辆系统中J1939段上的电控单元。
2.2.2 缩写
ABS(Antilock Braking System)防抱死系统
AP(Accelerator Pedal)加速踏板
ASR(Acceleration Slip Regulation (Traction Control))加速轮胎滑差率调节(驱动力控制)
ASCII(American Standard Code for Information Interchange)美国信息交换标准码
CAN(Controller Area Network)控制器局域网
Con-Ag(Construction-Agriculture Industry)建筑业-农业
DLC(Data Length Code)数据长度码
ID(Identifier)标识符
IDE(Identifier Extension Bit)标识符扩展位
LLC(Logical Link Control)逻辑链路控制
LSB(Least Significant Byte or Least Significant Bit)最低有效字节或位
MAC(Medium Access Control)介质访问控制
MID(Message Identifier)消息标识符
MSB(Most Significant Byte or Most Significant Bit)最高有效字节或位
NA(Not Allowed)禁用
NA(Not Available)无效
OSI(Open System Interconnect)开放式系统互联
P(Priority)优先级
PDU(Protocol Data Unit)协议数据单元
PID(Parameter Identifier)参数标识符
PS_GE(PDU Specific - Group Extension)特定协议数据单元_群扩展
PS_DA(PDU Specific - Destination Address)特定协议数据单元_目标地址
PTO(Power Take-Off)动力输出装置
R(Reserved)保留的
SID(Subsystem Identifier)子系统标识符
SLOT(Scaling, Limits, Offset, and Transfer Function)定标、界定、偏移和传输功能
SPN(Suspect Parameter Number)可疑参数编号
SRR(Substitute Remote Request)代用远程请求
un(Undefined)未定义
2.3 开放系统互连模型参考:
开放系统互连模型是由国际标准化组织在1984提出的一个计算机通信体系的模型。如图1所示OSI模型由若干层次组成。分层的目的是使得协议的开发可以根据所需各层的功能来进行。J1939就是根据此模型分层构建起来的。虽然针对OSI模型的每层都有对应的J1939文件,但并不是所有的层次都是由各自的J1939文档来明确界定的。那些没有对应文档描述的层次由包括在其他文档中的功能来支持。
各层的功能描述如下:
- 物理层 – 特定结构的比特流在物理媒介上的传输;处理访问物理媒介的机械、电气、功能和时序特性。
- 数据链路层 – 提供通过物理层的可靠信息传输;通过加入必需的同步、错误控制、时序控制及流量控制来发送数据块(即帧)。
- 网络层 – 为高层屏蔽系统间连接时所使用的数据传输及切换等技术细节;负责建立、维护以及拆除连接。
- 传输层 – 提供终端节点间数据的可靠、透明传输;提供点到点的错误恢复和流量控制;提供长消息的分段以及再组装。
- 会话层 – 提供不同应用之间通信的控制框架;建立、管理以及拆除互连应用间的会话。
- 表示层 – 为应用过程提供数据表示之间差别(即语法)的屏蔽。
- 应用层 – 提供用户对开放系统互连环境的访问及提供分布式信息服务。
OSI模型的目的是为协调计算机系统通信标准的开发提供一个共同的基础,以使此类开发能在这个共同基础的的整体框架内进行。任何在此基础上开发的标准,如J1939,都并不需要明确地照此7层模型进行划分,但是7层模型中描述的基本功能必须在这些协议中得到支持。此外,实现各层功能的硬件和软件也不需要被严格地区分定义,只要每一层的功能在系统设计中是可辨识的。在特定系统中分配这些功能的过程中,7层模型中层与层之间的区分可能会被完全淡化。如果纵观J1939协议的各层文档,可以看出有些实现OSI七层模型中特定功能的J1939协议层次总是与其他OSI层次结合在一起。这往往是由于特定层次并不需要独立的对应文档。
由于J1939网络是一个专门用途的通信系统,只需要支持在特定工业领域里的一组特定的应用,而不需要通用化。因此并不需要实现OSI模型的所有层次。只有在J1939的潜在应用中需要用到的层次将被定义。这些层次都分别用文档做出了描述。
2.4 文档结构指南
此J1939文档是整个J1939协议框架中的顶层文档。针对J1939网络的每个特定应用以及OSI七层协议的每个层次都分别有文档来进行详细的说明,这些文档分别被命名为J1939/N。为了区分同层协议的不同版本,使用了斜线后的第二个数字来进行区分。这样,如果要获得特定应用的J1939网络的详细说明,以北美农业设备为例,就应该首先拿到顶层的文档J1939/02,这个文档中描述了该应用的所有相关的层次、版本的文档。
现有的文档及编号情况如下:
J1939 |
即本文档,概括地描述了J1939网络、OSI分层结构、下级文档的结构,并且提供了所有预分配值和名称。 |
J1939/0X |
针对特定应用的说明文档,这里X指J1939的特定的网络/应用版本,这个文档指出了J1939适用的特定工业或应用领域,并且列出了构成网络的每个层次对应文档的各个版本。 |
J1939/01 |
卡车及客车控制及信息网络。 |
J1939/02 |
农业设备控制及通信网络。 |
J1939/1X |
物理层文档,这里X指物理层的某个版本。 |
J1939/11 |
物理层,250K比特/秒,屏蔽双绞线。 |
J1939/12(草案) |
物理层,250K比特/秒,四芯绞线。 |
J1939/13(草案) |
物理层,诊断接口。 |
J1939/21 |
数据链路层(该层不允许定义另外版本的文档)。 |
J1939/3X |
网络层文档,X指特定版本的网络层。 |
J1939/31 |
网络层。 |
J1939/4X |
传输层文档,这里X指特定版本的传输层。现在还没有定义传输层文档。 |
J1939/5X |
会话层文档,这里X指特定版本的会话层。现在还没有定义会话层文档。 |
J1939/6X |
表示层文档,这里X指特定版本的表示层。现在还没有定义表示层文档。 |
J1939/7X |
应用层文档,这里X指特定版本的应用层 |
J1939/71 |
应用层 —— 车辆 |
J1939/72(草案) |
应用层 —— 虚拟终端 |
J1939/73 |
应用层 —— 诊断 |
J1939/81 |
J1939网络管理协议(该层不允许定义另外版本的文档) |
J1939/82(草案) |
执行 |
OSI模型中的7个层次都被分别分配了文档编号,不管这些层次在现有的J1939规程中有没有被特别定义。这样做一方面是为了更加易于辨识J1939与OSI模型的关系,同时也是为以后需要定义相应层次文档时提供了扩展的可能。J1939/81,作为网络管理协议,被单独地定义出来。这是由于它纵向地贯穿了所有的层次,故此最好被说明和理解成一个独立的主题,而不是将网络管理层的每一个部分包括在其影响的特定层次之中。
同一个网络中可能会同时使用不同的应用层文档,所以必须保证兼容性。典型的例子如一个农业设备,在大多数的通信时使用J1939/71,而在显示终端通信时使用J1939/72。在某些情形下,单个车辆或应用中也可能出现在同一系统中使用不同物理层的情况,但这里并不需要提供兼容性,只要不同的物理层是在不同的网段中被使用。例如在卡车上,连接牵引车与拖车的物理层可能与牵引车自己用的物理层不同。
3 技术规定
除了介绍整个系列的J1939文档,本文档也将试图为并不熟悉J1939的人回答以下这些最基本的问题:
- J1939将如何工作
- 如何构成和处理消息(发送和接收)
- 如何设计支持J1939的ECU
- 典型的控制时序是如何完成的(应用实例)
- 典型的网络是如何布线的
3.1 J1939教程
以下教程是为J1939/01中描述的卡车和客车控制通信网络设计的,J1939/01在这个教程中被当作一个典型例子来使用。这并不说明所有的应用都一定要按照J1939/01来执行。其他的应用可能在一个或多个层次上选择使用不同的版本,这意味着在参考下面的讨论时相应的内容应作改动。这一部分文档的目的是举例说明J1939网络,而不是定义。对J1939网络详细的说明和定义应该参照各单独的子文档(J1939/0X到J1939/81)。
3.1.1 简介
J1939是被设计来支持物理上可能分布在车辆各个不同位置的电控单元之间的实时闭环控制功能的高速通信网络。J1708/J1587是较早的被广泛使用的低速网络,用来提供电控单元间简单的信息交换,包括诊断数据。J1939能完成J1708/J1587的所有功能此外再加上对控制系统的支持。任何应用都可能使用上述一种或全部网络。
J1939使用了控制局域网协议,任何ECU在总线空闲时都可以发送消息。每个消息都包含了一个标识符,其中说明了消息的优先级、发送者以及所包含的数据。在传送标识符时使用了一种非破坏性的仲裁过程来消除冲突。这保证了高优先级的消息可以以较短的时延通过网络,因为尽管所有电控单元完全等同的访问网络,但是当多个电控单元同时试图发送时,最高优先级的消息将在仲裁过程中胜出。
3.1.2 消息格式和使用方法
J1939利用CAN协议中定义的扩展帧29位标识符(如图2)实现了一个完整的网络定义。J1939/21通过将所有11位标识符消息定义为专用的,允许使用11位标识符的CAN标准帧的设备在同一个网络中使用。这样,11位标识符的定义并不是直接属于J1939的一个组成部分,但是也被包含进来。这是为了保证其使用者可以在同一网络中并存而不出现冲突。J1939不会提供更进一步的11位标识符使用的说明。CAN数据帧中的SOF、SRR、IDE和RTR数据位也不会在下面的讨论中涉及。
29位标识符中的前3位被用来在仲裁过程中决定消息的优先级,前3位的值为000的消息具有最高的优先级。高优先级的消息常被需要高速传输的控制消息使用,典型的如从传动装置到发动机的控制消息(见J1939/71)。低优先级的消息通常在实时性要求不是很高的场合使用,典型的如发动机配置消息。对每类消息而言,优先级是可编程的,这样原始设备制造商在需要时可以对网络进行调整。
扩展CAN格式 |
S O F |
11位标识符 |
S R R |
I D E |
18位标识符扩展 |
R T R |
|||||||||||||||||||||||||||
J1939帧格式 |
S O F |
优先级 |
R |
D P |
PDU格式(PF) 6位(高位) |
S R R |
I D E |
PF(续) |
特定PDU(PS) (目的地址、群扩展或专用) |
源地址 |
R T R |
||||||||||||||||||||||
3 |
2 |
1 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
|||||||
J1939帧比特位置 |
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 |
CAN29位标识符位置 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
图2 J1939的29位标识符
标识符的下面一位R是保留位。发送的消息中这一位必须被设置为0。这一缺省值的设置允许SAE委员会在将来赋予它别的意义。
以下9位是数据页位和PDU格式(PDU Format, PF)域。PDU即协议数据单元(Protocol Data Unit)。数据页位DP用来做数据页选择。在页0中包含了目前定义的所有消息,而页1为将来扩展提供了可能。PF域标明了能够传输的一共两种协议数据单元的格式,在J1939/21的3.3节中有详细的描述。SRR位和IDE位完全由CAN协议中定义,在J1939种没有定义,也没有改动。
以下8位是特定PDU(PS),意即其具体意义由PF域的值决定:若PF域的值在0到239之间(PDU1),PS域中包含的是目的地址。若PF域的值在240到255之间(PDU2),PS域中包含的是PF的群扩展。群扩展提供了更多的值来标记那些向网络上所有ECU广播的消息。
J1939的大多数消息是使用PDU2的广播消息,网络中用PDU2格式传送的消息是不能定向到某个特定的ECU的,当一条消息必须定向到某个特定ECU时,就一定要在PDU1格式的范围之内为它分配一个参数群编号,这样特定的目的地址就可以被放到该消息的标识符中,例如传动装置向发动机请求一个特定扭矩或向减速器请求一个特定扭矩。对那些由SAE委员会定义和发布的参数群,就必须考虑使用这种目的地址特定的消息。
综上,保留位R、数据页位DP、PDU格式PF和PDU特定PS一起,定义了被发送的参数群。这些参数群是有明确的定义的,这个定义中包括了在8字节数据域中的参数分配、发送的循环率以及消息的优先级。使用“参数群”这种说法是由于它们是特定参数的群组。参数群由一个参数群编号来唯一确定,参数群编号的结构允许定义最多8672个参数群。参数群及参数群编号在J1939/21中有详细的描述,当前的分配在附录A中列出。
标识符的最后8位是发送消息的ECU的地址(源地址)。对于一个特定的网络,所有地址都必须是唯一的(最多254个)。两个不同的ECU不可以同时使用同一个地址。参数群编号是源地址无关的,这就使任何ECU都可以发送任何消息。
3.1.3 地址和名称(J1939/81及附录B)
网络中的每一个ECU都至少有一个与其相联系的名称和地址。在有些时候,发动机和发动机减速器被放在同一个ECU中实现,这样,在同一个ECU中可能同时有多个名称和地址共存。ECU的地址为消息定义了一个特定的通信源节点或目的节点,名称则包括了该地址上基本功能的标识,当完成该基本功能的多个ECU在同一个网络中共存时,则名称中还包含了该功能的实例的编号。同一网络中的相同的功能最多可以允许254个不同的ECU共存,每个都通过自己的地址和名称相互区别。
J1939定义了64位的名称来区分每个ECU,其结构如表1所示。功能实例、ECU实例和识别编号允许具有相同制造商和型号的多个ECU在同一个网络中共存而每个都使用唯一的名称。有关ECU的命名和地址分配的完整描述参见J1939/81,当前的委员会分配情况见附录B。
表1 名称的结构
仲裁地址能力 |
工业 领域 |
车辆系统实例 |
车辆 系统 |
保留 |
功能 |
功能 实例 |
ECU实例 |
制造商编码 |
识别 编号 |
1位 |
3位 |
4位 |
7位 |
1位 |
8位 |
5位 |
3位 |
11位 |
21位 |
名称说明了一个ECU完成的基本功能,并且唯一标识出每一个ECU,即使在同一网络中有多个同样型号的ECU时也是如此。但是由于长达64位,名称在平时的通信中并不便于使用。因此,一旦网络完全初始化,每个ECU都使用一个8位的地址作为源标识,该地址也可理解为一个可用来在网络中访问指定ECU的“句柄”。例如,某发动机可能被分配到地址0,但如果有另外一个发动机存在,它就需要一个单独的、唯一的地址和实例。接收目标特定命令的ECU可能需要多个地址,这就允许了分别地指令某种动作。例如当传动装置向发动机(地址为0)要求一个特定扭矩值时,必须与其向发动机减速器要求一个特定扭矩的情形区别开来。从上面的例子可以看出,网络中的一个ECU可能有多个地址而每个地址都有一个与之相连的名称。为了实现为网络中每个ECU分配地址的初始化过程,经常使用的设备都由委员会分配了优先地址(优先地址在表B2-B9)中列出。使用优先地址将多个设备试图要求同一地址的冲突的出现频率降到最低。
一般说来,大多数ECU在启动后会马上使用它们的优先地址,系统启动后使用一个特定的分配地址的规程来解决这一过程中可能出现的冲突(参见J1939/81,在J1939/01中也由详细的描述)。每个ECU必须声明它想要使用的地址。这就是地址索取特性,有两个可选的特性:
- 启动及每次要求时,某ECU必须发送一个地址索取消息来索取地址,当该ECU发送地址索取消息时,所有的ECU将这个新的被索取地址记录下来或与它们拥有的网络地址列表比较。尽管不是所有的ECU都必须维护这样的地址列表,但是所有的ECU至少必须将该新地址与自己的地址进行比较。当多个ECU都要求同一个地址时,拥有最低的名称值的ECU可以使用这个地址而其他的ECU必须索取一个另外的地址或停止在网络上的传输。
- ECU发送一个地址索取要求消息来获得被其他ECU使用的地址。当某ECU发送地址索取要求消息时,所有被要求的ECU都发送它们的地址索取消息。这样,经常有变动的ECU(工具、拖车等)或启动得比较晚的ECU就可以获得当前的地址表并可以找到和使用一个空闲的地址或判断哪些ECU现在在网络中。这种方法为需要的ECU提供了自配置地址的可能。自配置地址的功能是可选的,建议那些很可能碰到地址冲突的ECU支持此功能。
当出现地址冲突时,可以采用下列4种措施之一,这取决于相应ECU的功能:
自配置的ECU —— 自配置的ECU能够动态计算和索取一个空闲的地址,多数的服务设备和网桥都具有此功能。
可由命令配置的ECU —— 网络互连ECU,如网桥或服务设备可能会要求另一个ECU使用某个指定的地址,那个未索取到预期地址的ECU接着就会发出一个地址索取消息来告知其对该指定地址的接受。即使已经获得了一个合法的地址,ECU也可能被要求使用一个新的地址。
服务人员可配置的ECU —— 可以被服务人员配置的ECU,这种配置通常是通过拨码开关或者服务设备来进行的。当使用“指定地址”时,这种选择与命令配置是有区别的,由于通常需要一个服务设备且使用了专用的技术。
不可配置的ECU —— 这类既不能自配置也不能重新编程的ECU若无法获得合法的地址必须停止传送消息
3.1.4 通信方式
在J1939中有3种通信方式,恰当的使用每种方式可以更有效地使用参数群编号。3种通信方式分别为:
- 使用1型协议数据单元的确定目标通信(协议数据单元值为0-239)(包括对全局目标地址255的使用);
- 使用2型协议数据单元的广播通信(协议数据单元值为240-255);
- 既不使用1型协议数据单元,也不使用2型协议数据单元的专有通信。
每种通信方式都有其相应的用途。当一个消息必须被发送到某个确定目标而不是所有目标时,就需要使用目标特定的参数群编号。例如:J1939中定义了一个转矩消息,该消息可能被发送到引擎或减速器。当有多个引擎时,该消息可能需要被发送到某一特定引擎,这时就需要事先分配给目标引擎参数群编号来加以区别。
广播通信可以在多种情况下使用,包括:
- 消息被从一个或多个源地址发向一个目标地址;
- 消息被从一个或多个源地址发向多个目标地址。
广播通信不能用在消息必须被发送到某个确定目标而不是所有目标的场合。
J1939的第三种通信方式,专有通信,是通过使用两个专有参数群编号来实现的。其中,一个专有参数群编号被分配来广播专有通信,而另一个被分配来确定专有通信的目标。该通信方式实现了两个功能,一、使得确定的源设备可以使用2型协议数据单元(广播)来发送它的专有消息,二、使得服务设备可以从一组备选的电控单元中确定其通信对象。例如,当一个引擎可被多个控制器控制,而服务设备需要在所有电控单元连接在同一网络上的情况下完成校准或重新编程操作时,就需要使用专有通信方式。在这种情况下,专有协议必须是目标确定的。注意,目标电控单元必须能够正确地解释专有数据。
专有通信适用于以下两种场合;
- 不必要使用标准通信的场合;
- 必须使用专有信息通信的场合。
3.1.5 传送消息(使用J1939/21和J1939/7X)
除了图2所示的29位标识符,一个CAN数据帧中还包括一个6位控制域、一个通常为8字节的数据域,并以CRC、ACK和EOF域结束数据帧。为了将特定的数据信息发送出去,必须正确地填充这些数据,并使用这些数据构成一条完整的消息。完成这一切首先要参考合适的J1939文档。通过这一过程,确定了使用的参数群编号(PGN)、消息更新(传输)速度和默认优先权。由于多种信息通常会被封装在一个消息中,因此数据域的格式也需详细描述。注意,当一个电控单元没有当前参数的可用数据的时候应该对应位标记为“无可用信息”,以便让接收方知道发送方没有提供该数据。
含有超过8字节数据的参数组,必须按照J1939/21中3.1节描述的传输协议功能,将数据用多组消息发送。
3.1.6 接收消息(使用J1939/21和J1939/7X)
有很多技术(及电子集成电路)可以用来获取网络中被选定的消息。对接收到的消息,通常可以做以下几种处理:
- 如果是一个目标确定的请求或命令,电控单元必须将自己的地址与消息中的地址进行比较。如果地址相符,必须对该消息进行处理并提交一个应答;
- 如果消息是一个全局请求,那么包括消息发出单元在内的所有的电控单元都要对消息进行处理,拥有被请求数据的单元需要作出响应;
- 如果是一个广播消息,每个电控单元都要判断该消息是否和自身相关。
3.1.7 电控单元设计(使用J1939/11、J1939/21和J1939/7X)
虽然每个制造商对其产品中电控单元的性能要求会不同,但是仍然需要针对支持J1939所必需的资源进行一些检测。J1939/11目前采用的数据传输速率为250kbps(400)。传送一个典型的包含8字节数据128位(不包括填充位)的消息,大概需要0.5毫秒。最短的消息有64位,这意味着每间隔250毫秒就有一条新的消息产生。即使不是每条消息都是相关的,而且总线负载也没有超过50%,接收处理器仍然需要有能力处理(或缓存)一个接着一个的消息。这就需要一些内存空间和处理器时间来进行存储器内传输。对此的具体要求是不能有任何消息因为电控单元硬件或软件设计的局限而丢失。
3.1.8 网络拓扑——J1939/01使用物理层J1939/11和网络层J1939/31
J1939/01网络定义了包含一个或多个网段并通过网络互连电控单元连接在一起的系统。每个J1939网段由车辆中使用屏蔽双绞线将各电控单元连接在一起的一个独立的线性网络部分组成。每个电控单元可以通过一个终端短(截)线连接到总线上。这样可以简化主干总线的布线,因为不需要直接将电控单元连接在总线上。使用线性的总线是为了在250kbps的数据传输速率下减小电信号反射。总线两端的终端电阻也可以减小电信号反射。为了支持一个牵引车拖动多个拖车,并随时添加或断开拖车,在牵引车、每个拖车和台车上都使用一个单独的J1939网段(子网)。
因此一个J1939网络可能拥有多个网段,各网段之间使用网络互连电控单元(桥接器)连接。由于这些网段可能工作在不同的数据传输速率下或使用不同的物理介质,因此不需要直接兼容。例如,一个桥接器可以在段之间提供电气隔离,为连接其上的子网提供初始化支持,还可以提供消息过滤服务避免无用消息在各子网上传递。如果牵引车和拖车之间的线路出现了总线故障,在牵引车上的J1939主网络仍然可以继续运行。
3.2 预分配值
J1939/7X文件详细描述了由应用确定的参数和参数群。J1939/21、J1939/31和J1939/81详细描述了用于控制和管理网络的参数群。有关首选地址、名称元素和参数群编号的信息可以在本文的附录中找到。本节对这些项目一一作了说明。在附录中为这些项目分配的具体值的列表。如果需要使用一个未分配的新值,开发者可以向卡车及客车控制及通信小组委员会申请为新值进行分配。附录D中提供了申请表格。使用者应确定其使用的文件是最新版本的,或者拥有其所使用文件的修订数据,以免自己的申请给委员会造成时间上的浪费。
3.2.1 参数群编号
参数群编号在分配时,应明确其使用的是1型协议数据单元或是2型协议数据单元(在3.1.2节及J1939/21的3.3节中有对协议数据单元类型的描述)。在分配参数群编号时应注意以下几点:优先权、更新速率、信息包中的数据对其他电控单元的重要性以及参数群后面的数据长度等。附录A中有分配参数群编号的模版和目前的分配信息。
按照参数群编号申请表(附录D)中的标准,参数群编号被依次地分配给了附录A中列出的参数群对应的各区。
在同一个制造商生产的电控单元间进行的很多通信是不需要被标准化的。但是对网络上其他的电控单元而言,这些信息并不总是有用的。在这种情况下可以使用专用参数群。虽然使用标准通信是首选的,应该在任何可能的情况下尽量使用标准通信,但专有通信提供了面临独特问题或情况时的解决方法。
如果正被传递或将要被传递的信息和大多数设备是不相关的,就应该使用专有通信方法。如果信息是和大多数设备相关的,并且不需要发送到指定的电控单元,参数群编号就应该使用2型协议数据单元的广播格式。如果信息是和大多数设备相关的,而且需要发送到某个指定的电控单元,那么参数群编号中应该包含目标地址,并使用1型协议数据单元。应该谨慎使用专有通信和1型协议数据单元的通信。
3.2.2 数据域分组
为了提高基于CAN系统的通信效率,要求每个消息充分使用其8字节数据域。除了实时性要求较高的情况以外,参数须被分组来填满8字节数据域。依照这条原则可以为以后的分配保留参数群编号。而且,当所有数据发送自同一个地址,并被该地址所理解时,应用该原则可以减小网络负载。需要有很充分的理由,才允许定义数据域中留有间隙的参数群编号。
参数需要按照以下方式分组:
- 按照常用的子系统分组(电控单元用来分派和发送数据);
- 按照相同的速率分组(来减少对消息的管理);
- 按照功能分组(机油、冷却剂、燃料供应等等)。
应该注意到,当使用这些条件指导分组时,在大多数情况下分在同一组的参数不会破坏上面的规则。由于J1939中定义的所有参数都具有可以标识出何时为不可用的能力,因此不要求参数群内所有参数来自于同一电控单元。如果一个新的参数已经定义过,而且在已有的参数群内还有空闲的字节或位,那么可以很容易的将该参数加入参数群。当更新速率较高时,在定义另一个参数群之前,最好能够确认当前参数群已经得到了充分地使用(即使用了全部8个字节),而且最好所有参数来自于同一个电控单元。
相对于更新速率较低的参数群而言就不要求参数群内所有参数来自于同一电控单元。虽然所有参数来自于同一个电控单元更好一些,但是J1939的主要目的是为传送数据提供一种方法,而不是要规定由哪个电控单元发送数据。
3.2.3 名称系统和功能
功能是指一个或多个电控单元为一个或一组部件提供服务的能力。电控单元名称中的一个8位域指出了该电控单元的功能。当存在多个电控单元可以提供相同的功能时,可以使用名称中的功能实例域来区分不同的电控单元。对于不同的行业组或车辆系统,同样的功能值(高于128的功能值)可能意味着不同的功能,因此由具体行业组进行相应的功能(功能值在128以上的功能)标识。车辆系统的功能如图3所示(见J1939/81的4.1.12节)。
车辆系统是车辆或相似部件的子部件,后者包含了一个或多个可以连接到车辆或从车辆上断开的J1939网段。一个车辆系统可能由一个或多个功能组成,后者由连接在该车辆系统的J1939网段上的电控单元实现。牵引车和拖车都是典型的公路车辆系统。因为不同行业对车辆系统的定义可能不同,因此系统定义与行业组是相关的。如图3所示。
图3名称域的从属关系
网络上的一个电控单元也许可以实现多个功能,因此可以选择为每个其支持的功能申请一个单独的地址。已经分配的车辆系统和功能值在附录B的表B11和B12中列出。
3.2.4 行业组
为了让J1939在多种行业中应用,行业组编码被用来标明一个电控单元属于哪一个行业组。编码0的行业组是一个特殊的组,该组内的首选地址和名称适用于所有行业。任何可能在多个行业应用中使用的电控单元,例如柴油机引擎,其首选地址和名称都应该包含在该全局组内。新定义的申请者有责任考虑其申请是否符合该条件,然后在正确的组内为新的定义提出申请。为了用完名称和地址的所有可能值,要求全局值只有在真正适用时才使用。如果一个电控单元只在一个组内可以存在,如农业设备,那么最好将其加入相应组的定义内而不要使用全局值。行业组编码的列表在附录B的表B1中。
3.2.5 制造商编码
J1939/81定义的名称约定中包含一个制造商编码,允许一个唯一的身份编号作为整个名称的一部分。该身份编号可以由制造商分配,如果需要还可以做为电控单元的顺序号。为了让身份编号代表唯一的制造商,所有使用J1939的制造商都被分配了一个编码。制造商的编码号码列表在附录B的表B10中。如果一个制造商有多个部门或者多条主生产线,该制造商可以拥有多个编码。不鼓励为每个不同的产品分配一个制造商编码,因为这样做将很快耗尽可用编码。在名称中有21位可被用做身份编码,这就允许制造商在名称中为每个产品指定一个参考编号。
3.2.6 首选地址
一个确定系统中的地址数量不可以超过254个(设备不能申请0地址和全局地址)。大多数在J1939网络上工作的电控单元,将拥有被分配给该电控单元的、可使用的首选地址。如果电控单元的首选地址已经被网络上的另一个电控单元申请并使用,将需要按照一个特定过程解决冲突,在3.1.3节概要地描述了该过程,在J1939/81的4.2节和5节给出了该过程的详细描述。在相应的J1939/0X文档中可能还包含一些附加信息或过程。例如,公路拖车系统的桥接器和其他设备的地址申请限制就与建筑业-农业系统中的不同。自设置电控单元的供应商可以为其设备提供任何可能的策略来尝试申请地址。但是,如果没有定义一个可选方案的话,电控单元应该在从128开始的128-247地址范围内申请一个地址。保留的首选地址从0开始分配,并依次分配如下:
0-127 属于行业组0(全局组),为大多数常用电控单元保留;
128-247 为行业特殊分配保留;
248-253 为特殊电控单元保留;
254 空地址;
255 全局地址。
目前已分配的首选地址在附录B中给出,申请新分配的表格在附录D中给出。更多的信息,请参看J1939/81。
3.2.7 可疑参数群(SPN)
可疑参数群(SPN)是一个用来标识电控单元特殊元件、部件或参数的19位编号。该功能在诊断时特别有用,它允许电控单元在检测到一个部件(如传感器)出现错误时,发出一个出错消息标识出出错部件。SPN由委员会负责分配,分配情况的列表见附录C。前511个可疑参数群(SPN)是被保留的,在可能的情况下,将被分配使用和J1587中的参数标识符(PID)相同的编号。例如,J1587中PID91代表的是“加速器踏板位置百分比”,那么在J1939中就可以使用SPN91报告一个加速器踏板位置参数错误。后面的所有可疑参数群(SPN)将按照其申请被收到的顺序分配编号。
由于最终分配的可疑参数群(SPN)数量可能非常多,而且其分配依照的是申请的顺序,所以对一个需要查找某个部件的可疑参数群(SPN)编号的人来说,通过查找表格的方式来查找可疑参数群(SPN)将是非常困难的事情。为了简化对新的可疑参数群(SPN)申请的确认工作,保证其对已分配可疑参数群(SPN)而言不是重复的,委员会将可疑参数群(SPN)列表保存成MS EXEL电子表格。更多附加的内容在表C1中给出。这样就允许按照可疑参数群(SPN)的编号、名称、描述、属性(激励器、电压、温度、螺线管等)、J1587属性(MID、PID、SID)、J1939文件章节、源名称和源地址等对可疑参数群(SPN)排序。对于J1939应用的开发者和想要提出新的可疑参数群(SPN)分配的请求者,尤其需要这个不断更新并可以按照多种方式排序、查找的电子表格。但是在该文件出版的时候,SAE依然没有决定如何用最好的方式使这些数据对非委员会委员的J1939使用者也是可以得到的。
3.3 应用实例
典型的变速(换档)操作由一系列为了控制引擎转速和扭矩而对变速箱和引擎发出的命令组成。来自引擎的消息可以提供引擎的状态等信息,可以运用这些信息判断引擎当前处于何种情况。其他消息也可能在以一定时间间隔时被有规律的发出来,使引擎减速器暂停工作,或者限制有可能在变速过程中影响引擎输入的ASR功能。
参数群 |
消息类型 |
发送者 |
使用的电控单元 |
动作/功能 |
ETC1 |
信息 |
变速箱 |
引擎、ASR |
变速箱决定变速(变速在进行中) |
TSC1 |
命令 |
变速箱 |
引擎 |
为变速箱设置优先权位(优先级01) 扭矩控制,扭矩=0 |
TSC1 |
命令 |
变速箱 |
减速器(引擎) |
禁止模式,扭矩=0 |
EEC1 |
信息 |
引擎 |
变速箱 |
扭矩=0(离合器可能处在分离状态) |
TSC1 |
命令 |
变速箱 |
引擎 |
速度控制模式,需要速度=X |
EEC1 |
信息 |
引擎 |
变速箱 |
速度=X(离合器可能处在啮合状态) |
TSC1 |
命令 |
变速箱 |
引擎 |
速度/扭矩限制状态(优先级11) |
ETC1 |
信息 |
变速箱 |
ASR |
允许ASR(优先级11) |
TSC1 |
命令 |
变速箱 |
减速器(引擎) |
启用模式 |
TSC1 |
命令 |
变速箱 |
引擎 |
禁止过载 |
ETC1 |
信息 |
变速箱 |
引擎、ASR |
变速完成 |
典型的ABS操作会发出一条消息,该消息指示引擎应该减小扭矩而动力传动系统(变速箱)则应该保持其当前的(稳定的)状态。如果ABS条件是“重要的”(例如,不仅仅是轮胎跳动),那么也许会需要动力传动系统暂停工作。注意,为了保持正常运行该消息必须按照一定时间间隔发送。当引起ABS发生作用的事件结束后,ABS停止作用,意味着引擎和变速箱可以回复“正常”运转。
参数群 |
消息类型 |
发送者 |
使用的电控单元 |
动作/功能 |
EBC1 |
命令 |
ABS |
引擎、变速箱 |
ABS决定调整刹车,激活ABS功能 |
TSC1 |
命令 |
ABS |
减速器(引擎) |
禁止模式,扭矩=0(防止引擎停转) |
TC1 |
命令 |
ABS |
变速箱 |
分离传动系统 |
EBC1 |
命令 |
ABS |
引擎、变速箱 |
ABS事件终止,ABS停止作用 |
典型的ASR操作通过向引擎发送扭矩限制消息来试图降低扭矩。还可以通过请求更长的动力传动系统延时或允许一些离合器打滑等方式来降低扭矩。最后,为了获得合适的扭矩将需要提高速档。注意,在换档时变速箱将取得对引擎的控制权。
参数群 |
消息类型 |
发送者 |
使用的电控单元 |
动作/功能 |
EBC1 |
命令 |
ASR |
引擎、变速箱、减速器(动力传动系统) |
ASR决定降低扭矩 激活ASR扭矩控制 |
TSC1 |
命令 |
ASR |
引擎 |
扭矩限制 |
TSC1 |
命令 |
ASR |
减速器(动力传动系统) |
请求更长延时 |
TC1 |
命令 |
ASR |
变速箱 |
请求更多离合器打滑 |
TC1 |
命令 |
ASR |
变速箱 |
请求新的齿轮组合 不需要离合器打滑 在可能情况下变速 变速完成,ASR继续限制扭矩 ASR事件结束 |
EBC1 |
命令 |
ASR |
引擎、变速箱、减速器(动力传动系统) |
ASR活动停止,禁止过载 |