孙玉胜,薛贺杰
(郑州轻工业学院 电气信息工程学院,郑州 450002)
随着工业的飞速发展,运动控制在工业生产中的作用举足轻重。运动控制系统中,经常涉及多电机联动控制,为了实现对多台电机之间的分布式控制,必须建立一套可靠的数据通信系统。传统的多电机间通信基于RS485 网络或CAN 网络,RS485 网络的缺陷无须赘言,CAN 网络也存在当网络信息负载较大时容易出错、排除永久性故障的能力较差的缺点,不能满足对实时性和可靠性要求较高网络的需求。另外CAN 总线的底层协议也未对通信系统的冗余性提出直接支持[1],而且当所有电机节点同时向上位机发送报文时,由于CAN 总线位仲裁机制,数据会产生不确定延时甚至丢失。
因此,研究并实现具有总线分时调度机制的CAN总线冗余网络,在多电机协调控制系统中具有极其重要的意义。本文就是针对如何提高基于CAN 总线的多电机协调控制系统的工作可靠性和实时性而提出的一种解决方案。
为了提高整个系统的可靠性,人们总结出两种有效的方案:一种是避错,通过完美规划和设计,避免产生错误和故障;另一种是容错,当出现故障时,系统也能正常工作,且执行结果也不会因系统故障而产生差错[2-3]。
冗余技术是在容错思想的指导下发展起来的,在基于CAN 总线的底层网络系统中,为了提高系统的可靠性,需对总线的各个部分进行冗余设计。冗余的基本形式有三总线冗余和二总线冗余,采用双总线冗余的设计可使平均无故障时间的相对增加量比采用三总线冗余高,且经济可行,所以采用双总线冗余设计效率最高。
传统的CAN 总线冗余为了降低成本一般采用驱动器冗余方式,如图1 所示,即在控制节点上采取CPU+CAN 控制器+判断电路+双CAN 驱动器+双总线的架构[4]。在发送报文时,通过两个CAN 驱动器同时向两条总线发送相同报文,两总线均正常工作时,传送的报文相同。在接收报文时,通过判断电路选择接收哪条总线上的数据,判断电路对总线的选择依据时间优先的原则。因为任何两条相同总线的电气特性总会存在一定差异,所以通过它们传输的报文之间存在一定的传输延迟,导致报文到达的时间有先有后。因此,根据“先到先得”的原则,先到达的报文经过判断电路被CAN 控制器接收。如果两条CAN 总线均无故障,那么总线上传输的报文都是相同的,因此选择哪路总线收到的都是正确的报文。
图1 传统CAN 总线驱动器冗余方式逻辑图
基于双CAN 驱动器的冗余有一个很大的缺点就是过于依赖CAN 控制器,一旦控制器出现故障,则此控制节点将陷于瘫痪,而在严苛的工业现场中这种情况很容易出现。
为了克服基于双CAN 驱动器冗余的固有缺陷,本文提出了基于双CAN 控制器的冗余结构。每个控制节点采取F28335 控制单元+双CAN 控制器+双CAN驱动器+双总线的基本架构,不仅能实现系统的冷、热冗余切换,还能达到使CAN 总线网络的各个环节相互备份的目的,这样不仅能提高整个网络传输数据的效率,同时也在很大程度上缓解了总线的信息负荷,有利于延长总线的寿命。
在多电机协调控制中,为了保证整个系统的可靠性和实时性,控制节点一般采用DSP 作为主控芯片,本文电机控制节点的设计正是基于TMS320F28335 的冗余架构。TMS320F28335 是TI 公司C2000 系列的最新产品,主频高达150MHz,CPU 为浮点处理器,相比C2000 系列的其他芯片整体性能提升了两倍以上。它除了拥有强大的数据处理能力,还含有EPWM 模块、16 通道12 位ADC 模块、ECAP 模块、两个ECAN 模块等,每个增强型CAN 模块内部含有32 个邮箱,且均支持CAN2.0A 和CAN2.0B 协议,为实现CAN 控制器冗余提供了坚实的基础[5]。
利用F28335 内部含有的两个增强型CAN 模块,可组成基于双余度CAN 通信接口的控制节点,如图2所示。整个系统采用总线型拓扑结构,多个电机节点挂载到冗余总线A 和B 上,由一个上位机节点进行统一调度。上位机也采用双冗余设计,一个上位机出现故障,控制权立即由另外一个上位机接管。
图2 基于TMS320F28335 的双余度CAN 总线拓扑结构
1.3.1 主节点监控程序设计
如图3 所示,CAN 总线网络正常工作时,每隔1ms主节点发出查询报文[6],如果在限定的时间内未收到其他节点的应答报文或者应答报文不正确,则返回重新发送查询报文,如果连续三次未收到其他节点的应答报文或者应答报文错误,那么主节点认为总线故障,发出故障报文通知网络上能正常通信的节点切换至备用总线。切换到备用总线后,重新发送查询报文,如果备用总线正常,CAN 网络进行正常通信,如果不正常,发出报警信号。
图3 主节点监控程序流程图
1.3.2 从节点监控程序设计
图4 从节点监控程序流程图
如图4 所示,从机每隔2ms 通过CAN 总线接收主机发出的查询报文,需要应答时发出应答信号给主机。如果在限定时间内未收到查询报文,或者收到故障报文,重新确认,如果连续三次未收到查询报文或收到故障报文,则认为网络故障,切换至备用总线。总线切换完成后,继续接收查询报文,如果正常,网络进入正常工作状态,否则发出报警信号。
在分布式网络中存在两种不同的信息传输机制:时间触发机制和事件触发机制[7-8]。事件触发机制指的是信息交换由外部事件的触发而引起的,多个事件同时发生时会造成总线冲突,可能会丢失数据,这在强调实时性和可靠性的系统中是不能允许的。时间触发机制中,系统负载独立于外部事件发生的数目,负载高峰期和正常时间段内的信息传输延迟是相同的,因而可提高信息传输的确定性。时间触发机制的关键是保证系统中所有节点的时钟完全同步,因为随着时间的推移每个从节点的时钟会不可避免的产生一定的漂移,必须把时间漂移控制在一个基本周期内才能达到要求。为了解决这个问题,本文在传统分时调度的基础上引入了基准信息的概念。
基准信息包含时钟同步信息,以用来校正每个节点的本地时钟;同时包含系统所必须的控制信息,用来确定由此信息所触发的某个基本周期允许发送的节点和时间片。基准信息由上位机发出,各从节点在接收到此信息之后,首先校正自己的本地时钟,使之与主机同步,同时查询该信息中是否包含本节点的时间片,这样就能保证所有节点在规定的时间片内按时发送自己的信息。
该调度方式可通过合理的调度算法将一个基本周期分成各个时间窗,各节点根据分配好的总线时间,在特定时间段内完成特定的任务。这样可以避免同一瞬间多个报文参与总线仲裁的情况,减少了周期性报文间的冲突,能够有效的改善系统性能。
在多电机协调控制中,主机中的调度器通过调度算法来配置各个节点的发送时间,主要有以下两种调度算法。
静态调度方法:各节点的发送顺序都是事先离线设计的,在系统初始化时,离线生成调度表,在系统运行时,按照此表规定的顺序发送信息。静态调度的优点是简单、容易实现、占用系统资源少,缺点是系统灵活性小,一旦产生调度表,系统运行时就无法改变,如果要改变,必须让系统停止运行。
动态调度方法:按照系统动态需求,在系统运行时动态生成调度表,这样如果系统需求发生改变,可以立即生成新的调度表,无需重新运行系统。此法占用系统资源大,加大了系统开销,优点是灵活性较大。
所以在本文设计中采用基于动态调度方法的总线分时调度机制。在该调度机制中,最多只有两个节点的突发报文通过仲裁进行传输,有效减少了总线上同一时刻竞争的报文数,降低了丢失报文的风险。上位机以10ms 为周期发送基准信息报文,所有节点以此报文作为其基本周期的开始。各节点的反馈报文和控制报文在基本周期中均被分配有相应的时间片,报文在各自的时间片内传输,互不干扰。出现突发故障报文时,节点立即发送此报文,第一时间内向上位机传输[9],见表1。
表1 报文类型及优先级
在恶劣的工业现场中,因为各种突发原因,控制节点会出现严重故障,这时就需要类似于“黑匣子”的ROM 设备来储存关键数据,以备查找故障原因。
传统的数据保存模块采用E2PROM 或FLASH,其擦写速度受到限制,检测到的数据不能实时写入其中,只能先存储外扩SRAM 中,经过一定的时间或检测到掉电后,再把数据写入EEPROM 或FLASH。而在严苛的工业现场,由于某些原因,整个控制节点都会处于掉电状态,使得节点中传统的ROM 模块来不及保存数据,极易造成数据丢失。
图5 DSP 与铁电存储器连接示意图
本系统选用新型的铁电存储器代替传统的E-2PROM 或FLASH,它是Ramtran 公司新推出一种非易失性存储器,简称为FRAM。与传统的ROM 相比,它具有无需写入时间、读写次数无限的优点,因此具有E2PROM 与RAM 的双重特性,而且价格相对低廉[10]。为了跟控制节点中的DSP 电平匹配,本系统采用3.3V供电(静态工作电流1μA)的FM25CL64,它能储存64K位的数据,写操作仅需几百纳秒,下一周期可以立即开始而无需进行轮询。DSP 与FM25CL64 通过SPI 总线进行相连,电路图如图5 所示。
综上所述,本文介绍了一种新型的基于TMS320 F28335 的CAN 总线冗余方式,提出了基于动态调度方法的总线分时调度机制,并给控制节点设计了新型的掉电数据保存模块。经试验,该系统实际运行状况良好,提高了总线网络传送信息的效率,缓解了总线负荷,又能大幅延长总线寿命。因此对于基于CAN 总线设计的多电机协调控制的研究很有经济和使用价值,具有较好的发展前景。
[1]吴晓,武健,王宁,等. 时间触发及冗余结构的CAN 网络研究与实现[J]. 测控技术,2010,29(2):78 -84.
[2]李军,李林,张晓艳. 冗余CAN 总线在机电管理系统中的应用研究[J]. 航空计算技术,2010,40(2):105 -107.
[3]郭晓松,王振业,于传强,等. 基于CAN 总线的容错冗余技术研究[J]. 计算机测量与控制,2009;17(1):60 -62.
[4]陈尧,孙汉旭,贾庆轩,等. 空间机器人冷热双冗余CAN总线系统的研制[J]. 电子技术应用,2008,17(2):83 -90.
[5]Texas Instruments Co.,Ltd. TMS320F2833x Digital Signal Processors Data Manual[M]. 2007.
[6]宋彦锋,李圣昆,任勇峰. 基于CAN 总线冗余设计的多功 能 传 感 器[J]. 通 信 技 术,2010,43 (4):121 -126.
[7]张海涛,窦满峰,郝晓宇. 基于CAN 总线的多无刷直流电机控制研究[J]. 测控技术,2012,31 (4):86 -89.
[8]廖晓文,刘美. 基于冗余CAN 通道的时间触发技术实现[J]. 微计算机应用,2008,29(12):93 -97.
[9]张煌,王常顺. CAN 总线冗余的船舶监控系统设计[J]. 单片机与嵌入式系统应用,2008,29(10):57 -60.
[10]李栋梁. 基于CAN 总线的全数字式汽车仪表的应用研究[D]. 合肥:合肥工业大学,2005.