郭玉泉1,劉海濤2
(1.吉林大學(xué)計算機科學(xué)與技術(shù)學(xué)院,吉林長春 130012;2.吉林省電力有限公司松原供電公司,吉林松原 138000)
SCADA(SupervisoryControl And Data Acquisition)系統(tǒng),即數(shù)據(jù)采集與監(jiān)視控制系統(tǒng),是以計算機為基礎(chǔ)的生產(chǎn)過程控制與調(diào)度的自動化系統(tǒng),它可以對現(xiàn)場的運行設(shè)備進行實時監(jiān)視和控制,以實現(xiàn)數(shù)據(jù)采集、設(shè)備控制、參數(shù)測量與調(diào)節(jié)以及對各類信號進行報警等功能。目前SCADA系統(tǒng)廣泛應(yīng)用于電力、給水、石油、化工等部門的數(shù)據(jù)采集、監(jiān)視控制及過程控制等領(lǐng)域。
傳統(tǒng)的SCADA系統(tǒng)大都是基于Client/Server的結(jié)構(gòu),其局限性主要表現(xiàn)為擴展性較差,其它系統(tǒng)對于已有的SCADA系統(tǒng)資源可重用性差。通常其他系統(tǒng)為得到SCADA系統(tǒng)的數(shù)據(jù),需要編制復(fù)雜的接口,因此重新編制大量代碼,而接口的穩(wěn)定性也較差。隨著工業(yè)生產(chǎn)中信息化應(yīng)用水平的提高,SCADA系統(tǒng)越來越需要和工業(yè)生產(chǎn)中的其他業(yè)務(wù)系統(tǒng)相結(jié)合,從而為其它業(yè)務(wù)系統(tǒng)提供生產(chǎn)基礎(chǔ)數(shù)據(jù)。例如,在電力行業(yè)SCADA系統(tǒng)要與MIS系統(tǒng)、能量管理系統(tǒng)等系統(tǒng)提供基礎(chǔ)的電網(wǎng)運行數(shù)據(jù)。本文介紹了一種基于J2EE的SCADA系統(tǒng)的設(shè)計與實現(xiàn)方法,它的實施可以為其它業(yè)務(wù)系統(tǒng)訪問SCADA系統(tǒng)數(shù)據(jù)提供通用接口,同時又可以方便地將SCADA系統(tǒng)集成到基于Browser/Server架構(gòu)的業(yè)務(wù)系統(tǒng)中。
J2EE(Java 2 Platform Enterprise Edition)是SUN公司提出的基于Java平臺的架構(gòu)技術(shù)(圖1)。它定義了一整套基于組件以及多層結(jié)構(gòu)的企業(yè)級應(yīng)用開發(fā)的標準,其中多層的分布式應(yīng)用體系結(jié)構(gòu)解決了多層應(yīng)用程序開發(fā)過程中的許多問題。采用J2EE結(jié)構(gòu)開發(fā)的應(yīng)用程序其應(yīng)用邏輯和數(shù)據(jù)處理大都集中在應(yīng)用服務(wù)器上,這既提高了系統(tǒng)的處理效率,降低了系統(tǒng)的維護成本,保證了數(shù)據(jù)的安全性和完整性統(tǒng)一,同時還簡化了體系結(jié)構(gòu)設(shè)計和應(yīng)用開發(fā),因此這種結(jié)構(gòu)具有良好的可擴展性,是一種靈活可靠的安全模型。而且Java具有優(yōu)良的跨平臺特性,基于Java開發(fā)的程序能夠在Windows、Unix、Linux等操作系統(tǒng)下運行,使開發(fā)的應(yīng)用系統(tǒng)的擴展性更加強。
圖1 J2EE體系結(jié)構(gòu)圖
基于J2EE的SCADA系統(tǒng)的結(jié)構(gòu)如圖2所示。系統(tǒng)的結(jié)構(gòu)分為3層——數(shù)據(jù)層、中間件層、應(yīng)用層(圖2)。數(shù)據(jù)層是整個系統(tǒng)的基礎(chǔ),系統(tǒng)中需要的原始數(shù)據(jù)均由此產(chǎn)生,同時對設(shè)備下發(fā)的控制指令也由數(shù)據(jù)層下發(fā)到硬件設(shè)備。中間件層是系統(tǒng)業(yè)務(wù)邏輯據(jù)的核心,實現(xiàn)了對模擬量、信號量、遙測量、遙調(diào)量的處理,以及對應(yīng)用層的業(yè)務(wù)接口。應(yīng)用層可以通過此接口取得需要的數(shù)據(jù),以圖形化方式顯示被監(jiān)控環(huán)境的運行情況。
數(shù)據(jù)層中的數(shù)據(jù)采集組件通過RTU(Remote Terminal Units)采集各種表計、傳感器、控制器的數(shù)據(jù),并為中間件層提供實時數(shù)據(jù),同時也將定期采集到的實時數(shù)據(jù)存儲到數(shù)據(jù)庫中。對于采集到的告警信息,數(shù)據(jù)采集模塊會將其直接傳遞給中間件層的告警處理模塊。中間件層的遠遙處理模塊在下發(fā)控制信息時,需通過數(shù)據(jù)采集模塊發(fā)送到被控設(shè)備。此外,數(shù)據(jù)層還包括描述被監(jiān)控場站情況的矢量圖文件,矢量圖由專門的繪圖程序繪制,系統(tǒng)中所有數(shù)據(jù)都以圖形化的方式顯示。
中間件層是整個系統(tǒng)業(yè)務(wù)邏輯的核心,基于J2EE的SCADA系統(tǒng)的所有業(yè)務(wù)邏輯都在這一層實現(xiàn)。中間件層的主要業(yè)務(wù)組件有告警處理、數(shù)據(jù)查詢、遠搖控制、矢量圖處理。告警處理組件根據(jù)預(yù)先定義的閥值或狀態(tài)來監(jiān)控各種變量,當變量超過閥值或狀態(tài)改變時產(chǎn)生告警信息并采取相應(yīng)的自動保護指令。數(shù)據(jù)查詢組件采用Web Service技術(shù)實現(xiàn)應(yīng)用層對數(shù)據(jù)層的訪問接口,應(yīng)用層或其他系統(tǒng)可以通過SOAP協(xié)議訪問SCADA系統(tǒng)中的各種數(shù)據(jù)。遠遙控制組件可以接收應(yīng)用層的控制請求,生成控制指令,并將指令下發(fā)到被控設(shè)備中去。矢量圖處理組件負責將矢量圖轉(zhuǎn)換成Web可以發(fā)布的媒體形式,并分析矢量圖中包含的被監(jiān)控變量來組織矢量圖呈現(xiàn)時需要的數(shù)據(jù)。
應(yīng)用層以圖形方式顯示被監(jiān)控場站,客戶端程序采用瀏覽器中嵌入Java Applet的方式實現(xiàn)。在圖形顯示中采用了雙緩沖技術(shù),其基本過程是在繪圖前線創(chuàng)建一個與當前顯示設(shè)備兼容的繪圖設(shè)備,在此兼容的繪圖設(shè)備上完成繪圖,然后將此設(shè)備上的內(nèi)容復(fù)制到當前顯示設(shè)備上。采用雙緩沖技術(shù)后能夠保障圖形切換流暢避免產(chǎn)生抖動和閃爍現(xiàn)象的發(fā)生。
圖2 基于J2EE的SCADA系統(tǒng)框架結(jié)構(gòu)圖
應(yīng)用層的客戶端圖形顯示模塊是該層的核心。圖3說明了該模塊的類模型,圖元基類定義了圖元的基本屬性(位置信息、圖元連接信息等),各種圖元類都由圖元基類繼承而來,圖元類定義了圖元的畫法,以及數(shù)據(jù)信息和告警閥值信息,一個圖元對應(yīng)實際被監(jiān)控的設(shè)備。接線圖類與一幅實際接線圖對應(yīng),其中包含有很多圖元信息,它通過數(shù)據(jù)讀取接口完成接線圖中包含監(jiān)控數(shù)據(jù)的讀取。繪圖設(shè)備接口完成以雙緩沖方式進行圖形繪制操作。數(shù)據(jù)讀取接口,不但定義了采集數(shù)據(jù)的讀取方法,而且還定義了告警信息的讀取方法,以及控制信息下發(fā)操作。
圖3 應(yīng)用層類模型
中間件層的類模型如圖4所示,RemoteContrl類執(zhí)行遠程控制,Alert類處理告警信息,Graph類完成圖形顯示,ExtractData類完成數(shù)據(jù)的提取。
圖4 中間件層類模型
系統(tǒng)的工作流程如圖5所示,數(shù)據(jù)采集模塊通過RTU(Remote Terminal Unit)設(shè)備將由被監(jiān)控設(shè)備數(shù)據(jù)采集到系統(tǒng)中,對于由RTU采集到的數(shù)據(jù)被定期存儲到數(shù)據(jù)庫中,數(shù)據(jù)采集模塊中始終保存有各采集點的最新數(shù)據(jù)。系統(tǒng)中所有被監(jiān)控設(shè)備都是以圖形的方式呈現(xiàn)給用戶的,繪圖處理模塊用來將場站結(jié)構(gòu)繪制成矢量圖形,所有的矢量圖形以文件形式存儲到系統(tǒng)中供系統(tǒng)其它模塊調(diào)用。用戶通過瀏覽器進入系統(tǒng)后,圖形顯示模塊通過矢量圖處理模塊將塊將被監(jiān)系統(tǒng)的數(shù)據(jù)傳送到瀏覽器中的圖形顯示模塊,同時矢量圖處理模塊會將圖形中所包含的各種量值的當前值傳送到圖形顯示模塊。圖形顯示模塊根據(jù)這些數(shù)據(jù)采用雙緩沖技術(shù)將圖形繪制出來。圖形顯示模塊會定期調(diào)用系統(tǒng)中的數(shù)據(jù)提取模塊,以取得被監(jiān)控量當前的最新數(shù)值。數(shù)據(jù)提取模塊每次在向用戶側(cè)發(fā)送數(shù)據(jù)時會調(diào)用告警處理模塊,取得當前的告警信息,發(fā)送給用戶端。
圖5 系統(tǒng)工作流程
當用戶需要遙控被監(jiān)控設(shè)備就可以調(diào)用遠遙處理模塊,向設(shè)備下發(fā)動作指令,遠遙處理模塊將指令發(fā)給數(shù)據(jù)采集模塊,采集模塊會將指令下發(fā)到被控設(shè)備。其他系統(tǒng)需要讀取系統(tǒng)中的數(shù)據(jù)時可以直接通過HTTP協(xié)議調(diào)用數(shù)據(jù)提取模塊、告警模塊,通過這兩個模塊可以得到系統(tǒng)中的各種數(shù)據(jù),包括當前數(shù)據(jù)、歷史數(shù)據(jù)、告警日志等信息。
系統(tǒng)在BEA公司的WebLogic平臺上實現(xiàn),操作系統(tǒng)選用Microsoft Windows 2007 Server,數(shù)據(jù)庫系統(tǒng)采用Microsoft SQLServer 2005。數(shù)據(jù)采集模塊、繪圖處理模塊采用Microsoft Visual C++2007開發(fā)。系統(tǒng)的圖形顯示組件、告警處理組件、數(shù)據(jù)查詢組件、遠遙處理組件、矢量圖處理組件采用Java開發(fā)。告警處理組件、數(shù)據(jù)提取組件、遠遙處理組件、矢量圖處理組件部署在應(yīng)用服務(wù)器上,數(shù)據(jù)采集模塊部署在采集服務(wù)器上,圖形顯示模塊部署在用戶端。
圖6 系統(tǒng)運行界面
該系統(tǒng)在多個發(fā)電廠投入使用,投入運行后系統(tǒng)運行穩(wěn)定,滿足了各個部門實際生產(chǎn)的管理需要,同時系統(tǒng)具有良好的擴展性,與其他生產(chǎn)系統(tǒng)(運行管理系統(tǒng)、決策支持系統(tǒng)、MIS系統(tǒng))完整結(jié)合取得了良好的效果。圖6是系統(tǒng)實際運行截圖。
本文介紹了基于J2EE的SCADA的實現(xiàn)方法,并且該系統(tǒng)實際應(yīng)用于火力發(fā)電廠,在實際的生產(chǎn)中實現(xiàn)與MIS系統(tǒng)、運行管理系統(tǒng)、能量管理系統(tǒng)得無縫結(jié)合,達到了預(yù)期的效果,很好地解決了其它業(yè)務(wù)系統(tǒng)與SCADA的接口問題,取得了良好的經(jīng)濟效益和社會效益。
[1]R.I.威廉姆斯.油氣工業(yè)監(jiān)控與數(shù)據(jù)采集(SCADA)系統(tǒng)[M].北京:石油工業(yè)出版社,1995:398-400.
[2]魏高山.三層Client/Server結(jié)構(gòu)分析與應(yīng)用[M].北京:中國郵電出版社,2003:20-23.
[3]路索英,張銀龍.工業(yè)遠動技術(shù)[M].北京:科學(xué)出版社,1997:5-8.
[4]XC-SOFT.三層體系結(jié)構(gòu)與數(shù)據(jù)庫編程[EB/OL].(2011-09-09)[2012-05-09]http://wenku.baidu.com/view/6113e9ee6294dd88d0d26bc0.html.
[5]柴曉路.Web服務(wù)器架構(gòu)與開放互操作技術(shù)[M].北京:清華大學(xué)出版社,2002:8-12.
[6]郝興偉.Web技術(shù)導(dǎo)論[M].北京:清華大學(xué)出版社,2000:30-33.
[7]康博.Web應(yīng)用程序開發(fā)新技術(shù)[M].北京:人民郵電出版社,1999:71-73.
[8]奈德斯特.WEB設(shè)計技術(shù)手冊[M].北京:人民郵電出版社,2001:56-58.
[9]TonyBeveridge,Paul McGlashan.ISAPI/NSAPI Web高級編程[M].北京:中國郵電出版社,1999:201-205.
[10]王洪濤.深入剖析Visual C++編程技術(shù)及應(yīng)用實例[M].北京:人民郵電出版社,2003:2-10.
[11]W.Richard Stevens.TCP/IP詳解卷3:協(xié)議[M].北京:機械工業(yè)出版社,2004:132-13.