基于地理信息系統(tǒng)的電網(wǎng)運行監(jiān)控技術(shù)
中心議題:
* WebGIS電網(wǎng)運行監(jiān)控系統(tǒng)構(gòu)成原理介紹
* 系統(tǒng)組成原理以及關(guān)鍵技術(shù)介紹
解決方案:
* GIS 接受SCADA中電網(wǎng)各測量點的實時信息
* GIS 系統(tǒng)接收信息后,進(jìn)行相應(yīng)的解包處理
摘要:本文提出了一種 WebGIS 中監(jiān)控電網(wǎng)實時運行的解決方案。介紹了基于WebGIS的電網(wǎng)運行監(jiān)控系統(tǒng)構(gòu)成原理,對WebGIS中實時數(shù)據(jù)的獲取、顯示以及頁面實時刷新等關(guān)鍵技術(shù)進(jìn)行了深入分析,并詳細(xì)闡述了關(guān)鍵技術(shù)的實現(xiàn)方法。
1、前言
地理信息系統(tǒng)(GIS)在電力系統(tǒng)的應(yīng)用近年來取得了長足進(jìn)展,深受廣大電力企業(yè)的歡迎。隨著企業(yè)各類信息系統(tǒng)的不斷擴(kuò)大,傳統(tǒng)的GIS由于固有的封閉性使得其難以和電力企業(yè)其他計算機(jī)系統(tǒng)集成應(yīng)用,耗資巨大的GIS系統(tǒng)不過是企業(yè)計算機(jī)信息孤島中的又一個應(yīng)用系統(tǒng)而已。電力企業(yè)希望GIS系統(tǒng)是一個開放的、整合的、能夠成為與企業(yè)主流信息技術(shù)完全集成的空間資源管理(GRM)系統(tǒng),以便滿足企業(yè)的信息化管理高層次要求。本文探討的就是GIS系統(tǒng)和SCADA系統(tǒng)的整合應(yīng)用以及如何實現(xiàn)WEB方式下的GIS中進(jìn)行電網(wǎng)運行的實時監(jiān)控,從而將電力GIS提升為一個在線的系統(tǒng),賦于GIS系統(tǒng)新的生命力。該系統(tǒng)的設(shè)計實現(xiàn)使得用戶在任何地方、任何時間能夠隨意瀏覽GIS信息以及相應(yīng)的電網(wǎng)運行狀態(tài)參數(shù),同時也為電力網(wǎng)的高級計算以及其他深入分析提供了準(zhǔn)確、完整的信息。
2、技術(shù)前提
目前市面上流行的GIS開發(fā)平臺有MAPINFO、ARCINFO、G/TECHNOLOGY等,其中G/Technology 是美國INTERGRAPH公司積累其30 多年在公用事業(yè)、通訊領(lǐng)域?qū)嵤〢M/FM/GIS 系統(tǒng)的經(jīng)驗,結(jié)合最新的開放圖形和數(shù)據(jù)庫技術(shù)開發(fā)的新一代的管網(wǎng)企業(yè)地理空間資源管理解決方案平臺。該平臺套件中的G/Electric為電力企業(yè)提供了全球最開放、速度最快、功能最強(qiáng)大的全實時AM/FM/GIS解決方案。G/Electric 將地理設(shè)施管理、運維支持、和服務(wù)傳遞應(yīng)用等無縫地集成在一起,用于管理一個電力事業(yè)的規(guī)劃、設(shè)計、建設(shè)、運行、維護(hù)、以及緊急事件的響應(yīng)等。它完全結(jié)合了企業(yè)地理設(shè)施數(shù)據(jù)的配置。G/Electric 的關(guān)鍵組件是一個預(yù)置的電力設(shè)施網(wǎng)絡(luò)模型和數(shù)據(jù)庫,保證了工程的快速、正確的執(zhí)行。G/Electric強(qiáng)大的電力系統(tǒng)技術(shù)支持使其成為開發(fā)大型電力GIS的首選開發(fā)平臺。該平臺的標(biāo)準(zhǔn)模塊之一的G/NetViewer 是GIS在面向Internet /Intranet應(yīng)用的實現(xiàn)工具,在WEB方式時采用流行的三層結(jié)構(gòu),可通過瀏覽器,將所有的用戶界面邏輯移至Web 服務(wù)器,將業(yè)務(wù)處理和地理空間設(shè)施網(wǎng)絡(luò)模型充分結(jié)合起來,解決分布數(shù)據(jù)訪問,而且支持最新的Microsoft .Net 技術(shù)。本文所論述的正是基于GIS平臺G/Electric及其重要組成模塊G/NetViewer來實現(xiàn)電網(wǎng)GIS中監(jiān)控實時運行的Web解決方案。
3、系統(tǒng)組成原理以及關(guān)鍵技術(shù)
由于G/Electric是一個功能強(qiáng)大的AM/FM/GIS平臺,平臺并不直接提供表示電網(wǎng)運行的動態(tài)數(shù)據(jù)集成方案,也不能直接進(jìn)行Web發(fā)布,必須對平臺進(jìn)行二次開發(fā)來實現(xiàn)Web方式下在電網(wǎng)GIS中監(jiān)控實時運行。而且在實際調(diào)研過程我們發(fā)現(xiàn),在WebGIS中監(jiān)控電力系統(tǒng)運行狀態(tài)時,用戶總是希望能夠在web頁面實現(xiàn)對全網(wǎng)或者任意感興趣的線路、變電站的結(jié)構(gòu)信息以及運行狀態(tài)進(jìn)行瀏覽監(jiān)測,進(jìn)而希望能夠進(jìn)行某種在線的電網(wǎng)計算分析。因此基于瀏覽器GIS應(yīng)用系統(tǒng)中實現(xiàn)電網(wǎng)運行監(jiān)控的關(guān)鍵技術(shù)首先是如何實現(xiàn)地圖以及實時運行狀態(tài)數(shù)據(jù)的web發(fā)布,然后是實時運行數(shù)據(jù)顯示的web頁面能夠按照用戶指定的時間間隔進(jìn)行刷新,從而使得企業(yè)用戶能夠在任何時間、任何地點能夠根據(jù)自己意愿查詢、瀏覽電力網(wǎng)GIS中的相關(guān)地圖以及相應(yīng)的實時運行數(shù)據(jù)。
于是有如圖1的系統(tǒng)結(jié)構(gòu):
因為在G/ELECTRIC平臺下構(gòu)建的GIS中顯示的任何對象都是作為一種“設(shè)備對象”存在的。G/ELECTRIC提供預(yù)定義的電力網(wǎng)相關(guān)“設(shè)備對象”有:變電站(包括母線、變壓器、互感器……)、桿塔、線路、絕緣子、刀閘、開關(guān)等等。由G/ELECTRIC提供的電網(wǎng)模型“設(shè)備” 并且嚴(yán)格按照電力系統(tǒng)的規(guī)則,就完全可以建立起一個標(biāo)準(zhǔn)的電力網(wǎng)GIS系統(tǒng)。為了在GIS系統(tǒng)中顯示電網(wǎng)的運行數(shù)據(jù),我們設(shè)計實時數(shù)據(jù)顯示設(shè)備作為G/ELECTRIC的一種用戶自定義“設(shè)備對象”。在定義完畢描述電網(wǎng)的基本設(shè)備之后,定義新的設(shè)備“實時數(shù)據(jù)”,用來顯示電網(wǎng)運行狀態(tài)參數(shù)。運行過程中,實時通信模塊對SCADA發(fā)送的數(shù)據(jù)進(jìn)行解碼,根據(jù)當(dāng)前數(shù)據(jù)包的數(shù)據(jù)代碼確定實時數(shù)據(jù)填充的GIS數(shù)據(jù)顯示對象的實時數(shù)據(jù)字段,作為改設(shè)備顯示的內(nèi)容。“實時數(shù)據(jù)”設(shè)備定義的主要結(jié)構(gòu)參數(shù)如表1:
由于實時數(shù)據(jù)源自電網(wǎng)調(diào)度部門的SCADA系統(tǒng),,經(jīng)協(xié)商約定SCADA系統(tǒng)以UDP/IP協(xié)議組包定時向GIS應(yīng)用服務(wù)器發(fā)送實時數(shù)據(jù),GIS應(yīng)用服務(wù)器對數(shù)據(jù)包進(jìn)行解碼,并將解碼得到的實時數(shù)據(jù)按照數(shù)據(jù)代碼分別存貯在對應(yīng)的實時數(shù)據(jù)顯示設(shè)備對象相應(yīng)的字段中。SCADA系統(tǒng)按照表2格式組包發(fā)送實時數(shù)據(jù):
其中DM(數(shù)據(jù)代碼)描述的是對應(yīng)SCADA數(shù)據(jù)的物理意義,實時數(shù)據(jù)“設(shè)備”中的SCADA_DM與其唯一對應(yīng),以便實現(xiàn)對實時數(shù)據(jù)庫中實時數(shù)據(jù)的檢索。
這樣一來,基于G/ELECTRIC的電力網(wǎng)GIS在WEB方式下進(jìn)行實時運行狀態(tài)監(jiān)控就可以分為數(shù)據(jù)通信(基于UDP/IP協(xié)議實現(xiàn)GIS 中SCADA的數(shù)據(jù)獲?。?shù)據(jù)顯示(G/NETVIEWER數(shù)據(jù)顯示)、WEB頁面的定時刷新。因此系統(tǒng)由四個邏輯層組成:網(wǎng)絡(luò)層、數(shù)據(jù)層、業(yè)務(wù)對象層和用戶界面層。網(wǎng)絡(luò)層是采用UDP/IP協(xié)議實現(xiàn)GIS和SCADA系統(tǒng)通信,對SCADA數(shù)據(jù)進(jìn)行解碼,存貯在本地數(shù)據(jù)服務(wù)器。數(shù)據(jù)層是 Oracle數(shù)據(jù)庫系統(tǒng),管理GIS系統(tǒng)各類數(shù)據(jù)。業(yè)務(wù)對象層處理如何訪問數(shù)據(jù)以及如何將數(shù)據(jù)分發(fā)到客戶端。在這一層使用G/ELECTRIC提供的web解決方案G/NETVIEWER模塊,實現(xiàn)web方式下G/ELECTRIC地圖信息的連接、查詢、瀏覽以及數(shù)據(jù)刷新。用戶界面層由基于 Web 的應(yīng)用程序組成。這一部分完成用戶交互界面設(shè)計,并且完成如何使得頁面按照用戶指定時間間隔進(jìn)行刷新。在頁面刷新的同時,調(diào)用G/NETVIEWER提供的地圖刷新API函數(shù),從而達(dá)到web瀏覽器端地圖以及實時數(shù)據(jù)的刷新顯示。程序中使用文檔模型對象中window的方法window.setInterval以及window.clearInterval實現(xiàn)頁面的定時事件的觸發(fā)。
3、實現(xiàn)方法
GIS 接受SCADA中以報文方式發(fā)送來的電網(wǎng)各測量點的實時信息,包括:電壓、電流、有功、無功、電度的實時(各測量點)測量數(shù)據(jù)。GIS系統(tǒng)接受到信息后,按照定義的通訊格式,進(jìn)行相應(yīng)的解包處理,解包處理時,判斷當(dāng)前數(shù)據(jù)包的scada代碼,根據(jù)此代碼,決定當(dāng)前接受到的數(shù)據(jù)寫入哪一個實時數(shù)據(jù)圖形對象的數(shù)據(jù)字段。這樣一來,即可實現(xiàn)調(diào)度SCADA系統(tǒng)數(shù)據(jù)信息的在GIS系統(tǒng)中實時刷新。
獲取實時數(shù)據(jù)后剩下的就是如何在web方式下實現(xiàn)頁面的實時更新,從而實現(xiàn)web頁面中進(jìn)行電網(wǎng)地理信息系統(tǒng)以及實時運行狀態(tài)的監(jiān)視。由于電力系統(tǒng)時典型的緩變系統(tǒng),理論和實踐證明,15min的scada數(shù)據(jù)已經(jīng)可以代表電網(wǎng)的運行方式,而實際上實時數(shù)據(jù)的接收已經(jīng)達(dá)到4s的更新速率,所以本系統(tǒng)中監(jiān)視頁面的刷新應(yīng)該由用戶按照需要實現(xiàn)5s~15min可任意指定的刷新速率,滿足電網(wǎng)運行情況的web監(jiān)視的需要。具體實現(xiàn)時關(guān)鍵技術(shù)就是如何實現(xiàn)監(jiān)視頁面按照指定時間間隔進(jìn)行刷新,實現(xiàn)原理以及具體方法如下所述。
首先實現(xiàn)GIS地圖基礎(chǔ)信息的web顯示,這里利用G/ELECTRIC的G/NETVIEWER應(yīng)用工具來實現(xiàn)GIS的web顯示,在web頁面上放置該工具提供的地圖顯示空間
NetViewerMap Control,然后編寫相關(guān)數(shù)據(jù)庫連接的前臺腳本代碼,實現(xiàn)該控件的GIS數(shù)據(jù)庫訪問,獲取顯示圖例,實現(xiàn)GIS圖例的web顯示。關(guān)鍵代碼如下:
sub window_onload() ‘頁面載入時調(diào)用
Dim sConnectInfo, sServerName ‘定義數(shù)據(jù)庫連接相關(guān)屬性信息
sServerName = #quot;HTTP://DLGIS#quot;
sConnectInfo = #quot;ConfigurationName=#quot; PROD_ #quot;;UserName=#quot; PROD #quot;;Password=#quot;PROD_
NetViewerMap1.Connect sServerName, sConnectInfo‘連接數(shù)據(jù)庫
Dim oMetadata, oLegendRS, oOption, sLgndName
Set oMetaData = NetViewerMap1.Metadata
Set oLegendRS = oMetaData.GetLegends()
獲取GIS圖例信息
With NetViewerMap1‘GIS圖例顯示
.ViewLegend mainform.legends.value
.Map.Fit
.Map.Refresh
End With
end sub
然后是如何實現(xiàn)頁面的指定時間間隔定時刷新,這部分使用javascript實現(xiàn),由于web頁面的無狀態(tài)性,也就是說,當(dāng)頁面第一次按照指定時間刷新后,重新進(jìn)入該頁面時,原來指定的刷新頁面的時間間隔參數(shù)并不能得到保留,幸運的是cookie為Web應(yīng)用程序保存用戶相關(guān)信息提供了一種有用的方法。Cookie 是一小段文本信息,伴隨著用戶請求和頁面在 Web 服務(wù)器和瀏覽器之間傳遞。用戶每次訪問站點時,Web 應(yīng)用程序都可以讀取 Cookie 包含的信息。其最根本的用途是一種保持 Web 應(yīng)用程序連續(xù)性(即執(zhí)行“狀態(tài)管理”)的方法。這里可以利用 Cookie 保存時間參數(shù),這樣,當(dāng)再次進(jìn)入頁面時,應(yīng)用程序就可以檢索相應(yīng)的cookie從而以前保存的時間間隔參數(shù),并按照該參數(shù)進(jìn)行頁面刷新,進(jìn)而調(diào)用NetViewerMap Control的刷新函數(shù),從而實現(xiàn)地圖以及SCADA數(shù)據(jù)的實時顯示。
關(guān)鍵代碼如下:
function monitor_onclick()
{//開始實施監(jiān)控
var value = document.Form1.TextBox1.value;
//輸入監(jiān)視時間間隔(秒)
var Then = new Date() ;
var mytime;
Then.setTime(Then.getTime() 1000 * 60 * 60 * 24 );//設(shè)置cookie有效期
document.cookie = #quot;alerting=#quot; value #quot;;expires=#quot; Then.toGMTString() ;//保存cookie
value=value*1000
window.clearInterval(timeId) ;//清楚當(dāng)前定時事件
timeID = window.setInterval(#quot;refresh#quot;, value);//按照輸入時間間隔觸發(fā)refresh函數(shù)
}
function window_onload() {//載入頁面時調(diào)用該函數(shù)
var timeid;
var mytime=getcookie(#quot;alerting#quot;);
//讀取上次保存的時間參數(shù)
if(!mytime)
mytime=0//停止實時監(jiān)控
else{
var Then = new Date() ;
Then.setTime(Then.getTime() 1000 * 60 * 60 * 24 ); //設(shè)置cookie有效期
mytime = mytime * 1000;
window.clearInterval(timeId) ;
document.cookie = #quot;alerting=#quot; mytime #quot;;expires=#quot; Then.toGMTString() ; //保存cookie
timeID = window.setInterval(#quot;refresh#quot;, mytime);
//按cookie中讀取的時間間隔參數(shù)觸發(fā)refresh函數(shù)
}
function getcookie(name)
//cookie讀取函數(shù),參數(shù)name為保存參數(shù)的名稱,本文中為alerting
{ var prefix = name #quot;=#quot;
var cookieStartIndex=document.cookie.indexOf(prefix)
//取得參數(shù)數(shù)值的起點位置
if (cookieStartIndex == -1)//沒有找到該參數(shù)
return null
var cookieEndIndex = document.cookie.indexOf(#quot;;#quot;, cookieStartIndex prefix.length)
//取參數(shù)數(shù)值終點位置
if (cookieEndIndex == -1)
cookieEndIndex = document.cookie.length
return unescape(document.cookie.substring(cookieStartIndex prefix.length, cookieEndIndex))
//返回參數(shù)名稱name所對應(yīng)的參數(shù)數(shù)值}
上述javascript代碼實現(xiàn)事件refresh的定時觸發(fā),刷新時間間隔可以根據(jù)用戶需要任意指定,只需要按照G/ELECTRIC的web解決方案中提供的vbscript方法編寫地圖以及相關(guān)數(shù)據(jù)的刷新相應(yīng)函數(shù)refresh如下,即可實現(xiàn)GIS地圖信息以及SCADA數(shù)據(jù)的web顯示。
刷新函數(shù)refresh代碼如下:
sub refresh()
Public oGNV ‘定義顯示圖形對象
set objshell = CreateObject(#quot;Shell.Application#quot;)
objshell.shellexecute #quot;net#quot;, #quot; use dlgismapfiles guest /user:guest#quot;,0,0,0‘讀gis數(shù)據(jù)庫,連接地圖
oGNV = document.all(#quot;GNV#quot;)‘獲取顯示圖例
oGNV.BroadcastDatabaseChanges=True
oGNV.Map.Refresh=True
’地圖顯示控件的刷新屬性使之為true,
‘refresh()執(zhí)行時側(cè)地圖自動刷新。
end sub
實際顯示效果如圖2所示:
4、結(jié)論
基于WebGIS的電網(wǎng)運行實時監(jiān)控系統(tǒng)的實現(xiàn),使得用戶不但可以上網(wǎng)查詢、瀏覽電網(wǎng)結(jié)構(gòu)以及電力設(shè)備的有關(guān)屬性信息,還可以隨時隨地根據(jù)需要對電網(wǎng)運行參數(shù)進(jìn)行監(jiān)視,可以方便、直觀地監(jiān)控全局運行情況,實現(xiàn)總體控制。GIS以及SCADA數(shù)據(jù)的web顯示技術(shù)的突破,為電力系統(tǒng)計算機(jī)管理自動、準(zhǔn)確、及時地提供更為詳盡、豐富的數(shù)據(jù),對于提高供電質(zhì)量、用電可靠性和提高電力企業(yè)自身水平必將產(chǎn)生較大影響,同時也為基于電力網(wǎng)GIS和SCADA系統(tǒng)的電網(wǎng)在線分析計算提供了一種新的思路,奠定了一定的基礎(chǔ)。文中有關(guān)技術(shù)同樣可以用于其它基于web的工業(yè)現(xiàn)場數(shù)據(jù)監(jiān)控。
評論