WEB語音告警軟件的設(shè)計(jì)與實(shí)現(xiàn)
1系統(tǒng)設(shè)計(jì)
1.1當(dāng)前現(xiàn)狀
1.1.1缺乏基本的用戶定制功能
傳統(tǒng)的流水式事件報(bào)警方式會(huì)造成大量非重要信息把一些重要信息淹沒,從而給值班員監(jiān)控系統(tǒng)造成很多麻煩。E8000調(diào)度員界面(MMI)的實(shí)時(shí)告警模塊,能提供豐富的界面配置選項(xiàng),來定制實(shí)時(shí)告警的展示內(nèi)容。而E8000WEB系統(tǒng)的告警模塊設(shè)計(jì)過于簡單,缺乏基本的用戶定制能力,只是簡單地把所有事項(xiàng)全部發(fā)送到WEB客戶端,這就導(dǎo)致WEB系統(tǒng)的告警模塊實(shí)用價(jià)值不高。
1.1.2不能產(chǎn)生語音告警
E8000WEB系統(tǒng)的使用對象主要為非調(diào)度值班人員,如系統(tǒng)部自動(dòng)化等專業(yè)的專責(zé)、技術(shù)員。工作性質(zhì)決定了使用對象不會(huì)一直注視瀏覽器窗口,這樣本專業(yè)關(guān)注的告警信息就無法方便地獲得。而如果能提供語音告警功能,則能有效解決這個(gè)問題。由于實(shí)現(xiàn)技術(shù)等原因,E8000WEB系統(tǒng)沒有提供語音告警功能。
1.1.3可能存在事項(xiàng)遺漏
E8000WEB系統(tǒng)跟調(diào)度員界面的實(shí)現(xiàn)不同,采用定時(shí)請求數(shù)據(jù)的方式,并且每個(gè)周期只讀取指定數(shù)量的告警,超出該數(shù)量,則會(huì)被丟失。
1.2總體目標(biāo)
1.2.1提供靈活方便的定制功能
實(shí)現(xiàn)配置選項(xiàng)對話框,為用戶提供豐富的本節(jié)點(diǎn)關(guān)注事項(xiàng)的定制能力。只有配置的告警等級(jí)、告警來源、告警類型、告警動(dòng)作等事項(xiàng),才會(huì)被推送到本節(jié)點(diǎn)的事項(xiàng)窗口,這樣就大大提高了告警的使用價(jià)值。
1.2.2提供語音告警
實(shí)現(xiàn)類似語音告警功能。不需配置特別的語音卡,充分利用辦公電腦的媒體設(shè)備,采用通用技術(shù),提供效果良好、成本低廉的實(shí)現(xiàn)技術(shù)方案,提供用戶具有較高可用性的告警語音播報(bào)功能。
1.2.3采用告警推送機(jī)制
摒棄WEB傳統(tǒng)的定時(shí)請求方式,采用WEB平臺(tái)的實(shí)時(shí)信
息推送框架,提供告警信息高效實(shí)時(shí)的推送功能,大大提高了WEB告警的實(shí)時(shí)性。另外,采用有效的緩沖機(jī)制,徹底避免了WEB系統(tǒng)實(shí)時(shí)告警信息遺漏問題。
1.3總體架構(gòu)
采用JNI/JNA技術(shù)與E8000實(shí)時(shí)系統(tǒng)告警服務(wù)器通信,實(shí)時(shí)獲取EMS系統(tǒng)的告警事項(xiàng)信息:采用循環(huán)隊(duì)列等內(nèi)存處理技術(shù),緩存并發(fā)的告警數(shù)據(jù),同時(shí)為大量WEB在線用戶提供告警服務(wù),從而大大減少對EMS實(shí)時(shí)系統(tǒng)的服務(wù)請求,避免出現(xiàn)由于增加本系統(tǒng)而導(dǎo)致EMS實(shí)時(shí)系統(tǒng)負(fù)荷過重的異常情況(圖1)。
采用Dojo的Cometd技術(shù),實(shí)現(xiàn)告警事項(xiàng)的WEB推動(dòng)功能(圖2)。
2系統(tǒng)功能
2.1E8000告警基本概念
(l)告警定義:電力系統(tǒng)的實(shí)時(shí)信息和系統(tǒng)本身的重要運(yùn)行信息。
(2)告警類型:事故、遙信變位、廠站工況、保護(hù)動(dòng)作、網(wǎng)絡(luò)工況、系統(tǒng)資源等:事項(xiàng):用戶登錄和退出、數(shù)據(jù)庫修改、圖形編輯、確認(rèn)等操作。
(3)告警動(dòng)作:指一些最具體的告警表現(xiàn),例如語音告警、推畫面告警、打印告警、中文短消息告警。
(4)告警來源:電網(wǎng)實(shí)時(shí)穩(wěn)態(tài)的告警信息、電網(wǎng)分析應(yīng)用的告警信息、系統(tǒng)運(yùn)行監(jiān)控的告警信息。
(5)告警分級(jí):一級(jí)事故、二級(jí)異常、三級(jí)越限、四級(jí)變位、五級(jí)告知。
(6)告警狀態(tài):報(bào)警/確認(rèn)/返回。
2.2服務(wù)器設(shè)計(jì)
服務(wù)器端分兩大部分:實(shí)時(shí)事項(xiàng)客戶端、Tomcat服務(wù)器。
實(shí)時(shí)事項(xiàng)客戶端采用C++編寫,調(diào)用E8000平臺(tái)ALM模塊,該模塊采用類似訂閱/推送方式,參數(shù)為4ALMA一一plUsl一date函數(shù),負(fù)責(zé)接收ALMD服務(wù)器實(shí)時(shí)推送來的告警。該方法將接收的事項(xiàng)保存到一個(gè)循環(huán)隊(duì)列中(長度為1萬條記錄)
Tomcat服務(wù)器包括s一srng/DwR/IbatrU框架,相關(guān)Uesvrce(JAVA語言編寫)通過JNA/JNI和實(shí)時(shí)事項(xiàng)客戶端交互,獲得C++語言負(fù)責(zé)維護(hù)的實(shí)時(shí)事項(xiàng)隊(duì)列。
瀏覽器前端將本節(jié)點(diǎn)關(guān)注的事項(xiàng)配置信息,通過DwR發(fā)給后臺(tái)Uesvrce,該Uesvrce負(fù)責(zé)實(shí)時(shí)將告警信息推送到各前端瀏覽器。
2.3語音告警設(shè)計(jì)
不同于E8000系統(tǒng)的設(shè)計(jì)思想,本項(xiàng)目采用微軟的語音API,該API由wrndowUs一eechsDK提供。E8000系統(tǒng)調(diào)度員界面的語音告警采用訊飛語音引擎,若WEB系統(tǒng)采用該引擎,則需要在所有的WEB用戶端下載安裝訊飛語音包,不僅導(dǎo)致了使用不便利,同時(shí)也大大增加了項(xiàng)目成本。本項(xiàng)目利用該SAPI采用VC語言實(shí)現(xiàn)一個(gè)Actrvex控件,而微軟SAPI是xP/wIN7及以上版本預(yù)裝的語音處理模塊,這樣就大大簡化了本項(xiàng)目實(shí)現(xiàn)語音告警功能的難度。
2.4告警語音的改善與定制
SAPI提供輸出當(dāng)前常用的語音處理引擎有訊飛語音TTSl.0、sV0x、三星TTS等,這些引擎各有特點(diǎn),都能較好地滿足我們的需要,但這些sDK都需要安裝。若用于電力調(diào)度值班臺(tái),我們可以采用以上語音引擎,若用在WEB場景,則不適合。所以如上所述,我們采用了微軟的TTS語音引擎(The Microsoft Speech API)。在使用過程中,我們發(fā)現(xiàn)該TTS對有些字符、數(shù)字、單詞、字符串等語言單位的發(fā)音處理不夠完美,和人工發(fā)音有些差異,我們通過引入語音處理轉(zhuǎn)換規(guī)則,來改善TTS的發(fā)音效果,使之更接近于人工發(fā)音。
2.5告警推送設(shè)計(jì)
本項(xiàng)目在服務(wù)器及前端2處采用了訂閱/推送機(jī)制。實(shí)時(shí)告警的獲取采用E8000平臺(tái)的ALM包,它采用訂閱/推送模式實(shí)現(xiàn)。前臺(tái)告警以往都采用前端定時(shí)請求的方式,這種方式簡單易行,但大多性能不夠理想。我們采用DojoCometd及JETTY框架,實(shí)現(xiàn)了一個(gè)高效的前臺(tái)實(shí)時(shí)信息推送應(yīng)用。
3結(jié)語
本軟件采用JNI/JNA技術(shù)與E8000實(shí)時(shí)系統(tǒng)告警服務(wù)器通信,實(shí)時(shí)獲取EMS系統(tǒng)的告警事項(xiàng)信息:采用循環(huán)隊(duì)列等內(nèi)存處理技術(shù),緩存并發(fā)的告警數(shù)據(jù),同時(shí)為大量WEB在線用戶提供告警服務(wù),大大減少了對EMS實(shí)時(shí)系統(tǒng)的服務(wù)請求,實(shí)現(xiàn)了告警事項(xiàng)的WEB推送功能。