众多国际知名汽车公司早在20世纪80年代就积极致力于汽车网络技术的研究及应用。迄今已有多种网络标准,如专门用于货车和客车上的SAE的J1939、德国大众的ABUS、博世的CAN、美国商用机器的AutoCAN、ISO的VAN、马自达的PALMNET等。

在我国的轿车中已基本具有电子控制和网络功能,排放和其他指标达到了一定的要求。但货车和客车在这方面却远未能满足排放法规的要求。计划到2006年,北京地区的货车和客车的排放要满足欧Ⅲ标准。因此,为了满足日益严格的排放法规,载货车和客车中也必须引入计算机及控制技术。采用控制器局域网和国际公认标准协议J1939来搭建网络,并完成数据传输,以实现汽车内部电子单元的网络化是一种迫切的需要也是必然的发展趋势。

1 CAN总线特点及其发展

控制器局域网络(CAN)是德国Robert bosch公司在20世纪80年代初为汽车业开发的一种串行数据通信总线。CAN是一种很高保密性,有效支持分布式控制或实时控制的串行通信网络。CAN的应用范围遍及从高速网络到低成本底多线路网络。在自动化电子领域、发动机控制部件、传感器、抗滑系统等应用中,CAN的位速率可高达1Mbps。同时,它可以廉价地用于交通运载工具电气系统中,如灯光聚束、电气窗口等,可以替代所需要的硬件连接。它采用线性总线结构,每个子系统对总线有相同的权利,即为多主工作方式。CAN网络上任意一个节点可在任何时候向网络上的其他节点发送信息而不分主从。网络上的节点可分为不通优先级,满足不同的实时要求。采用非破坏性总线裁决技术,当两个节点(即子系统)同时向网络上传递信息时,优先级低的停止数据发送,而优先级高的节点可不受影响地继续传送数据。具有点对点、一点对多点及全局广播接收传送数据的功能。

随着CAN在各种领域的应用和推广,对其通信格式的标准化提出了要求。1991年9月Philips Semiconductors制定并发布了CAN技术规范(Versio 2.0)。该技术包括A和B两部分。2.OA给出了CAN报文标准格式,而2.OB给出了标准的和扩展的两种格式。1993年11月ISO颁布了道路交通运输工具-数据信息交换-高速通信局域网(CAN)国际标准ISO11898,为控制局域网的标准化和规范化铺平了道路。美国的汽车工程学会SAE于2000年提出的J1939,成为货车和客车中控制器局域网的通用标准。

2.J1939协议通信原理及内容

(1)J1939与CAN

J1939是一种支持闭环控制的在多个ECU之间高速通信的网络协议冈。主要运用于载货车和客车上。它是以CAN2.0为网络核心。表1介绍了CAN2.0的标准和扩展格式,及J1939协议所定义的格式。表2则给出了J1939年的一个协议报文单元的具体格式。可以看出,J1939标识符包括:PRIORTY(优先权位);R(保留位);DP(数据页位);PDU FORMAAT(协议数据单元);PDU SPECIFIC(扩展单元)和SOURCE ADDRESS(源地址)。而报文单元还包括64位的数据场。

表1  CAN2.0的标准和扩展格式及J1939协议所定义的格式

CAN扩展帧格式

SOF

11位标识符

SRR

IDE

18位扩展标识符

J1939帧格式

帧起始位

优先权3位

R位(保)

数据页DP

PF格式6位

SRR位

扩展标识

PF

PS格式(8位)

源地址(8位)

CAN

1

2~4

5

6

7~12

13

14

15 16

17~24

25~32

帧位置

28~26

25

24

23~18

17 16

15~8

7~0

表2  J1939协议报文单元的具体格式

一个J1939协议报文单元

PRIORITY

R

DP

PDU FORMAT

PDU SPECIFIC

SOURCE ADDRESS

DATA FIELD

3

1

1

8

8

8

0~64

(2)数据传转协议

J1939通信中的核心是负责数据传输的传输协议。它的功能分为两部分:

(1)数据的拆分打包和重组。一个J1939的报文单元只有8个字节的数据场。因此如果所要发送的数据超过了8字节,就应该分成几个小的数据包分批发送。数据场的第一个字节从1开始作为报文的序号,后7个字节用来存放数据。所以可以发送255×7=1785个字节的数据。报文被接收以后按序号重新组合成原来的数据。

(2)连接管理。主要对节点之间连接的建立和关闭,数据的传送进行管理。其中定义了5种帧结构:发送请求帧、发送清除帧、结束应答帧、连接失败帧以及用来全局接收的广播帧。节点之间的连接通过一个节点向目的地址发送一个发送请求帧而建立。在接收发送请求帧以后,节点如果有足够的空间来接收数据并且数据有效,则发送一个发送清除帧,开始数据的传送。如果存储空间不够或者数据无效等原因,节点需要拒绝连接,则发送连接失败帧,连接关闭。如果数据接收全部完成。则节点发送一个结束应答帧,连接关闭。

(3)J1939的参数格式

J1939中还定义了参数的具体格式,如标识符、优先级、数据长度、参数的范围等。参数又划分为状态参数和测量参数。状态参数表示具有多态信号的某一种状态,如发动机刹车使能/禁能、巡航控制激活/关闭,扭矩/速度控制超载模式、错误代码等。而测量参数则表示所接收到的信号的值的具体大小,如缸内爆发压力、最大巡航速度、发动机转速等。

3.J1939协议的应用

(1)J1939应用于网络构建

J1939网络层中定义了如何构建网络及连接的功能。网络层的功能包括数据的过滤、重新打包和转发。分别由以下各部分实现。

a.中继器。可以增强数据信号,使数据传输更远的距离。

b.网桥。数据的转发和过滤。它可以把网络拆解成网络分支、分割网络数据流,隔离分支中发生的故障,这样就可以减少每个网络分支的数据信息流量而使每个网络更有效,提高整个网络效率。

c.路由。可以使网络段具有独立的地址空间不同的数据传输率和媒介。

d.网关。可以在不同的协议和数据设置的网段之间传送数据。图1为典型的汽车网络连接。

(2)J1939应用于故障诊断

J1939包括在线故障诊断功能,由诊断应用层定义。诊断应用层面向以下几方面。

a.安全。在数据链路层上定义一个安全的框架,使得符合工业标准的开发工具执行必要的诊断任务。包括获取诊断信息,获取节点配置信息,标定控制模式。但对非开放型的数据加密。

b.连接。建立J1939网络节点与开发工具之间的连接。连接器的设计也必须符合J1939协议。

c.诊断状态数据支持。提供一系列的数据格式。包括读取出错数据、清除错误数据、监测通信参数、获取节点的配置以及其他的一些信息。

d.诊断测试支持。可以使开发工具把各种控制节点放到具体的测试模式中以正确设计子网体系。诊断工具通过连接器与其他节点进行通信以获取诊断数据。因此所有的控制节点都应该具备以下功能:读取诊断故障代码、清除诊断故障代码、获取实时信息。而诊断故障代码记载了出错的参数及所在的节点等主要信息。

4.节点设计及数据通信

最小化节点的主控制芯片采用51系列的单片机,控制器采用PHILIPS公司的SJA1000,控制器接口采用82c250。

为了构建CAN总线局域网络,采用了研华公司生产的双端口CAAN控制卡PCL-841,每块PCL-841卡集成了两块PHILIPS的SJA1000控制器和82c250控制器接口。这样两块控制卡就有四个端□,相当于四个独立的节点,用数据线连接起来,就组成了基本的CAN局域网。

软件的编写主要包括对寄存器的配置、硬件初始化、中断调用、数据通信几大模块。中断调用中包括数据中的中断接收、中断发送,以及错误处理、报警等模块。通信模块又分为数据的发送、接收、请求等。

综上所述,J1939通信协议解决了如下问题。

(1)优先权问题。如自动换挡要求减油门,巡航控制同时要求增油,而ASR则要求减油门以维持驱动轴的低扭矩。根据重要程度,则应确定换挡优先,协议能定义各个子系统的优先权顺序。

(2)灵活性问题。因为各个子系统都是不同类型的控制系统,网络应具备将各个子系统有机地融合在一起的能力。

(3)可扩展性。即需要增加新的子系统时,不需要对基本系统作修改。

(4)独立性。每个子系统都可以独立工作,某个子系统出现故障时并不影响其他系统的正工作。

(5)为满足不同控制系统的要求,应具有高的数据传输速率带宽,具有通用的故障诊断接口诊断协议。

(6)车辆状态共享。如发动机转速、车速、轮速等数据必须各子系统共享,数据的传输及刷新时间取决于各个子系统的特性,并由此决定优先权。

CAN基本知识

什么是CAN ?
CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。

CAN 是怎样发展起来的?
CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。1993年,CAN 已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。
CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN 仍可提供高达50Kbit/s的数据传输速率。
由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。

CAN 是怎样工作的?
CAN通讯协议主要描述设备之间的信息传递方式。CAN层的定义与开放系统互连模型(OSI)一致。每一层与另一设备上相同的那一层通讯。实际的通讯发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN的规范定义了模型的最下面两层:数据链路层和物理层。下表中展示了OSI开放式互连模型的各层。应用层协议可以由CAN用户定义成适合特别工业领域的任何方案。已在工业控制和制造业领域得到广泛应用的标准是DeviceNet,这是为PLC和智能传感器设计的。在汽车工业,许多制造商都应用他们自己的标准。
表1 OSI开放系统互连模型

7

应用层

最高层。用户、软件、网络终端等之间用来进行信息交换。如:DeviceNet

6

表示层

将两个应用不同数据格式的系统信息转化为能共同理解的格式

5

会话层

依靠低层的通信功能来进行数据的有效传递。

4

传输层

两通讯节点之间数据传输控制。操作如:数据重发,数据错误修复

3

网络层

规定了网络连接的建立、维持和拆除的协议。如:路由和寻址

2

数据链路层

规定了在介质上传输的数据位的排列和组织。如:数据校验和帧结构

1

物理层

规定通讯介质的物理特性。如:电气特性和信号交换的解释

CAN能够使用多种物理介质,例如双绞线、光纤等。最常用的就是双绞线。信号使用差分电压传送,两条信号线被称为“CAN_H”和“CAN_L”,静态时均是2.5V左右,此时状态表示为逻辑“1”,也可以叫做“隐性”。用CAN_H比CAN_L高表示逻辑“0”,称为“显形”,此时,通常电压值为:CAN_H = 3.5V 和CAN_L = 1.5V 。

CAN 有哪些特性?
CAN具有十分优越的特点,使人们乐于选择。这些特性包括:
低成本
极高的总线利用率
很远的数据传输距离(长达10Km)
高速的数据传输速率(高达1Mbit/s)
可根据报文的ID决定接收或屏蔽该报文
可靠的错误处理和检错机制
发送的信息遭到破坏后,可自动重发
节点在错误严重的情况下具有自动退出总线的功能
报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息

Philips制造的CAN芯片有哪些?
表2 CAN芯片一览表
类别                         型号                  备注
                                P87C591          替代P87C592
CAN微控制器          XA C37            16位MCU
CAN独立控制器      SJA1000            替代 82C200  PCA82C250
高速CAN收发器      PCA82C251
高速CAN收发器      PCA82C252
容错CAN收发器      TJA1040
高速CAN收发器      TJA1041
高速CAN收发器      TJA1050
高速CAN收发器      TJA1053
容错CAN收发器      TJA1054
LIN收发器               TJA1020
LIN收发器

什么是CSMA/CD ?
CSMA/CD是“载波侦听多路访问/冲突检测”(Carrier Sense Multiple Access with Collision Detect)的缩写。
利用CSMA访问总线,可对总线上信号进行检测,只有当总线处于空闲状态时,才允许发送。利用这种方法,可以允许多个节点挂接到同一网络上。当检测到一个冲突位时,所有节点重新回到‘监听’总线状态,直到该冲突时间过后,才开始发送。在总线超载的情况下,这种技术可能会造成发送信号经过许多延迟。为了避免发送时延,可利用CSMA/CD方式访问总线。当总线上有两个节点同时进行发送时,必须通过“无损的逐位仲裁”方法来使有最高优先权的的报文优先发送。在CAN总线上发送的每一条报文都具有唯一的一个11位或29位数字的ID。CAN总线状态取决于二进制数‘0’而不是‘1’,所以ID号越小,则该报文拥有越高的优先权。因此一个为全‘0’标志符的报文具有总线上的最高级优先权。可用另外的方法来解释:在消息冲突的位置,第一个节点发送0而另外的节点发送1,那么发送0的节点将取得总线的控制权,并且能够成功的发送出它的信息。
- 2 -
CAN的高层协议
CAN的高层协议(也可理解为应用层协议)是一种在现有的底层协议(物理层和数据链路层)之上实现的协议。高层协议是在CAN规范的基础上发展起来的应用层。许多系统(像汽车工业)中,可以特别制定一个合适的应用层,但对于许多的行业来说,这种方法是不经济的。一些组织已经研究并开放了应用层标准,以使系统的综合应用变得十分容易。
一些可使用的CAN高层协议有:
制定组织 主要高层协议
CiA           CAL协议
CiA           CANOpen协议
ODVA       DeviceNet 协议
Honeywell  SDS 协议
Kvaser       CANKingdom协议

什么是标准格式CAN和扩展格式CAN?
标准CAN的标志符长度是11位,而扩展格式CAN的标志符长度可达29位。CAN 协议的2.0A版本规定CAN控制器必须有一个11位的标志符。同时,在2.0B版本中规定,CAN控制器的标志符长度可以是11位或29位。遵循CAN2.0B协议的CAN控制器可以发送和接收11位标识符的标准格式报文或29位标识符的扩展格式报文。如果禁止CAN2.0B,则CAN 控制器只能发送和接收11位标识符的标准格式报文,而忽略扩展格式的报文结构,但不会出现错误。
目前,Philips公司主要推广的CAN独立控制器均支持CAN2.0B协议,即支持29位标识符的扩展格式报文结构。

CAN发展史

起源
1986年2月,Robert Bosch 公司在SAE(汽车工程协会)大会上介绍了一种新型的串行总线——CAN控制器局域网,那是CAN诞生的时刻。今天,在欧洲几乎每一辆新客车均装配有CAN局域网。同样,CAN也用于其他类型的交通工具,从火车到轮船或者用于工业控制。CAN已经成为全球范围内最重要的总线之一 —— 甚至领导着串行总线。在1999年,接近6千万个CAN控制器投入应用;2000年,市场销售超过1亿个CAN器件。
在1980年的早些时候,Bosch公司的工程师就开始论证当时的串行总线用于客车系统的可行性。因为没有一种现成的网络方案能够完全满足汽车工程师们的要求,于是,在1983年初,Uwe Kiencke 开始研究一种新的串行总线。新总线的主要方向是增加新功能、减少电气连接线 ,使其能够用于产品,而非用于驱动技术。来自 Mercedes-Benz 的工程师较早制定了总线的状态说明,而Intel也准备作为半导体生产的主要厂商。当时聘请的顾问之一是来自于德国Braunschweig-Wolfenbüttel的Applied Science大学教授Wolfhard Lawrenz博士 给出了新网络方案的名字“Controller Area Network”,简称CAN。来自Karlsruhe大学的教授Horst Wettstein博士也提供了理论支持。
1986年2月,CAN诞生了。在底特律的汽车工程协会大会上,由 Bosch公司研究的新总线系统被称为“汽车串行控制器局域网” 。Uwe Kiencke、 Siegfried Dais 和 Martin Litschel 分别介绍了这种多主网络方案。此方案基于非破坏性的仲裁机制,能够确保高优先级报文的无延迟传输。并且,不需要在总线上设置主控制器。此外,CAN之父——上述几位教授和Bosch公司的Wolfgang Borst、Wolfgang Botzenhard、Otto Karl、Helmut Schelling、Jan Unruh 已经实现了数种在CAN中的错误检测机制。该错误检测也包括自动断开故障节点功能,以确保能继续进行剩余节点之间的通讯。传输的报文并非根据报文发送器/接收器的节点地址识别(几乎其它的总线都是如此),而是根据报文的内容识别。同时,用于识别报文的标识符也规定了该报文在系统中的优先级。
当关于这种革新的通讯方案的大部分文字内容制定之后,于1987年中期,Intel提前计划2个月交付了首枚CAN控制器:82526,这是CAN方案首次通过硬件实现。仅仅用了四年的时间,设想就变成了现实。不久之后,Philips 半导体推出了82C200。这两枚最先的CAN控制器在验收滤波和报文控制方面有许多不同。一方面,由Intel主推的FullCAN比由Philips主推的BasicCAN占用较少的CPU载荷;另一方面, FullCAN 器件所能接收的报文数目相对受到限制,BasicCAN 控制器仅需较少的硅晶体。今天的CAN控制器中,“孙子”辈们在同一模块中的验收滤波和报文控制方面仍有相当的不同,制造出BasicCAN 和FullCAN 两大阵营。
标准化与一致性
在1990年早些时候,Bosch CAN 规范(CAN 2.0版)被提交给国际标准化组织。在数次行政讨论之后,应一些主要的法国汽车厂商要求,增加了“Vehicle Area Network(VAN)”内容,并于1993年11月出版了CAN的国际标准ISO11898。除了CAN协议外,它也规定了最高至1Mbps波特率时的物理层。同时,在国际标准ISO11519-2中也规定了CAN数据传输中的容错方法。1995年,国际标准ISO11898进行了扩展,以附录的形式说明了29位CAN标识符。
但令人伤心的是,所有出版的CAN规范均包含错误或者不完整。因此,为避免出现不兼容的CAN应用,Bosch 公司一直在进行验证CAN芯片是否基于Bosch的CAN参考模型的工件。此外,几年来在Lawrenz教授领导下,位于德国Braunschweig/Wolfenbüttel的 Applied Science大学进行CAN的一致性测试,测试模式基于国际标准测试规范ISO16845。 - 1 -
当前,修订的CAN规范正在标准化中。ISO11898-1称为“CAN数据链路层”,ISO11898-2称为“非容错CAN物理层”,ISO11898-3称为“容错CAN物理层”。国际标准ISO11992(卡车和拖车接口)和ISO11783(农业和森林机械)都在美国标准J1939的基础上定义了基于CAN应用的子协议,但是它们并不完整。
CAN先行者的发展
尽管当初研究CAN的起点是应用于客车系统,但CAN的第一个市场应用却来自于其他领域。特别是在北欧,CAN早已得到非常普遍的应用。在荷兰,电梯厂商Kone 使用CAN 总线。瑞士工程办公室Kvaser 已建议将CAN应用至一些纺织机械厂(Lindauer Dornier 和 Sulzer),并由他们提供机器的通讯协议。这一领域中,在 Lars-Berno Fredriksson的领导下,公司建立了“CAN纺织机械用户集团”。 到1989年,他们已研究出通讯原理,并于1990年早期帮助建立“CAN Kingdom”开发环境。尽管CAN Kingdom并不是一种基于OSI参考模型的应用层,但它被认为是基于CAN的高层协议的原型。
在荷兰,Philips医疗系统决定使用CAN构成X光机的内部网络,成为CAN的工业用户。主要由Tom Suters发表的“Philips报文规范——PMS”提出了CAN网络的第一个应用层。来自德国Weingarten的Applied Science大学教授 Konrad Etschberger博士也持同样的观点。他管理Steinbeis Transfer Center for Process Automation (Stzp)公司(现在更名为IXXAT Automation公司),并开发出一个类似的方案。
不管如何,第一个高层协议正在形成。大多数CAN的先行者使用单片电路的方法,通讯功能、网络管理、应用代码组合在同一个软件之中。即使一些用户有较多的标准模块可供利用,但面对所有的解决方案,他们也一定存在着缺陷。必须持续稳定地发展CAN的高层协议——即使在今天,仍然有部分用户低估这个问题。
在1990年的早些时候,开始筹划成立一个用户组织,从而将不同的解决方案标准化。在1992年初的几个月里,当时VMEbus杂志的主管(出版社:Franzis) Holger Zeltwanger将用户和厂商集中在一起,讨论建立一个促进CAN技术发展的中立平台,同时也针对串行总线市场进行分析。1992年5月,CiA“CAN in Automation”用户集团正式成立。仅在几个星期后,CiA即发表了第一份技术杂志,那是关于物理层的。CiA推荐仅使用遵循ISO11898的CAN收发器。到现在为止,在当时的CAN网络中使用非常普遍但并不兼容的RS-485收发器已基本消失,尽管它也是厂商提供的。
CiA的首批任务之一是规定CAN的应用层。根据Philips医疗系统(PMS)和Stzp所提供的内容,依靠其余CiA会员的协助,CAL——“CAN应用层”也称为“绿皮书”诞生了。在制定CAN应用规范时,CiA的一个主要任务是进行CAN专家和其他CAN学习者之间的信息交流。因此,从1994年起,CiA每年召开一次国际CAN会议(iCC)。
另外一个理论的方法是借鉴于LAV,一个农业的交通工具协会。在1980年晚些时候开始,一个基于CAN的农业交通工具总线系统(LBS)被制定出。但在工作最终完成前,国际标准化委员会决定改向支持US解决方案——J1939。这也是一个基于CAN的应用子协议,由SAE的 Truck and Bus 协会制定。J1939是一个非模块化的方案,简单易学,但灵活性很差。
从理论到实践
当然,生产CAN模块集成器件的15家半导体厂商主要聚焦于汽车工业。从1990年中期起,Infineon公司和Motorola公司已向欧洲的客车厂商提供了大量的CAN控制器。作为下一波,从1990年后期起,远东的半导体厂商也开始提供CAN控制器。1994年,NEC 推出了传说中的CAN芯片 72005,但是,这一步太早了——当时,这个器件并不能投入使用。
从1992年起,Mercedes-Benz(奔驰) 开始在他们的高级客车中使用CAN技术。第一步使用电子控制器通过CAN对发动机进行管理;第二步使用控制器接收人们的操作信号。这就使用了2个物理上独立的CAN总线系统,它们通过网关连接。其他的客车厂商也纷纷赶来斯图加特学习,在他们的客车上也使用2
- 2 -
套CAN总线系统。现在,继Volvo、 Saab、Volkswagen 、BMW之后,Renault和Fiat 也开始在他们的汽车上使用CAN总线。
在1990的早些时候,美国俄亥俄州的机械工程公司的工程师们与Allen-Bradley公司、Honeywell 微型开关公司开始了一个合资项目,内容是基于CAN的通讯与控制。但是,不久之后,项目组的重要成员离开合资项目终止。但Allen-Bradley 公司和Honeywell公司各自继续从事这项工作。这导致产生了两个高层协议:“ DeviceNet” 和“Smart Distributed System (SDS)”,而且这2个协议在较低层的通讯层上非常相似。在1994年早些时候,Allen-Bradley 将DeviceNet规范移交给专职推广DeviceNet 的组织“Open DeviceNet Vendor Association(ODVA)”。而Honeywell 则放弃了在SDS方面的努力,使得SDS 更象Honeywell 公司的内部解决方案。 DeviceNet 特别为工厂自动控制而定制,因此,使其成为类似Profibus-DP 和 Interbus协议的有力竞争者。倘若仅从即插即用的功能考虑,DeviceNet 已经成为美国特定应用领域中的领导者。
在欧洲,一些公司在尝试使用CAL。尽管CAL在理论上正确,并在工业上可以投入应用,但每个用户都必须设计一个新的子协议,因为CAL是一个真正的应用层。CAL可以被看作一个应用CAN方案的必要理论步骤,但在这一领域它不会被推广。从1993年起,在Esprit project ASPIC范围内,由Bosch领导的欧洲协会研究出一个原型,由此发展成为CANopen。它是一个基于CAL的子协议,用于产品部件的内部网络控制。在理论方面,来自德国Reutlingen的Applied Science大学教授Gerhard Gruhler博士 和来自Newcastle (UK)大学的 Mohammed Farsi 积极参与,均是其中最成功的活跃分子之一。在项目完成之后,CANopen 规范移交给CiA组织,由其进行维护与发展。在1995年,CiA发表了完整版的CANopen 通讯子协议;仅仅用了5年的时间,它已成为全欧洲最重要的嵌入式网络标准。 CANopen 不仅定义了应用层和通讯子协议,也为可编程系统、不同器件、接口、应用子协议定义了页状态,这也就是工业领域(比如:打印机、海事应用、医疗系统)决定使用CANopen的一个重要原因。
DeviceNet 和 CANopen,是两个定位于不同市场的标准应用层协议(EN 50325)。DeviceNet 适合于工厂自动化控制; CANopen 适合于所有机械的嵌入式网络。这又造就了两个不同的应用范围,因此,有必要定义应用层的规范历史(可以将一些特定的大量嵌入式系统排除在外)。
CAN前景展望
尽管CAN协议已经有15年的历史,但它仍处在改进之中。从2000年开始,一个由数家公司组成的ISO任务组织定义了一种时间触发CAN报文传输的协议。Bernd Mueller博士 、Thomas Fuehrer 、Bosch公司人员和半导体工业专家、学术研究专家将此协议定义为“时间触发通讯的CAN(TTCAN)”,计划在将来标准化为ISO11898-4。这个CAN的扩展已在硅片上实现,不仅可实现闭环控制下支持报文的时间触发传输,而且可以实现CAN的x-by-wire应用。因为CAN协议并未改变,所以,在同一个的物理层上,既可以实现传输时间触发的报文,也可以实现传输事件触发的报文。
TTCAN 将为CAN延长5-10年的生命期。现在,CAN在全球市场上仍然处于起始点,当得到重视时,谁也无法预料CAN总线系统在下一个10-15年内的发展趋势。这里需要强调一个现实:近几年内,美国和远东的汽车厂商将会在他们所生产汽车的串行部件上使用CAN。另外,大量潜在的新应用(例如:娱乐)正在呈现——不仅可用于客车,也可用于家庭消费。同时,结合高层协议应用的特殊保安系统对CAN的需求也正在稳健增长。德国专业委员会BIA和德国安全标准权威TüV 已经对一些基于CAN的保安系统进行了认证。CANopen-Safety 是第一个获得BIA许可的CAN解决方案,DeviceNet-Safety 也会马上跟进。全球分级协会的领导者之一,Germanischer Lloyd正在准备提议将CANopen 固件应用于海事运输。在其他事务中,规范定义可以通过自动切换将CANopen 网络转换为冗余总线系统。
- 3 -
CAN历史事件一览表
1983: Start of the Bosch internal project to develop an in-vehicle network
1986: Official introduction of CAN protocol
1987: First CAN controller chips from Intel and Philips Semiconductors
1991: Bosch’s CAN specification 2.0 published
1991: CAN Kingdom CAN-based higher-layer protocol introduced by Kvaser
1992: CAN in Automation international users and manufacturers group established
1992: CAN Application Layer (CAL) protocol published by CiA
1992: First cars from Mercedes-Benz used CAN network
1993: ISO 11898 standard published
1994: 1st international CAN Conference (iCC) organized by CiA
1994: DeviceNet protocol introduction by Allen-Bradley
1995: ISO 11898 amendment (extended frame format) published
1995: CANopen protocol published by CiA
2000: Development of the time-triggered communication protocol for CAN (TTCAN)

CAN总线的特点及J1939协议通信原理、内容和应用

众多国际知名汽车公司早在20世纪80年代就积极致力于汽车网络技术的研究及应用。迄今已有多种网络标准,如专门用于货车和客车上的SAE的J1939、德国大众的ABUS、博世的CAN、美国商用机器的AutoCAN、ISO的VAN、马自达的PALMNET等。

在我国的轿车中已基本具有电子控制和网络功能,排放和其他指标达到了一定的要求。但货车和客车在这方面却远未能满足排放法规的要求。计划到2006年,北京地区的货车和客车的排放要满足欧Ⅲ标准。因此,为了满足日益严格的排放法规,载货车和客车中也必须引入计算机及控制技术。采用控制器局域网和国际公认标准协议J1939来搭建网络,并完成数据传输,以实现汽车内部电子单元的网络化是一种迫切的需要也是必然的发展趋势。

1 CAN总线特点及其发展

控制器局域网络(CAN)是德国Robert bosch公司在20世纪80年代初为汽车业开发的一种串行数据通信总线。CAN是一种很高保密性,有效支持分布式控制或实时控制的串行通信网络。CAN的应用范围遍及从高速网络到低成本底多线路网络。在自动化电子领域、发动机控制部件、传感器、抗滑系统等应用中,CAN的位速率可高达1Mbps。同时,它可以廉价地用于交通运载工具电气系统中,如灯光聚束、电气窗口等,可以替代所需要的硬件连接。它采用线性总线结构,每个子系统对总线有相同的权利,即为多主工作方式。CAN网络上任意一个节点可在任何时候向网络上的其他节点发送信息而不分主从。网络上的节点可分为不通优先级,满足不同的实时要求。采用非破坏性总线裁决技术,当两个节点(即子系统)同时向网络上传递信息时,优先级低的停止数据发送,而优先级高的节点可不受影响地继续传送数据。具有点对点、一点对多点及全局广播接收传送数据的功能。

随着CAN在各种领域的应用和推广,对其通信格式的标准化提出了要求。1991年9月Philips Semiconductors制定并发布了CAN技术规范(Versio 2.0)。该技术包括A和B两部分。2.OA给出了CAN报文标准格式,而2.OB给出了标准的和扩展的两种格式。1993年11月ISO颁布了道路交通运输工具-数据信息交换-高速通信局域网(CAN)国际标准ISO11898,为控制局域网的标准化和规范化铺平了道路。美国的汽车工程学会SAE于2000年提出的J1939,成为货车和客车中控制器局域网的通用标准。

2.J1939协议通信原理及内容

(1)J1939与CAN

J1939是一种支持闭环控制的在多个ECU之间高速通信的网络协议冈。主要运用于载货车和客车上。它是以CAN2.0为网络核心。表1介绍了CAN2.0的标准和扩展格式,及J1939协议所定义的格式。表2则给出了J1939年的一个协议报文单元的具体格式。可以看出,J1939标识符包括:PRIORTY(优先权位);R(保留位);DP(数据页位);PDU FORMAAT(协议数据单元);PDU SPECIFIC(扩展单元)和SOURCE ADDRESS(源地址)。而报文单元还包括64位的数据场。

表1  CAN2.0的标准和扩展格式及J1939协议所定义的格式

CAN扩展帧格式

SOF

11位标识符

SRR

IDE

18位扩展标识符

J1939帧格式

帧起始位

优先权3位

R位(保)

数据页DP

PF格式6位

SRR位

扩展标识

PF

PS格式(8位)

源地址(8位)

CAN

1

2~4

5

6

7~12

13

14

15 16

17~24

25~32

帧位置

28~26

25

24

23~18

17 16

15~8

7~0

表2  J1939协议报文单元的具体格式

一个J1939协议报文单元

PRIORITY

R

DP

PDU FORMAT

PDU SPECIFIC

SOURCE ADDRESS

DATA FIELD

3

1

1

8

8

8

0~64

(2)数据传转协议

J1939通信中的核心是负责数据传输的传输协议。它的功能分为两部分:

(1)数据的拆分打包和重组。一个J1939的报文单元只有8个字节的数据场。因此如果所要发送的数据超过了8字节,就应该分成几个小的数据包分批发送。数据场的第一个字节从1开始作为报文的序号,后7个字节用来存放数据。所以可以发送255×7=1785个字节的数据。报文被接收以后按序号重新组合成原来的数据。

(2)连接管理。主要对节点之间连接的建立和关闭,数据的传送进行管理。其中定义了5种帧结构:发送请求帧、发送清除帧、结束应答帧、连接失败帧以及用来全局接收的广播帧。节点之间的连接通过一个节点向目的地址发送一个发送请求帧而建立。在接收发送请求帧以后,节点如果有足够的空间来接收数据并且数据有效,则发送一个发送清除帧,开始数据的传送。如果存储空间不够或者数据无效等原因,节点需要拒绝连接,则发送连接失败帧,连接关闭。如果数据接收全部完成。则节点发送一个结束应答帧,连接关闭。

(3)J1939的参数格式

J1939中还定义了参数的具体格式,如标识符、优先级、数据长度、参数的范围等。参数又划分为状态参数和测量参数。状态参数表示具有多态信号的某一种状态,如发动机刹车使能/禁能、巡航控制激活/关闭,扭矩/速度控制超载模式、错误代码等。而测量参数则表示所接收到的信号的值的具体大小,如缸内爆发压力、最大巡航速度、发动机转速等。

3.J1939协议的应用

(1)J1939应用于网络构建

J1939网络层中定义了如何构建网络及连接的功能。网络层的功能包括数据的过滤、重新打包和转发。分别由以下各部分实现。

a.中继器。可以增强数据信号,使数据传输更远的距离。

b.网桥。数据的转发和过滤。它可以把网络拆解成网络分支、分割网络数据流,隔离分支中发生的故障,这样就可以减少每个网络分支的数据信息流量而使每个网络更有效,提高整个网络效率。

c.路由。可以使网络段具有独立的地址空间不同的数据传输率和媒介。

d.网关。可以在不同的协议和数据设置的网段之间传送数据。图1为典型的汽车网络连接。

(2)J1939应用于故障诊断

J1939包括在线故障诊断功能,由诊断应用层定义。诊断应用层面向以下几方面。

a.安全。在数据链路层上定义一个安全的框架,使得符合工业标准的开发工具执行必要的诊断任务。包括获取诊断信息,获取节点配置信息,标定控制模式。但对非开放型的数据加密。

b.连接。建立J1939网络节点与开发工具之间的连接。连接器的设计也必须符合J1939协议。

c.诊断状态数据支持。提供一系列的数据格式。包括读取出错数据、清除错误数据、监测通信参数、获取节点的配置以及其他的一些信息。

d.诊断测试支持。可以使开发工具把各种控制节点放到具体的测试模式中以正确设计子网体系。诊断工具通过连接器与其他节点进行通信以获取诊断数据。因此所有的控制节点都应该具备以下功能:读取诊断故障代码、清除诊断故障代码、获取实时信息。而诊断故障代码记载了出错的参数及所在的节点等主要信息。

图1  典型汽车网络连接

4.节点设计及数据通信

最小化节点的主控制芯片采用51系列的单片机,控制器采用PHILIPS公司的SJA1000,控制器接口采用82c250。

为了构建CAN总线局域网络,采用了研华公司生产的双端口CAAN控制卡PCL-841,每块PCL-841卡集成了两块PHILIPS的SJA1000控制器和82c250控制器接口。这样两块控制卡就有四个端□,相当于四个独立的节点,用数据线连接起来,就组成了基本的CAN局域网。如图2所示。

图2  CAN局域网

软件的编写主要包括对寄存器的配置、硬件初始化、中断调用、数据通信几大模块。中断调用中包括数据中的中断接收、中断发送,以及错误处理、报警等模块。通信模块又分为数据的发送、接收、请求等。

综上所述,J1939通信协议解决了如下问题。

(I)优先权问题。如自动换挡要求减油门,巡航控制同时要求增油,而ASR则要求减油门以维持驱动轴的低扭矩。根据重要程度,则应确定换挡优先,协议能定义各个子系统的优先权顺序。

(2)灵活性问题。因为各个子系统都是不同类型的控制系统,网络应具备将各个子系统有机地融合在一起的能力。

(3)可扩展性。即需要增加新的子系统时,不需要对基本系统作修改。

(4)独立性。每个子系统都可以独立工作,某个子系统出现故障时并不影响其他系统的正工作。

(5)为满足不同控制系统的要求,应具有高的数据传输速率带宽,具有通用的故障诊断接口诊断协议。

(6)车辆状态共享。如发动机转速、车速、轮速等数据必须各子系统共享,数据的传输及刷新时间取决于各个子系统的特性,并由此决定优先权

CAN总线的特点及J1939协议通信原理、内容和应用相关推荐

  1. iic总线从机仲裁_IIC协议底层原理超详细解析!示波器,逻辑分析仪多图预警

    1. 协议基础 1.1.     协议简介 IIC-BUS(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发.主要是用来方便微控制 ...

  2. HTTP协议通信原理 (资源)

    2019独角兽企业重金招聘Python工程师标准>>> 了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家 ...

  3. HTTP协议通信原理

    域名被成功解析以后,客户端和服务端之间,是怎么建立连接并且如何通信的呢? 说到通信,大家一定听过tcp和udp这两种通信协议,以及建立连接的握手过程.而http协议的通信是基于tcp/ip协议之上的一 ...

  4. AUTOSAR协议解析篇(一)-J1939协议解析

    SAE J1939协议是基于CAN2.0B协议之上的应用层协议,但是SAE J1939协议并不仅仅是个应用层协议,她对物理层,数据链路层,网络层,应用层,故障诊断, 网络层管理层等都做了详细的规定,只 ...

  5. 云服务器部署mqtt协议通信,云服务器部署mqtt协议通信

    云服务器部署mqtt协议通信 内容精选 换一换 虚拟IP(Virtual IP Address,简称VIP)是一个未分配给真实弹性云服务器网卡的IP地址.弹性云服务器除了拥有私有IP地址外,还可以拥有 ...

  6. Socket 通信原理(Android客户端和服务器以TCPUDP方式互通)

     ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教. 一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是So ...

  7. Android 系统(193)----图解从URL到网页通信原理

    从URL到网页通信原理 内容导读 简单说,这个通信的过程是基于TCP/IP通信协议族规范的,完成从客户端到服务器端等一系列运作流程.1.TCP/IP协议族计算机与网络设备要相互通信,双方就必须基于相同 ...

  8. iic通信原理_电子知识之IIC通信原理和协议分享

    IIC 的一些特征: 两条总线:串行数据总线(SDA)和串行时钟总线(SCL) 真正的多主机总线 连接到相同总线的ic数量只受到总线的最大电容400pF限制. 串行8位双向数据在标准模式下可达100K ...

  9. CAN总线通信原理分析

    摘要:介绍了控制器局域网总线(CAN总线)的应用特性以及将其应用于具体的工程项目时CAN总线系统的分层结构及各层的主要功能.基于CAN总线系统结构构成,通过工程实践的具体应用以及对CAN控制器及收发器 ...

  10. eip协议通信_工业通讯 | EtherNET/IP协议基础知识(Part 3)||附视频讲解

    点击蓝字 关注我们 相关阅读: EtherNet/IP OSI参考模型及其物理层.数据链路层与网络层的功能特点: EtherNET/IP协议基础知识(Part 1)||附视频讲解 Encapsulat ...

最新文章

  1. 让世界零距离 小鱼易连的大梦想
  2. doe全称是什么意思_BVV线和RVV都是护套线,二者有什么区别?【辽宁津达线缆】...
  3. 43 inventory文件
  4. 零成本学Arduino单片机之入门
  5. 制作r710 linux系统盘,记一次云主机系统盘扩容及制作私有镜像的操作步骤
  6. python中sin函数在哪个模块中_从零开始第5步:Python 函数和模块
  7. 25、【华为HCIE-Storage】--Hyper Snapshot(文件业务)
  8. FIR仿真module_04
  9. [高精度整数] N的阶乘 [2006年清华大学计算机研究生机试真题]
  10. Mybatis批量insert报错的解决办法【the right syntax to use near '' at line...】
  11. html鼠标指向上面有尾注,插入脚注和尾注的方法
  12. Python练习题答案: IRR计算 - 盈利能力的评价【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战
  13. 《安富莱嵌入式周报》第285期:电子技术更新换代太快,我要躺平,Linux内核6.1已经并入RUST,一夜161个网站密码遭泄,Matlab精选课件,开源电子书
  14. tps协议和onvif协议_onvif协议是什么
  15. unity上传头像_unity3d 上传本地PC图片
  16. Android View scrollTo()和scroll()By()学习备忘
  17. 百度百科怎么引流?如何进行百度百科推广?百度百科推广怎么做?
  18. html 感叹号代码,HTML电子邮件中的感叹号
  19. CSS的水平居中、垂直居中和水平垂直居中
  20. discuz 搬迁服务器时,根域名访问 主动跳到 门户列表页问题

热门文章

  1. ie9服务器win2008系统离线安装包,IE9离线安装包完整版
  2. 一个完整的测试计划模板
  3. flash电脑安装包_Flash动画制作,Animate CC 2019下载安装
  4. matlab拟合函数导出,excel里曲线拟合的公式怎么导出?()
  5. 大地坐标系是不是经纬度_批量导入经纬度点到奥维地图中
  6. 计算机领域EI和SCI收录期刊、影响因子及国际会议
  7. 如何做好离职交接工作?
  8. 2020杭电多校赛第四场1007 Go Running(hdu6808)
  9. 电子设计大赛-信号源类题目分析
  10. 数学模型方法分类总结