智能配電數(shù)字終端軟件系統(tǒng)消息設計方案
智能電網(wǎng)是一個能夠?qū)崿F(xiàn)對用戶和設備進行實時監(jiān)視的完整體系,是利用各種信息提高電網(wǎng)的可靠性、經(jīng)濟性和靈活性,為電網(wǎng)運行和管理人員提供更完整、便捷的電網(wǎng)狀態(tài)顯示界面,幫助電網(wǎng)實現(xiàn)智能化運行的新型電網(wǎng)。智能電網(wǎng)包括智能發(fā)電、智能輸電、智能配電和智能變電4個部分。在此,智能配電數(shù)字終端軟件系統(tǒng)根據(jù)內(nèi)聚性、通用性劃分為應用邏輯、業(yè)務邏輯、消息控翻、設備管理和基礎構(gòu)建5個層次,降低了層與層之間的耦合性。在智能配電網(wǎng)中智能配電數(shù)字終端需要采集的電力數(shù)據(jù)和數(shù)據(jù)來源很多,為了管理多個事件源和消息源,采用了基于反應器模式的事件驅(qū)動機制,保證了系統(tǒng)的實時性,提高了系統(tǒng)的工作效率。
近年來,智能電網(wǎng)這一新概念逐漸受到國內(nèi)外電力專家的青昧。智能電網(wǎng)主要是運用先進的網(wǎng)絡分析技術以及新的智能化技術手段,將電力企業(yè)的各種設備、控制系統(tǒng)、生產(chǎn)任務及工作人員有機地聯(lián)系在一起,在一種“公共信息模型”的基礎上自動收集和存儲數(shù)據(jù),對供電系統(tǒng)的運行及電力企業(yè)的經(jīng)營管理進行全面、深入的分析,客觀正確地優(yōu)化其資產(chǎn)管理和供電服務。智能電網(wǎng)包括智能發(fā)電、智能輸電、智能配電和智能變電4個部分。
智能配電網(wǎng)是智能電網(wǎng)的重要組成部分,可實現(xiàn)對微網(wǎng)的靈活控制,從而提高需求側(cè)的供電可靠性和管理水平。智能配電數(shù)字終端與系統(tǒng)主站的通信支持《Q/GDW 376.1—2009電力用戶用電信息采集系統(tǒng)通信協(xié)議》,在與計量設備通訊時支持《DL/T 645—2007多功能電能表通信規(guī)約》。智能配電數(shù)字終端實現(xiàn)了實時數(shù)據(jù)采集、定時自動采集、終端主動上報等多種數(shù)據(jù)采集方式,同時也支持電能數(shù)據(jù)、交流直流模擬量、電能曲線、電能質(zhì)量越限統(tǒng)計數(shù)據(jù)、事件記錄等各種電力數(shù)據(jù)類型,提供友好的人機界面,能夠與主控模塊進行顯示、鍵盤、本地維護口等信息的交互,在通信端采用了紅外、串口、以太網(wǎng)、USB等多種通信方式,實現(xiàn)了配電自動化、事件記錄、遠程控制一體化。
在智能配電網(wǎng)中,需要采集的電力數(shù)據(jù)以及數(shù)據(jù)的來源較多,本文提出的消息設計方案能夠很好地解決大量數(shù)據(jù)源的管理,保證系統(tǒng)的實時響應,提高系統(tǒng)的工作效率。
1 終端軟件系統(tǒng)
1.1 終端軟件模塊
智能配電數(shù)字終端軟件系統(tǒng)根據(jù)各模塊職責內(nèi)聚性、通用性、領域相關性等劃分為基礎構(gòu)建模塊、設備管理模層、消息控制層、業(yè)務邏輯模層、應用邏輯層等5個部分。軟件系統(tǒng)邏輯劃分如圖1所示。
系統(tǒng)中基礎構(gòu)建模塊負責向系統(tǒng)提供所有運行所需的基礎構(gòu)建,如引用計數(shù)、SQLite數(shù)據(jù)庫、Log運行記、XML解析、消息管理器等;設備管理模塊提供對LCD顯示模塊、ADC設備、電源等硬件設備的基礎管理和高層抽象;消息控制模塊將設備的輸入用消息的形式引入系統(tǒng);業(yè)務邏輯模塊主要負責協(xié)議解析、數(shù)據(jù)計算分析、對數(shù)據(jù)庫的存儲及操作等;應用邏輯模塊處理本地用戶輸入、界面顯示控制,以及用消息注冊的方式接收消息,并進行消息處理等相關操作。
1.2 消息控制模塊
消息管理為系統(tǒng)運行架構(gòu)的運行機制,負責控制各個設備產(chǎn)生消息,供其他消息控制模塊調(diào)用。消息控制模塊基于消息管理器,屏蔽各設備實現(xiàn)的差異,以增強系統(tǒng)的擴展性以及降低子系統(tǒng)之間的耦合性,統(tǒng)一各種輸入輸出設備在系統(tǒng)中的實現(xiàn),使所有設備的輸入均以消息的形式引入系統(tǒng)。系統(tǒng)運行流程如圖2所示。從圖2中看到,在消息管理循環(huán)中,消息管理器將對主站通信設備、用戶輸入、電能表通信設備、開關量通信設備、直流信號采集設備和定時器等抽象設備的輸入以消息的形式引入系統(tǒng),并通告應用邏輯模塊對消息進行處理。
2 系統(tǒng)運行機制
本系統(tǒng)的運行基于反應器(Reactor)模式的事件驅(qū)動機制。Reactor釋義“反應器”,是一種事件驅(qū)動機制,與普通函數(shù)調(diào)用的不同之處在于:應用程序不是主動地調(diào)用某個API完成處理,而是根據(jù)Reactor提供的回調(diào)機制統(tǒng)一將接口注冊到Reactor上。當這些事件發(fā)生時,消息管理中心會調(diào)用這些已經(jīng)注冊的函數(shù)處理相應的事件(I/O讀寫、定時和用戶輸入等)。這樣系統(tǒng)能夠?qū)⑻幚砗瘮?shù)的調(diào)用者與被調(diào)用者分離,使本系統(tǒng)更加靈活。
2.1 系統(tǒng)運行結(jié)構(gòu)設計
本系統(tǒng)采用的事件驅(qū)動模式與消息服務系統(tǒng)類似,同時又存在區(qū)別。在消息系統(tǒng)中,消息客戶端和消息服務器端只需建立一個連接,就可以隨時發(fā)布消息。事件驅(qū)動的本系統(tǒng)預先定義事件的觸發(fā)條件和事件的執(zhí)行過程并在客戶端和服務端建立連接,當3系統(tǒng)在工作過程中發(fā)現(xiàn)事件滿足觸發(fā)條件,事件就被激活并開始執(zhí)行。系統(tǒng)中的事件驅(qū)動流程示意圖如圖3所示。
圖3中,事件消費者向事件管理器訂閱事件,事件生產(chǎn)者向事件管理器發(fā)布事件,當事件管理器從事件生產(chǎn)者那接收到一個事件時,事件管理器把這個事件轉(zhuǎn)送給相應的事件消費者。
2.2 事件管理器循環(huán)設計
本系統(tǒng)中的事件管理器負責設備或定時事件的準備(Prepare)、選擇(Select)、檢查(Check)、處理(Dispatch)、清楚(Cleanup)5個步驟,事件管理器的分發(fā)循環(huán)如圖4所示。
根據(jù)系統(tǒng)的實際需要,模型中定義事件源的基類Source。主站通信、定時采集、用戶輸入等多種具體的事件源可以繼承自該基類。同時全局事件管理器SourceDispathcer提供3個操作來管理事件。待處理事件管理器類SourceDispatchContext則負責管理符合觸發(fā)條件的事件。3個類之間的關系如圖5所示。
從圖5可看到,全局事件管理器提供接口ToRegisterSouree注冊系統(tǒng)關心的事件,同時使用接口UnRegisterSource注銷事件,iteration OfDispatch則負責事件分發(fā)循環(huán)的5個步驟。首先將所關心的I/O設備中文件描述符放入待檢隊列或者設定定時周期等參數(shù);然后檢查相關設備是否可讀寫或定時周期到達,將滿足觸發(fā)條件的事件放入待處理事件隊列中;最后分別調(diào)用相關的事件處理函數(shù)處理事件,并清理待處理事件隊列。
3 Reactor事件處理機制
3.1 事件源
在智能配電數(shù)字終端系統(tǒng)中,事件源主要由采集模塊、主站通信、用戶輸入和定時器等抽象設備4大部分組成,關系如圖6所示。
事件源在本系統(tǒng)中被封裝成文件描述符,程序在指定的文件描述符上關注關心的事件。
3.2 I/O多路復用
通常對一個文件描述符指定的文件或設備進行I/O操作,系統(tǒng)有3種I/O方式:阻塞和非阻塞同步,以及復用型I/O。復用型I/O,指當滿足一個或多個I/O條件(可讀、可寫或異常)時,進程能夠立即知道,從而可以正確并高效的處理。
本系統(tǒng)的I/O多路復用使用一個事件多路分離器,分離器將來自事件源的I/O事件分離出來,并分發(fā)到對應的事件處理器。通常預先注冊需要處理的事件及事件處理器(或回調(diào)函數(shù));事件分離器負責將請求的事件傳送給事件處理器。
3.3 定時器等抽象設備
在本系統(tǒng)中消息源主要都是I/O設備,可以用系統(tǒng)函數(shù)Select和poll來實現(xiàn)I/O多路復用機制。定時器作為一種特殊事件,雖然不能用Select函數(shù)將其放入待檢查隊列,但同樣可以在事件分發(fā)循環(huán)的準備(Prepare)階段設置定時周期等參數(shù),檢查(Check)定時周期是否到達,當定時周期到了,將定時處理事件放入待處理消息隊列。
3.4 事件處理
對應每一個事件源,在初始階段將動態(tài)庫函數(shù)引入系統(tǒng),建立事件到相應處理函數(shù)的映射,Message Center是事件處理的接口,俠處理函數(shù)的注冊、注銷,當有事件進入“就緒’狀態(tài)時,調(diào)用注冊事件的回調(diào)函數(shù)處理事件。事件處理中心類如圖7所示。
各種具體事件的處理涵數(shù)在MessageCenter中進行注冊,MessageCenter采用map容器對注冊的各種事件處理函數(shù)進行管理,能夠高效率地查找各相關處理函數(shù),提高了系統(tǒng)的實時響應能力。事件處理的時序如圖8所示。
4 結(jié)語
本文從智能配電數(shù)字終端系統(tǒng)實現(xiàn)的角度提出了一種基于Reactor的事件驅(qū)動模式消息管理方案,結(jié)合面向?qū)ο蟮乃枷耄y(tǒng)一接口,對事件源和事件處理進行了封裝。提高了事件的處理效率,保證了系統(tǒng)的實時性。根據(jù)實際需要可以在不同的系統(tǒng)中對于待消息隊列中的事件用優(yōu)先級加以區(qū)分。