一、起源
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 大学教授 WolfhardLawrenz 博士 给出了新网络方案的名字 “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。
当前,修订的 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 的工业用户。主要由 TomSuters 发表的“Philips 报文规范——PMS”提出了 CAN 网络的第一个应用层。来自德国 Weingarten 的 AppliedScience 大学教授 Konrad Etschberger 博士也持同样的观点。他管理 Steinbeis Transfer Center for ProcessAutomation(Stzp)公司(现在更名为 IXXAT Automation 公司),并开发出一个类似的方案。
不管如何,第一个高层协议正在形成。大多数 CAN 的先行者使用单片电路的方法,通讯功能、网络管理、应用代码组合在同一个软件之中。即使一些用户有较多的标准模块可供利用,但面对所有的解决方案,他们也一定存在着缺陷。必须持续稳定地发展 CAN 的高层协议——即使在今天,仍然有部分用户低估这个问题。
在 1990 年的早些时候,开始筹划成立一个用户组织,从而将不同的解决方案标准化。在 1992 年初的几个月里,当时 VMEbus 杂志的主管(出版社:Franzis)Holger Zeltwanger 将用户和厂商集中在一起,讨论建立一个促进 CAN 技术发展的中立平台,同时也针对串行总线市场进行分析。1992 年 5 月,CiA ”CANin 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套 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 DeviceNetVendor 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 在全球市场上仍然处于起始点,当得到重视时,谁也无法预料 CAN 总线系统在下一个 10-15 年内的发展趋势。这里需要强调一个现实:近几年内,美国和远东的汽车厂商将会在他们所生产汽车的串行部件上使用 CAN。另外,大量潜在的新应用(例如:娱乐)正在呈现——不仅可用于客车,也可用于家庭消费。同时,结合高层协议应用的特殊保安系统对 CAN 的需求也正在稳健增长。德国专业委员会 BIA 和德国安全标准权威 TÜV 已经对一些基于 CAN 的保安系统进行了认证。CANopen-Safety 是第一个获得 BIA 许可的 CAN 解决方案,DeviceNet-Safety 也会马上跟进。全球分级协会的领导者之一,Germanischer Lloyd 正在准备提议将 CANopen 固件应用于海事运输。在其他事务中,规范定义可以通过自动切换将 CANopen 网络转换为冗余总线系统。