隨著電網調度自動化水平的提高及計算機技術的發展,發展信息管理系統已成為趨勢[1]。但是要在原有的電力監控系統上增加擴充功能以及實現信息系統的集成,通常建立功能相對獨立的子系統,子系統之間通過網絡進行數據交換[2][3],實現數據共享。這種系統的數據共享能力十分有限,系統維護工作重,軟、硬件重復投資,資源浪費。
本文設計了電力監控系統數據共享中間件,該中間件完成數據的網絡傳輸、刷新及保持數據的一致性,為應用軟件提供統一的數據訪問接口,應用軟件通過該接口訪問中間件數據庫的數據,這使得系統的應用開發變得簡單。整個系統分為數據服務器,數據共享中間件和應用軟件三大部分。三部分協同完成系統的功能。這種軟件結構可以明顯地提高系統的可靠性,降低軟件的開發和維護成本,使今后的軟件升級、增加功能等變得容易,并為以后進一步集成信息管理打下良好基礎。
1 系統總體結構
中間件是指一種軟件[4],用于放在系統軟件和應用軟件之間,有了這層處于中間的軟件,就能使處于遠距離相隔離的應用軟件協同工作(互操作),這樣應用層就可以實現分布式處理。本文利用中間件技術,設計了一個網絡分布式監控系統,以實現各應用成分之間可以跨網絡協同工作。實現各應用所涉及的“系統結構,操作系統,數據庫等”各不相同。
系統按完成的功能可以分成三大部分:數據共享中間件、數據服務器和應用軟件,如圖1所示。數據服務器主要對應用軟件改寫的數據進行集中處理,得到各應用軟件可以使用的數據保存在數據中心,數據中心再刷新各共享中間件的數據供應用軟件使用。應用軟件對數據的讀寫操作實際上是通過共享中間件實現的。應用軟件無需關心數據服務器和其它應用軟件的物理位置。
圖1 軟件系統結構
這種結構充分利用了中間件技術的特點,對應用軟件屏蔽了系統的網絡通信問題及各應用軟件間數據通信問題,數據共享能力強,軟件系統的運行基于數據驅動。分布在網絡上不同節點的應用軟件協同工作,完成復雜的功能。也可以將數據共享中間件提供給第三方,作為數據共享接口,進行信息系統集成。下面介紹各部分的結構及技術處理。
2 模塊結構
2.1 數據中心和數據共享中間件
數據中心和數據共享中間件是系統的關鍵模塊,二者建立了網絡監控系統中各節點應用軟件聯絡的橋梁,數據中心位于服務器節點,中心數據庫保存了整個系統運行的實時數據和最近一段時間的歷史數據,并對數據進行分組。其它應用節點配置數據共享中間件,它的數據庫根據該節點的需要配置若干組數據,這些數據是數據中心的拷貝。結構如圖2所示。
(1) 數據中心和數據共享中間件結構
數據中心和數據共享中間件的結構和功能是一樣的,只是配置不同,所起的作用不一樣。它們分為5層。
圖2 數據中心和數據共享中間件的結構
? 網絡中間件 用組播技術[7]開發的網絡通信中間件,用于發送組播數據和接收組播數據。
? 寫數據庫接口和組播數據接口 寫數據庫接口用于取出要改寫的數據進行合法性檢查,數據合法即寫入中心數據庫。組播數據接口用于當數據中心的數據變化后,調用網絡中間件組播變化的數據記錄,供其他節點的中間件刷新數據。
? 數據庫 為一內存庫,用于存放系統的實時數據,以多個表的形式存放,表中每一記錄用組號、廠站號、變量號作為識別,其余的列為該變量定義的屬性和數據。
? 數據交換管理 用于服務器讀取數據時將所需要的數據從中心數據庫拷貝到共享內存區,服務器寫入數據后,負責檢查數據的合法性和該條記錄的改寫標記,若允許改寫,再寫入數據庫,否則丟棄數據。
? 共享內存區 一片共享內存區域,用于與服務器或應用軟件交換數據的區域,分為兩個小區,讀區域用于讀取數據庫的數據,寫區域用于寫入數據。
數據中心和數據共享中間件不同體現在2、3層的配置不同,共享中間件組只針對數據中心組播數據,所有的共享中間件使用同樣的組號組播,且只有數據中心接收該組數據。而數據中心按分組組播數據記錄。中心數據庫配置系統的所有數據,而共享中間件的數據庫配置該節點所需要的數據。
數據共享中間件與數據中心的通信是通過組播技術實現的,在調度系統中,數據的實時性非常重要,組播技術可以實現一發多收,從而減少時延和節省帶寬和提高系統實時性[7],數據中心把數據分成組,如節點的應用軟件需要該組的數據,配置數據共享中間件時加入該組,即可接收到該組的數據,一個數據共享中間件可以根據需要加入多個組。為提高組播的可靠性,在組播數據接口內建有一緩沖區,暫存組播完的數據,用于對第一次組播沒有接收到的節點進行單獨組播。
數據中心或數據共享中間件是獨立運行的程序,與服務器和應用軟件處于不同的地址空間。服務器和應用軟件使用讀寫共享內存接口完成與數據中心和共享中間件中的數據交換,該接口用動態鏈接庫實現,供服務器或應用軟件加載調用。
(2) 數據處理流程
應用軟件對數據庫的寫操作會引起一系列的數據處理和更新操作。一個典型的數據處理過程一般有8個步驟:
? 應用軟件改寫共享中間件中的數據;
? 共享中間件組播該數據;
? 數據中心接收該數據;
? 數據中心將該數據送到共享內存區;
? 服務器處理數據,并將結果寫回數據中心;
? 數據中心組播該數據記錄;
? 各共享中間件刷新該數據記錄;
? 各應用軟件取得新的數據做處理(顯示等)。
(3) 系統數據安全和可靠性方案
為保證系統的數據安全,對中間件數據庫表中的每一條數據記錄有一寫控制字節,配置為0時,表示該節點禁止改寫該記錄,共享中間件將丟棄應用軟件對該條數據的寫操作,配置為1時,應用軟件可以對該條數據進行寫操作。在重要的場合,為保證系統的可靠性及無間斷運行,服務器可配備雙機熱備用(兩套獨立)。必要時配備第三數據服務器(可以與其他模塊共用硬件)。
除以上的基本功能外。數據中心和共享中間件還需完成以下功能:
① 共享中間啟動后數據初始化,用于該中間件啟動完成后,向數據中心請求一份完整的數據拷貝;
② 網絡監視及切換,當監控網絡為雙以太網時,判斷各節點與服務器的網絡鏈接狀態,應用節點啟用一個網絡主用,另外一個網絡備用,主用網絡故障時,自動切換到備用網絡,并將網絡狀態寫入數據中心;
③ 數據中心之間的數據拷貝功能。數據中心啟動后,如果已有數據中心在線運行,應從在線的數據中心取得一份完整的數據拷貝;
④ 數據中心的主備切換,數據中心一套在線運行,一套熱備用。發生故障時自動切換,也可以人工切換。
2.2 數據服務器和應用軟件的結構
數據服務器和應用軟件只是功能不同,它們具有統一的軟件結構,現以服務器為例介紹其結構。
圖3 數據服務器
數據服務器用于數據的計算和處理,同時完成歷史數據的保存。服務器由3部分組成:數據中心、運行管理器和功能構件。服務器的的功能構件是數據處理構件、歷史數據保存構件及歷史數據庫,其中的歷史數據庫采用商用數據庫,如圖3所示。一個數據處理構件一般負責完成1~2類數據的處理功能,用動態鏈接庫或類實現,掛接在軟件數據總線上,每一構件有一數據緩沖區用于接收軟件數據總線的數據。系統運行控制器是服務器的樞紐,該控制器通過接口檢測數據中心的數據變化,將變化的數據通過軟件數據總線分發到各數據處理構件的緩沖區,系統運行控制器也有一數據緩沖區,用于接收各個數據處理構件的產生的數據寫入數據中心,服務器的主備運行也在該控制器內實現。服務器中各功能構件和控制器以線程方式實現。
中心數據庫中保持了所有的運行數據,包括原始數據、分析處理得到的數據和統計數據,這些數據以表的形式放在內存中。目前,該軟件主要針對電力監控系統,中心數據庫的數據表可以歸納到以下幾類。
? 主站系統運行表 保存主站運行的數據信息;
? 被控站數據表 保存被控廠站的實時運行數據;
? 設備參數表 保存主站和被控廠站系統網絡和設備列表,這部分數據為靜態數據;
? 控制表 保存優化計算,控制策略,控制方案等。
應用軟件的節點配備數據共享中間件,各應用軟件的結構與服務器一致,只是軟件數據總線上掛接的功能構件不一樣,所完成的功能不同。
3 系統升級、功能擴充及應用
系統的升級可以在構件級和模塊級進行,只要保持接口不變,新開發的構件可以與早期開發的構件集成在一個模塊中,數據服務器目前的功能在將來可能不夠用,通過增加新的功能構件解決。各個時期開發的模塊可以集成在一個系統中。對于已經在現場運行的系統,可以進行在線升級和在線擴容,以保持系統的連續運行。
系統已用于2002年投入的粵海鐵路貫通配電調度自動化系統,2003~2004年系統進行了兩次擴容及功能擴充,經過兩年的運行,證明該系統實時性好、運行可靠、功能擴充方便,達到了設計的目標。
4 結語
本文利用組播技術設計開發了數據共享中間件以完成實時數據的共享。功能模塊直接利用已處理好的數據,用于完成特定的功能。這種軟件結構的具有以下的特點:
(1) 基于公共的實時數據服務器,具有較強的數據處理能力,使得功能模塊不再作數據處理而致力于功能實現。
(2) 實時數據和歷史數據方便與信息系統進行數據共享,實現與信息系統的無縫集成。
(3) 數據中心可以增加數據表,增加數據處理構件達到加強服務器的功能。而外圍的功能模塊,可以通過不斷開發功能構件和功能模塊的方法增加軟件系統的功能。
(4) 使用中間件技術,使得數據服務器移植到UNIX操作系統也變得容易些。移植完成后,該系統可以在多操作系統下運行。