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