您好,欢迎来到微智科技网。
搜索
您的当前位置:首页利用RSVIEW32的事件机制实现软冗余自动切换 for baidu

利用RSVIEW32的事件机制实现软冗余自动切换 for baidu

来源:微智科技网
利用RSVIEW32的事件机制实现软冗余自动切换

原文作者:darnis@21cn.com

摘要:

在RSVIEW32中支持事件机制,当RSVIEW32中定义的事件被调用EventOn启用后,在事件指定的触发方式下,会周期性或者连续地扫描执行。而每当事件被扫描时,如果事件条件结果由0变换到1,那么事件就发生,此时该事件所指定的执行行为将被RSVIEW32自动执行,按RSVIEW32对事件的固有支持特性,在配置有双PLC的软冗余系统中成功实现了快速接管活动PLC工作的任务。 关键字 事件 冗余 PLC RSIVEW32

在硬件投资不足的情况下,我们为了获得足够的冗余功能,往往可以配置双PLC再辅以PLC程序来实现软件冗余功能。这里不对PLC程序如何保证双PLC之间的冗余功能作深入的探讨,只对已经实现软件冗余功能的双PLC系统中,RSVIEW32如何正确有效地连接到当前活动的PLC上作研究。

说到RSVIEW32对软冗余的支持,我们必须对RSLINX对软冗余的支持作一些技术说明,RSLINX作为RSVIEW32与PLC通讯的中间桥梁提供了对软冗余功能的基本支持。在RSLINX可以配置Alias Topics,通过Alias 来管理多个不同Topic之间的切换工作,我们知道AB的PLC网络中一个Topic可以连接到一个特定的PLC,这样通过对RSLINX的Alias功能就可以实现RSVIEW32正确有效地连接到活动的PLC。

当然这里说到的只是可行的途径,具体我们怎么来做呢?

1、实现冗余切换

首先,我们通过RSLINX的菜单“DDE/OPC”“Alias Topics Configuration…”菜单项可以进入别名管理界面,在这里面我们可以增加一个新的别名,并且这个别名将会管理我们实际需要进行冗余备份功能的两个PLC的Topic。如下图所示。

在Configure Alias Topics对话框中,我们同时可以设置别名所管理的Topic之间如何,在哪种时机做何种切换行为。

A. Switch on error,在错误时发生进行切换 B. Switch on command,接受命令切换 C. Switch when bit is zero or one,指定的位为0或者1时切换

有经验的工作者都知道,如果我们使用Switch on error或者 Switch when bit is zero or one 进行自动管理Alias往往都不能如我们意地在网络故障时进行自动切换工作,因为RLINX与PLC之间是通过TCP进行通讯的,在网络断电或者其它异常情况导致的网络中断时(PLC断电),TCP协议决定了网络故障发现时间在10秒左右的时间(RSLinx发现网络故障的时间更长)。在网络故障未被发现的这段时间内,RSLINX会维护最后一次通讯的值,直到发现网络故障时,才做出通讯质量判断(RSVIEW32上的表现,OPC Client未做测试)。这就导致A、C方式的自动切换很可能因为RSLINX对网络状态的判断不及时而不能如意地进行切换。

B方式的切换给予了开发者根据实际情况进行程序控制切换的能力。在RSVIEW32中也正好可以通过RSLINX的内嵌命令@SwitchTopc进行Topic之间的程控切换,如何让RSVIEW32灵敏地探测到PLC的活动状态并且自动通知RSLINX进行Topic进行切换呢?下面对技术方面作详细说明。

结合PLC对冗余的快速反应和RSVIEW32的事件机制特性,我们拟采用PLC通知RSVIEW32向RSLINX发送切换命令的方案来保证RSVIEW32始终连接到当前活动的PLC上。

RSVIEW32为了快速地检测到当前活动的PLC,我们在RSVIEW32中建立两个分别直接到PLC1和PLC2的TAG(在RSVIEW32标记数据库中命名为r1,r2),并且这个TAG在PLC发生了切换后,会产生一定周期性的方波以通知RSVIEW32,RSVIEW32检测到变化后,通知RSLINX进行切换,并且根据RSLINX执行结果再通知PLC程序切换工作是否变成,如果完成,PLC锁定TAG值为0。这样在RSVIEW32事件中创建一个新的事件,并且增加事件记录,事件条件为 r1 || r2,执行动作为 str1=string;done=1。这样就可以在任意一个PLC接管工作后,产生方波通知RSVIEW32,RSVIEW32的周期性事件条件 r1|| r2 总能检测到请求,再执行切换操作 str1=string,切换成功后再通知PLC已经完成切换done=1。

PLC端RSVIEW32 端活动PLC接管控制工作通知PLC 已经切换,done=1done=0通知RSLINUX切换TopicY产生 1s 的方波,输出到 tag: r检测到变化的请求信号 这样通过PLC与RSVIEW32相配合来完成在PLC切换后,RSVIEW32能够以最快速度影响切并且切换连接到当前活动的PLC上。

2、RSVIEW32控制RSLinx切换的原理

神奇的str1=string赋值语句将会执行切换工作。查看RSLinx的联机说明文档,可以看到RSLinx具有很多命令可以调用,其中对我们冗余直接有效的就是SwitchTopic指令,它是用于通知RSLinx把别名连接到哪一个Topic,也可以不指定具体的Topic而在Alias管理的Topic中轮换。

在RSVIEW32中可以通过简单的方式来调用RSLinx支持的指令。首先在TAG标记数据库中创建一个名为string的字符串变量,如下图所示。

再创建一内存字符串变量str1。两个数字量r1和r2分别连接到PLC1和PLC2的请求标志 r,done是连接到[ActivePLC]done的数字量。

再创建事件eve,如下图所示增加事件。

图示的事件将是r1或者r2任何一个变化时发生动作执行str1=string;done=1,而r1和r2是分别连接到两个冗余PLC,在PLC执行了切换后通知RSVIEW32需要切换的周期性标志。当RSVIEW32接收到PLC通知切换,并且通知RSLinx完成切换行为后,向当前活动PLC的标记done中写入1,以通知PLC:上位已经完成切换,不必再要求上位切换了。把事件

在工程启动时启动。 3、结语

在AB的PLC上位系统中,这样实现的软冗余功能是目前我们找到的反应最快的方式,一般情况下在2s以内可以实现切换,主要视网络和事件扫描速度影响。实际上是可以实现1秒内执行切换动作的,由于切换到新的PLC后,RSVIEW32需要采集大量的标记信息所以在直观感觉上,好像没有切换成功。但是我们通过监视RSLinx,可以发现切换是可以足够快的。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务