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