CAN总线技术详解
CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
CAN总线技术原理
CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。CAN与I2C总线的许多细节很类似,但也有一些明显的区别。
当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。
每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。
当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状 态。
CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。
由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或 软件上进行修改。
当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。
CAN支持四类信息帧类型
1、数据帧
CAN协议有两种数据帧类型标准2.0A和标准2.0B。两者本质的不同在于ID的长度不同。在2.0A类型中,ID的长度为l l位;在2.0B类型中ID为29位。一个信息震中包括7个主要的域: 帧起始域——标志数据帧的开始,由一个显性位组成。
仲裁域——内容由标示符和远程传输请求位(RTR)组成,RTR用以表明此信息帧是数据帧还是不包含任何数据的远地请求帧。当2.0A的数据帧和2.0B的数据帧必须在同一条总线上传输时,首先判断其优先权,如果ID相同,则非扩展数据帧的优先权高于扩展数据帧。
控制域——r0、r1是保留位,作为扩展位,DLC表示一帧中数据字节的数目。 数据域——包含0~8字节的数据。
校验域——检验位错用的循环冗余校验域,共15位。应答域——包括应答位和应答分隔符。正确接收到有效报文的接收站在应答期间将总线值为显性电平。 帧结束——由七位隐性电平组成。
2、远程帧
远程帧接受数据的节点可通过发远程帧请求源节点发送数据。它由6个域组成:帧起始、仲裁域、控制域、校验域、应答域、帧结束。
3、错误指示帧
错误指示帧由错误标志和错误分界两个域组成。接收节点发现总线上的报文有误时,将自动发出“活动错误标志”其他节点检测到活动错误标志后发送“错误认可标志”。
4、超载帧
超载帧由超载标志和超载分隔符组成。超载帧只能在一个帧结束后开始。当接收方接收下一帧之前,需要过多的时间处理当前的数据,或在帧问空隙域检测到显性电平时,则导致发送超载帧。
5、帧间空隙
帧间空隙位于数据帧和远地帧与前面的信息帧之间,由帧间空隙和总线空闲状态组成。帧间空隙是必要的,在此期间, CAN不进行新的帧发送,为的是CAN控制器在下次信息传递前有时间进行内部处理操作。当总线空闲时CAN控制器方可发送数据。
CAN总线的发展历程
在 1980 年的早些时候,Bosch 公司的工程师就开始论证当时的串行总线用于客车系统的可行性。因为没有一种现成的网络方案能够完全满足汽车工程师们的要求,于是,在 1983 年初,Uwe Kiencke 开始研究一种新的串行总线。
新总线的主要方向是增加新功能、减少电气连接线 ,使其能够用于产品。来自 Mercedes-Benz 的工程师较早制定了总线的状态说明,而 Intel 也准备作为半导体生产的主要厂商。
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 两大阵营。
标准化与一致性。
尽管当初研究 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 的工业用户。大多数 CAN 的先行者使用单片电路的方法,通讯功能、网络管理、应用代码组合在同一个软件之中。即使一些用户有较多的标准模块可供利用,但面对所有的解决方案,他们也一定存在着缺陷。
在 1990 年的早些时候,开始筹划成立一个用户组织,从而将不同的解决方案标准化。
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套 CAN 总线系统。
尽管 CAN 协议已经有很长的历史,但它仍处在改进之中。一个由数家公司组成的 ISO任务组织定义了一种时间触发 CAN 报文传输的协议。现在,CAN 在全球市场上仍然处于起始点,汽车厂商将会在他们所生产汽车的串行部件上使用 CAN。
另外,大量潜在的新应用(例如:娱乐)正在呈现——不仅可用于汽车,也可用于家庭消费。同时,结合高层协议应用的特殊保安系统对 CAN 的需求也正在稳健增长。德国专业委员会 BIA 和德国安全标准权威 TÜV 已经对一些基于 CAN 的保安系统进行了认证。
CAN总线的分层结构
CAN遵从OSI模型,按照OSI基准模型,CAN结构划分为两层:数据链路层和物理层,如下图所示。
按照IEEE 802.2和802.3 标准,数据链路层又划分为:
1、逻辑链路控制(LLC-Logic Link Control)。
2、媒体访问控制(MAC-Medium Access Control)。
物理层又划分为:
1、物理信令(PLS-Physical Signalling)。
2、物理媒体附属装置(PMA-Physical Medium Attachment)。
3、媒体相关接口(MDI-Medium Dependent Interface)。
MAC子层运行借助称之为“故障界定实体(FCE)”的管理实体进行监控。故障界定是使判别短暂干扰和永久性故障成为可能的一种自检机制。物理层可借助检测和管理物理媒体故障实体进行监控(例如总线短路或中断,总线故障管理)。
LLC和MAC两个同等的协议实体通过交换帧或协议数据单元(PDU-Protocol Data Unit)和(N)-用户数据组成,为传送一个NPDU,(N-1)层实体必须通过(N-1)服务访问点(SAP-Service Access Point)[(N-1)-SAP].NPDU借助于(N-1)层服务数据单元(SDU-Service Data U nit)[(N-1)-SDU]传至(N-1)层,其服务功能允许NPDU的传送。
SDU是接口数据,对其识别预先在(N)层实体间进行,亦即,它表示逻辑数据单元由服务进行传送。CAN协议的数据链层既不提供分配一个SDU至多个PDU,也不提供分配多个SDU至一个PDU的方法,亦即,NPDU直接由相应的NSDU和层指定控制信息N-PCI构成。
CAN总线的特点
CAN具有十分优越的特点,使人们乐于选择。这些优越的特点包括:
1、多主控制
当总线空闲时,连接到总线上的所有单元都可以启动发送信息,这就是所谓的多主控制的概念。
先占有总线的设备获得在总线上进行发送信息的资格。这就是所谓的CSMA/CR(Carrier Sense MultipleAccess/Collosion Avoidance)方法
如果多个设备同时开始发送信息,那么发送最高优先级ID消息的设备获得发送资格。
2、信息的发送
在CAN协议中,所有发送的信息要满足预先定义的格式。当总线没有被占用的时候,连接在总线上的任何设备都能起动新信息的传输,如果两个或更多个设备在同时刻启动信息的传输,通过ID来决定优先级。ID并不是指明信息发送的目的地,而是指示信息的优先级。
如果2个或者更多的设备在同一时刻启动信息的传输,在总线上按照信息所包含的ID的每一位来竞争,赢得竞争的设备(也就是具有最高优先级的信息)能够继续发送,而失败者则立刻停止发送并进入接收操作。因为总线上同一时刻只可能有一个发送者,而其它均处于接收状态,所以,并不需要在底层协议中定义地址的概念。
3、系统的灵活性
连接到总线上的单元并没有类似地址这样的标识,所以,添加或去除一个设备,无需改变软件和硬件,或其它设备的应用层软件。
4、通信速度
可以设置任何通讯速度,以适应网络规模。
对一个网络,所有单元必须有相同的通讯速度,如果不同,就会产生错误,并妨碍网络通讯,然而,不同网络间可以有不同的通讯速度。
5、远程数据请求
可以通过发送“遥控帧”,请求其他单元发送数据。
6、错误检测、错误通知、错误恢复功能
所有单元均可以检测出错误(错误检测功能)。检测到错误的单元立刻同时通知其它所有的单元(错误通知功能)。如果一个单元发送信息时检测到一个错误,它会强制终止信息传输,并通知其它所有设备发生了错误,然后它会重传直到信息正常传输出去(错误恢复功能)。
7、错误隔离
在CAN总线上有两种类型的错误:暂时性的错误(总线上的数据由于受到噪声的影响而暂时出错);持续性的错误(由于设备内部出错(如驱动器坏了、连接有问题等)而导致的)。CAN能够区别这两种类型,一方面降低常出错单元的通讯优先级以阻止对其它正常设备的影响,另一方面,如果是一种持续性的错误,将这个设备从总线上隔离开。
8、连接
CAN总线允许多个设备同时连接到总线上且在逻辑上没有数目上的限制。然而由于延迟和负载能力的限制,实际可连接得设备还是有限制的,可以通过降低通讯速度来增加连接的设备个数。相反,如果连接的设备少,通讯的速度可以增加。
CAN与其它通信方案的比较
CAN总线与其它通信网的不同之处在于:
一是报文传送中不包含目标地址,它是以全网广播为基础。各接收站根据报文中反映数据性质的标识符过滤报文,该收的收下,不该收的丢弃。其好处是可在线上网下网、即插即用和多站接收;
二是特别强化了对数据安全性的关注,满足控制系统及其它较高数据要求的系统需求。
在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。在第一种方法中,不管每个节点是否申请总线,都对每个节点按最大期间分配。由此,总线可被分配给每个站并且是唯一的站,而不论其是立即进行总线存取或在一特定时间进行总线存取。
这将保证在总线存取时有明确的总线分配。在第二种方法中,总线按传送数据的基本要求分配给一个站,总线系统按站希望的传送分配。因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。为了分配总线,多于一个总线存取是必要的。
CAN实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。不同于Ethernet网络的消息仲裁,CAN的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时总线不被占用。
甚至当总线在重负载情况下,以消息内容为优先的总线存取也被证明是一种有效的系统。虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。在CSMA/CD这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在CAN中不会发生。
CAN总线的应用
CAN总线在组网和通信功能上的优点以及其高性价比据定了它在许多领域有广阔的应用前景和发展潜力。这些应用有些共同之处:CAN实际就是在现场起一个总线拓扑的计算机局域网的作用。
不管在什么场合,它负担的是任一节点之间的实时通信,但是它具备结构简单、高速、抗干扰、可靠、价位低等优势。CAN总线最初是为汽车的电子控制系统而设计的,目前在欧洲生产的汽车中CAN的应用已非常普遍,不仅如此,这项技术已推广到火车、轮船等交通工具中。
汽车制造中的应用
应用CAN总线,可以减少车身布线,进一步节省了成本,由于采用总线技术,模块之间的信号传递仅需要两条信号线。布线局部化,车上除掉总线外其他所有横贯车身的线都不再需要了,节省了布线成本。
CAN总线系统数据稳定可靠,CAN总线具有线间干扰小、抗干扰能力强的特点。CAN总线专为汽车量身定做,充分考虑到了汽车上恶劣工作环境,比如点火线圈点火时产生的强大的反充电压,电涡流缓冲器切断时产生的浪涌电流及汽车发动机仓100℃左右的高温。
随着安全性能日益受到重视,安全气囊也将逐渐增多,以前是在驾驶员前面安装一个,今后侧面与后座都会安装安全气囊,这些气囊通过传感器感受碰撞信号,通过CAN总线将传感器信号传送到一个中央处理器内,控制各安全气囊的启动弹出动作。
同时,先进的防盗设计也正基于CAN总线网络技术。首先,确认钥匙合法性的校验信息通过CAN网络进行传递,改进了加密算法,其校验的信息比以往的防盗系统更丰富;其次,车钥匙、防盗控制器和发动机控制器相互储存对方信息,而且在校验码中搀杂随机码,无法进行破译,从而提高防盗系统的安全性。而这些功能的实现无一不借助CAN总线来完成,CAN总线成为汽车智能化控制的“定海神针”。
在现代轿车的设计中,CAN已经成为必须采用的装置。奔驰、宝马、大众、沃尔沃、雷诺等汽车都采用了CAN作为控制器联网的手段。据报道,中国首辆CAN网络系统混合动力轿车已在奇瑞公司试装成功,并进行了初步试运行。
在上海大众的帕萨特和POLO汽车上也开始引入了CAN总线技术。但总的来说,目前CAN总线技术在我国汽车工业中的应用尚处于试验和起步阶段,绝大部分的汽车还没有采用汽车总线设计。国内在技术、设计和应用上进行网络总线的“深造”势在必行。
大型仪器设备中的应用
大型仪器设备是一种参照一定步骤对多种信息采集、处理、控制、输出等操作的复杂系统。过去这类仪器设备的电子系统往往是在结构和成本方面占据相当大的部分,而且可靠性不高。采用CAN总线技术后,在这方面有了明显改观。
以医疗设备为例,病理分布式监控系统分别由中央控制式的中央监控单元和现场采集单元。 现场采集单元对医院各室诊断测量仪器进行数据、图像的实时采集,同时完成数据统计、存贮; 中央监控单元可以定期或不定期地从现场采集单元获取数据并完成图像监测、数据统计、报表、打印及数据库管理。
中央监控单元和现场采集单元之间通过CAN总线连接在一起,在这个网络中,中央监控单元处于主控位置,而现场采集单元可以随时响应中央监控单元的命令。其现场采集单元由单片机8C552及采集、存储、显示、遥控和通信模块组成,每个现场采集单元可与10个测量仪器相接。
Can总线是针对测控领域设计的,所以一次传输的报文量很小,一次报文量最大能够承载的数据上限为8字节,这种小数据量的传输一方面能够使得低优先级事务的传输,另一方面也非常符合测控需求。针对can总线技术的诸多优点,非常适合应用于大型仪器系统模块化之间的互相通信,采用模块化组网的方式构建大型仪器系统。
工业控制中的应用
随着计算机技术、通信技术和控制技术的发展,传统的工业控制领域正经历着一场前所未有的变革,而工业控制的网络化,更拓展了工业控制领域的发展空间,带来新的发展机遇。在广泛的工业领域,CAN总线可作为现场设备级的通信总线,而且与其他的总线相比,具有很高的可靠性和性能价格比。这将是CAN技术开发应用的一个主要的方向。
例如,瑞士一家公司开发的轴控制系统ACS-E就带有CAN接口。该系统可作为工业控制网络中的一个从站,用于控制机床、机器人等。一方面通过CAN总线上上位机通信,另一方面可通过CAN总线对数字式伺服电机进行控制。通过CAN总线最多可连接6台数字式伺服电机。
目前CAN总线技术在工程机械上的应用越来越普遍。国际上一些著名的工程机械大公司如CAT、VOLVO、利勃、海尔等都在自己的产品上广泛采用CAN总线技术,大大提高了整机的可靠性、可检测和可维修性,同时提高了智能化水平。而在国内,CAN总线控制系统也开始在工程汽车的控制系统中广泛应用,在工程机械行业中也正在逐步推广应用。
智能家庭和生活小区管理中的应用
小区智能化是一个综合性系统工程,要从其功能、性能、成本、扩充能力及现代相关技术的应用等多方面来考虑。基于这样的需求,采用CAN技术所设计的家庭智能管理系统比较适合用于多表远传、防盗、防火、防可燃气体泄漏、紧急救援、家电控制等方面。
CAN总线是小区管理系统的一部分,负责将家庭中的一些数据和信号收集起来,并送到小区管理中心处理,CAN总线上的节点是每户的家庭控制器、小区的三表抄收系统和报警监测系统,每户的家庭控制系统可通过总线发送报警信号,定期向自动抄表系统发送三表数据,并接收小区管理系统的通告信息,如欠费通知、火警警报等。
该系统充分利用CAN技术的特点和优势,构成住宅小区智能化检测系统,系统集多表集抄、防盗报警、水电控制、紧急求助、煤气泄漏报警、火灾报警和供电监控子系统等功能,并提供远程通讯服务。
机器人网络互联中的应用
制造车间底层设备自动化,近几年仍是我国开展新技术研究和新技术应用工程及产品开发的主要领域,其市场需求不断增大且越发活跃,竞争也日益激烈。伴随着工业机器人的产业化,目前机器人系统的应用大多要求采用机器人生产方式,这就要求多台机器人能通过网络进行互联。
随之而来的是,在实际生产过程中,这种连网的多机器人系统的调度、维护工作也变得尤为重要。制造车间底层电气装置联网是近几年内技术发展的重点。
其电器装置包括有:运动控制器、基于微处理器的传感器、专用设备控制器等底层设备;在这些装置所构成的网络上另有车间级管理机、监控机或生产单元控制器等非底层装置。结合实际情况和要求,将机器人控制器视为运动控制器。
把CAN总线技术充分应用于现有的控制器当中,将可开发出高性能的多机器人生产线系统。利用现有的控制技术,结合CAN技术和通信技术,通过对现有的机器人控制器进行硬件改进和软件开发,并相应地开发出上位机监控软件,从而实现多台机器人的网络互联。
最终实现基于CAN网络的机器人生产线集成系统。这样做的好处很多,例如实现单根电缆串接全部设备,节省安装维护开销;提高实时性,信息可共享;提高多控制器系统的检测、诊断和控制性能;通过离线的任务调度、作业的下载以及错误监控等技术,把一部分人从机器人工作的现场彻底脱离出来。
CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视,它在汽车领域上的应用是最广泛的。世界上一些著名的汽车制造厂商大都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。
同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。