用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無中心的分區(qū)多節(jié)點消息控制系統(tǒng),可以應(yīng)用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)及其它使用了多節(jié)點分區(qū)模式的一體化系統(tǒng)中,屬于電力調(diào)度自動化領(lǐng)域。
【背景技術(shù)】
[0002]在調(diào)度自動化系統(tǒng)中,消息總線作為一個重要的通信中間件模塊,為系統(tǒng)提供不同進程之間、不同機器之間的信息與數(shù)據(jù)的傳輸服務(wù)。消息總線具有注冊、注銷、發(fā)送、接收、訂閱、發(fā)布等功能,并以接口函數(shù)的形式提供給各類上層應(yīng)用使用,支持一對一、一對多等消息傳輸形式。針對電力調(diào)度的需求,支持快速傳遞遙測數(shù)據(jù)、開關(guān)變位、事故信號、控制指令等各類實時數(shù)據(jù)和事件;支持對多態(tài)(實時態(tài)、反演態(tài)、研究態(tài)、測試態(tài))的數(shù)據(jù)傳輸。
[0003]通用的消息中間件多采用有中心的工作模式,通過部署一臺或多臺中心消息服務(wù)器,需要通信的程序作為客戶端連接到服務(wù)器上,生產(chǎn)者將消息發(fā)給中心服務(wù)器,消費者以拉模式將消息從中心服務(wù)器取出。調(diào)度自動化系統(tǒng)更多地采用推送模式,從而盡快地將消息送達(dá)目標(biāo)節(jié)點;另外在黑啟動時,要求使用一臺應(yīng)用服務(wù)器就能完成整個系統(tǒng)的監(jiān)控功能。所以調(diào)度自動化系統(tǒng)中的消息總線一般采用對等設(shè)計,即系統(tǒng)中任意節(jié)點都能獨立完成消息收發(fā)工作,這樣消息總線在任意一些節(jié)點故障或退出后,不影響剩余節(jié)點之間消息通信。
[0004]隨著應(yīng)用的擴展與系統(tǒng)規(guī)模的提升,為了便于管理,自動化系統(tǒng)開始劃分為服務(wù)器節(jié)點與工作站節(jié)點。如SCADA/PAS/FES等應(yīng)用節(jié)點位于服務(wù)器節(jié)點,日常維護的節(jié)點位于工作站節(jié)點。服務(wù)器與工作站節(jié)點之間的消息通常由事件轉(zhuǎn)發(fā)來實現(xiàn),即工作站節(jié)點發(fā)送和接收消息通過連接到服務(wù)器節(jié)點的事件轉(zhuǎn)發(fā)服務(wù)來進行,由事件轉(zhuǎn)發(fā)服務(wù)代理消息的發(fā)送與接收。這就造成了工作站節(jié)點發(fā)送和接收消息需要使用另一套API接口。同時,不同工作站節(jié)點訂閱的同一類型的消息時,同一條消息需要在兩個節(jié)點間傳輸多份,造成了帶寬的浪費。
[0005]另外,隨著調(diào)度自動化技術(shù)的發(fā)展,自動化系統(tǒng)逐漸超越了局域網(wǎng)的范疇,向廣域多分區(qū)的方向演進。地縣一體化系統(tǒng)將SCADA/FES等應(yīng)用部署在地調(diào)和縣調(diào)中,實現(xiàn)了分布式監(jiān)控;一體化電網(wǎng)運行智能系統(tǒng)將不同的應(yīng)用類型分配到不同的節(jié)點,實現(xiàn)了應(yīng)用的隔離;區(qū)域調(diào)度系統(tǒng)實現(xiàn)了自動化功能的分層分區(qū)與相互協(xié)調(diào);因此,消息總線也需要跟隨調(diào)度自動化系統(tǒng)的發(fā)展,實現(xiàn)對廣域分區(qū)環(huán)境下消息傳遞的支持。
【發(fā)明內(nèi)容】
[0006]為了解決上述問題,本發(fā)明的目的在于提供用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng)。
[0007]為了解決上述問題,本發(fā)明所采取的技術(shù)方案是:
用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),包括同一分區(qū)的各節(jié)點,以及不同分區(qū)的各節(jié)點,所述每個節(jié)點內(nèi)包括客戶端模塊、消息服務(wù)模塊、多協(xié)議收發(fā)模塊和路由轉(zhuǎn)發(fā)模塊,其特征在于:
所述客戶端模塊發(fā)送消息時,通過上行鏈路將消息交付給消息服務(wù)模塊;接收消息時,通過下行鏈路將其關(guān)注的事件提供給消息服務(wù)模塊,并從消息服務(wù)模塊獲取消息;
所述消息服務(wù)模塊代理本節(jié)點的消息發(fā)送和接收,并維護客戶端模塊的注冊、訂閱信息,消息服務(wù)模塊對本節(jié)點所有客戶端模塊關(guān)注的事件進行匯總,并通過組播發(fā)布給同一分區(qū)內(nèi)其它節(jié)點上的消息服務(wù)模塊;
所述多協(xié)議收發(fā)模塊實現(xiàn)對消息的多種傳輸方式的支持,消息服務(wù)模塊通過多協(xié)議收發(fā)模塊選擇不同的傳輸方式將事件傳遞給其它節(jié)點上的消息服務(wù)模塊;
所述路由轉(zhuǎn)發(fā)模塊轉(zhuǎn)發(fā)消息給其它分區(qū)節(jié)點的路由轉(zhuǎn)發(fā)模塊,當(dāng)后面的路由轉(zhuǎn)發(fā)模塊收到其它分區(qū)發(fā)來的消息后,將該消息傳遞給本節(jié)點的消息服務(wù)模塊,并在本區(qū)域內(nèi)重新分發(fā)。
[0008]前述的用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),其特征在于:所述各節(jié)點都是對等的,部分節(jié)點的故障不影響正常節(jié)點之間的消息通信。
[0009]前述的用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),其特征在于:所述客戶端模塊采用unix domain socket或loopback回環(huán)端口作為進程間通信方式,所述客戶端使用后臺線程批量從消息服務(wù)模塊獲取消息,在本地緩存,避免每次消息接收時從鏈路讀取。
[0010]前述的用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),其特征在于:所述消息服務(wù)模塊在客戶端模塊訂閱事件發(fā)生變化時,立刻觸發(fā)事件變化通知報文,同時定期發(fā)送全事件通知報文作為心跳報文,實現(xiàn)訂閱信息在該分區(qū)的共享。
[0011]前述的用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),其特征在于:所述多協(xié)議收發(fā)模塊采用TCP協(xié)議、PGM協(xié)議或UDP協(xié)議,分別針對不同可靠級別需求,可以設(shè)定將不同的消息類型劃分到不同的傳輸協(xié)議,同時多協(xié)議收發(fā)模塊可以查找之前的用戶配置,選擇該消息應(yīng)采取的傳輸協(xié)議,確保其可靠性要求。
[0012]前述的用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),其特征在于:所述多協(xié)議收發(fā)模塊根據(jù)消息服務(wù)收集的事件訂閱信息,決定消息是否需要發(fā)送給同分區(qū)的指定節(jié)點,避免不必要的數(shù)據(jù)傳輸。消息服務(wù)模塊能夠根據(jù)心跳報文及時發(fā)現(xiàn)節(jié)點的異常退出,并進行清除工作。
[0013]前述的用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),其特征在于:所述路由轉(zhuǎn)發(fā)模塊運行在每個分區(qū)的邊界,每個分區(qū)配置兩個路由節(jié)點,所述每個路由節(jié)點包括一個路由轉(zhuǎn)發(fā)模塊,所述兩個路由節(jié)點以主備模式運行,實現(xiàn)區(qū)域間消息的轉(zhuǎn)發(fā),路由節(jié)點收到其它分區(qū)發(fā)來的消息后,將該消息傳遞給本地的消息服務(wù)模塊,并在本區(qū)域內(nèi)重新分發(fā)。
[0014]前述的用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),其特征在于:所述兩個路由節(jié)點以主備模式運行,主用路由節(jié)點與其它分區(qū)的主用路由節(jié)點通信,轉(zhuǎn)發(fā)消息,備用路由節(jié)點緩存消息,當(dāng)主用路由節(jié)點故障時,自動切換到備用路由節(jié)點,并補發(fā)緩存中的消息。
[0015]前述的用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),其特征在于:所述消息經(jīng)過路由轉(zhuǎn)發(fā)模塊轉(zhuǎn)發(fā)后會被打上分區(qū)標(biāo)志,防止被再次轉(zhuǎn)發(fā),且每一條消息包含序列號與發(fā)送時間及節(jié)點ID的組合鍵,用于消息過濾。
[0016]前述的用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng),其特征在于:所述消息發(fā)送給其它節(jié)點時,會按照節(jié)點關(guān)注的事件進行過濾,避免發(fā)送消息給不必要的節(jié)點,同時消息發(fā)送給消息服務(wù)模塊時,消息服務(wù)模塊會對收到的消息進行過濾,避免上層應(yīng)用程序收到重復(fù)的消息。
[0017]本發(fā)明所達(dá)到的有益效果:本發(fā)明解決了區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多節(jié)點消息發(fā)送的限制,統(tǒng)一了 API調(diào)用,減少了區(qū)域間帶寬的占有,并且提高了可靠性。本發(fā)明在分區(qū)之間進行消息發(fā)送時,同一條消息應(yīng)該只需要轉(zhuǎn)發(fā)一次,不會因為訂閱節(jié)點數(shù)而發(fā)送多次;應(yīng)用程序在不同節(jié)點間能夠使用同一套API進行消息發(fā)送與接收;消息在區(qū)域間轉(zhuǎn)發(fā)應(yīng)能夠處理冗余功能,進行故障切換,具有重發(fā)與過濾功能,確保消息的可靠性與唯一性;總線應(yīng)能夠支持不同的傳輸方式,并可以根據(jù)配置自動選擇。
【附圖說明】
[0018]圖1為本發(fā)明的分區(qū)內(nèi)消息轉(zhuǎn)發(fā)示意圖。
[0019]圖2為本發(fā)明的分區(qū)間消息路由示意圖。
[0020]圖3為本發(fā)明的消息服務(wù)模塊和多協(xié)議收發(fā)模塊示意圖。
[0021]圖4是本發(fā)明路由轉(zhuǎn)發(fā)模塊模塊示意圖。
[0022]圖5是本發(fā)明一個實施例的自動化系統(tǒng)網(wǎng)絡(luò)架構(gòu)圖。
【具體實施方式】
[0023]下面結(jié)合附圖對本發(fā)明作進一步描述。以下實施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,而不能以此來限制本發(fā)明的保護范圍。
[0024]如圖1-2所示本發(fā)明用于區(qū)域電網(wǎng)調(diào)控系統(tǒng)的無中心分區(qū)多分區(qū)消息控制系統(tǒng)包括同一分區(qū)的各節(jié)點,以及不同分區(qū)的各節(jié)點,所述每個節(jié)點內(nèi)包括客戶端模塊、消息服務(wù)模塊、多協(xié)議收發(fā)模塊,消息總線采用無中心網(wǎng)狀結(jié)構(gòu),所有節(jié)點對等,不存在中心服務(wù)節(jié)點,部分節(jié)點的故障不影響正常節(jié)點之間的消息通信。
[0025]客戶端模塊是客戶程序與消息總線之間的接口,客戶程序收發(fā)消息時,通過客戶端模塊與消息服務(wù)模塊通信??蛻舳四K使用unix domain socket (windows下使用TCP回環(huán)端口)作為進程間通信機制,不使用共享內(nèi)存或文件映射方式,實現(xiàn)客戶程序與消息服務(wù)的隔離,避免不可控的客戶程序破壞共享的數(shù)據(jù)結(jié)構(gòu)??蛻舳四K與消息服務(wù)模塊間使用上行和下行兩條獨立的工作鏈路,實現(xiàn)發(fā)送與接收分離,互不影響??蛻舳四K與消息服務(wù)模塊之間交互消息與關(guān)注的事件。發(fā)送消息時,客戶端通過上行鏈路將消息交付給消息服務(wù)模塊;接收消息時,客戶端通過下行鏈路將其關(guān)注的事件提供給消息服務(wù)模塊,并從消息服務(wù)模塊獲取消息。客戶端模塊使用后臺線程批量從消息服務(wù)模塊獲取消息,在本地緩存,這樣客戶程序調(diào)用消息接收接口時,消息已存在于客戶端模塊自身緩沖區(qū),避免每次消息接收時從鏈路讀取。
[0026]如圖3所示,消息服務(wù)模塊包括事件訂閱以及節(jié)點心跳模塊,客戶端連接管理模塊、日志模塊,重復(fù)消息過濾模塊,所述多協(xié)議收發(fā)模塊包括TCP發(fā)送接收模塊、PGM發(fā)送接收模塊、UDP發(fā)送接收模塊,所述消息服務(wù)模塊代理本分區(qū)節(jié)點的消息發(fā)送和接收,并維護客戶端的注冊、訂閱信息。消息服務(wù)模塊對本節(jié)點所有客戶端關(guān)注的事件進行匯總,并通過組播發(fā)布給同一網(wǎng)段內(nèi)其它節(jié)點上的消息服務(wù)模塊,或通過全事件通知報文形式在網(wǎng)絡(luò)上以組播發(fā)布。在訂閱事件發(fā)生變化時,立刻觸發(fā)事件變化通知報文,同時定期發(fā)送全事件通知報文給節(jié)點心跳模塊作為心跳報文,實現(xiàn)訂閱信息在全網(wǎng)的共享。消息服務(wù)模塊能夠根據(jù)心跳報文及時發(fā)現(xiàn)節(jié)點