发表于:2008-07-11 12:52:32
楼主
本文以ControlLogix为例,介绍了可编程控制器冗余系统的冗余原理,对影响冗余性能的关键问题进行了分析,通过减少扫描周期和切换时间来对其冗余性能进行优化,为类似冗余系统的性能优化提供的参考方法。
随着制造业竞争的加剧,制造商更加追求生产设备的可靠性,尤其是那些控制关键性生产工序的设备,往往需要采用冗余配置。目前,多数的基于可编程控制器的冗余系统采用了两套CPU处理器模块,一个处理器模块作为主处理器,另外一个作为从处理器。正常情况下,由主处理器执行程序,控制I/O设备,从处理器不断监测主处理器状态。如果主处理器出现故障,从处理器立即接管对I/O的控制,继续执行程序,从而实现对系统的冗余控制。 很多厂商都能够提供可编程控制器冗余系统解决方案,用户在使用过程中往往对其冗余原理理解不深,造成系统冗余性能下降。本文以罗克韦尔自动化Allen Bradley品牌ControlLogix控制器为例,介绍其冗余系统的构建和性能优化问题。
2 冗余系统构建
ControlLogix系统采用了基于“生产者/消费者”的通讯模式,为用户提供了高性能、高可靠性、配置灵活的分布式控制解决方案。ControlLogix系统实现了离散、过程、运动三种不同控制类型的集成,能够支持以太网、ControlNet控制网和DeviceNet设备网,并可实现信息在三层网络之间的无缝传递。因而,ControlLogix被广泛地应用于各种控制系统。【1】 构建ControlLogix冗余系统的核心部件是处理器和1757-SRM冗余模块。目前,有1756-L55系列处理器模块支持冗余功能,其内存容量从750KB到7.5MB不等。1757-SRM冗余模块是实现冗余功能的关键。如图1所示,在冗余系统中,处理器模块和1757-SRM冗余模块处于同一机架内。为了避免受到外界电磁干扰,提高数据传输速度,两个机架的1757-SRM模块通过光纤交换同步数据。所有的I/O模块通过ControlNet控制网与主、从控制器机架内的1756-CNB(R)控制网通讯模块相连接。
图1 冗余系统结构
以往的冗余系统通常需要用户编制复杂的程序对处理器状态进行判断,在两个处理器之间传输同步数据并实现I/O控制权的切换,两个处理器中的程序也各不相同,这使得冗余系统本身的建立和维护工作非常繁琐。通过1757-SRM冗余模块,不需要任何编程就可以实现冗余功能,还可以方便地使主、从处理器内的程序保持一致,用户对主处理器程序的修改可自动同步到从处理器。主、从处理器所处机架内的1756-CNB(R)控制网通讯模块地址各不一样。当主处理器出现故障后,从处理器接管控制系统,相对应的控制网通讯模块之间相互交换地址,从而不影响其它控制器和上位机与该冗余系统的通讯。
3 系统冗余原理及过程
可编程控制器一个工作周期内的主要任务有:内务整理、扫描输入映像表、执行程序、更新输出映像表。ControlLogix控制器在冗余系统中,主处理器执行完程序之后,将所有输出指令的结果传送给从控制器【2】。由于ControlLogix系统所有的I/O设备都在控制网内,按照其自有的“生产者/消费者”通讯模式,从处理器作为一个“消费者”可以与主处理器具有一样的地位,获取I/O的输入信息。这样,确保了主、从控制器内输入、输出映像表的一致。如图2所示,在正常情况下,程序执行到位置1时,主处理器将具有较高优先权任
图2 正常情况下主处理器程序执行过程
务和前一段普通任务的执行结果分先后传送给从处理器,然后程序返回到位置2,继续执行剩下的普通任务。位置3时,所有任务已经完成,主处理器将执行结果传送给从处理器。如果在执行某个任务时,主处理器
图3 主、从处理器之间的切换过程
出现故障,如图3所示。这时,从处理器便会接替主处理器,重新执行出现故障时的那段任务。可见,这时从处理器使用的输出映像表数据来自于主处理器上一个工作周期的执行结果。可见,在冗余系统的切换过程中,没有出现数据的丢失和突变,处理器内部无需执行繁杂的判断决策程序,实现了系统的无扰切换。
4 系统冗余性能优化
针对系统冗余性能的优化,不仅限于减少系统的切换时间,而且由于冗余器件的介入,系统可靠性得到提高,但一些相关的性能却有所降低。在第3节中已经谈到,冗余系统的处理器相对于非冗余系统的处理器在一个工作周期内多了一项任务:将所有输出指令的结果传送给从控制器,因而增加了程序扫描周期。因冗余系统数据交换量不同,所增加的扫描周期时间也有所不同。因此,对于系统冗余性能的优化主要有两个方面:降低冗余系统对程序扫描周期的影响和减少系统切换时间。 4.1 降低冗余系统对程序扫描周期的影响由第3节的分析所知,在不该变原有程序结构的情况下,只有减少主、从处理器之间的数据交换量才能减少冗余系统对程序扫描周期的影响。ControlLogix主处理器每次向从处理器发送的同步数据包大小固定,均为256字节。因此,可以通过充分利用每个数据包来达到减少数据包交换次数的目的。ControlLogix控制器采用基于标记的寻址方式,数据结构比较灵活,用户在程序中可以使用数组或者自定义结构数据。这样,数据的传输可以大大被压缩,而且由于用户可以将某一控制对象一系列相关数据集成在一个自定义结构数据中,使得原来分散的数据可以被集中起来进行传输,充分利用了每个数据包,从而在传送相同信息时,所使用的数据包较分散的数据传输所使用的数据包少,节省了数据传输时间,减少了程序扫描周期。由于在ControlLogix主处理器中所有指令的执行结果都要同时被写入从处理器,因此减少一些不必要和无意义的指令执行也有助于减少程序扫描周期。如OTL、OTU(输出锁定/解锁)以及其它一些指令常常在梯级条件为“真”的情况下反复执行,还有比如ADD(加法)指令,虽然两个相加的数都没变,结果也没变,但是主处理器每次执行这个指令时都会将结果写入从处理器。因此,可以通过比避免那些无意义的数据更新来减少程序扫描周期。 4.2 减少系统切换时间在ControlLogix冗余系统中,系统切换时间受到ControlNet控制网NUT(网络更新时间)的制约。当用户完成了对ControlNet控制网的配置之后,NUT时间便被确定下来,从而就可以估算系统的切换时间,如表1所示。
错误原因类型 NUT时间 冗余系统切换时间(ms) 模块掉电 ≤6ms 60 ≥7ms 5NUT+Max {2NUT, 30} CNB模块与其它模块出现通讯故障 14NUT+ Max {2NUT, 30}+50
表1 冗余系统切换时间估算
为了确保在系统切换时不至于造成输出数据的突变,对NUT有一定的限制。通常情况下,如果冗余系统机架中只有一个或者多个同一网络内的控制网通讯模块,其NUT不得大于90ms;如果有多个在不同网络内的控制网通讯模块,其最小NUT网络和最大NUT网络之间要满足一定的约束关系,如表2所示。
最小NUT网络的NUT值(ms) 2 7 14 …90 最大NUT网络的NUT值必须小于或等于以下值(ms) 15 15 39 …90
表2不同网络之间NUT的约束关系
由于在切换过程中,主、从处理器框架内的控制网通讯模块之间要交换对I/O的控制权。由于在切换过程中,通讯模块自身的处理器占用率有8%左右的攀升,为了确保该通讯模块有足够的处理能力完成切换,应确保该模块在正常工作时的处理器占用率低于75%。为了做到这一点,可以采用以下几点减少通讯模块的处理器占用率:1、在控制系统允许的情况下,适当增加NUT值;2、增加通讯连接的RPI(请求数据包间隔)值;3、减少通过该模块的通讯连接(如采用机架优化方式);4、减少MSG(信息传输)指令的使用数目;5、通过增加额外的通讯模块来分担网络负荷。
5 针对冗余系统的监控
在典型的ControlLogix系统中,常使用RSView32监控软件配合1784-PCIC控制网计算机适配卡接入网络,构成上位机监控系统。在冗余系统中,虽然有两套控制系统,但在监控系统中只需要对正在运行的主系统进行监控。在切换时,对应的控制网通讯模块相互交换地址,所以不需要重新调整监控系统的通讯通道。也就是说,如果不作特殊的处理,上位机无法判断系统是否因故障进行了控制器切换。为了在上位机监控系统中反映主、从控制器的状态,可以在处理器程序中加入GSV指令,获取冗余系统状态(如从控制器的状态,是否能够进行切换,数据交换量等)