山東萊城發(fā)電廠外圍輔助設備均采用了PLC控制,但由于子系統(tǒng)較多且控制分散獨立、PLC的型號廠家繁多,因此將各子系統(tǒng)進行集中控制成為必然。鑒于子系統(tǒng)中采用羅克韋爾自動化A-B品牌的PLC較多,設計采用A-B的Control Logix作為網(wǎng)關和RSView32作為統(tǒng)一的組態(tài)軟件。
此主題相關圖片
如上圖所示,萊城發(fā)電廠輔助設備包括化水系統(tǒng)(MODICON PLC,組態(tài)軟件InTouch7.0)、#1、2凝結水系統(tǒng)(A-B PLC-5,組態(tài)軟件RSView)、#3、4凝結水系統(tǒng)(A-B Control Logix,組態(tài)軟件RSView)、#1、2汽水取樣、加藥系統(tǒng)(A-B Control Logix, 組態(tài)軟件RSView)等,設計中按廠方要求將服務器和交換機放置在化水車間控制室,由于其它各系統(tǒng)距離化水車間較遠(大于200米),為保證傳輸速度及可靠性,故在網(wǎng)關和服務器間加接光纖 ;各系統(tǒng)利用預留接口通過網(wǎng)絡(如:DH+、Control Net等)接入網(wǎng)關,它們與RSView的通訊采用原來的通訊協(xié)議即可(如 :大部分采用RSLinx OPC Server);在處理MODICON PLC與A-B RSView通訊的問題上,可以有兩種方法 :一是安裝MB+OPC Server通訊協(xié)議,它是羅克韋爾自動化開發(fā)的針對MODICON PLC的通訊軟件 ;二是在服務器上安裝PCI 2000 Applicom驅(qū)動卡和其自帶的通訊軟件,它也是羅克韋爾自動化開發(fā)的專門用于A-B 組態(tài)軟件與其它廠家PLC之間通訊的工具。由于后者適用面較廣和價格的考慮,設計采用了后一種方案。網(wǎng)關采用了一個電源模塊、一個CPU模塊、一個DH+模塊、三個控制網(wǎng)模塊和一個以太網(wǎng)模塊,網(wǎng)關通過以太網(wǎng)模塊接入光纖收發(fā)器從而與交換機通訊。交換機采用3COM的24口百兆交換機,服務器采用IBM SERVER。網(wǎng)絡安裝好后,剩下的工作就是用RSView32將所有的上位機組態(tài)畫面進行集中,從而實現(xiàn)在一臺服務器上對廠內(nèi)所有子系統(tǒng)的統(tǒng)一控制。
由于子系統(tǒng)較多,設計中采用了32,000點的RSView32。如果子系統(tǒng)上位機組態(tài)軟件也是RSView,對于Tag只需要用RSView Tool中的Database Import & Export Wizard將子系統(tǒng)工程文件里的Tags導出,再導入我們的工程中;對于Display、Event或Macro需要將其對應工程文件夾Gfx、Eds和 Mro下的文件拷貝到我們的工程文件夾下,再打開工程分別導入。如果組態(tài)軟件不是RSView,如:InTouch,就只能重建標簽庫、重做畫面,并將畫面中所有的指令語句用RSView的指令語句重新編譯。下面就設計中遇到的一些問題和解決的方法作一說明:
◆ RSView中條件語句和命令語句的沖突問題:
在軟件設計中通過條件語句設計分支是十分有效的,如:希望單擊按鈕時如果某一反饋量(如:i)大于某值時彈出畫面1,否則彈出畫面2,在InTouch中按鈕的指令如下:
If i > 50 Then Show Picture1
Else Show Picture2
其中If…..Then…..Else就是條件語句,Show Picture1是InTouch的命令語句,但在RSView中這種形式的指令是不允許的,即條件語句中不能出現(xiàn)命令語句。利用RSView提供的Events功能可以處理這種情況:
建立一名為EVE1的事件,設置如上。使用時在相應按鈕中需要用事件打開命令:EventOn EVE1,即可相應實現(xiàn)條件分支。注意,打開的事件必須用EventOff EVE1再關掉,否則下次使用時失效。
此主題相關圖片
此主題相關圖片
◆ 畫面顯示提速:
隨著工程中Display的增多及Display中Tags的增多,RSView的運行中畫面的切換速度變的緩慢起來。RSView的每一Display的Display Setting中的Properties都有Cache After Display一項,選擇“Yes”可以讓每一副打開過的Display及其中的Tags常駐內(nèi)存,這樣下次打開時就相當快了,當然前提是計算機的內(nèi)存足夠大。
◆ 歷史數(shù)據(jù)庫的建立及報表生成:
廠里需要某些參數(shù)(Tags值)在三個月內(nèi)的歷史數(shù)據(jù),因此要為這些Tags建立數(shù)據(jù)庫并提供報表生成功能。RSView中的Data Log 功能可以提供某些Tags在特定時間或動作時的值,并能夠按三種格式(Narrow Format,Wide Format,ODBC)保存在計算機中。設計中先在工程目錄下新建一Access數(shù)據(jù)表,再在系統(tǒng)控制面板的32位數(shù)據(jù)源管理器(ODBC)中注冊(當然也可以用向?qū)碜觯缓笤赗SView的Data Log Setup中設置保存格式(如:ODBC)、保存時間(如:三個月)、導出頻率(如:每一個小時)和選擇要保存的Tag。如下圖:
此主題相關圖片
樣在工程運行時用DataLogOn命令打開它就可以自動保存數(shù)據(jù)和當時時間。
要生成報表可以有兩種方法:一是用VB6.0或VC++等做一可執(zhí)行程序,在RSView中用AppStart命令激活此程序,再用AppActive命令推至前臺執(zhí)行;二是使用RSView內(nèi)嵌的VBA來做。VBA的調(diào)用方式是子程序,在子程序中顯示如下窗體:
數(shù)據(jù)庫訪問使用的是DAO對象。首先打開ACCESS數(shù)據(jù)庫并選取符合時間要求的記錄集:
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(“D:\xxx.mdb”)
strSQL = SELECT *FROM數(shù)據(jù)表 WHERE DATE = #2002/10/31#
Set rs = db.OpenRecordset(strSQL)
當然通過對話框上的三個文本框還可以實現(xiàn)動態(tài)的SQL查詢:
strSQL = “SELECT * FROM 數(shù)據(jù)表 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
并按要求的格式填寫標題和表頭等內(nèi)容;
此主題相關圖片
最后讀取記錄集中的數(shù)據(jù)按一定格式填到Excel表中:
xls.Cells(x, y) = rs(“value”)
報表局部如下圖所示。
此主題相關圖片
本文說明的設計實例已在山東萊城發(fā)電廠正常投產(chǎn),運行穩(wěn)定,完全等同各子系統(tǒng)獨立控制的效果,達到了設計要求,實現(xiàn)了輔助設備的集中控制的目的。