水下机器人通信系统的CAN总线冗余设计
2012-09-19邱小军李建勋
邱小军 刘 浏 吴 超 李建勋 葛 彤
(上海交通大学电子信息与电气工程学院1,上海 200240;上海交通大学水下工程研究所2,上海 200240)
0 引言
水下机器人(remotely operated vehicle,ROV)不仅广泛应用于海底资源探测等科学研究领域,而且在工业和军用领域也有广阔的应用前景。由于海洋环境复杂多变,且水下机器人的六自由度运动方程具有很强的耦合性和非线性特征,所以ROV对通信系统的可靠性和稳定性有很高的要求。通信系统故障有可能会导致ROV丢失,所以通信系统的可靠性设计是一个非常关键的问题[1]。
CAN总线因具有实时性强、传输距离较远、抗电磁干扰能力好、成本低、检错能力强等优点,在现场总线中应用广泛。目前,基于CAN总线的ROV控制系统设计方面已经有一些研究[2-4],但这些研究主要采用单CAN总线进行通信。这种通信方法的缺点是当CAN总线出现故障时,整个控制系统将无法运行。因此,针对单CAN总线在冗余性方面的不足,设计了ROV通信系统的通信扩展板,并采用了双CAN总线冗余技术。该设计的优点在于当通信系统出现CAN总线故障时,可以实现总线的自动切换,从而提高系统的可靠性。
1 系统总体设计
典型的ROV控制系统框图如图1所示[5]。
图1 ROV控制系统框图Fig.1 Block diagram of ROV control system
为保证ROV控制系统各单元之间通信的稳定性和可靠性,通信扩展板在硬件设计上采用了类似主板的设计方法,即使用了微处理器。这种设计有利于ROV数据的传输,能够简化主板数据传输任务的负担;同时,采用PC/104总线与主板进行通信。PC/104是一种专门为嵌入式控制而定义的工业控制总线。本设计将该总线应用于ROV通信系统,可以增强系统的可扩展性。
按功能划分,通信系统由PC/104接口转化部分、复杂可编程逻辑器件(complex programmable logic device,CPLD)时序转化部分、ARM实时控制部分和双CAN等外设组成。主板作为总控制和调配单元,PC/104总线接口用于主板和通信扩展板之间进行数据传输;CPLD作为中间逻辑接口,用于连接PC/104接口和ARM;ARM处理器作为主控制器,实时控制通信扩展板上的外设;ARM结合CPLD,实现双CAN总线冗余功能。
为了实现通信扩展板与主板之间的通信,首先需要在它们之间建立一个通信协议,用于通信扩展板解析主板命令。然后主板和通信扩展板各自对板上的外设进行初始化,彼此相互独立,完成各自任务的调度和控制。最后主板通过访问通信扩展板外设返回的状态和数据,执行系统总任务调度。这种设计可以降低主板CPU任务调度的复杂性。主板发送命令后,通信扩展板根据通信协议解析主板命令,控制相应的外设,从而完成指定的功能。
当主板访问通信扩展板时,可将通信扩展板看作主板的外设,主板通过访问通信扩展板所占用的地址空间来实现对外设的访问。主板发送的控制指令,经PC/104总线传送到通信扩展板;CPLD接收到命令后对其进行判断,并根据主板操作类型触发ARM处理器外部中断;ARM获取到主板指令后,根据通信协议解析主板命令。如果主板需要读取外设数据,则CPLD触发ARM处理器外部写中断。ARM进入写中断处理函数,把相应外设的数据通过数据线发送出去,再经过CPLD转化成主板读信号,同时把数据返回主板。如果主板进行写命令操作,CPLD收到命令后读取PC/104总线数据,触发ARM读中断,并把PC/104总线数据送到ARM数据总线。
2 PC/104总线接口设计
由于ARM处理器外部总线和PC/104总线之间的时序逻辑不一致,因此,采用CPLD对其进行逻辑转化。为了解决两种总线在电平模式、制造工艺上的差异,在ARM处理器和PC/104总线间接入缓冲器,以调整电气特性,保证总线转化的可靠性。
2.1 PC/104接口控制器原理
在PC/104总线接口的设计中,如何实现总线控制器的设计是PC/104接口的设计重点。本设计采用CLPD来实现总线控制器接口。通信扩展板PC/104总线控制器的工作流程如图2所示。
图2 PC/104总线转化器流程图Fig.2 Flowchart of PC/104 bus converter
2.2 接口硬件设计
主板PC/104总线宽度为8位,而连接PC/104的数据总线可以为8位或者16位操作,设置成8位总线宽度将有利于PC/104和ARM总线的同步,并且可以降低CPLD逻辑设计的复杂度。ARM和PC/104接口的转化电路[6]设计框图如图3所示。
图3 ARM和PC/104总线接口电路Fig.3 Circuit of the interface between ARM and PC/104 bus
在硬件方面,ARM微处理器采用Atmel公司的工业级芯片AT91RM9200。该芯片具有丰富的应用外设及标准的接口,最高工作频率可以达到200 MHz,具有低功耗、低成本和高性能的特点。CPLD采用了XILINX公司的XC95288XL芯片。该芯片拥有大量的I/O接口,可以满足本设计需要。ARM芯片具有数据线、地址线等控制线信号和若干个外部中断信号。中断信号线的主要作用是当CPLD接收到主板总线命令时,根据总线操作类型触发ARM相应的中断信号,可用于通知ARM进行数据的读写。NCS4信号引脚为ARM静态存储器片选信号,CPLD根据该引脚信号判断是否为ARM与PC/104总线之间的操作。若干个PIO口连接到CPLD的I/O口上,可用于查询CPLD工作状态。
在电气特性方面,ARM、CPLD和PC/104存在一些差异。CPLD的标准输入电平可以兼容TTL和LVTTL电平,输出电平为LVTTL电平;PC/104总线为TTL电平,虽然CPLD可以直接与TTL电平的PC/104总线相连,但可能因电气特性、信号完整性方面的原因,导致系统的可靠性下降,故在此采用缓冲器进行两种电平间的转换,以确保信号转化的可靠性。
3 双CAN总线冗余设计
CAN总线虽然具有抗干扰能力强、检错能力好等优点,但在实际使用中,CAN总线会出现总线故障,从而降低系统的可靠性。通过分析控制系统的冗余策略和实现方法[7],对ROV控制系统通信进行了双CAN总线冗余设计。目前,CAN总线冗余方法主要有以下几种[8-9]。
①CAN总线驱动器的冗余。该冗余的基本思路是使用两条总线,并在每个节点使用两个CAN收发器和一个CAN控制器;在两个收发器和控制器之间设计一个切换电路。正常情况下,只有一个收发器处于工作状态。当收发器工作不正常时,可经过切换电路自动切换到另一个CAN收发器。
②CAN总线控制器的冗余。该冗余的基本思路是使用两套完全不同的总线、收发器和总线控制器,处理器通过不同的端口中断和连接总线控制器。
③全系统的冗余。该冗余的基本思路是对整个CAN总线系统进行冗余,即使用两套完全相同的CAN总线、收发器、总线控制器和处理器。
第一种冗余方法存在一个硬件判断电路,当继电器进行双CAN切换时,不能保证切换成功;第二种方法硬件实现简单,而且可靠性高;第三种方法系统成本高,而且复杂。
3.1 双CAN总线系统
本文设计的双CAN总线冗余策略采用两套总线,由两个CAN收发器和两个CAN控制器实现。控制器采用SJA1000,它是PHILIPS半导体PCA82C200 CAN控制器(BasicCAN)的替代产品,而且增加了一种新的工作模式PeliCAN,能够支持具有很多新特性的CAN2.0B协议。
为了提高板卡负载能力和抗干扰能力,适应复杂环境分布式控制要求,本设计方案选用PCA82C250作为板卡总线收发器,在PCA82C250和SJA1000之间使用HCPL0603高速光耦进行电流隔离。该高速光耦的延时时间短,可以满足速度要求。在PCA82C250收发器和HCPL0603光耦之间采用B0505S-1W的DC/DC隔离电源芯片作为供电电源。在CAN总线上连接终端电阻,并在总线上设计限流电阻和滤波电容,以提高系统的抗干扰能力。双CAN总线系统框图如图4所示[10-11]。
图4 双CAN总线系统框图Fig.4 System diagram of dual CAN bus
SJA1000控制器的总线接口采用数据/地址复用方式,AT91RM9200外部总线不能直接连接SJA1000,而是需要对这两种总线进行转化,在此采用CPLD实现总线间的时序转化。ARM芯片的数据线、地址线、读/写控制信号、NCS5片选信号和两个外部中断信号线连接CPLD的I/O接口。其中,NCS5为ARM静态存储器片选信号,用于两路CAN资源地址空间的分配;两个中断信号引脚用于两路CAN资源中断。ARM总线信号经CPLD时序转化,产生SJA1000所需要的地址、数据、读/写、片选、模式选择和ALE信号等。
3.2 CAN总线冗余切换设计
双CAN总线冗余的实现主要需要解决故障的检测认定、CAN总线的重启和总线的自动切换等问题。
在正常工作情况下,系统初始化两路CAN总线:其中一路CAN总线正常运行,另一路CAN总线处于备用状态。ROV通信系统的CAN总线任务主节点以60 ms为周期给分节点发送查询命令。主节点和分节点之间采用应答形式,即分节点只有在接收到主节点发送的查询命令后,才开始通过CAN总线往主节点发送数据包。分节点CAN总线采用双屏蔽方式,主节点不屏蔽接收所有CAN总线数据包。系统运行后,主节点向分节点发送同步信号,直到建立同步。CAN总线故障检测方法是采用主节点和分节点分别检测CAN总线的接收任务状态。
主节点CAN总线冗余流程图如图5所示。
图5 主节点CAN总线冗余流程图Fig.5 Flowchart of main node CAN bus redundant
分节点流程图与主节点类似,只是没有查询总线切换请求,在总线出现故障时,增加了给主节点发送总线切换请求。
下面分两种情况对CAN总线自动切换进行具体设计。
①主节点CAN总线接收任务超时
主节点发送完查询命令后,监视CAN数据接收,并将超时时间设定为600 ms。如果分节点没有在设定的时间内返回CAN数据包,就认定CAN总线出现故障,关闭CAN总线,重启并置重启标志。重启后如果故障仍没有消除,标记错误总线,并向分节点发送CAN总线切换命令,关闭出现故障的CAN总线,所有节点同时开启备用CAN总线接收中断,备用总线等待建立同步。当CAN接收没有超时,则在CAN接收中断中查询是否有总线切换申请。如果没有,表示运行正常;如果有,则说明某个分节点总线出现故障,标记错误总线,并发送总线切换命令,同时关闭出现故障的CAN总线,所有节点开启备用CAN总线接收中断,备用总线等待建立同步。
②分节点CAN总线接收任务超时
超时时间设定为600 ms,即在这段时间内没有收到主节点CAN总线的查询命令即关闭并重启CAN总线。重启后如果故障没有解决,标记错误总线,并向主节点发送切换请求,同时,切换备用CAN总线,开启中断接收,关闭故障总线,等待建立新的同步。
本设计方案已在实际的ROV通信系统中进行了相关的测试。通信板卡使用VxWorks实时操作系统,通信系统主控单元每隔20 ms轮流给分节点发送CAN总线访问指令,通信周期为60 ms。调试结果显示,板卡CAN总线通信效果良好,CAN总线发送任务和中断处理任务运行正常,具有一定的规律性。
4 结束语
针对ROV通信系统,本文设计了以ARM处理器为核心、基于双CAN总线冗余的PC/104通信扩展板。这种设计可以减轻ROV通信系统主板控制器的负担,简化主板对通信扩展板驱动开发的复杂性;同时在外部设备多且传输数据量大的应用场合,保证了系统的性能。双CAN总线的冗余设计使得当系统单路CAN总线出现故障时,能够在不需要干预的情况下实现总线的自动切换,提高了系统的稳定性和可靠性。
[1]蒋新松,封锡盛,王棣棠.水下机器人[M].沈阳:辽宁科技出版社,2000.
[2]高剑,严卫生,张福斌,等.一种自主水下航行器分布式控制系统[J].兵工学报,2009,30(8):1140 -1141.
[3]高剑,严卫生,赵宁宁,等.基于CAN总线的水下机器人分布式控制系统[J].中国造船,2007,48(3):128 -133.
[4]张宏伟,王树新,杨晓华,等.基于CAN总线的自治水下机器人控制系统[J].机器人,2006,28(4):448 -450.
[5]张颖,张有志,方敏,等.基于CAN总线多主节点结构的自治水下机器人通信系统[J].上海海事大学学报:自然科学版,2010,31(1):40 -41.
[6]李臻君.基于ARM的PC/104总线嵌入式工控机的研究和实现[D].湘潭:湖南大学,2008.
[7]黄文君,金建祥,冯冬芹,等.控制系统的冗余策略和实现准则[J].仪器仪表学报,2004,25(4):545 -546.
[8]禹春来,许化龙,刘根旺,等.CAN总线冗余方法研究[J].测控技术,2003,22(10):28 -30.
[9]向卫军.基于PC/104的CAN总线冗余方法[J].工业控制计算机,2008,21(1):30 -31.
[10]郭晓军.基于PC104总线的双通道CAN通信板卡设计[J].网络与信息技术,2007,26(9):51 -53.
[11]马宪民,宋晓茹.基于ARM核和CAN总线的煤矸石分选系统[J].仪器仪表学报,2005,26(8):306 -307.