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