摘 要:本文是以攔河水閘群實時監(jiān)控系統(tǒng)為開發(fā)背景,在描述閘群實時監(jiān)控系統(tǒng)的基本組成、功能及主要特點的基礎上,詳細介紹了組態(tài)王6.51在此監(jiān)控系統(tǒng)上層組態(tài)軟件中的應用和具體的編程情況。
關鍵字:組態(tài)王; 閘群; 監(jiān)控
Abstract:Under the background of the development of the real-time monitoring control system of drawgate-group,the application of Kingview6.51 in the upper configuration software of the system and its programming are introduced in detail upon the basis of descriptions of the makeup,functions and main features of this system.
Key words:Kingview;drawgate-group;monitoring and control
1. 引言
本系統(tǒng)是F1摩托艇世界錦標賽中國成都站賽道水閘閘群監(jiān)控系統(tǒng)。這項國際比賽賽道的攔河壩壩軸線長284.774m,其中水閘群段長240.4m,共設水閘17孔,單個閘孔寬和高分別為12m和4.5m。該監(jiān)控系統(tǒng)是為一項國際賽事服務,要求它有很高的可靠性和穩(wěn)定性,能夠在監(jiān)控主機屏幕上實時顯示閘群信息,如閘門高度、升降狀態(tài)、故障報警等,使操作人員對其運行狀態(tài)一目了然,還可以存儲、查詢、打印歷史數據報表和操作記錄報表等。并且要求數據處理支持實時計算,能夠精確的獲取賽道的水位信息,所有閘門都可以準確及時做出升、降、停的反應,從而確保賽道水位在大賽允許的小范圍內波動。
2. 監(jiān)控系統(tǒng)結構
系統(tǒng)的硬件部分主要有PLC、通信模塊、UPS、水位計、行程開關、監(jiān)控主機、顯示屏、打印機等組成。組態(tài)軟件選用組態(tài)王6.51進行開發(fā)人機對話界面,實現(xiàn)監(jiān)控功能。本監(jiān)控系統(tǒng)采用分層式管理,網絡結構圖如圖1:
[align=center]

圖1 系統(tǒng)網絡結構圖[/align]
每孔閘門都采用OMRON PLC CP1H 作為現(xiàn)場控制單元,17個現(xiàn)場控制單元就構成了現(xiàn)地控制層?,F(xiàn)地控制層與主控PLC是通過CompoBus/S高速總線進行通信。主控PLC選用OMRON PLC CJ1G,它與監(jiān)控主機一起就構成了集中控制層,它們之間采用HostLink通信方式。
3. 基于組態(tài)王的監(jiān)控軟件開發(fā)
用組態(tài)王進行開發(fā)包括以下步驟:(1)定義變量,將監(jiān)控主機的I/O變量與設備地址相連。(2)設計監(jiān)控畫面,主要包括操作畫面、記錄畫面、報警畫面等。(3)動畫連接,建立畫面圖素和變量的對應關系。(4)構造數據庫,數據庫是監(jiān)控系統(tǒng)的核心部分。(5)運行和調試,逐步完善系統(tǒng)使其達到設計要求。
3.1 主控PLC與監(jiān)控主機的通信
在本監(jiān)控系統(tǒng)中,主控PLC和監(jiān)控主機采用RS232通信方式,接口選用COM1,設備地址為0;通信波特率:9600Bit/s;通信數據格式:7個數據位、2個停止位;采用偶效驗方式。
3.2監(jiān)控系統(tǒng)界面及其功能實現(xiàn)
監(jiān)控系統(tǒng)的界面主要有:監(jiān)控操作界面、歷史數據記錄界面、操作記錄界面、報警界面和用戶界面。監(jiān)控操作界面是直接面向操作人員,主要起監(jiān)控和向現(xiàn)地控制層發(fā)送操作命令等作用,如圖2所示。歷史數據記錄和操作記錄界面,用于存儲和查詢各項歷史記錄。報警界面是向操作人員反饋各種設備的運行狀況,顯示相關故障信息,為操作人員排除故障提供參考。用戶界面是為用戶交接班時提供“簽到”作用。一般工程中,針對每個分散的監(jiān)控對象都會有一個獨立的監(jiān)控操作界面,那么要設計的畫面繁多,工作量大,而且在定義諸多變量時容易混淆出錯。在這里,采用了一種對普通變量進行引用的辦法,實現(xiàn)只用一個監(jiān)控操作界面去監(jiān)控17孔閘門。
[align=center]

圖2 監(jiān)控操作界面[/align]
首先建立一組與所有監(jiān)控操作有關的內存變量,在畫面中使用這一組內存變量實現(xiàn)動畫連接,再在組態(tài)王提供的自定義函數命令語言中,定義一個沒有返回值的函數ChangeVariable,最后利用組態(tài)王中的VarRefAddress函數實現(xiàn)普通變量間的引用。ChangeVariable 函數定義如下:
Void ChangeVariable(String 開環(huán)和復位指令,String 閘門高度,String 閉環(huán)設定值,String 狀態(tài)故障信息,String 標題)
VarRefAddress(\\本站點\內存_開環(huán)和復位指令,開環(huán)和復位指令);
VarRefAddress(\\本站點\內存_閘門高度,閘門高度);
VarRefAddress(\\本站點\內存_閉環(huán)設定值,閉環(huán)設定值);
VarRefAddress(\\本站點\內存_狀態(tài)故障信息,狀態(tài)故障信息);
\\本站點\內存_標題=標題;
例如,當要監(jiān)控操作第八孔閘門時(其他孔閘門類似),在監(jiān)控主界面上點擊觸發(fā)“8號閘門”按鈕,該按鈕命令語言連接中的ChangeVariable(開環(huán)和復位指令_八,閘門高度_八,閉環(huán)設定值_八,狀態(tài)故障信息_八,標題_八) 函數,就會使監(jiān)控界面中所有內存變量和第八孔閘門實際定義的I/O變量相關聯(lián),于是當前的實時監(jiān)控和操作就是針對第八孔閘門。這種方法實現(xiàn)了監(jiān)控多個類似對象時保持監(jiān)控界面不變,而在監(jiān)控操作時其內部變量的關聯(lián)發(fā)生變化,從而達到監(jiān)控各個對象的目的。該方法新穎簡潔,可靠性高,也在很大程度上減輕了開發(fā)人員的工作量。
3.3數據庫的設計和報表的實現(xiàn)
數據庫是監(jiān)控系統(tǒng)數據處理中心,也是聯(lián)系現(xiàn)地控制層和集中控制層的紐帶。該監(jiān)控系統(tǒng)要求實時顯示閘門高度、閘門前后的水位,而且要有操作記錄和報警記錄并且都能產生報表,還具有查詢和打印功能。在本監(jiān)控系統(tǒng)中,采用Windows的ODBC動態(tài)的將數據保存到ACCESS數據庫中,用戶可以通過報表輸出查詢結果。
具體實現(xiàn)步驟如下:首先,建立一個ACCESS數據庫,在本監(jiān)控系統(tǒng)中命名為“閘群監(jiān)控”,并且建立相應的數據表“閘群監(jiān)控系統(tǒng)”。然后在控制面板中的ODBC數據源中添加一個基于驅動程序Microsoft Access Driver的數據源,在本系統(tǒng)中取名為“賽道閘群監(jiān)控系統(tǒng)”,并將該數據源連接到剛才建立的ACCESS數據庫“閘群監(jiān)控”。在組態(tài)王的應用命令語言中添加語句SQLConnect (DeviceID,“dsn=賽道閘群監(jiān)控系統(tǒng)”)實現(xiàn)和數據庫的連接。接著在組態(tài)王的“SQL訪問管理器”中創(chuàng)建對應的記錄體。建好記錄體后,可以在組態(tài)王應用程序命令語言的“啟動時”中,使用SQLInsert(DeviceID,“閘群監(jiān)控系統(tǒng)”,“閘群監(jiān)控系統(tǒng)”)語句,將組態(tài)王的數據保存到ACCESS數據庫中。當系統(tǒng)退出運行時,由SQLDisconnect(DeviceID)斷開和數據庫的連接。
這里以歷史記錄報表為例,給出具體的編程過程。在組態(tài)王的“自定義函數命令語言”中定義一個沒有返回值的HistoryRecord函數:
Void HistoryRecord(RealTag rTag,String Name)
String GroupName;Long Time;
Time=HTConvertTime(\\本站點\$年, \\本站點\$月,\\本站點\$日, \\本站點\$時, \\本站點\$分, \\本站點\$秒);
GroupName=GetGroupName("",rTag.Group);
\\本站點\歷史記錄_日期字符型=Time;
\\本站點\歷史記錄_日期=StrFromTime(Time, 3);
\\本站點\歷史記錄_操作員=\\本站點\$用戶名;
\\本站點\歷史記錄_閘門名稱=Name;
\\本站點\歷史記錄_閘門高度=rTag;
\\本站點\歷史記錄_閘門前水位=\\本站點\閘門前水位;
\\本站點\歷史記錄_閘門后水位=\\本站點\閘門后水位;
SQLInsert(\\本站點\DeviceID,"閘群監(jiān)控系統(tǒng)","閘群監(jiān)控系統(tǒng)");
監(jiān)控系統(tǒng)要求每隔一定時間將數據保存到ACCESS中,所保存的數據還可以通過EXCEL進行查詢和二次處理。本監(jiān)控系統(tǒng)的歷史數據報表有時報表、班報表和日報表,以滿足三種不同的查詢需求。下圖就是其中某一孔閘門的時報表查詢結果:
[align=center]

圖3 數據記錄報表[/align]
操作記錄報表主要記錄操作人員的具體操作情況,比如值班人員登陸和離開時間、對閘門進行了那些操作、向現(xiàn)地控制層發(fā)出了那些控制信號等。報警報表主要記錄系統(tǒng)運行中的各種報警事件、報警狀態(tài)值,并可根據事件的輕重緩急設定報警優(yōu)先級以及報警閥值。操作報表和報警報表的產生和查詢功能的實現(xiàn)都類似于上面的歷史記錄報表。
4.結束語及本文創(chuàng)新點
本監(jiān)控系統(tǒng)是以組態(tài)王Kingview6.51作為開發(fā)平臺,用于攔河水壩閘群的實時監(jiān)控。實現(xiàn)了實時監(jiān)控、故障報警、歷史數據的存儲和查詢、報表的顯示和打印等功能,準確、客觀地反映了閘群的實時運行狀況,數據刷新速度快,精度高,操作界面精簡,具有友好的人機交互界面。系統(tǒng)投入使用以來,運行狀況安全穩(wěn)定可靠,深得用戶好評,在2006年10月的F1摩托艇世界錦標賽中國成都站的比賽中發(fā)揮了重要作用。本文創(chuàng)新點主要有:(1)在上位機組態(tài)軟件設計中,采用一個界面去監(jiān)控多個類似的對象,克服了一般工程中監(jiān)控界面重復設計的弊端。(2)利用對普通變量進行引用的方法,在I/O變量動畫連接方面有新穎之處。(3)數據庫設計方法簡潔高效,不必采用專業(yè)的SQL、Oracle等大型數據庫就可以滿足系統(tǒng)要求,節(jié)約開發(fā)成本。
參考文獻:
[1]北京亞控科技發(fā)展有限公司.組態(tài)王Kingview6.51使用手冊.2005.11
[2]林勇,余永權.組態(tài)王在工業(yè)鍋爐吹灰系統(tǒng)中的應用.微計算機信息.2004.9
[3]龔榮,黎洪生.組態(tài)王6.5在油井實時監(jiān)測系統(tǒng)的應用.工業(yè)控制計算機.2005.7
[4]鐘玲玲,周浩敏.基于組態(tài)王6.5和PLC的水壓控制系統(tǒng).自動化與儀表.2006.4