本發(fā)明涉及電力監(jiān)控系統(tǒng)領(lǐng)域,特別是一種基于規(guī)則的事故畫(huà)面與應(yīng)急預(yù)案推送方法。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)、通訊技術(shù)和人工智能技術(shù)的快速發(fā)展,電力監(jiān)控系統(tǒng)在電力行業(yè)及其他相關(guān)行業(yè)得到了越來(lái)越廣泛的應(yīng)用。特別是隨著世界經(jīng)濟(jì)、人口的快速發(fā)展,人們對(duì)于方便、快捷、舒適的交通運(yùn)輸有著越來(lái)越高的要求、在水陸空飛速發(fā)展的同時(shí),城市軌道交通也得到了飛速的發(fā)展,尤其是以地鐵、城軌、輕軌為代表的城市軌道交通,在迅速發(fā)展的同時(shí),高度安全可靠、經(jīng)濟(jì)合理適用、調(diào)度操作方便的電力供給是城市軌道交通安全、正常、有效運(yùn)營(yíng)的重要條件和保證。同時(shí),為了有效應(yīng)對(duì)區(qū)域電力系統(tǒng)突發(fā)事故及其他安全衍生事件,做好相應(yīng)的應(yīng)急處理,善后恢復(fù)工作,保障區(qū)域電力供應(yīng)也是一項(xiàng)不可或缺的重要內(nèi)容。
而現(xiàn)在一般地鐵、輕軌等運(yùn)營(yíng)部門(mén)的應(yīng)急預(yù)案都以文件的形式存在,不便于在系統(tǒng)內(nèi)直接調(diào)閱,更不能根據(jù)突發(fā)事件主動(dòng)的推送實(shí)時(shí)監(jiān)測(cè)畫(huà)面和故障預(yù)案資源。雖然平時(shí)可以針對(duì)故障應(yīng)急的處理過(guò)程進(jìn)行培訓(xùn),可是如果實(shí)際工作過(guò)程中突然遇到突發(fā)故障,難免會(huì)手忙腳亂,很難一下就能將平時(shí)的培訓(xùn)內(nèi)容憶起并保證順利的完成相應(yīng)事故的應(yīng)急處理。因此當(dāng)有報(bào)警或故障事件發(fā)生時(shí),調(diào)度中心很難快速的根據(jù)有效參考預(yù)案為事故恢復(fù)處理提供輔助決策、進(jìn)行正確的指揮調(diào)度。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提供了一種可以有效的幫助調(diào)度人員迅速的進(jìn)行故障應(yīng)急指揮,以便有關(guān)搶修人員按照預(yù)案的內(nèi)容迅速組織搶修,從而防止故障或險(xiǎn)情進(jìn)一步擴(kuò)大,保障系統(tǒng)安全及運(yùn)營(yíng)安全。另外,對(duì)于應(yīng)急預(yù)案資源也可以隨時(shí)調(diào)閱進(jìn)行學(xué)習(xí)或在線修訂,進(jìn)一步解決紙質(zhì)預(yù)案的存儲(chǔ)、管理、升級(jí)問(wèn)題的基于規(guī)則的事故畫(huà)面與應(yīng)急預(yù)案推送方法。
本發(fā)明的目的通過(guò)以下技術(shù)方案實(shí)現(xiàn)。
一種基于規(guī)則的事故畫(huà)面與應(yīng)急預(yù)案推送方法,包括以下步驟:
1)加載規(guī)則對(duì)象及規(guī)則對(duì)象的層級(jí)邏輯關(guān)系并利用規(guī)則對(duì)象解析器解析,之后執(zhí)行步驟2);
2)通過(guò)數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件抽取規(guī)則對(duì)象中的數(shù)據(jù)點(diǎn)對(duì)象并對(duì)其進(jìn)行消息注冊(cè);同時(shí)對(duì)規(guī)則在線提交數(shù)據(jù)點(diǎn)對(duì)象進(jìn)行消息注冊(cè),之后執(zhí)行步驟3);
3)對(duì)數(shù)據(jù)點(diǎn)對(duì)象狀態(tài)變化響應(yīng)處理,利用邏輯表達(dá)式規(guī)則評(píng)價(jià)器對(duì)規(guī)則對(duì)象的邏輯表達(dá)式規(guī)則進(jìn)行評(píng)價(jià),之后執(zhí)行步驟4);
4)利用事故畫(huà)面和預(yù)案資源處理組件動(dòng)態(tài)創(chuàng)建彈出事故畫(huà)面和故障預(yù)案資源以及主動(dòng)調(diào)閱編輯故障預(yù)案資源,本方法結(jié)束。
進(jìn)一步的,步驟1)中所述規(guī)則對(duì)象包括:objectid關(guān)鍵項(xiàng)、text關(guān)鍵項(xiàng)、pop關(guān)鍵項(xiàng)、alias關(guān)鍵項(xiàng)、formula關(guān)鍵項(xiàng)、plan關(guān)鍵項(xiàng)、schematic關(guān)鍵項(xiàng)、所述objectid關(guān)鍵項(xiàng)用于唯一標(biāo)識(shí)所述規(guī)則對(duì)象;所述text關(guān)鍵項(xiàng)用于表明所述規(guī)則對(duì)象名稱;所述pop關(guān)鍵項(xiàng)用于表明主動(dòng)彈出策略,所述pop關(guān)鍵項(xiàng)包括datarec關(guān)鍵項(xiàng),所述datarec關(guān)鍵項(xiàng)用于表明與所述規(guī)則對(duì)象相關(guān)的數(shù)據(jù)點(diǎn)對(duì)象集合;所述alias關(guān)鍵項(xiàng)用于表明所述數(shù)據(jù)點(diǎn)對(duì)象的自定義別名;所述formula關(guān)鍵項(xiàng)用于邏輯規(guī)則的評(píng)價(jià)、邏輯規(guī)則表達(dá)式利用所述數(shù)據(jù)點(diǎn)對(duì)象的自定義別名進(jìn)行定制;所述plan關(guān)鍵項(xiàng)用于表明故障預(yù)案資源;所述schematic關(guān)鍵項(xiàng)用于表明畫(huà)面資源,所述schematic關(guān)鍵項(xiàng)包括用于標(biāo)識(shí)唯一畫(huà)面對(duì)象的schematicobjectid、畫(huà)面對(duì)象所屬站的名稱信息。
進(jìn)一步的,所述數(shù)據(jù)點(diǎn)對(duì)象包括doublepoint類型遙信點(diǎn)、measuredvalue類型遙測(cè)點(diǎn)、doublecommand對(duì)象遙控點(diǎn)和integratedtotal對(duì)象遙脈點(diǎn),所述數(shù)據(jù)點(diǎn)對(duì)象包括對(duì)象id屬性、對(duì)象名稱屬性和對(duì)象描述。
進(jìn)一步的,所述層級(jí)邏輯關(guān)系表述為一個(gè)三元組,所述三元組包括objectid、attributetypeid和wiredobjectid,所述objectid表示一個(gè)規(guī)則對(duì)象的標(biāo)識(shí);所述wiredobjectid表示一個(gè)與標(biāo)識(shí)為objectid的規(guī)則對(duì)象存在關(guān)聯(lián)關(guān)系的規(guī)則對(duì)象的標(biāo)識(shí),所述attributetypeid取值集合為{x|x≤2,x∈n*};當(dāng)x=1時(shí),表明標(biāo)識(shí)為wiredobjectid的規(guī)則對(duì)象是標(biāo)識(shí)為objectid的規(guī)則對(duì)象的父對(duì)象;當(dāng)x=2時(shí),表明標(biāo)識(shí)為wiredobjectid的規(guī)則對(duì)象是標(biāo)識(shí)為objectid的規(guī)則對(duì)象的子對(duì)象。
進(jìn)一步的,所述對(duì)象解析器將所有的規(guī)則對(duì)象信息和其層次邏輯信息加載到內(nèi)存并建立映射關(guān)系,然后再將規(guī)則對(duì)象構(gòu)建成樹(shù)形組織結(jié)構(gòu)存儲(chǔ)到內(nèi)存。
進(jìn)一步的,步驟2)所述數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件支持webb/s架構(gòu)數(shù)據(jù)點(diǎn)對(duì)象的消息注冊(cè)監(jiān)聽(tīng),所述數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件提供統(tǒng)一的前端請(qǐng)求接口和統(tǒng)一的后臺(tái)服務(wù)進(jìn)程管理機(jī)制,所述數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件獲取所有的規(guī)則對(duì)象,并抽取每一個(gè)對(duì)象的數(shù)據(jù)點(diǎn)對(duì)象,所述數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件利用數(shù)據(jù)點(diǎn)對(duì)象的數(shù)據(jù)點(diǎn)標(biāo)識(shí)和屬性名稱生成組合鍵key與對(duì)應(yīng)的規(guī)則對(duì)象建立一對(duì)一映射關(guān)系。
進(jìn)一步的,所述統(tǒng)一的前端請(qǐng)求接口通過(guò)指定后臺(tái)請(qǐng)求服務(wù)進(jìn)程名稱、業(yè)務(wù)函數(shù)簽名、回調(diào)函數(shù)對(duì)象的方式批量地完成對(duì)數(shù)據(jù)點(diǎn)對(duì)象進(jìn)行消息注冊(cè)和實(shí)時(shí)數(shù)據(jù)的讀寫(xiě)請(qǐng)求;所述統(tǒng)一的后臺(tái)服務(wù)進(jìn)程管理機(jī)制是由通信中繼進(jìn)程和不同的后臺(tái)服務(wù)進(jìn)行組成。
進(jìn)一步的,所述規(guī)則對(duì)象通過(guò)配置工具進(jìn)行配置,預(yù)留配置在線修改接口,完成配置后觸發(fā)規(guī)則提交事件,所述數(shù)據(jù)點(diǎn)對(duì)象監(jiān)聽(tīng)及處理組件監(jiān)聽(tīng)到提交事件后,重新要求規(guī)則對(duì)象解析器解析新的規(guī)則對(duì)象,并利用據(jù)點(diǎn)對(duì)象監(jiān)聽(tīng)及處理組件更新數(shù)據(jù)點(diǎn)對(duì)象消息監(jiān)聽(tīng)列表,完成配置在線修改功能。
進(jìn)一步的,步驟3)中所述注冊(cè)的數(shù)據(jù)點(diǎn)對(duì)象的屬性值或狀態(tài)發(fā)生變化時(shí),通過(guò)映射關(guān)系定位到規(guī)則對(duì)象,然后提取規(guī)則對(duì)象的邏輯規(guī)則和數(shù)據(jù)點(diǎn)對(duì)象的別名信息,解析還原成可供邏輯表達(dá)式規(guī)則評(píng)價(jià)器解析執(zhí)行的邏輯規(guī)則,若評(píng)價(jià)結(jié)果為ture,則進(jìn)行后續(xù)處理;若為false,則不作響應(yīng)。
進(jìn)一步的,步驟4)中所述事故畫(huà)面和預(yù)案資源處理組件包含事故畫(huà)面處理單元、故障預(yù)案處理單元和故障預(yù)案資源調(diào)閱編輯接口來(lái)接收處理邏輯表達(dá)式規(guī)則評(píng)價(jià)器所傳遞的規(guī)則對(duì)象。
進(jìn)一步的,步驟4)中利用事故畫(huà)面處理單元主動(dòng)彈出事故畫(huà)面:首先,處理預(yù)加載畫(huà)面。抽取規(guī)則對(duì)象畫(huà)面schematic關(guān)鍵項(xiàng),根據(jù)schematic關(guān)鍵項(xiàng)得知畫(huà)面對(duì)象是否啟用預(yù)加載機(jī)制,畫(huà)面預(yù)加載機(jī)制用于保證從接收到實(shí)時(shí)庫(kù)信號(hào)點(diǎn)變化信號(hào)到成功推送畫(huà)面時(shí)間不超過(guò)2s的性能要求,在所述規(guī)則對(duì)象的schematic關(guān)鍵項(xiàng)中可對(duì)于較大的事故畫(huà)面文件指定為預(yù)加載處理;其次,根據(jù)預(yù)加載機(jī)制的處理結(jié)果處理畫(huà)面實(shí)時(shí)數(shù)據(jù),若不存在預(yù)加載畫(huà)面文件則向后臺(tái)服務(wù)進(jìn)程請(qǐng)求加載畫(huà)面資源文件,動(dòng)態(tài)生成畫(huà)面顯示窗口并主動(dòng)彈出,之后再向后臺(tái)服務(wù)進(jìn)程請(qǐng)求畫(huà)面組態(tài)模型實(shí)時(shí)數(shù)據(jù);若存在預(yù)加載畫(huà)面文件則只需要請(qǐng)求其對(duì)應(yīng)的畫(huà)面組態(tài)模型實(shí)時(shí)數(shù)據(jù)。
進(jìn)一步的,步驟4)中利用所述的故障預(yù)案處理單元主動(dòng)彈出事故預(yù)案資源:抽取規(guī)則對(duì)象的plan關(guān)鍵項(xiàng),獲取事故預(yù)案資源存儲(chǔ)路徑,向后臺(tái)服務(wù)進(jìn)程請(qǐng)求加載預(yù)案內(nèi)容后動(dòng)態(tài)生成電子故障預(yù)案文檔顯示窗口并主動(dòng)彈出,故障預(yù)案資源調(diào)閱編輯接口供客戶端調(diào)用,抽取規(guī)則對(duì)象的plan關(guān)鍵項(xiàng),獲取事故預(yù)案資源存儲(chǔ)路徑并向后臺(tái)服務(wù)進(jìn)程請(qǐng)求調(diào)閱預(yù)案內(nèi)容。
相比于現(xiàn)有技術(shù),本發(fā)明的優(yōu)點(diǎn)在于:當(dāng)突發(fā)故障發(fā)生時(shí),利用本發(fā)明能夠根據(jù)事故發(fā)生時(shí)各監(jiān)測(cè)設(shè)備的故障狀態(tài)所對(duì)應(yīng)的邏輯推送規(guī)則主動(dòng)的將應(yīng)急故障預(yù)案推送出來(lái)同時(shí)將監(jiān)測(cè)故障設(shè)備的實(shí)時(shí)畫(huà)面主動(dòng)推出并對(duì)發(fā)生故障的實(shí)時(shí)畫(huà)面進(jìn)行閃爍提示,直到設(shè)備故障恢復(fù)后,取消閃爍提示。這樣可以有效的幫助調(diào)度人員迅速的進(jìn)行故障應(yīng)急指揮,以便有關(guān)搶修人員按照預(yù)案的內(nèi)容迅速組織搶修,從而防止故障或險(xiǎn)情進(jìn)一步擴(kuò)大,保障系統(tǒng)安全及運(yùn)營(yíng)安全。另外,對(duì)于應(yīng)急預(yù)案資源也可以隨時(shí)調(diào)閱進(jìn)行學(xué)習(xí)或在線修訂,進(jìn)一步解決紙質(zhì)預(yù)案的存儲(chǔ)、管理、升級(jí)等等問(wèn)題。
附圖說(shuō)明
圖1為本發(fā)明處理流程圖。
圖2為本發(fā)明實(shí)施例分層結(jié)構(gòu)圖。
圖3為本發(fā)明實(shí)施例處理流程圖。
圖4本發(fā)明實(shí)施例事故畫(huà)面處理流程。
圖5為本發(fā)明實(shí)施例數(shù)據(jù)點(diǎn)對(duì)象數(shù)組和其別名數(shù)組對(duì)應(yīng)關(guān)系示意圖。
具體實(shí)施方式
下面結(jié)合說(shuō)明書(shū)附圖和具體的實(shí)施例,對(duì)本發(fā)明作詳細(xì)描述。
如圖1所示,一種基于規(guī)則的事故畫(huà)面與應(yīng)急預(yù)案推送方法,包括以下步驟:
1)加載規(guī)則對(duì)象及規(guī)則對(duì)象的層級(jí)邏輯關(guān)系并利用規(guī)則對(duì)象解析器解析,之后執(zhí)行步驟2);
2)通過(guò)數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件抽取規(guī)則對(duì)象中的數(shù)據(jù)點(diǎn)對(duì)象并對(duì)其進(jìn)行消息注冊(cè);同時(shí)對(duì)規(guī)則在線提交數(shù)據(jù)點(diǎn)對(duì)象進(jìn)行消息注冊(cè),之后執(zhí)行步驟3);
3)對(duì)數(shù)據(jù)點(diǎn)對(duì)象狀態(tài)變化響應(yīng)處理,利用邏輯表達(dá)式規(guī)則評(píng)價(jià)器對(duì)規(guī)則對(duì)象的邏輯表達(dá)式規(guī)則進(jìn)行評(píng)價(jià),之后執(zhí)行步驟4);
4)利用事故畫(huà)面和預(yù)案資源處理組件動(dòng)態(tài)創(chuàng)建彈出事故畫(huà)面和故障預(yù)案資源以及主動(dòng)調(diào)閱編輯故障預(yù)案資源,本方法結(jié)束。
步驟1)中所述規(guī)則對(duì)象包括:objectid關(guān)鍵項(xiàng)、text關(guān)鍵項(xiàng)、pop關(guān)鍵項(xiàng)、alias關(guān)鍵項(xiàng)、formula關(guān)鍵項(xiàng)、plan關(guān)鍵項(xiàng)、schematic關(guān)鍵項(xiàng)、所述objectid關(guān)鍵項(xiàng)用于唯一標(biāo)識(shí)所述規(guī)則對(duì)象;所述text關(guān)鍵項(xiàng)用于表明所述規(guī)則對(duì)象名稱;所述pop關(guān)鍵項(xiàng)用于表明主動(dòng)彈出策略,所述pop關(guān)鍵項(xiàng)包括datarec關(guān)鍵項(xiàng),所述datarec關(guān)鍵項(xiàng)用于表明與所述規(guī)則對(duì)象相關(guān)的數(shù)據(jù)點(diǎn)對(duì)象集合;所述alias關(guān)鍵項(xiàng)用于表明所述數(shù)據(jù)點(diǎn)對(duì)象的自定義別名;所述formula關(guān)鍵項(xiàng)用于邏輯規(guī)則的評(píng)價(jià)、邏輯規(guī)則表達(dá)式利用所述數(shù)據(jù)點(diǎn)對(duì)象的自定義別名進(jìn)行定制;所述plan關(guān)鍵項(xiàng)用于表明故障預(yù)案資源;所述schematic關(guān)鍵項(xiàng)用于表明畫(huà)面資源,所述schematic關(guān)鍵項(xiàng)包括用于標(biāo)識(shí)唯一畫(huà)面對(duì)象的schematicobjectid、畫(huà)面對(duì)象所屬站的名稱信息。
電力監(jiān)控系統(tǒng)中數(shù)據(jù)采用面向?qū)ο蟮脑O(shè)計(jì)思想設(shè)計(jì),所述數(shù)據(jù)點(diǎn)對(duì)象包括doublepoint類型遙信點(diǎn)、measuredvalue類型遙測(cè)點(diǎn)、doublecommand對(duì)象遙控點(diǎn)和integratedtotal對(duì)象遙脈點(diǎn),每個(gè)點(diǎn)對(duì)象又包括了多個(gè)屬性,每個(gè)屬性對(duì)應(yīng)一個(gè)值。不同類型的數(shù)據(jù)點(diǎn)對(duì)象都共同擁有的屬性對(duì)象都至少包括對(duì)象id屬性(objectid)、對(duì)象名稱屬性(name),對(duì)象描述(descrption)。
所述層級(jí)邏輯關(guān)系表述為一個(gè)<objectid,attributetypeid,wiredobjectid>三元組,所述三元組包括objectid、attributetypeid和wiredobjectid,所述objectid表示一個(gè)規(guī)則對(duì)象的標(biāo)識(shí);所述wiredobjectid表示一個(gè)與標(biāo)識(shí)為objectid的規(guī)則對(duì)象存在關(guān)聯(lián)關(guān)系的規(guī)則對(duì)象的標(biāo)識(shí),所述attributetypeid取值集合為{x|x≤2,x∈n*};當(dāng)x=1時(shí),表明標(biāo)識(shí)為wiredobjectid的規(guī)則對(duì)象是標(biāo)識(shí)為objectid的規(guī)則對(duì)象的父對(duì)象;當(dāng)x=2時(shí),表明標(biāo)識(shí)為wiredobjectid的規(guī)則對(duì)象是標(biāo)識(shí)為objectid的規(guī)則對(duì)象的子對(duì)象。
這樣將規(guī)則對(duì)象之間的層次邏輯表示之后,可以方便的將邏輯規(guī)則對(duì)象的存儲(chǔ)和其之間的層次邏輯關(guān)系的存儲(chǔ)分別獨(dú)立的存儲(chǔ)。
所述對(duì)象解析器將所有的規(guī)則對(duì)象信息和其層次邏輯信息加載到內(nèi)存并建立映射關(guān)系,然后再將規(guī)則對(duì)象構(gòu)建成樹(shù)形組織結(jié)構(gòu)存儲(chǔ)到內(nèi)存。
步驟2)所述數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件支持webb/s架構(gòu)數(shù)據(jù)點(diǎn)對(duì)象的消息注冊(cè)監(jiān)聽(tīng),所述數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件提供統(tǒng)一的前端請(qǐng)求接口和統(tǒng)一的后臺(tái)服務(wù)進(jìn)程管理機(jī)制,所述數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件獲取所有的規(guī)則對(duì)象,并抽取每一個(gè)對(duì)象的數(shù)據(jù)點(diǎn)對(duì)象,所述數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件利用數(shù)據(jù)點(diǎn)對(duì)象的數(shù)據(jù)點(diǎn)標(biāo)識(shí)和屬性名稱(objectid_屬性名)生成組合鍵key與對(duì)應(yīng)的規(guī)則對(duì)象建立一對(duì)一映射關(guān)系。
所述統(tǒng)一的前端請(qǐng)求接口通過(guò)指定后臺(tái)請(qǐng)求服務(wù)進(jìn)程名稱、業(yè)務(wù)函數(shù)簽名、回調(diào)函數(shù)對(duì)象的方式批量地完成對(duì)數(shù)據(jù)點(diǎn)對(duì)象進(jìn)行消息注冊(cè)和實(shí)時(shí)數(shù)據(jù)的讀寫(xiě)請(qǐng)求;統(tǒng)一的后臺(tái)服務(wù)進(jìn)程管理機(jī)制是由通信中繼進(jìn)程(wg_message_relay)和不同的后臺(tái)服務(wù)進(jìn)行組成。前端與wg_message_relay建立維護(hù)通信連接,所有的前端請(qǐng)求都與wg_message_relay通信。wg_message_relay根據(jù)前端請(qǐng)求參數(shù)中的服務(wù)進(jìn)程名稱負(fù)責(zé)將請(qǐng)求分發(fā)給該服務(wù)進(jìn)程。該服務(wù)進(jìn)程將業(yè)務(wù)處理結(jié)果返回至wg_message_relay進(jìn)程,再由該進(jìn)程將處理結(jié)果返回給前端。
這樣的好處在于,無(wú)論之后增加多少后臺(tái)進(jìn)程,只需要將增加的后臺(tái)服務(wù)進(jìn)程注冊(cè)到wg_message_relay進(jìn)程并建立進(jìn)程間通信即可,前端不需要任何變動(dòng)。
前端與服務(wù)器中斷連接后,具有自動(dòng)重連功能,直至與服務(wù)器連接恢復(fù)保證通信自動(dòng)恢復(fù)機(jī)制。
所述規(guī)則對(duì)象通過(guò)配置工具進(jìn)行配置,預(yù)留配置在線修改接口,完成配置后觸發(fā)規(guī)則提交事件,所述數(shù)據(jù)點(diǎn)對(duì)象監(jiān)聽(tīng)及處理組件監(jiān)聽(tīng)到提交事件后,重新要求規(guī)則對(duì)象解析器解析新的規(guī)則對(duì)象,并利用據(jù)點(diǎn)對(duì)象監(jiān)聽(tīng)及處理組件更新數(shù)據(jù)點(diǎn)對(duì)象消息監(jiān)聽(tīng)列表,完成配置在線修改功能。
步驟3)中所述注冊(cè)的數(shù)據(jù)點(diǎn)對(duì)象的屬性值或狀態(tài)發(fā)生變化時(shí),通過(guò)映射關(guān)系定位到規(guī)則對(duì)象,然后提取規(guī)則對(duì)象的邏輯規(guī)則和數(shù)據(jù)點(diǎn)對(duì)象的別名信息,解析還原成可供邏輯表達(dá)式規(guī)則評(píng)價(jià)器解析執(zhí)行的邏輯規(guī)則,若評(píng)價(jià)結(jié)果為ture,則進(jìn)行后續(xù)處理;若為false,則不作響應(yīng)。
步驟4)中所述事故畫(huà)面和預(yù)案資源處理組件包含事故畫(huà)面處理單元、故障預(yù)案處理單元和故障預(yù)案資源調(diào)閱編輯接口來(lái)接收處理邏輯表達(dá)式規(guī)則評(píng)價(jià)器所傳遞的規(guī)則對(duì)象。
步驟4)中利用事故畫(huà)面處理單元主動(dòng)彈出事故畫(huà)面:首先,處理預(yù)加載畫(huà)面。抽取規(guī)則對(duì)象畫(huà)面schematic關(guān)鍵項(xiàng),根據(jù)schematic關(guān)鍵項(xiàng)得知畫(huà)面對(duì)象是否啟用預(yù)加載機(jī)制,畫(huà)面預(yù)加載機(jī)制用于保證從接收到實(shí)時(shí)庫(kù)信號(hào)點(diǎn)變化信號(hào)到成功推送畫(huà)面時(shí)間不超過(guò)2s的性能要求,在所述規(guī)則對(duì)象的schematic關(guān)鍵項(xiàng)中可對(duì)于較大的事故畫(huà)面文件指定為預(yù)加載處理;其次,根據(jù)預(yù)加載機(jī)制的處理結(jié)果處理畫(huà)面實(shí)時(shí)數(shù)據(jù),若不存在預(yù)加載畫(huà)面文件則向后臺(tái)服務(wù)進(jìn)程請(qǐng)求加載畫(huà)面資源文件,動(dòng)態(tài)生成畫(huà)面顯示窗口并主動(dòng)彈出,之后再向后臺(tái)服務(wù)進(jìn)程請(qǐng)求畫(huà)面組態(tài)模型實(shí)時(shí)數(shù)據(jù);若存在預(yù)加載畫(huà)面文件則只需要請(qǐng)求其對(duì)應(yīng)的畫(huà)面組態(tài)模型實(shí)時(shí)數(shù)據(jù)。
步驟4)中利用所述的故障預(yù)案處理單元主動(dòng)彈出事故預(yù)案資源:抽取規(guī)則對(duì)象的plan關(guān)鍵項(xiàng),獲取事故預(yù)案資源存儲(chǔ)路徑,向后臺(tái)服務(wù)進(jìn)程請(qǐng)求加載預(yù)案內(nèi)容后動(dòng)態(tài)生成電子故障預(yù)案文檔顯示窗口并主動(dòng)彈出,故障預(yù)案資源調(diào)閱編輯接口供客戶端調(diào)用,抽取規(guī)則對(duì)象的plan關(guān)鍵項(xiàng),獲取事故預(yù)案資源存儲(chǔ)路徑并向后臺(tái)服務(wù)進(jìn)程請(qǐng)求調(diào)閱預(yù)案內(nèi)容。具有修改權(quán)限的客戶端可以進(jìn)行編輯和保存操作。
實(shí)施例
本實(shí)施例客戶端采用extjs框架,后臺(tái)采用c++服務(wù)進(jìn)程。本實(shí)施例的處理流程如圖3所示,通信方式采用wss協(xié)議的websocket。如圖2所示,后臺(tái)進(jìn)程包括“wg_schematic_module”,“wg_runtime_provider”,“wg_faultplan_module”,“wg_message_relay”。
步驟一、依次啟動(dòng)“wg_message_relay”、“wg_runtime_provider”、“wg_schematic_module”和“wg_faultplan_module”后臺(tái)進(jìn)程。
步驟二、前端extjs客戶端系統(tǒng)初始化。
規(guī)則對(duì)象和規(guī)則對(duì)象的層級(jí)邏輯關(guān)系可以相互獨(dú)立的存儲(chǔ)在數(shù)據(jù)庫(kù)或配置文件中,該實(shí)施例中將規(guī)則對(duì)象和規(guī)則對(duì)象的層級(jí)邏輯關(guān)系分別存在配置文件中。采用加載配置文件的方式對(duì)規(guī)則對(duì)象及其層級(jí)邏輯關(guān)系進(jìn)行解析。
step21加載規(guī)則對(duì)象信息,解析后的每一個(gè)規(guī)則對(duì)象都為一個(gè)標(biāo)準(zhǔn)的json格式的對(duì)象。
每個(gè)規(guī)則對(duì)象都至少包含一個(gè)objectid關(guān)鍵項(xiàng),用于唯一標(biāo)識(shí)該規(guī)則對(duì)象。text關(guān)鍵項(xiàng),用于表明該規(guī)則對(duì)象名稱。pop關(guān)鍵項(xiàng),用于表明主動(dòng)彈出策略。其中pop關(guān)鍵項(xiàng)中至少包含datarec關(guān)鍵項(xiàng),用于表明與該規(guī)則對(duì)象相關(guān)的數(shù)據(jù)點(diǎn)對(duì)象集合。alias關(guān)鍵項(xiàng),用于表明數(shù)據(jù)點(diǎn)對(duì)象自定義別名。formula關(guān)鍵項(xiàng),用于邏輯規(guī)則的評(píng)價(jià),邏輯規(guī)則表達(dá)式利用所述數(shù)據(jù)點(diǎn)對(duì)象的自定義別名進(jìn)行定制。plan關(guān)鍵項(xiàng),用于表明故障預(yù)案資源。schematic關(guān)鍵項(xiàng),用于表明畫(huà)面資源。
所述"datarec"關(guān)鍵項(xiàng)在該實(shí)施例中為一個(gè)extjs數(shù)組存儲(chǔ)的數(shù)據(jù)點(diǎn)對(duì)象,它的每一個(gè)元素也為一個(gè)數(shù)組,該數(shù)組中包含兩個(gè)元素,分別為數(shù)據(jù)點(diǎn)的objectid和其某個(gè)屬性的名稱。本實(shí)施例中還支持間接屬性,如屬性名稱可以指定為“state1link->state”的形式。如圖5所示,datarec"(數(shù)據(jù)點(diǎn)對(duì)象數(shù)組)和"alias"(別名數(shù)組)中的元素要一一對(duì)應(yīng)。"alias"關(guān)鍵項(xiàng)對(duì)應(yīng)的數(shù)組元素“ax”,其中x取值為[1,2,3,…,n],為該實(shí)施例中定義的數(shù)據(jù)點(diǎn)對(duì)象別名。
所述formula關(guān)鍵項(xiàng),利用前文所述別名及邏輯表達(dá)式運(yùn)算符進(jìn)行配置。例如配置為“a1==1&&a2==1”,結(jié)合圖5并由上文所述可知datarec和alias中的元素要一一對(duì)應(yīng),因此該邏輯表達(dá)式的含義為objectid為520623616的數(shù)據(jù)點(diǎn)對(duì)象其state==1并且objectid為520623872的數(shù)據(jù)點(diǎn)對(duì)象其state==1時(shí)邏輯規(guī)則表達(dá)式成立。
所述"plan關(guān)鍵項(xiàng),為主動(dòng)彈出的電子故障預(yù)案內(nèi)容文件名,本實(shí)施例中為方便extjs前端加載及在線編輯預(yù)案內(nèi)容采用html格式的對(duì)其存儲(chǔ)。
規(guī)則對(duì)象舉例如下。
step22、加載規(guī)則對(duì)象層級(jí)邏輯關(guān)系信息,解析后每一個(gè)層級(jí)邏輯關(guān)系三元組存在到extjs數(shù)組中。
step23、規(guī)則對(duì)象和層級(jí)邏輯組合生成標(biāo)準(zhǔn)json格式的遞歸結(jié)構(gòu)。
該結(jié)構(gòu)是在規(guī)則對(duì)象的基礎(chǔ)上擴(kuò)展leaf和children關(guān)鍵項(xiàng)。leaf關(guān)鍵項(xiàng)表示該規(guī)則對(duì)象是否為葉子節(jié)點(diǎn),取值為true或false。leaf=true時(shí)表示為葉子節(jié)點(diǎn)。children表示某一個(gè)樹(shù)節(jié)點(diǎn)的孩子節(jié)點(diǎn)數(shù)組。只有l(wèi)eaf=false的節(jié)點(diǎn)有children關(guān)鍵項(xiàng)。對(duì)孩子節(jié)點(diǎn)按遞歸的方式處理。直到所有的孩子節(jié)點(diǎn)的類型都為leaf=true,即對(duì)應(yīng)一個(gè)規(guī)則對(duì)象。
步驟三、前后臺(tái)websocket通信連接建立
step31、定義ext.willowglen.websocket.messagerelaymanager類,用于與后臺(tái)wg_message_relay服務(wù)進(jìn)程建立websocket通信連接。并定義了wg_dataarrived事件用于當(dāng)通信數(shù)據(jù)到達(dá)時(shí)進(jìn)行數(shù)據(jù)傳遞。
step32、定義ext.willowglen.websocket.socket類,該類也定義wg_dataarrived事件,同樣用于通信數(shù)據(jù)傳遞。通過(guò)__connect函數(shù)調(diào)用ext.willowglen.websocket.messagerelaymanager類實(shí)例的websocket連接操作。
step33、前端系統(tǒng)初始化時(shí)創(chuàng)建統(tǒng)一數(shù)據(jù)請(qǐng)求接口ext.sac.router.router類實(shí)例,該實(shí)例中創(chuàng)建并維護(hù)ext.willowglen.websocket.socket類的實(shí)例_web_socket,為該實(shí)例注冊(cè)wg_dataarrived事件的響應(yīng)函數(shù)this._web_socket.on("wg_dataarrived",this.__ondataarrived,this)。另外該實(shí)例再創(chuàng)建并維護(hù)一個(gè)ext.willowglen.websocket.messagerelaymanager類的實(shí)例_messagerelaymanager,并注冊(cè)該實(shí)例的wg_dataarrived事件響應(yīng)函數(shù)messagerelaymanager.on(‘wg_dataarrived,this.__onmessagerelaydataarrived,this)。
當(dāng)后臺(tái)響應(yīng)數(shù)據(jù)到達(dá)時(shí)messagerelaymanager實(shí)例fireevent("wg_dataarrived",responsedata),之后__onmessagerelaydataarrived響應(yīng)函數(shù)中再觸發(fā)ext.willowglen.websocket.socket實(shí)例的wg_dataarrived事件,進(jìn)而執(zhí)行__ondataarrived響應(yīng)函數(shù)進(jìn)行業(yè)務(wù)處理。
step34通過(guò)_web_socket的_connect方法來(lái)操作_messagerelaymanager進(jìn)行通道連接操作,連接成功后將規(guī)則對(duì)象解析器解析的所有規(guī)則對(duì)象傳遞給數(shù)據(jù)點(diǎn)對(duì)象監(jiān)聽(tīng)及處理組件。
步驟四、利用數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件抽取規(guī)則對(duì)象中的數(shù)據(jù)點(diǎn)對(duì)象進(jìn)行抽取并對(duì)其進(jìn)行消息注冊(cè);并對(duì)規(guī)則提交事件進(jìn)行消息注冊(cè)。
step41、遍歷通過(guò)規(guī)則對(duì)象解析器解析的以json格式保存的規(guī)則對(duì)象,抽取其數(shù)據(jù)點(diǎn)對(duì)象的object和屬性名,生成“objectid_屬性名”作為map映射結(jié)構(gòu)的key,規(guī)則對(duì)象作為map映射結(jié)構(gòu)的value,建立映射關(guān)系。并將抽取的數(shù)據(jù)點(diǎn)對(duì)象和表示提交操作的數(shù)據(jù)點(diǎn)對(duì)象存儲(chǔ)到數(shù)組結(jié)構(gòu)中,作為請(qǐng)求消息注冊(cè)的輸入?yún)?shù)。
step42、數(shù)據(jù)點(diǎn)對(duì)象消息注冊(cè)監(jiān)聽(tīng)組件統(tǒng)一調(diào)用ext.sac.router.router類實(shí)例的sendrequest方法完成所有消息注冊(cè)相關(guān)操作。該函數(shù)聲明結(jié)構(gòu)為:
ext.sac.router.router.sendrequest("后臺(tái)服務(wù)進(jìn)程名","處理函數(shù)簽名","傳遞到后臺(tái)json格式的參數(shù)","ext.willowglen.router.requestcallback"對(duì)象);
ext.willowglen.router.requestcallback對(duì)象中指定后臺(tái)服務(wù)進(jìn)程數(shù)據(jù)返回時(shí)的回調(diào)函數(shù)。其結(jié)構(gòu)示例:
其中scope表示回調(diào)函數(shù)執(zhí)行的作用域,__oninitresponse為回調(diào)函數(shù)簽名。args為回調(diào)函數(shù)參數(shù),autoretry表示失敗是否重新請(qǐng)求,autodestroy表示處理結(jié)束后該對(duì)象是否自動(dòng)銷(xiāo)毀。
step43、消息注冊(cè)的具體實(shí)施步驟如下:
step431、請(qǐng)求消息注冊(cè)標(biāo)識(shí)初始化環(huán)境,請(qǐng)求方式如下。
ext.sac.router.router.sendrequest("wg_runtime_provider","init",{clientid:this._clienti},"ext.willowglen.router.requestcallback"對(duì)象)。
step432、消息注冊(cè)標(biāo)識(shí)初始化成功后批量對(duì)需要進(jìn)行消息注冊(cè)的數(shù)據(jù)點(diǎn)對(duì)象進(jìn)行注冊(cè),請(qǐng)求方式示意如下。
step433、循環(huán)監(jiān)聽(tīng)實(shí)時(shí)庫(kù)中所注冊(cè)的數(shù)據(jù)點(diǎn)對(duì)象的狀態(tài)變化,請(qǐng)求方式如下。
step434、在回調(diào)__ongetupdateresponse函數(shù)中觸發(fā)this._web_socket.fireevent("wg_dataarrived",responsedata)并循環(huán)請(qǐng)求調(diào)用wg_runtime_provider的getupdates函數(shù)簽名。
step435、處理預(yù)加載畫(huà)面通過(guò)向后臺(tái)wg_schematic_module進(jìn)程請(qǐng)求畫(huà)面對(duì)象的畫(huà)面文件資源,保存到內(nèi)存。
步驟五、事故畫(huà)面和預(yù)案資源處理并動(dòng)態(tài)創(chuàng)建主動(dòng)彈出;主動(dòng)調(diào)閱編輯故障預(yù)案資源。
step51、事故畫(huà)面處理流程,如圖4所示。
首先抽取規(guī)則對(duì)象中的畫(huà)面對(duì)象信息。然后在預(yù)加載畫(huà)面對(duì)象的內(nèi)存映射中查找是否為預(yù)加載畫(huà)面,若不是預(yù)加載畫(huà)面需要分兩步:
step551、利用ext.willowglen.router.router.sendrequest接口向后臺(tái)wg_schematic_module進(jìn)程請(qǐng)求獲取畫(huà)面對(duì)象的畫(huà)面文件資源,并解析畫(huà)面中的模型組態(tài)圖元生成畫(huà)面并主動(dòng)推出。
step552、抽取中的畫(huà)面對(duì)象中模型組態(tài)綁定的數(shù)據(jù)點(diǎn)對(duì)象利用ext.willowglen.router.router.sendrequest接口向后臺(tái)wg_runtime_provider進(jìn)程進(jìn)行消息注冊(cè),之后再向該后臺(tái)進(jìn)程請(qǐng)求實(shí)時(shí)數(shù)據(jù)更新畫(huà)面模型組態(tài)狀態(tài)。
當(dāng)模型組態(tài)綁定的數(shù)據(jù)點(diǎn)對(duì)象的數(shù)據(jù)發(fā)出變化時(shí),后臺(tái)wg_runtime_provider進(jìn)程會(huì)將變化的實(shí)時(shí)數(shù)據(jù)發(fā)送到前端,前端調(diào)用消息監(jiān)聽(tīng)回調(diào)函數(shù)更新畫(huà)面模型組態(tài)狀態(tài)。若是預(yù)加載畫(huà)面直接進(jìn)行step552操作。
step52、故障預(yù)案直接通過(guò)故障預(yù)案處理單元抽取規(guī)則對(duì)象的故障預(yù)案資源文件路徑,并通過(guò)ext.willowglen.router.router.sendrequest結(jié)構(gòu)向后臺(tái)wg_faultplan_module請(qǐng)求加載。然后利用基于extjs的htmleditor控件進(jìn)行展示,主動(dòng)彈出的故障預(yù)案不支持在線修改和保存操作。
step53、主動(dòng)調(diào)閱編輯故障預(yù)案資源由用戶通過(guò)人機(jī)界面直接調(diào)出編輯故障預(yù)案資源調(diào)閱界面。根據(jù)用戶的權(quán)限判定是否支持對(duì)所調(diào)閱的故障預(yù)案資源進(jìn)行在線修改和保存操作。
本發(fā)明所提出的電力監(jiān)控系統(tǒng)中一種基于規(guī)則的事故畫(huà)面與應(yīng)急預(yù)案推送方法,不僅可以在監(jiān)控系統(tǒng)中方面地對(duì)應(yīng)急預(yù)案資源進(jìn)行隨時(shí)調(diào)閱學(xué)習(xí)和在線修訂,還可在運(yùn)營(yíng)中發(fā)生突發(fā)故障時(shí)第一時(shí)間主動(dòng)推送實(shí)時(shí)事故監(jiān)測(cè)畫(huà)面及相應(yīng)的故障預(yù)案,有效地為調(diào)度人員對(duì)突發(fā)事故的恢復(fù)處理提供輔助決策依據(jù)進(jìn)而進(jìn)行正確的指揮調(diào)度從而防止故障或險(xiǎn)情進(jìn)一步擴(kuò)大,保障系統(tǒng)及運(yùn)營(yíng)安全。