关键词: CAN总线;模拟开关;总线扩展
1. 引言
CAN(Controller Area Network)总线属于现场总线的范畴,它是德国Bosch公司在20世纪80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。自Bosch公司推出CAN总线至今,CAN总线以其系统的实用性、可靠性和经济性而倍受青睐,并获得了长足的进步。CAN总线是目前惟一有国际标准的现场总线,可实现全分布式多机系统,采用非破坏性总线仲裁技术,可满足不同的实时要求,通信距离最远可达10km(传输率为5Kb/s),通信速率最高可达lMb/s(传输距离为40m);节点数可达110个,传输介质为双绞线或光纤,报文采用短帧结构,带有CRC校验以及其他检错措施,使得数据出错率极低, 可靠性极高。CAN总线以其卓越的特性,低廉的价格,极高的可靠性和灵活的结构,已被公认为最有前途的现场总线之一。
正由于CAN总线具有诸多其他总线无法比拟的特性,所以CAN在许多场合应用广泛。然而,有时由于工程项目的特殊要求,需要CAN总线连接更多的节点或是更远的通信距离,这就必须对CAN总线网络进行扩展。目前比较常用的CAN总线扩展方法是利用CAN中继器将两个CAN总线网络连接起来,如周立功的CANrep-A\B型智能全隔离CAN中继器、CAN-3202智能CAN总线两路中继网桥、XYCANR2双端口CAN光电隔离中继器、ADAM-4515 CAN中继器以及WT406-CAN CAN总线中继模块等。这些CAN中继器都是采用微控制器对两个CAN网络的数据进行分别存储和相互转发,从而实现两个网络的连接和双向的数据传输。如果要利用中继器实现CAN总线网络的扩展就必须增加相应的微控制器:CAN控制器和CAN驱动器。这样就增加了系统成本,提高了工程造价。
基于上述问题,我们设计了一种基于模拟开关ADG663的CAN总线网络扩展方案。利用模拟开关可以分时导通的特性,我们将微控制器经过CAN控制器出来的信号分时的打到两个位于不同CAN网络的CAN驱动器上,这样就可以把微控制器分时的挂到两个CAN网络上,实现两个CAN网络之间的数据交换,从而实现了CAN总线网络的无中继扩展。如图1所示,将网络相邻处的微控制器通过模拟开关分时复用的连接到两个CAN网络上,既能实现网络的扩展又能完成本节点的测控任务,从而省去了中继器,降低了系统成本。根据CAN通信的特点,要对两路CAN信号进行切换,我们采用独立四通道可控模拟开关ADG663,通过对其控制引脚进行编程控制实现微控制器在两个CAN总线网络中的切换。
2. ADG663简介
ADG663是ADI公司生产的集成COMS开关器件。它包含4个独立的可选模拟开关通道,可以由控制端方便的控制其通断。这些通道具有很低的导通电阻和很宽的信号输入范围,可实现精确的模拟信号切换。整个器件基于ADI公司先进的线性兼容CMOS(LC2MOS)工艺制作而成,具有低漏电流、超低功耗、高速工作时极小的电荷积累等特点。尤其是ADG663的四通道中有两通道是高电平导通,而另外两个是低电平导通,这样不光使得模拟开关的控制信号非常简单,而且使得CAN总线收发切换更加同步。ADG663的功能框图如图2所示IN1~IN4为控制信号端,S1~S4为输入信号,D1~D4为对应的输出信号。
3. 基于ADG663的CAN总线网络扩展
3.1 扩展电路的硬件设计
在CAN总线网络中,我们用于检测的微控制器选用微芯公司新款集成CAN总线控制器的PIC18F458芯片,它是8位CMOS单片机,内部采用哈佛总线结构,使得全部指令单字节、单周期化,有利于提高CPU执行指令的速度,从而提高单片机的运行速度。而CAN驱动器我们选用微芯公司的CAN总线驱动芯片MCP2551,它完全兼容ISO 11898标准,最高速率可达1Mb/s,提供了比82C250更好电磁辐射和抗电磁干扰能力性能。利用ADG663扩展CAN总线网络的原理如图3所示,由于ADG663的特点,微控制器仅用一根口线就可以实现两个CAN驱动器之间的切换,并同时保证微处理器对每一个CAN驱动器的收发同步以及微处理器在任意时刻均挂在总线上,还可以提高模拟开关切换时的系统稳定性。
3.2 扩展电路的软件编程
基于CAN总线的即插即用接口特性,这种扩展方式只需改变中转节点的编程,而无须对其余节点进行修改。编写中转节点的程序使其在完成自身的测控任务的同时实现对两边数据的存储和转发。要同时完成这两个任务,必须保证微控制器的工作频率远大于CAN总线的位速率,这样可以确保微处理器有足够的时间存储和转发两个网络的数据。由于微处理器利用模拟开关在两个CAN网络中切换,在理论上必定会导致总线上部分数据丢失,这就必须要求测量节点对其传输数据进行适当的重发,从而可以保证数据可以完整的相互交换。对于中转节点,在原有的测量节点程序中,加入定时器定时,以决定模拟开关的切换频率。同时当微控制器连接到某一网络后,微处理器不光要将自身检测信息和控制信号以及接着另一个网络时存储的信息全部发送出去,而且还要中断接收这个网络其他节点的信息并存储,等到模拟开关切换时进行发送。节点信息重发的次数由微处理器的工作频率以及CAN总线的传输速率综合决定。选择合适的次数使得一方面总线的冗余信息不会过多,另一方面模拟开关的切换过程中微处理器不会丢失掉过多的信息。
4. 结束语
本文讨论的这种基于模拟乘法器ADG663的CAN总线网络扩展方案省去了CAN中继器,简化了系统硬件连接,降低了系统成本,为CAN总线的网络扩展提供了一种简单有效的实现方法。然而简化硬件的同时就不可避免的增加了系统软件的复杂性,并对系统通信速率有了一定限制。因此,该方案适应于数据传输量不是很大,速率要求不是很高的场合。
参考文献
1 李刚,林凌.现代测控电路[M].北京:高等教育出版社.2004
2 邹继军,饶运涛.CAN中继器设计及其应用,电子技术应用,2003.29(8):39~41
3 林凌,洪权,李刚. ADUM1201在CAN总线通信系统中的应用.电子产品世界.2005.4:98~100
4 饶运涛.现场总线CAN原理与应用技术[M].北京.北京航空航天大学出版社.2003
5 李学海.PIC单片机实用教程[M].北京:北京航空航天大学出版社.2004
6 刘和平.PIC18XXX单片机原理与接口程序设计[M].北京:北京航空航天大学出版社. 2004