上世纪80年代,Bosch公司的工程师发现当时的串行总线对于乘务车系统并不友好,因此他们决定开发一种新型串行总线标准。Bosch起初开发这一总线主要是为了增加新的功能,而不是现在大多数人认为的减少电气连接线。Intel和奔驰较早的参与了总线规范的制定。Wolfhard Lawrenz博士作为Bosch公司当时聘请的顾问之一,命名这一新的网络方案为“Controller Area Network”,简称CAN。
CAN正式推出于1986年2月的在底特律的汽车工程协会大会上。同时,CAN之父们--Uwe Kiencke,Siegfried Dais、Martin Litschel和作为Bosch公司社员的Wolfgang Borst等人已经实现了数种CAN中的错误检测机制。
1987年中期,Intel交付了首枚CAN控制器:82526,这是CAN方案首次通过硬件实现。不久之后,Philips半导体也推出了CAN控制器:82C200。
1991年,Bosch公司发表了CAN规范2.0。之后不久,这个规范被提交给国际标准化组织。ISO于1993年11月发表了CAN的国际标准ISO-11898,该标准规定了CAN的数据链路层与高速物理层。在1995年,ISO 11898被修订,增加了29位ID的扩展格式。
在2000年,ISO要求与制定CAN总线规范相关的几家公司定义一种支持时间触发(time-triggered)式CAN报文传输的协议。于是,Bernd Mueller博士, Thomas Fuehrer博士以及其他Bosch社员,与来自半导体产业和学术研究机构的专家们一同定义了一个新的CAN协议——TTCAN(Time-triggered communication on CAN)。
之后ISO又对CAN规范进行了修订,并于2003年发表了ISO 11898-1和-2标准。其中,ISO 11898-1标准描述了CAN协议的数据链路层,ISO 11898-2定义了无容错的CAN协议物理层。2004年,ISO发表TTCAN的标准ISO 11898-4。其后ISO又相继于2006年发表了描述低功耗低速CAN总线协议物理层的标准ISO 11898-3,于2007年发表了描述低功耗高速的CAN总线协议物理层的标准ISO 11898-5。.
在2011年,通用汽车与Bosch开始对CAN总线协议进行改良,希望它能有更高的数据吞吐量。虽然已经有好几家研究机构从2000开始就提出通过提高比特率增加CAN总线数据传输速度的方法,但这些方法都不够成熟,因而没有被汽车厂家所接受。通过与其他CAN专家进行合作,Bosch先开发了CAN-FD(CAN with Flexible Data-Rate)规范,然后在2012年的第十三届国际CAN会议上正式公布了这一标准。ISO于2015年正式发表了经过复审的ISO 11898-1标准,其中既包括了经典的CAN总线协议又定义了CAN-FD。然而在这一规范的标准化过程中,ISO发现了该规范在错误检测机制方面存在一些学术性的弱点,因此,除了标准的ISO 11898-1,现在还有一个非ISO标准的CAN-FD标准。
1.2.3 CAN总线的应用
20世纪80年代,德国的BOSCH公司首先将CAN总线应用于汽车内部的测控通信。现在,在欧美等国,CAN总线已被大量地应用于地应用于交通工具、机器人、各种机械设备、自动化仪表等领域[10][11]。在中国,现场总线的开发从“九·五”阶段便已经有了投资支持,其中CAN总线在国内的应用已经比较广泛。除了与国外相同的应用领域,我国还将其应用于工农业监控[12]、电厂测控[13]、火灾报警[14]、变电站控制[15]等领域。同时,各类院校及科研单位也用众多的人员和资金加强现场总线尤其是CAN总线技术的研究和开发[16][17]。
1.3 本文的主要工作
本文选题自导师近期项目,需要设计可与上位机进行冗余CAN通信,并且可以通过CANopen协议对下位驱动器进行配置的控制器。第一章介绍了选题背景,说明了CAN的优势。第二章详细介绍了CAN总线协议的内容,为之后的控制器上CAN总线模块的软硬件设计奠定基础。第三章设计了控制器CAN总线模块的硬件部分,实现了控制器与系统中其他节点之间的物理交互接口。第四章设计了CAN总线与上位机进行通信,对驱动器进行配置的程序。第五章描述了实验的情况,说明了各模块的正常工作状态。