发表于:2008-08-07 17:30:19
楼主
起源
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。
当前,修订的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年起,Merc