CAN 总线技术发展里程碑
CAN总线即为控制器局域网络(Controller Area Network,简称CAN或者CAN bus) ,是一种功能丰富的车用总线标准。被设计用于在不需要主机(Host)的情况下,允许网络上的单芯片和设备相互通信。 一辆车所有的控制器、传感器、电子设备等的通信只需要两个信号线构成的总线即可形成互联,极大的优化了整车的布线。如今,欧洲几乎所有汽车都配备了至少一个CAN网络,CAN还用于其他类型的车辆,从火车到轮船,以及工业控制中。CAN是最主要的总线协议之一,甚至可能是全球领先的串行总线系统。
图x 汽车上的CAN总线
年份 事件
1983: Start of the Bosch internal project to develop an in-vehicle network
1986: Launching the CAN protocol
1987: First CAN controller chips from Intel and Philips Semiconductors
1991: Bosch’s CAN specification 2.0 published
1992: CAN in Automation (CiA) association established
1992: CAN Application Layer (CAL) protocol published by CiA
1992: First cars from Mercedes-Benz using a CAN network
1993: Publication of ISO 11898 (data link and high-speed physical layer)
1994: 1st international CAN Conference (iCC) organized by CiA
1994: Publication of the SAE J1939 specification
1994: DeviceNet protocol introduction by Allen-Bradley
1995: ISO 11898 amendment (extended frame format) published
1995: Publication of the CiA 301 CANopen protocol by CiA
2000: Development of the CAN time-triggered protocol (TTCAN)
2003: Separation of data link and high-speed physical layer (ISO 11898-1 and -2)
2004: Publication of ISO 11898-4 (TTCAN)
2006: Publication of ISO 11898-3 (low-power, low-speed physical layer)
2007: Publication of ISO 11898-5 (low-power, high-speed physical layer)
2011: Start of the CAN FD protocol development
2013: Publication of ISO 11898-6 (physical layer with selective wake-up function)
2015: Publication of the reviewed ISO 11898-1 (Classical CAN and CAN FD)
从构思到第一个芯片
在1980年代初期,博世(Bosch)的工程师正在评估现有的串行总线系统,以探讨其在汽车中的可能用途。由于没有可用的网络协议能够满足汽车工程师的要求,因此Uwe Kiencke于1983年开始开发新的串行总线系统。
新的总线协议主要是要增加新的功能,减少线束不是CAN发展背后的驱动力。奔驰(Mercedes-Benz)的工程师很早就参与了新的串行总线系统的规范制定阶段,英特尔(intel)作为潜在的主要半导体供应商也参与了进来。来自德国Braunschweig-Wolfenbüttel的应用科学大学(现为Ostfalia University of Applied Science)的Wolfhard Lawrenz教授被聘为顾问,他将新的网络协议命名为“Controller Area Network(控制器区域网络)”。来自卡尔斯鲁厄大学的Horst Wettstein教授也提供了学术帮助。
1986年2月,CAN诞生了:在底特律的SAE大会上,新的总线系统被称为“Automotive Serial Controller Area Network(汽车串行控制器局域网)”。Uwe Kiencke,Siegfried Dais和Martin Litschel介绍了多主网络协议。它基于一种非破坏性仲裁机制,该机制允许总线访问具有最高优先级的帧而没有任何延迟。没有中心控制器。此外,CAN之父(上述人员以及博世员工Wolfgang Borst,Wolfgang Botzenhard,Otto Karl,Helmut Schelling和Jan Unruh)已经实现了几种错误检测机制。错误处理还包括自动断开故障总线节点,以保持其余节点之间的通信。传输的帧不是由帧发送器或帧接收器的节点地址(几乎在所有其他总线系统中)识别的,而是由它们的内容识别的。表示帧有效载荷的标识符,还具有 指定帧在网络段内的优先级。
图x Dr. Siegfried Dais, Prof, Dr. Uwe Kiencke 和 Martin Litschel
随后,许多介绍该创新通信协议的演讲和出版物,直到1987年中期(比计划提前两个月),英特尔才交付了第一款CAN控制器芯片82526(FullCAN)。这是CAN协议的第一个硬件实现。在短短四年内,一个想法就变成了现实。此后不久,飞利浦半导体推出了82C200(BasicCAN)。这两个最早的CAN控制器产品在接收过滤和帧处理方面有很大的不同:
ISO 11898-1 加入了对“ CAN数据链路层”
ISO 11898-2 加入了对“非容错” CAN物理层
ISO 11898-3 加入了“容错CAN物理层”。
ISO 11992系列(卡车和拖车接口)和ISO 11783(农业和林业机械)系列指定了基于SAE J1939网络方法的应用配置。但它们两个互不兼容,因为物理层规范不同。
CAN时代的先锋 CiA
尽管CAN原本被开发用于汽车应用,但实际最早使用CAN的应用来自其他的市场领域。特别是在北欧,CAN在早期已经非常流行。在芬兰,电梯制造商Kone使用了CAN总线。瑞典工程办公室Kvaser向一些纺织机械制造商(Lindauer Dornier和Sulzer)及其供应商建议将CAN作为机器内部的通信协议。在Lars-Berno Fredriksson的领导下,这些公司成立了“ CAN纺织品用户小组”。到1989年,他们制定了沟通原则,有助于在1990年代初塑造开发环境“ CAN Kingdom”。尽管CAN Kingdom不是一个遵循于OSI参考模型的应用层模型,但它仍被看做是基于CAN的高层协议的最初原型。
在1990年代初,是成立了一个用户小组的时候了,以推广CAN协议并促进其在许多应用中的使用。1992年1月,当时的《 VMEbus》杂志编辑(出版商:Franzis)的Holger Zeltwanger吸引了用户和制造商一起建立了一个中立的平台,用于CAN的技术研讨以及串行总线系统的市场营销。两个月后,“ CAN in Automation”(CiA)国际用户和制造商小组正式成立。在这段时间里,CAN Newsletter已经开始发布。
CiA的首要任务之一是规范CAN应用层。利用飞利浦医疗系统公司和STZP提供的现有材料,并在CiA其他成员的帮助下,开发了“ CAN应用程序层”(CAL, CAN Application Layer),也称为“绿皮书”。在开发使用CAN的规范时,CiA的主要任务之一是,组织CAN专家与那些希望在CAN上变得更多知识的专家之间进行沟通。因此,从1994年开始,发起了国际CAN会议(iCC,international CAN Conference)。
CAN FD的出现
2011年初,通用汽车和博世开始着手开发一些有关提高吞吐量的CAN协议。汽车行业中使用了越来越多的电子控制单元(ECU)时,对高速率通信的需求日益增多,高性能通信系统必须缩短耗时的任务。通过引入第二个比特率来提高CAN传输速度的想法并不新鲜。自2000年初以来,已有几位学者发表了研究方法。但没有一个学者能够说服汽车制造商。后来,博世与其他CAN专家合作,预先开发了CAN FD规范,该规范于2012年在德国哈姆巴赫城堡举行的第13届国际CAN会议上正式推出。
在ISO的标准化过程中,一些理论上的检测错误机制的缺陷被发现。这就需要对CAN FD协议进行审查,并引入其他防护措施(例如,填充位计数器)。这就是为什么存在非ISO CAN FD协议的原因,该协议与ISO 11898-1中标准化的ISO CAN FD协议不兼容。