由于冗余器件的介入,系统可靠性虽然得到提高,但一些相关的性能却有所降低。冗余系统的控制器相对于非冗余系统的控制器在一个工作周期内多了一项任务,即将所有输出指令的结果交叉下载给从控制器,因而增加了程序扫描周期。并且,因冗余系统数据交换量不同,所增加的扫描周期的时间也会有所不同,如图6-43所示。
图6-43 交叉下载时程序扫描周期
所以针对双机冗余系统性能优化,不仅要减少主从控制器的切换时间,更需解决由于主从控制器同步而延长程序扫描时间的问题。针对主从控制器同步延长程序扫描时间,进而影响系统整体性能的问题,可以进行程序结构优化并减少主从控制器同步数据量。
1.程序优化
由于交叉下载发生在每次程序执行完后,使用较多的程序会产生更频繁的启动和停止交叉下载。而每次交叉下载过程中,ControlLogix主控制器向从控制器发送的同步数据包大小固定,均为256Byte。因此,交叉下载次数增多,而每次数据量固定,必然延长了程序扫描时间。所以,程序设计时尽可能合并例程,即仅采用一个程序,减少交叉下载次数。同时,为保证其可读性,可将该程序划分为多个例程。同时,在每个例程中还需要尽可能地合并梯级代码;减少一些不必要和无意义的指令,如OTL、OTU(输出锁定/解锁)以及其他一些在梯级条件为“真”的情况下反复执行的指令(还有,比如ADD(加法)指令,虽然两个相加的数都没变,结果也没变,但是主控制器每次执行这个指令时都会将结果写入从控制器)。
另外,程序设计时必然包括一个连续型任务,该任务的优先级最低。程序执行过程中,该连续型任务会被SOTS(系统内务时间片)中断。SOTS中断连续型任务就意味着有可能中断交叉下载。因此,可将主要程序安排到周期性任务中,不会被SOTS中断,可以缩短程序扫描时间。(www.xing528.com)
2.优化数据结构
在不改变原有程序结构的情况下,只有减少主、从控制器之间的数据交换量才能减少冗余系统对程序扫描周期的影响。
PLC内部多为16位或32位操作系统。例如Logix控制引擎为32位。这就意味着单个标签至少占用32位内存空间。如果创建32个布尔型标签,将占用128{(32×32)/8=128}个字节。但是,实际使用内存空间仅为4个字节。因此,每次程序执行结束后交叉下载的数据量亦增加,故延长交叉下载时间。
可通过创建数组的方式来优化数据结构。例如,创建32个元素的布尔型数组,这样它实际上仅占用4个字节。该方法对于DINT、INT、SINT、TIMER和COUNTER型数据同样有效。如果能规划用户自定义结构体(UDT)将更有效地节省内存。
另外,ControlLogix控制器仅处理DINT型数据,因此,SINT和INT型数据在交由其处理时必须进行数据类型转换,转换过程也会造成扫描周期的延长。因此在程序编写过程中,尽量使用DINT型数据代替INT和SINT型数据。
根据上述方法,可以将非经优化的程序扫描时间缩短2~10倍。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。