CAN总线综述

转载 2007年09月21日 17:02:00

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++CAN总线综述++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. CAN总线的产生与发展

控制器局部网(CAN-CONTROLLER AREA NETWORK)是BOSCH公司

为现代汽车应用领先推出的一种多主机局部网,由于其卓越性能

现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪

器以及建筑、环境控制等众多部门。控制器局部网将在我国迅速

普及推广。

 随着计算机硬件、软件技术及集成电路技术的迅速发展,工

业控制系统已成为计算机技术应用领域中最具活力的一个分支,

并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业

控制系统的发展主要表现为:控制面向多元化,系统面向分散化

,即负载分散、功能分散、危险分散和地域分散。

分散式工业控制系统就是为适应这种需要而发展起来的。这类系

统是以微型机为核心,将 5C技术--COMPUTER(计算机技术)、

CONTROL(自动控制技术)、COMMUNICATION(通信技术)、CRT

(显示技术)和 CHANGE(转换技术)紧密结合的产物。它在适

应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散

型仪表控制系统和集中型计算机控制系统都具有明显的优越性。

典型的分散式控制系统由现场设备、接口与计算设备以及通信设

备组成。现场总线(FIELDBUS)能同时满足过程控制和制造业自

动化的需要,因而现场总线已成为工业数据总线领域中最为活跃

的一个领域。现场总线的研究与应用已成为工业数据总线领域的

热点。尽管目前对现场总线的研究尚未能提出一个完善的标准,

但现场总线的高性能价格比将吸引众多工业控制系统采用。同时

,正由于现场总线的标准尚未统一,也使得现场总线的应用得以

不拘一格地发挥,并将为现场总线的完善提供更加丰富的依据。

控制器局部网 CAN(CONTROLLER AERANETWORK)正是在这种背景

下应运而生的。

由于CAN为愈来愈多不同领域采用和推广,导致要求各种应用领

域通信报文的标准化。为此,1991年 9月 PHILIPS

SEMICONDUCTORS制订并发布了 CAN技术规范(VERSION 2.0)。

该技术规范包括A和B两部分。2.0A给出了曾在CAN技术规范版本

1.2中定义的CAN报文格式,而2.0B给出了标准的和扩展的两种报

文格式。此后,1993年11月ISO正式颁布了道路交通运载工具--

数字信息交换--高速通信控制器局部网(CAN)国际标准

(ISO11898),为控制器局部网标准化、规范化推广铺平了道路

2. CAN总线特点

CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控

制与测试仪器之间的数据交换而开发的一种串行数据通信协议,

它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤

维。通信速率可达1MBPS。CAN总线通信接口中集成了CAN协议的

物理层数据链路层功能,可完成对通信数据的成帧处理,包括

位填充、数据块编码、循环冗余检验、优先级判别等项工作。

CAN协议的一个最大特点是废除了传统的站地址编码,而代之以

对通信数据块进行编码。采用这种方法的优点可使网络内的节点

个数在理论上不受限制,数据块的标识码可由11位或29位二进制

数组成,因此可以定义211或229个不同的数据块,这种按数据块

编码的方式,还可使不同的节点同时接收到相同的数据,这一点

在分布式控制系统中非常有用。数据段长度最多为8个字节,可

满足通常工业领域中控制命令、工作状态及测试数据的一般要求

。同时,8个字节不会占用总线时间过长,从而保证了通信的实

时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证

了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的

设计,特别适合工业过程监控设备的互连,因此,越来越受到工

业界的重视,并已公认为最有前途的现场总线之一。

另外,CAN总线采用了多主竞争式总线结构,具有多主站运行和

分散仲裁的串行总线以及广播通信的特点。CAN总线上任意节点

可在任意时刻主动地向网络上其它节点发送信息而不分主次,因

此可在各节点之间实现自由通信。CAN总线协议已被国际标准化

组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,

特别适用于分布式测控系统之间的数通讯。CAN总线插卡可以任

意插在PC AT XT兼容机上,方便地构成分布式监控系统。
3. CAN总线技术介绍

3.1位仲裁

要对数据进行实时处理,就必须将数据快速传送,这就要求数据的

物理传输通路有较高的速度。在几个站同时需要发送数据时,要

求快速地进行总线分配。实时处理通过网络交换的紧急数据有较

大的不同。一个快速变化的物理量,如汽车引擎负载,将比类似汽

车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求

更短的延时。

CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标

识符中,具有最低二进制数的标识符有最高的优先级。这种优先

级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲

突可通过位仲裁解决。如图2所示,当几个站同时发送报文时,站1

的报文标识符为011111;站2的报文标识符为0100110;站3的报文

标识符为0100111。所有标识符都有相同的两位01,直到第3位进

行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站

的报文第3位为低。站2和站3报文的4、5、6位相同,直到第7位时

,站3的报文才被丢失。注意,总线中的信号持续跟踪最后获得总

线读取权的站的报文。在此例中,站2的报文被跟踪。这种非破坏

性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传

送以前,报文的起始部分已经在网络上传送了。所有未获得总线

读取权的站都成为具有最高优先权报文的接收站,并且不会在总

线再次空闲前发送报文。

CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的

站利用,这些请求是根据报文在整个系统中的重要性按顺序处理

的。这种方法在网络负载较重时有很多优点,因为总线读取的优

先级已被按顺序放在每个报文中了,这可以保证在实时系统中较

低的个体隐伏时间。

对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主

要通信,包括总线读取 (许可)控制,在系统中分几次完成。这是

实现有较高可靠性的通信系统的唯一方法。

3.2 CAN与其它通信方案的比较

在实践中,有两种重要的总线分配方法:按时间表分配和按需要分

配。在第一种方法中 ,不管每个节点是否申请总线,都对每个节

点按最大期间分配。由此,总线可被分配给每个站并且是唯一的

站,而不论其是立即进行总线存取或在一特定时间进行总线存取

。这将保证在总线存取时有明确的总线分配。在第二种方法中,

总线按传送数据的基本要求分配给一个站 ,总线系统按站希望的

传送分配(如:Ethernet CSMA/CD)。因此,当多个站同时请求总线

存取时,总线将终止所有站的请求,这时将不会有任何一个站获得

总线分配。为了分配总线,多于一个总线存取是必要的。

CAN实现总线分配的方法,可保证当不同的站申请总线存取时,明

确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发

送数据时产生的碰撞问题。不同于Ethernet网络的消息仲裁,CAN

的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时

总线不被占用。甚至当总线在重负载情况下,以消息内容为优先

的总线存取也被证明是一种有效的系统。虽然总线的传输能力不

足,所有未解决的传输请求都按重要性顺序来处理。在CSMA/CD这

样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况

在CAN中不会发生。

3.3 CAN的报文格式

在总线中传送的报文,每帧由7部分组成,见图3。CAN协议支持两

种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11

位,扩展格式为29位。

在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标

识符和远程发送请求位 (RTR)组成的仲裁场。RTR位标明是数据

帧还是请求帧,在请求帧中没有数据字节。

控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。

它还包括一个保留位 (ro),为将来扩展使用。它的最后四个字节

用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,

其后有一个检测数据错误的循环冗余检查(CRC)。

应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均

为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(

逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个

站能正确接收到报文。

报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔

位,如果这时没有站进行总线存取,总线将处于空闲状态。
3.4 数据错误检测

不同于其它总线,CAN协议不能使用应答信息。事实上,它可以将

发生的任何错误用信号发出。CAN协议可使用五种检查错误的方

法,其中前三种为基于报文内容检查。

3.4.1 循环冗余检查(CRC)

在一帧报文中加入冗余检查位可保证报文正确。接收站通过CRC

可判断报文是否有错。

3.4.2 帧检查

这种方法通过位场检查帧的格式和大小来确定报文的正确性,用

于检查格式上的错误。

3.4.3.应答错误

如前所述,被接收到的帧由接收站通过明确的应答来确认。如果

发送站未收到应答,那么表明接收站发现帧中有错误,也就是

说,ACK场已损坏或网络中的报文无站接收。CAN协议也可通过位

检查的方法探测错误。

3.4.4 总线检测

有时,CAN中的一个节点可监测自己发出的信号。因此,发送报文

的站可以观测总线电平并探测发送位和接收位的差异。

3.4.5 位填充

一帧报文中的每一位都由不归零码表示,可保证位编码的最大效

率。然而,如果在一帧报文中有太多相同电平的位,就有可能失去

同步。为保证同步,同步沿用位填充产生。在五个生。在五个连

续相等位后,发送站自动插入一个与之互补的补码位;接收时,这

个填充位被自动丢掉。例如,五个连续的低电平位后,CAN自动插

入一个高电平位。CAN通过这种编码规则检查错误,如果在一帧报

文中有6个相同位,CAN就知道发生了错误。

如果至少有一个站通过以上方法探测到 一个或多个错误,它将发

送出错标志终止当前的发送。这可以阻止其它站接收错误的报文

,并保证网络上报文的一致性。当大量发送数据被终止后,发送站

会自动地重新发送数据。作为规则,在探测到错误后23个位周期

内重新开始发送。在特殊场合,系统的恢复时间为31个位周期。

但这种方法存在一个问题,即一个发生错误的站将导致所有数据

被终止,其中也包括正确的数据。因此,如果不采取自监测措施,

总线系统应采用模块化设计。为此,CAN协议提供一种将偶然错误

从永久错误和局部站失败中区别出来的办法。这种方法可以通过

对出错站统计评估来确定一个站本身的错误并进入一种不会对其

它站产生不良影响的运行方法来实现,即站可以通过关闭自己来

阻止正常数据因被错误地当成不正确的数据而被终止。

3.4.6 CAN可靠性

为防止汽车在使用寿命期内由于数据交换错误而对司机造成危险

,汽车的安全系统要求数据传输具有较高的安全性。如果数据传

输的可靠性足够高,或者残留下来的数据错误足够低的话,这一目

标不难实现。从总线系统数据的角度看,可靠性可以理解为,对传

输过程产生的数据错误的识别能力。

残余数据错误的概率可以通过对数据传输可靠性的统计测量获得

。它描述了传送数据被破坏和这种破坏不能被探测出来的概率。

残余数据错误概率必须非常小,使其在系统整个寿命周期内,按平

均统计时几乎检测不到。计算残余错误概率要求能够对数据错误

进行分类 ,并且数据传输路径可由一模型描述。如果要确定CAN

的残余错误概率,我们可将残留错误的概率作为具有80~90位的

报文传送时位错误概率的函数,并假定这个系统中有5~10个站,

并且错误率为1/1000,那么最大位错误概率为10—13数量级。例

如,CAN网络的数据传输率最大为1Mbps,如果数据传输能力仅使用

50%,那么对于一个工作寿命4000小时、平均报文长度为 80位的

系统,所传送的数据总量为9×1010。在系统运行寿命期内,不可

检测的传输错误的统计平均小于10—2量级。换句话说,一个系统

按每年365天,每天工作8小时,每秒错误率为0. 7计算,那么按统

计平均,每1000年才会发生一个不可检测的错误。

4.应用举例

某医院现有5台16T/H德国菲斯曼燃气锅炉,向洗衣房、制剂室、

供应室、生活用水、暖气等设施提供5kg/cm2的蒸汽,全年耗用

天然气1200万m3,耗用20万吨自来水。医院采用接力式方式供热

,对热网进行地域性管理,分四大供热区。其中冬季暖气的用气

量很大,据此设计了基于CAN现场总线的分布式锅炉蒸汽热网智

能监控系统。现场应用表明:该楼宇自动化系统具有抗干扰能力

强,现场组态容易,网络化程度高,人机界面友好等特点。 

相关文章推荐

CAN总线发送与接收函数

初始化CAN模块 void INIT_CAN0(void) { if(CAN0CTL0_INITRQ==0) // 查询是否进入初始化状态 CAN0CTL0_INIT...

汽车车内CAN总线 网络安全分析及防御措施

汽车车内CAN总线网络安全分析及防御措施智能化和信息化的发展,汽车电气系统变得日益复杂,当前汽车普遍拥有数十个电子控制单元(ECU),一辆高级轿车运行代码接近1亿行,而这些车载信息是通过车内总线实现互...

STM32 CAN总线应用程序,调试通过仅供参考

1、打开STM32 CAN系统工作时钟        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, EN...

基于CAN总线智能建筑监控系统的通信协议设计(一)

摘要:从研究CAN2.OB总线规范入手,介绍了CAN总线规范的硬件基础,分析了CAN总线报文格式,通过对报文标识符的分配,设计了应用于该系统的通信协议,并给出了软件设计流程,较好地解决了智能建筑监控系...

CAN总线 远程帧理解和应用

简单的说:如果A需要B节点向你发送数据!A可以用B节点的ID,发送一个remote frame,B收到A ID 的 Remote Frame 之后就发送数据给A!发送的数据就是数据帧!远程帧就像命令,...

stm32_CAN总线知识

一、CAN总线的特点: bxCAN主要特点 ● 支持CAN协议2.0A和2.0B主动模式 ● 波特率最高可达1兆位/秒 ● 支持时间触发通信功能 发送 ● 3个发送邮箱 ● 发送报文的优先级特性可软件...

基于MCP2515的多路CAN总线接口及驱动程序设计

结合实际需求,提出一种多路CAN总线接口的设计方法。系统硬件主体采用AT91RM9200和MCP2515,操作系统采用ARMLinux。详细介绍硬件的接口设计,针对该硬件接口设计分析ARMLinux下...
  • reille
  • reille
  • 2011年01月20日 10:05
  • 4355

CAN总线使用总结

一,CAN总线是由德国BOSCH公司提出,目的是为了解决汽车内部硬件信号线的复杂走线 二,CAN:controller area area:控制器局域网络 三,CAN总线的特点:        ...

can总线通讯协议

随着集成电路和嵌入式电脑在汽车上的广泛应用,现代汽车上的电子控制器的数量越来越多,常见的有发动机的电子燃油喷射装置、防抱死制动装置(ABS)、安全气囊装置、电动门窗装置、主动悬架等。电控系统的增加虽然...

Linux can总线调试学习记录

由于最近工作需要,需要用到can总线,自己以前又没有用到过can总线,所以记录下来自己的学习过程。      由于我是在linux下操作can总线的,所以一下内容主要是linux下的can操作过程。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CAN总线综述
举报原因:
原因补充:

(最多只允许输入30个字)