山东莱城发电厂外围
辅助设备均采用了PLC控制,但由于子系统较多且控制分散独立、PLC的型号厂家繁多,因此将各子系统进行集中控制成为必然。鉴于子系统中采用罗克韦尔自动化A-B品牌的PLC较多,设计采用A-B的ControlLogix作为网关和RSView32作为统一的组态软件。
如上图所示,莱城发电厂辅助设备包括化水系统(MODICONPLC,组态软件InTouch7.0)、#1、2凝结水系统(A-BPLC-5,组态软件RSView)、#3、4凝结水系统(A-BControlLogix,组态软件RSView)、#1、2汽水取样、加药系统(A-BControlLogix,组态软件RSView)等,设计中按厂方要求将服务器和交换机放置在化水车间控制室,由于其它各系统距离化水车间较远(大于200米),为保证传输速度及可靠性,故在网关和服务器间加接光纤;各系统利用预留接口通过网络(如:DH 、ControlNet等)接入网关,它们与RSView的通讯采用原来的通讯协议即可(如:大部分采用RSLinxOPCServer);在处理MODICONPLC与A-BRSView通讯的问题上,可以有两种方法:一是安装MB+OPCServer通讯协议,它是罗克韦尔自动化开发的针对MODICONPLC的通讯软件;二是在服务器上安装PCI2000Applicom驱动卡和其自带的通讯软件,它也是罗克韦尔自动化开发的专门用于A-B组态软件与其它厂家PLC之间通讯的工具。由于后者适用面较广和价格的考虑,设计采用了后一种方案。网关采用了一个电源模块、一个CPU模块、一个DH+模块、三个控制网模块和一个以太网模块,网关通过以太网模块接入光纤收发器从而与交换机通讯。交换机采用3COM的24口百兆交换机,服务器采用IBMSERVER。网络安装好后,剩下的工作就是用RSView32将所有的上位机组态画面进行集中,从而实现在一台服务器上对厂内所有子系统的统一控制。
由于子系统较多,设计中采用了32,000点的RSView32。如果子系统上位机组态软件也是RSView,对于Tag只需要用RSViewTool中的DatabaseImport&ExportWizard将子系统工程文件里的Tags导出,再导入我们的工程中;对于Display、Event或Macro需要将其对应工程文件夹Gfx、Eds和Mro下的文件拷贝到我们的工程文件夹下,再打开工程分别导入。如果组态软件不是RSView,如:InTouch,就只能重建标签库、重做画面,并将画面中所有的指令语句用RSView的指令语句重新编译。下面就设计中遇到的一些问题和解决的方法作一说明:
◆RSView中条件语句和命令语句的冲突问题:
在软件设计中通过条件语句设计分支是十分有效的,如:希望单击按钮时如果某一反馈量(如:i)大于某值时弹出画面1,否则弹出画面2,在InTouch中按钮的指令如下:
Ifi>50ThenShowPicture1
ElseShowPicture2
其中If…..Then…..Else就是条件语句,ShowPicture1是InTouch的命令语句,但在RSView中这种形式的指令是不允许的,即条件语句中不能出现命令语句。利用RSView提供的Events功能可以处理这种情况:
建立一名为EVE1的事件,设置如上。使用时在相应按钮中需要用事件打开命令:EventOnEVE1,即可相应实现条件分支。注意,打开的事件必须用EventOffEVE1再关掉,否则下次使用时失效。
◆画面显示提速:
随着工程中Display的增多及Display中Tags的增多,RSView的运行中画面的切换速度变的缓慢起来。RSView的每一Display的DisplaySetting中的Properties都有CacheAfterDisplay一项,选择“Yes”可以让每一副打开过的Display及其中的Tags常驻内存,这样下次打开时就相当快了,当然前提是计算机的内存足够大。
◆历史数据库的建立及报表生成:
厂里需要某些参数(Tags值)在三个月内的历史数据,因此要为这些Tags建立数据库并提供报表生成功能。RSView中的DataLog功能可以提供某些Tags在特定时间或动作时的值,并能够按三种格式(NarrowFormat,WideFormat,ODBC)保存在计算机中。设计中先在工程目录下新建一Access数据表,再在系统控制面板的32位数据源管理器(ODBC)中注册(当然也可以用向导来做),然后在RSView的DataLogSetup中设置保存格式(如:ODBC)、保存时间(如:三个月)、导出频率(如:每一个小时)和选择要保存的Tag。如下图:样在工程运行时用DataLogOn命令打开它就可以自动保存数据和当时时间。
要生成报表可以有两种方法:一是用VB6.0或VC 等做一可执行程序,在RSView中用AppStart命令激活此程序,再用AppActive命令推至前台执行;二是使用RSView内嵌的VBA来做。VBA的调用方式是子程序,在子程序中显示如下窗体:
数据库访问使用的是DAO对象。首先打开ACCESS数据库并选取符合时间要求的记录集:
Setws=DBEngine.Workspaces(0)
Setdb=ws.OpenDatabase(“D:\xxx.mdb”)
strSQL=SELECT*FROM数据表WHEREDATE=#2002/10/31#
Setrs=db.OpenRecordset(strSQL)
当然通过对话框上的三个文本框还可以实现动态的SQL查询:
strSQL=“SELECT*FROM数据表WHEREDATE=#”&Text1.text&”/”&_Text2.text&”/””&Text3.text&”#”
然后打开一新Excel表并激活:
DimxlaAsNewExcel.Application
DimxlbAsNewExcel.Workbook
DimxlsAsNewExcel.Worksheet
Setxlb=xla.Workbooks.Add
Setxls=xlb.Worksheets.Add
xla.Visible=True
xls.Activate
并按要求的格式填写标题和表头等内容;最后读取记录集中的数据按一定格式填到Excel表中:
xls.Cells(x,y)=rs(“Value”)
报表局部如下图所示。
本文说明的设计实例已在山东莱城发电厂正常投产,运行稳定,完全等同各子系统独立控制的效果,达到了设计要求,实现了辅助设备的集中控制的目的。(
来源:佳工机电网