海棠书屋 - 都市小说 - 电子帝国传奇在线阅读 - 第一百三十一章 CAN总线

第一百三十一章 CAN总线

    在前世1980年的早些时候,博世公司的工程师就开始论证当时的串行总线用于客车系统的可行性。

    因为没有一种现成的网络方案能够完全满足汽车工程师们的要求,于是,在1983年初,UweKiencke开始研究一种新的串行总线。

    新总线的主要方向是增加新功能、减少电气连接线,使其能够用于产品,而非用于驱动技术。来自Mercedes-Benz的工程师较早制定了总线的状态说明,而Intel也准备作为半导体生产的主要厂商。当时聘请的顾问之一是来自于德国Braunschweig-Wolfenbüttel的AppliedScience大学教授WolfhardLawrenz博士给出了新网络方案的名字“ControllerAreaNetwork”,简称CAN。来自Karlsruhe大学的教授HorstWettstein博士也提供了理论支持。

    经过三年的研发,于1986年2月,CAN诞生了。

    在底特律的汽车工程协会大会上,由博世公司研究的新总线系统被称为“汽车串行控制器局域网”。UweKiencke、SiegfriedDais和MartinLitschel分别介绍了这种多主网络方案。

    此方案基于非破坏性的仲裁机制,能够确保高优先级报文的无延迟传输。并且,不需要在总线上设置主控制器。此外,CAN之父——上述几位教授和博世公司的WolfgangBorst、WolfgangBotzenhard、OttoKarl、HelmutSchelling、JanUnruh已经实现了数种在CAN中的错误检测机制。

    该错误检测也包括自动断开故障节点功能,以确保能继续进行剩余节点之间的通讯。传输的报文并非根据报文发送器/接收器的节点地址识别(几乎其它的总线都是如此),而是根据报文的内容识别。同时,用于识别报文的标识符也规定了该报文在系统中的优先级。

    当关于这种革新的通讯方案的大部分文字内容制定之后,于1987年中期,Intel提前计划2个月交付了首枚CAN控制器:82526,这是CAN方案首次通过硬件实现。

    仅仅用了四年的时间,设想就变成了现实。不久之后,Philips半导体推出了82C200。这两枚最先的CAN控制器在验收滤波和报文控制方面有许多不同。一方面,由Intel主推的FullCAN比由Philips主推的BasicCAN占用较少的CPU载荷;另一方面,FullCAN器件所能接收的报文数目相对受到限制,BasicCAN控制器仅需较少的硅晶体。在后期的CAN控制器中,“孙子”辈们在同一模块中的验收滤波和报文控制方面仍有相当的不同,制造出BasicCAN和FullCAN两大阵营。

    在1990年早些时候,博世CAN规范(CAN2.0版)被提交给国际标准化组织。在数次行政讨论之后,应一些主要的法国汽车厂商要求,增加了“VehicleAreaNetwork(VAN)”内容,并于1993年11月出版了CAN的国际标准ISO11898。

    除了CAN协议外,它也规定了最高至1Mbps波特率时的物理层。同时,在国际标准ISO11519-2中也规定了CAN数据传输中的容错方法。1995年,国际标准ISO11898进行了扩展,以附录的形式说明了29位CAN标识符。

    但令人伤心的是,所有出版的CAN规范均包含错误或者不完整。因此,为避免出现不兼容的CAN应用,博世公司一直在进行验证CAN芯片是否基于博世的CAN参考模型的工件。此外,几年来在Lawrenz教授领导下,位于德国Braunschweig/Wolfenbüttel的---AppliedScience大学进行CAN的一致性测试,测试模式基于国际标准测试规范-----ISO16845。

    在修订的CAN规范正在标准化中。ISO11898-1称为“CAN数据链路层”,ISO11898-2称为“非容错CAN物理层”,ISO11898-3称为“容错CAN物理层”。国际标准ISO11992(卡车和拖车接口)和ISO11783(农业和森林机械)都在美国标准J1939的基础上定义了基于CAN应用的子协议,但是它们并不完整。

    尽管当初研究CAN的起点是应用于客车系统,但CAN的第一个市场应用却来自于其他领域。特别是在北欧,CAN早已得到非常普遍的应用。在荷兰,电梯厂商Kone使用CAN总线。瑞士工程办公室Kvaser已建议将CAN应用至一些纺织机械厂(LindauerDornier和Sulzer),并由他们提供机器的通讯协议。

    这一领域中,在Lars-BernoFredriksson的领导下,公司建立了“CAN纺织机械用户集团”。到1989年,他们已研究出通讯原理,并于1990年早期帮助建立“CANKingdom”开发环境。

    尽管CANKingdom并不是一种基于OSI参考模型的应用层,但它被认为是基于CAN的高层协议的原型。在荷兰,Philips医疗系统决定使用CAN构成X光机的内部网络,成为CAN的工业用户。主要由TomSuters发表的“Philips报文规范——PMS”提出了CAN网络的第一个应用层。来自德国Weingarten的AppliedScience大学教授KonradEtschberger博士也持同样的观点。他管理SteinbeisTransferCenterforProcessAutomation(Stzp)公司(现在更名为IXXATAutomation公司),并开发出一个类似的方案。

    不管如何,第一个高层协议正在形成。大多数CAN的先行者使用单片电路的方法,通讯功能、网络管理、应用代码组合在同一个软件之中。即使一些用户有较多的标准模块可供利用,但面对所有的解决方案,他们也一定存在着缺陷。

    而在1990年的早些时候,开始筹划成立一个用户组织,从而将不同的解决方案标准化。在1992年初的几个月里,当时VMEbus杂志的主管(出版社:Franzis)HolgerZeltwanger将用户和厂商集中在一起,讨论建立一个促进CAN技术发展的中立平台,同时也针对串行总线市场进行分析。1992年5月,CiA“CANinAutomation”用户集团正式成立。仅在几个星期后,CiA即发表了第一份技术杂志,那是关于物理层的。

    CiA推荐仅使用遵循ISO11898的CAN收发器。到现在为止,在当时的CAN网络中使用非常普遍但并不兼容的RS-485收发器已基本消失,尽管它也是厂商提供的。CiA的首批任务之一是规定CAN的应用层。根据Philips医疗系统(PMS)和Stzp所提供的内容,依靠其余CiA会员的协助,CAL——“CAN应用层”也称为“绿皮书”诞生了。在制定CAN应用规范时,CiA的一个主要任务是进行CAN专家和其他CAN学习者之间的信息交流。因此,从1994年起,CiA每年召开一次国际CAN会议(iCC)。

    另外一个理论的方法是借鉴于L**,一个农业的交通工具协会。在1980年晚些时候开始,一个基于CAN的农业交通工具总线系统(LBS)被制定出。但在工作最终完成前,国际标准化委员会决定改向支持

    US解决方案——J1939。这也是一个基于CAN的应用子协议,由SAE的TruckandBus协会制定。J1939是一个非模块化的方案,简单易学,但灵活性很差。

    当然,生产CAN模块集成器件的15家半导体厂商主要聚焦于汽车工业。从1990年中期起,Infineon公司和Motorola公司已向欧洲的客车厂商提供了大量的CAN控制器。作为下一波,从1990年后期起,远东的半导体厂商也开始提供CAN控制器。

    1994年,NEC推出了传说中的CAN芯片72005,但是,这一步太早了——当时,这个器件并不能投入使用。从1992年起,Mercedes-Benz(奔驰)开始在他们的高级客车中使用CAN技术。第一步使用电子控制器通过CAN对发动机进行管理;第二步使用控制器接收人们的cao作信号。

    这就使用了2个物理上独立的CAN总线系统,它们通过网关连接。其他的客车厂商也纷纷赶来斯图加特学习,在他们的客车上也使用2套CAN总线系统。现在,继Volvo、Saab、Volkswagen、BMW之后,Renault和Fiat也开始在他们的汽车上使用CAN总线。

    而在1990的早些时候,美国俄亥俄州的机械工程公司的工程师们与Allen-Bradley公司、Honeywell微型开关公司开始了一个合资项目,内容是基于CAN的通讯与控制。但是,不久之后,项目组的重要成员离开合资项目终止。但Allen-Bradley公司和Honeywell公司各自继续从事这项工作。

    这导致产生了两个高层协议:“DeviceNet”和“SmartDistributedSystem(SDS)”,而且这2个协议在较低层的通讯层上非常相似。在1994年早些时候,Allen-Bradley将DeviceNet规范移交给专职推广DeviceNet的组织“OpenDeviceNetVendorAssociation(ODVA)”。而Honeywell则放弃了在SDS方面的努力,使得SDS更象Honeywell公司的内部解决方案。

    DeviceNet特别为工厂自动控制而定制,因此,使其成为类似Profibus-DP和Interbus协议的有力竞争者。倘若仅从即插即用的功能考虑,DeviceNet已经成为美国特定应用领域中的领导者。

    在欧洲,一些公司在尝试使用CAL。尽管CAL在理论上正确,并在工业上可以投入应用,但每个用户都必须设计一个新的子协议,因为CAL是一个真正的应用层。CAL可以被看作一个应用CAN方案的必要

    理论步骤,但在这一领域它不会被推广。从1993年起,在EspritprojectASPIC范围内,由Bosch领导的欧洲协会研究出一个原型,由此发展成为CANopen。它是一个基于CAL的子协议,用于产品部件的内部网络控制。在理论方面,来自德国Reutlingen的AppliedScience大学教授GerhardGruhler博士和来自Newcastle(UK)大学的MohammedFarsi积极参与,均是其中最成功的活跃分子之一。在项目完成之后,CANopen规范移交给CiA组织,由其进行维护与发展。在1995年,CiA发表了完整版的CANopen通讯子协议;仅仅用了5年的时间,它已成为全欧洲最重要的嵌入式网络标准。CANopen不仅定义了应用层和通讯子协议,也为可编程系统、不同器件、接口、应用子协议定义了页状态,这也就是工业领域(比如:打印机、海事应用、医疗系统)决定使用CANopen的一个重要原因。