楼主最近还看过
软冗余系统构成:
两个通过总线连接的S7- 300 或S7- 400 的CPU; 均安装冗余应用程序; 两个DP 主系统与带有冗余DP 从接口的ET200M 分散I /O 系统相连;
使用软冗余程序包模件;
四、以一个催化装置气压机改造例子说明软冗余的应用
1. 系统概述
某炼油厂的重油催化气压机组是由陕西鼓风机厂于1989 设计并于1991 入使用。其中气压机的PLC 部分控制着机组的运行、报警联锁、报警指示、机组润滑油辅泵及密封油辅泵的启停等控制任务。原来的PLC 则选用的是美国八十年代初期推出的M84 系列的产品,由于该产品已使用多年, 故障出现频繁, 且模板更换庸烦( 更换时需要拆卸所有其它I /O 模板) , 同时该产品现已淘汰无法购到, 因此,给正常的生产造成了很大的影响。为此, 我们改用西门子S7 - 300PLC 作为其控制系统。考虑到控制系统的重要性和经济性, 我们通过其相关的STEP 7 、Software Redundancy 系统软件组成软冗余系统( 与S7- 400H 的硬冗余系统有所不同, 详见参考文献) 以确保系统的可靠运行。
PLC软件冗余系统在燃油锅炉中的应用
图3 变量监控过程
Fig.3 Course of variable monitoring
1.5 WinCC组态冗余的实现
通过两台独立计算机同时运行项目功能完全相同的WinCC组态项目,构成并行服务器来实现组态冗余结构,两台服务器通过以太网连接,并与PLC连接。每台服务器都带有其自身的过程连接和可用的数据归档,工作PLC站将过程数据和消息同时发送到两台冗余服务器。如果一台服务器发生故障,另一台将继续接收和归档来自PLC工作站的过程值和消息。出现故障的服务器重新工作后,冗余服务器为故障时间的归档执行同步,通过将丢失的数据重新传送到出故障的服务器,来消除故障引起的归档差别。
冗余服务器的组态实现:1.必须在两个冗余服务器上组态功能完全相同的WinCC组态项目(建议使用WinCC项目复制器)。2. 对于WinCC冗余,需要同步服务器(建议使用设备的时间同步)。3. 配置冗余用户归档,实现用户归档同步。4. 组态在线消息同步。5. 打开冗余编辑器,在“冗余伙伴服务器”项,输入冗余服务器的名称,并在“用户归档”项下,激活“用户归档的同步”。
本系统通过动态向导设置读取IP冗余地址,实现主S7-300数据监控。
1.6 软冗余程序的设计
软冗余程序需要西门子提供的软冗余软件包及STEP7,在A站的Block中插入OB1(主循环程序块)、OB35(定时中断组织块)、OB100(暖启动调用程序块)、OB80(在主系统与备用系统切换时间超时,调用该块)、OB82(DP-Slave ET200站上的IM153-2模块出错报警,调用该功能块)、OB83(DP从站的接口模块与主站链接断开或链接重新建立时调用该块)、OB86(主从站通讯出错调用该块)、OB87(通讯失败调用该块)、OB122(外围设备访问出错调用该块)、OB121等组织块,并对其中的OB100、OB35、OB86进行编程。
首先,用户需要在初始化程序中(OB100)定义冗余部分的数据区,该数据区可以包括:一个过程映像区,一个定时器区,一个计数器区和一个数据块区,S7-300同步的最大数据量为8kBytes。本控制系统将每台锅炉的温度、压力采集值和运行状态参数分别放置在不同的DB数据块,并定义为需要冗余的数据块。
使用的是OB35的默认属性,即每100ms中断触发一次,可以根据实际的需要在CPU属性中修改中断的时间间隔。在OB35里调用FB101S ’WR_ZYK’功能块,FB101块中封装了冗余功能的程序段,实现冗余功能。当执行‘SWR_START’程序块时,系统分配这些数据区,不能用S7 的定时器和计数器,只能使用IEC标准的定时器和计数器。
OB35中的程序段也可以在OB1中实现,只是不使用中断的方式,而使用主循环的方式。
调用FB101时,你可以在线地读出RETURN_VAL参数的数值,如果为0,说明冗余链接正常。如果为8015说明数据同步的连接不成功,原因是CP342-5之间的FDL链接建立的不正确或物理链路不通,或者是FC100的VERB_ID参数与NETPRO中的ID号不一致。
Controllogix系列PLC冗余系统在汽轮机发电中的应用
Controllogix可以提供完善的控制器的冗余功能,采用热备的方式构建控制器,两个控制器框架采用完全相同的配置,它们之间使用同步电缆连接,不仅控制器可以采用热备,通讯网络也可以采用相似的方式进行热备,除以上的部分可以热备外,控制器的电源也可以进行热备,这样大大提高了控制器的运行的可靠性。
2 系统介绍
在某焦化厂干熄焦汽轮机发电项目的DCS控制系统中,采用了冗余的Controllogix,系统结构如图1所示。上位机通过交换机与PLC处理器通讯,远程框架通过冗余的ControlNet连接到控制器框架,同时,远程框架采用了冗余电源配置。整套系统具有很高的可靠性,满足了汽轮机发电系统对于PLC控制部分需要长期无故障运行的要求。上位机采用Rsview32软件,用以监控现场设备的运行。
图1 系统结构图
表1 L1和L2框架各个槽位的所配置的模块
表2 一些模块的固件版本
图2 RSLogix5000中添加程序
图3 MSG指令的设置
图4 配置显示
"C:Program FilesRockwell SoftwareRSLogix 5000 ToolsLogix5000 Clock Up date Tool"
先添加设备,从RSWho中选中要同步的处理器。在添加的处理器图标上点击鼠标右键,在弹出的菜单中选择synchronize device,这样就实现了上位机与CPU的时间同步。那末也就实现了SRM与上位机的时间同步。
如果Controllogix的时间误差较大,但又对SRM的时间要求较高,可以利用时间同步工具的常驻内存运行功能,实现实时的时间同步。在scheduled synchronizations菜单中可以添加需要进行实时时间同步的CPU,同步的时间间隔进行相应的配置后,就可以实现实时的时间同步了。
利用这个原理,通过相应的设置,可以实现同一网络中不同Controllogix处理器之间的时间同步,或者不同SRM之间的时间同步,也可以时间不同网络之间的时间同步。
6 处理器的故障处理
虽然在处理器发生故障时,会导致处理器的切换,但我们可以通过编程来防止可以预见的故障的产生。当处理器在运行过程中出现主要故障时,可以使用程序清除这一故障。
在RSLogix5000的用户自定义类型中,定义一个名为FaultData的数据类型,内部变量的数据类型如图5所示。然后定义一个变量CHI为FaultData。然后如图6所示添加控制器故障处理程序。程序如图7所示。
图5 FaultData内部变量的数据类型
图6 添加控制器故障处理程序
图7 控制区故障处理程序
通过以上程序可以很好的防止处理器主要故障的发生。一般次要故障不会引起处理器停机和冗余的切换,因此次要故障的处理程序不是很有必要。
西门子PLC系统软件冗余的说明与实现
软件冗余基本信息介绍
软件冗余是Siemens实现冗余功能的一种低成本解决方案,可以应用于对主备系统切换时间要求不高的控制系统中。
A.系统结构
Siemens软件冗余系统的软件、硬件包括:
1套STEP7编程软件(V5.x)加软冗余软件包(V1.x);
2套PLC控制器及I/O模块,可以是S7-300或S7-400系统;
3条通讯链路,主系统与从站通讯链路(PROFIBUS 1)、备用系统与从站通讯链路(PROFIBUS 2)、主系统与备用系统的数据同步通讯链路(MPI 或 PROFIBUS 或 Ethernet);
若干个ET200M从站,每个从站包括2个IM153-2接口模块和若干个I/O模块;
除此之外,还需要一些相关的附件,用于编程和上位机监控的PC-Adapter(连接在计算机串口)或CP5611(插在主板上的PCI槽上)或CP5511(插在笔记本的PCMIA槽里)、PROFIBUS电缆、PROFIBUS总线链接器等;
下图说明了软冗余系统的基本结构:
图1
可以看出,系统是由两套独立的S7-300或S7-400 PLC系统组成,软冗余能够实现:
I. 主机架电源、背板总线等冗余;
II. PLC处理器冗余;
III. PROFIBUS现场总线网络冗余(包括通讯接口、总线接头、总线电缆的冗余);
IV. ET200M站的通讯接口模块IM153-2冗余。
软冗余系统由A和B两套PLC控制系统组成。开始时,A系统为主,B系统为备用,当主系统A中的任何一个组件出错,控制任务会自动切换到备用系统B当中执行,这时,B系统为主,A系统为备用,这种切换过程是包括电源、CPU、通讯电缆和IM153接口模块的整体切换。系统运行过程中,即使没有任何组件出错,操作人员也可以通过设定控制字,实现手动的主备系统切换,这种手动切换过程,对于控制系统的软硬件调整,更换,扩容非常有用,即Altering Configuration and Application Program in RUN Mode 。
B.系统工作原理
在软冗余系统进行工作时,A、B控制系统(处理器,通讯、I/O)独立运行,由主系统的PLC掌握对ET200从站中的I/O控制权。A、B系统中的PLC程序由非冗余(non-duplicated)用户程序段和冗余(redundant backup)用户程序段组成,主系统PLC执行全部的用户程序,备用系统PLC只执行非冗余用户程序段,而跳过冗余用户程序段。
下面我们看一下软冗余系统中PLC内部的运行过程:
图2
主系统的CPU将数据同步到备用系统的CPU需要几个程序扫描循环:
图3
数据同步所需要的时间取决于同步数据量的大小和同步所采用的网络方式(图2中的紫色网络线),MPI方式周期最长,PROFIBUS方式适中,Ethernet网方式最快。
表1
用户需要在初始化程序中(OB100)定义冗余部分的数据区,该数据区可以包括:一个 过程映象区(process image area),一个定时器区(IEC timer area),一个计数器区(IEC counter area),一个 位地址区(memory address area)和一个 数据块区(data block area),S7-300同步的最大数据量为8 kBytes,S7-400同步的最大数据量64kBytes。
主备系统的切换时间 = 故障诊断检测时间 + 同步数据传输时间 + DP从站切换时间
如果CPU的故障是停机或断电,则故障诊断为大约100-1000毫秒,315-2DP同步1000字节的数据所需的时间大约为200-300ms,8个DP从站的切换时间在100ms左右。您可以在软冗余手册当中找到关于切换时间的具体说明。
无论控制程序循环扫描到哪里,当前激活的系统(即主系统)随时都会接收并处理报警,这样,在主系统A与备用系统B进行切换过程中产生的alarm存在被丢失的可能。
图4
图5
以上图4显示的是在STEP7中使用OPEN菜单打开软冗余的例子程序,例子程序中采用MPI链路实现数据的同步。
图5显示在安装完软冗余软件后,您可以在Libraries找到不同CPU以及不同链接方式下可以使用的功能块。
下面的两个表格分别说明了采用S7-300,S7-400进行软件冗余时,可采用的不同网络连接以及所需调用的程序功能块包。
表3
从以上的表格中可以看到,软冗余系统当中可以采用MPI、PROFIBUS、Ethernet三种网络实现主系统和备用系统之间的数据同步(Redundant-backup link)。
采用BSEND_400包中的功能块进行数据同步时,无论数据同步的连接是什么方式,都需要在STEP7的NETPRO窗口中组态一个 S7 Connection。
除了BSEND_400中之外,使用其他功能库中的程序块:
• 采用MPI网络时,直接使用PLC的编程口进行数据同步,不需要进行连接(Connection)的组态,但MPI数据同步的效率低。
• 采用PROFIBUS网络时,需要使用一对CP通讯卡(CP342-5或CP443-5),在STEP7的NETPRO窗口中组态主系统和备用系统之间的FDL连接。
• 采用Ethernet网络时,需要使用一对CP通讯卡(CP343-1或CP443-1),在NETPRO窗口中组态主系统和备用系统之间的ISO连接。
冗余功能块说明:
表4
注:
1。采用PROFIBUS或Ethernet方式进行数据同步时,需要在OB100当中调用FB101,而FB101内部调用了FB104、FC5、FC6,所以您必须手动地将FB104、FC5、FC6插入到项目当中,插入的方法是:在程序中调用一次,再将这条语句删掉。
2.在OB100中调用FC100功能块时,PLC会自动创建一些与FC100参数相关的程序段和数据块,所以当你更改了FC100的参数时,应该对PLC进行Reset操作,再重新下载项目的软硬件到PLC当中。
图6
除了实现冗余功能的3条PROFIBUS网络外,还有一条MPI网络用于上位机监视和控制程序的调试。
以下是生成该例子程序的步骤,您可以根据您系统的配置情况进行参照:
1. 插入两个S7-300的站,A 和 B ,在A站和B站的硬件组态窗口中,插入315-2DP时,要分别创建相互独立的PROFIBUS网络(如 A站为Master_Line、B站为Reserve_Line),使用网络的默认参数,速率为1.5M,并都将站地址设定为2,A站和B站的PROFIBUS DP集成通讯口设定为主站模式.masterMode)。
2. 分别在A、B站中插入CP342-5模块,连接到同一个PROFIBUS网络上(Sychronization_Line),地址分别为4、5,将CP342-5设定为No DP方式,并记录CP342-5的硬件地址256。
3. 分别在A、B站的硬件组态窗口中插入一个ET200从站(一个IM153-2模块和一个16入/16出的数字量模板),DP的地址为3。
4. 进入STEP7的网络组态窗口NETPRO中,选中A站的CPU点击鼠标右键,插入一个新的链接,选择FDL Connection,点击Apply,弹出链接属性窗口,记录链接的ID,设定LSAP为17,18,存盘编译网络组态。系统的网络结构如下:
图7
以上网络结构中包括了4条链路:
用于上位机编程和监控的MPI链路;
A站与ET200从.masterLine PROFIBUS链路;
B站与ET200从站Reserve Line PROFIBUS链路;
A站和B站之间进行数据同步的Synchronization Line PROFIBUS链路。
您可以通过点击图中的状态读取按钮,获取当前FDL链接的状态,上图的左下角显示当前在线读取FDL的状态为OK。
5. 在A站的Block中插入OB1(主循环程序块)、OB35(定时中断组织块)、OB100(暖启动调用程序块)、OB80(在主系统与备用系统切换时间超时时,调用该块)、OB82 (DP-Slave ET200站上的IM153-2模块出错报警,调用该功能块)、OB83 (DP从站的接口模块与主站链接断开或链接重新建立时调用该块)、OB85(程序运行出错或DP从站连接失败调用该块)、OB86(主从站通讯出错调用该块)、OB87(通讯失败调用该块)、OB122(外围设备访问出错调用该块)、OB121等组织块,并对其中的OB100、OB35、OB86进行编程。
6. 在OB100中我们调用FC 100 ‘SWR_START’进行软冗余的初始化,有几个参数需要特别注意,LADDR应当和CP342-5的硬件地址相一致,例子程序为256,VERB_ID必须和你在NETPRO中创建的FDL链路的ID号一致,例子程序为1,DB_COM_NO为系统中未使用的数据块,建议仍采用DB5。
如下表格给出了FC100功能块参数的说明和例子,供您编程参考:
表5
图8
第一步(A)启动系统的冗余数据同步功能
第二步(B)根据状态字判断是否为主系统,为主系统时才执行第三步,否则跳到第四步第三步(C)为冗余的程序段
第四步(D)停止系统的冗余数据同步。
通过对OB35中的程序在线监控,得知当前冗余功能成功与否,如下图所示:
图9
图10
您也可以通过写控制字中对应的位,起停备用系统与主系统之间的冗余通讯,也可以实现主系统与备用系统之间的手动切换:
图11
通过设定DB5.DBX10.0为1,实现主系统与备用系统的手动切换。
8.在OB86中调用诊断功能块FC 102 ‘SWR_DIAG’,当系统出现PROFIBUS总线错误时,该功能块返回诊断信息,供FB101使用。
9.插入FB101内部调用的FB104,FC5、FC6等功能块,将所有的程序块下载到PLC当中。
10.在组态软件WinCC中创建两个MPI链接,分别与主系统和备用系统进行链接,并生成对应的Tag变量,如下:
图12
编辑监控画面,分别读取A站和B站的状态字、控制字和冗余同步的数据,如下:
图13
从图13中的状态字可以看出,当前8号(A)站为主系统,7号(B)站为备用系统,它们与所有DP从站的通讯正常,冗余同步链接正常,我们在一个20ms触发的定时中断块OB35中编写了一个数据累加程序段,可以看出备用系统的同步数据比主系统的实时数据慢80ms(4个周期),其中控制字为0,您可以修改对应的位,激活或取消冗余功能。
这里我们同时给您提供一个通过以太网实现数据同步的例子程序,系统的实物图如下:
图14
程序块的内容与上面的例子相同,只是将OB100中FC100的VERB_ID参数的数值改为7,因为采用ISO方式时,ISO Connection ID号要大于2,我们这里则STEP7的NETPRO中组态了一个ID号为7的ISO链接,如下图:
图15
同时可以在WinCC软件中创建TCP/IP链接,分别读取主系统和备用系统中的数据,如下图:
图16
与图13比较,我们可以发现在以太网方式下,数据同步的速度比PROFIBUS DP方式下快,备用系统的同步数据比主系统的实时数据慢40ms(2个周期)。