山東萊城發電廠外圍輔助設備均采用了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”)
報表局部如下圖所示。
此主題相關圖片
本文說明的設計實例已在山東萊城發電廠正常投產,運行穩定,完全等同各子系統獨立控制的效果,達到了設計要求,實現了輔助設備的集中控制的目的。