1 冗余系统应用简介
以深圳地铁一期工程为例:典型车站分为a、b两端,在a端设置两套冗余的控制器(plc),一套作为整个车站的主控制器兼作与上位机的通讯接口,接车站交换机,另外一套负责a端的设备监控;在b端设置一套冗余的从控制器,负责b端的设备监控;在车站的其它地方设置远程i/o设备。控制器及各远程i/o设备通过冗余的controlnet现场总线相连。(系统配置如图1)
2 冗余系统的设置和工作原理
controllogix冗余系统硬件结构由两个完全一样的控制器框架组成,每个controllogix冗余系统框架中控制器模块、通信模块和srm模块。两个框架尺寸完全相同,模块一模一样,插放位置也一模一样,控制器中的程序也一模一样。两个控制器框架之间,完全靠系统冗余模块srm来完成同步和数据的交换。进入同步状态的主机控制器,自动地传送备份数据到辅机控制器,这些数据无须用户挑选和编程,只要在主机控制器中被程序运行时刷新过的数据,都会通过交叉装载传送到辅机控制器,传送的数据量可以非常大。控制器通过与srm的连接,得知自己是主机控制器还是辅机控制器,从而决定是传送数据还是接收数据。这些完全不需要用户的介入,系统自动获取、自动判断、自动传送。两个控制器的同步运行和大量数据的复制,使得输出得到无扰切换。
在成对的冗余框架中,首先上电的框架成为主机框架,后上电的框架作为辅机框架,并建立与主机控制器的同步。当出现主机控制器所在框架掉电、拔插主机框架上的任何模块、控制器程序发生主要故障、断开cnbr模块上的controlnet分接器或电缆、断开enbt模块的ethernet/ip电缆等情况,或者收到来自主机控制器中用msg发送的命令、来自rslinx中srm模块组态页面操作的命令都会发生冗余切换。
3 系统冗余故障显示及查找
冗余系统不能正常工作,常常表现在辅机不能同步。辅机不能同步的原因有很多,查找的办法也很多,一般说来,冗余框架中的cnbr模块都有清楚的提示,srm模块的组态界面也存放了详尽的信息。冗余框架插放的cnbr模块的面板将显示系统的状态,面板是字符式显示,一般是缩写的大小字母,它们所表达的意思见表1。
最重要一点的是,所有成对的模块必须是相同的产品编号、系列号和版本号,并且插放在相同槽内。如果辅机框架的cnbr的keeper与成对冗余的主机框架cnbr的数字签名不匹配的话,辅机框架是不能同步的。需要在rsnetworx组态软件中,选择keeper status,检查辅机是否为valid keeper。如果不是,操作update keeper使之恢复正常。出现这种情况的原因可能是controlnet网络组态时,辅机cnbr模块是关闭的或者在别的网络中组态过。
根据提示检查硬件的情况,是比较直观和容易的。但是实际使用过程中,大多数故障不是硬件引起的,而是由于参数设置不合理、通信和连接规划不好,导致控制器出现主要或者次要故障。在深圳地铁一期工程的建设过程中,由于承包商是首次使用controllogix系列产品,在参数设置方面没有仔细研究和推敲。为了追求最短的响应时间,将所有参数都设置为最小值。这样就存在控制器没有足够的时间去完成非预定性的通信、内存分配比例不合理、连续任务watchdog时间太短、周期性任务执行时间大于周期时间、高优先权程序执行时间超过最低优先权程序周期时间、冗余框架中cnbr模块cpu运用效率远远超过75%等一系列隐性故障。
4 改进措施和处理方案
4.1 保证非预定性通信的执行时间
一般说来,非预定性通信是除了控制器i/o组态和控制器之间的produced/consumed之外的所有的通信——编程设备的在线、hmi的访问、执行msg指令、响应其他控制器的msg、同步冗余系统的辅机框架、建立或监视i/o的连接(热拔插模块)、从控制器的串口通过背板访问其他设备等。所有的都是在任务逻辑程序执行以外的时间进行。如果控制器组态了一个连续任务,由控制器中的system overhead time slice设定值决定非预定性通信的时间;如果控制器没有设定连续任务,则在所有周期性任务执行完毕的剩余时间内完成。
深圳地铁一期工程所有控制器内逻辑程序均为一个连续任务,多个周期性任务的配置。所以,应该适当增大system overhead time slice设定值,保证控制器有足够的时间完成非预定性通信的执行。具体方法是:通过logix5000在线连接控制器,在控制器的属性/高级属性中设置system overhead time slice。(图2)
4.2 合理设置周期性任务的时间参数
对于周期性任务,必须确定最高优先权任务的执行时间是否远远小于它的周期时间,所有任务执行时间的总和是否远远小于最低优先权任务的周期时间;watchdog时间通常为本任务运行时间的10倍左右。周期时间、watchdog时间可以通过logix5000在线连接控制器,在任务的属性/组态中修改(图3);任务执行时间可以通过logix5000在线连接控制器,在任务的属性/监听中查看。(图4)
4.3 降低冗余框架cnbr模块的cpu运用效率
冗余系统中的cnbr模块需要足够的时间去处理冗余的操作,冗余同步操作将占用cnbr模块cpu运用效率的8个百分点左右,如果超过75%,可能会妨碍冗余切换后的辅机同步。深圳地铁一期工程冗余系统cnbr的cpu运用效率达90%以上,部分甚至高达95%,很容易出现冗余切换后cpu满负荷运行,导致同步失败。所以必须想办法把cnbr模块的cpu运用效率降下来。
要降低cnbr模块的cpu运用效率,可以从以下几个方面着手:增大controlnet网络的nut(网络刷新时间)、增大i/o模块连接的rpi(请求数据包间隔)、减少通过cnbr连接的数量、减少msg的数量和增加cnbr模块来分流信息。由于深圳地铁一期工程的设备已经定型,增加cnbr模块涉及到更换机架成本太高,也没有可以减少的msg指令和通过cnbr的连接,所以只能从增大controlnet网络的nut和i/o模块的rpi两个方面入手。
深圳地铁一期工程冗余系统的nut和rpi均设置为系统组态时的默认值,分别为5ms和20ms。也就是说,系统每5ms刷新网络一次,每20ms更新一次i/o模块数据。由于系统的监控对象是风机、风阀、温湿度传感器、冷水流量传感器、水系统二通阀执行器等设备,所有的设备均不会发生状态的高频变化,也不用控制设备高频度开关,所以系统默认的nut和rpi远远超过实际应用的需要。这样就过多的耗用网络资源,占用controlnet预定性数据的带宽。而rpi值一般设为实际需要时间的50%即可,即在一个周期内采样两次。在系统没有高频动作设备,保证系统实时性的前提下,经过多次测试将rpi由20ms改为80ms,将nut由5ms改为20ms(rpi=nut*2n),成功的将冗余系统cnbr的cpu运用效率降到了75%以下。
rpi设定可以通过logix5000在线连接控制器,在i/o configuration展开所有已经组态的模块,右键点击适配器选择properties/connection修改requested paket interval为80ms。(图5)
nut设定可以通过运行rsnetworx for controlnet,在线upload网络配置、编辑使能后通过菜单network /properties/network paramerters中修改network update time为20ms。(图6)
参考文献
[1]邓李.controllogix系统实用手册[m].北京:机械工业出版社出版