林妙玉 郭謀發(fā) 謝華芳 楊耿杰
(1.福州大學(xué)電氣工程與自動(dòng)化學(xué)院,福州 350108;2.福建省第二電力建設(shè)公司,福州 350013)
線損是供電企業(yè)一項(xiàng)重要的綜合性技術(shù)經(jīng)濟(jì)指標(biāo),它直接影響到電力企業(yè)的經(jīng)濟(jì)效益,而配電網(wǎng)線損在整個(gè)電力系統(tǒng)線損中占有很大比例。目前供電部門進(jìn)行理論線損計(jì)算采用的線損軟件必須進(jìn)行單獨(dú)的配電網(wǎng)建模,通過離線收集各種數(shù)據(jù)并手工錄入一天24h的整點(diǎn)有功、無功、電壓、電流等數(shù)據(jù)進(jìn)行計(jì)算,不僅工作量大,而且往往由于統(tǒng)計(jì)表誤差、測(cè)量誤差、抄表人誤抄漏抄等因素,使得計(jì)算得到的線損與實(shí)際線損存在偏差,經(jīng)常還需要根據(jù)運(yùn)行方式的變化調(diào)整配電網(wǎng)結(jié)構(gòu)數(shù)據(jù)。因此需要一種能直接調(diào)用配電網(wǎng)實(shí)時(shí)測(cè)量數(shù)據(jù)進(jìn)行線損計(jì)算并將實(shí)時(shí)測(cè)量數(shù)據(jù)及線損顯示在頁面上的軟件。
近年來,隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,SVG的出現(xiàn)為電力系統(tǒng)運(yùn)行可視化圖形數(shù)據(jù)的web發(fā)布提供了一種開放性的解決方案。SVG是可伸縮矢量圖形的簡稱,它是一種使用XML來描述二維圖形及其應(yīng)用的語言。SVG內(nèi)置了對(duì)于JavaScript的支持,SVG圖像可以方便地由程序語言來動(dòng)態(tài)生成。SVG所描述的矢量圖形具有可任意縮放、文件尺寸小、超前顯示效果等特點(diǎn),基于XML的特性使得圖像可以根據(jù)實(shí)時(shí)數(shù)據(jù)動(dòng)態(tài)改變,并且實(shí)現(xiàn)起來簡單,響應(yīng)迅速,可以在數(shù)據(jù)實(shí)時(shí)變化的同時(shí)即時(shí)展現(xiàn),實(shí)現(xiàn)實(shí)時(shí)信息發(fā)布。
基于矢量的圖形有SVG、GML、VML、Flash等,GML是表示實(shí)體的空間信息和屬性的編碼標(biāo)準(zhǔn),但它并不支持直接顯示圖形,而VML和SVG是在表示圖形的矢量信息的同時(shí)加入了圖形的顯示信息,是顯示矢量圖形的兩種比較好的格式。相比之下,SVG本身是綜合了VML的優(yōu)點(diǎn)后推出的,它比VML具有更多的優(yōu)點(diǎn),也有更廣闊的前景[2]。與Flash相比,F(xiàn)lash采用的SWF文件可編輯性較差,不提供對(duì)文本格式的支持,文本不能獨(dú)立于圖像而存在,因此無法建立類似于SVG的搜索功能。Flash是半公開的文件格式,與其它的開放標(biāo)準(zhǔn)之間沒有一個(gè)完全的融合方案,而SVG是文本格式,只要打開記事本便可對(duì)其進(jìn)行修改,它是W3C制定的開放標(biāo)準(zhǔn)的圖像格式,任何公司都可以參與對(duì)SVG標(biāo)準(zhǔn)的制定,從而使得這一標(biāo)準(zhǔn)更加科學(xué)和強(qiáng)大。
通過應(yīng)用SVG來實(shí)現(xiàn)配電網(wǎng)線損在線可視化計(jì)算,一天24h的整點(diǎn)有功功率、無功功率數(shù)據(jù)由終端定時(shí)上傳到服務(wù)器存儲(chǔ)在數(shù)據(jù)庫,不必由人工抄錄,當(dāng)24h的數(shù)據(jù)全部存到數(shù)據(jù)庫后進(jìn)行整天的線損計(jì)算,提供當(dāng)天的線損值和線損率,較準(zhǔn)確地反映電網(wǎng)的損耗水平。系統(tǒng)線損在線計(jì)算軟件框架如圖1所示,通過SVG編輯XML文件得到配電網(wǎng)一次接線圖,并將線路、設(shè)備參數(shù)存儲(chǔ)到數(shù)據(jù)庫,然后對(duì)接線圖進(jìn)行拓?fù)浞治龅贸鲞B接關(guān)系矩陣,也存放在數(shù)據(jù)庫里,調(diào)用線損計(jì)算子程序,讀取數(shù)據(jù)庫存儲(chǔ)的配電網(wǎng)功率及參數(shù)等相關(guān)數(shù)據(jù)進(jìn)行線損計(jì)算并顯示出來,實(shí)現(xiàn)線損在線可視化的功能。
圖1 線損在線計(jì)算軟件框圖
圖模建模首先要設(shè)置設(shè)備圖元模型,設(shè)備圖元模型包括圖形屬性和應(yīng)用屬性,圖形屬性指設(shè)備在圖形系統(tǒng)中的幾何表示,應(yīng)用屬性為存儲(chǔ)在數(shù)據(jù)庫中供各種應(yīng)用使用的設(shè)備參數(shù)等信息。設(shè)備圖元建模即實(shí)現(xiàn)設(shè)備圖形屬性和應(yīng)用屬性的關(guān)聯(lián)統(tǒng)一。SVG標(biāo)準(zhǔn)通過預(yù)定義形狀的若干組合,在模形定義中實(shí)現(xiàn)圖形與設(shè)備對(duì)象的對(duì)應(yīng)。如SVG中對(duì)斷路器的描述如下:
<symbol>元素定義了圖形模版對(duì)象,供<use>元素通過實(shí)例化的方法引用。<symbol>元素?fù)碛衯iewBox和preserveAspectRatio兩個(gè)屬性,可以在<use>元素引用時(shí),對(duì)矩形視口進(jìn)行縮放。<g>元素是一種容器元素,可以把相關(guān)的圖形元素組合起來內(nèi)定義的圖形。<desc>描述元素相當(dāng)于SVG文檔中的注釋,通過純文本來描述圖像的大概內(nèi)容。<desc>元素既沒有屬性,也沒有什么特殊的使用格式,只需用標(biāo)記名將文字括起來便可。viewBox="-11 -10 22 20"描述的是渲染的范圍,不是實(shí)際的范圍。①描述了兩條線;②描述了一個(gè)矩形;③描述了兩個(gè)圓形;斷路器就是由這幾個(gè)圖形組合起來的形狀。
當(dāng)要改變斷路器的開斷狀態(tài)時(shí),只需改變節(jié)點(diǎn)的xlink:href屬性為對(duì)應(yīng)的本地UR(I'#'+符號(hào)的id)即可。例如:<use xlink:href="#breaker_uc" x="477" y="126" width="18" height="75" class="kv220" id="7" />。這里定義的斷路器是斷開的,若要讓其閉合只要修改xlink:href屬性即:svgDoc.getElement ById('7').setAttribute('xlink:href','#breaker_c'),其中svgDoc是svg的文檔對(duì)象。
在SVG文檔中,每個(gè)文本節(jié)點(diǎn)(text)都設(shè)定一個(gè)Id值,刷新文本框內(nèi)容時(shí),只需調(diào)用setData函數(shù)設(shè)定新的文本。例如:SVG文檔中有這么一個(gè)節(jié)點(diǎn):<text font-family="SimSun" font-size="12" fill="#FFFFFF" x="482" y="560" id="45">文本內(nèi)容</text>。可用以下Javascript代碼更新文本內(nèi)容:svgDoc.getElementById ('45').firstChild.setData('新的文本內(nèi)容')。
電氣元件間的連接線不會(huì)首尾相連,連接線的首和尾也不會(huì)連接在同一個(gè)圖形上,只有連接線的首點(diǎn)和末點(diǎn)才可以吸附圖形。每個(gè)電氣元件圖形形成一個(gè)區(qū)域如,斷路器的區(qū)域?yàn)橥饷婵蚩蛩?。?dāng)拖拽連接線的首點(diǎn)和末點(diǎn)時(shí),實(shí)時(shí)判斷當(dāng)前的鼠標(biāo)坐標(biāo)是否在某個(gè)電氣圖元的區(qū)域內(nèi),如果是,鼠標(biāo)的形狀變?yōu)閹нB接的錨點(diǎn),此時(shí)松開鼠標(biāo)左鍵時(shí),完成吸附操作。這個(gè)操作過程由連接線的Hook方法來實(shí)現(xiàn),用Hook方法判斷當(dāng)前拖拽的連接線是首點(diǎn)還是末點(diǎn),如果是首點(diǎn),將連接線的源賦值為此圖形對(duì)象,并將此圖形對(duì)象的Id值賦予連接線的源Id,末點(diǎn)也是同樣的規(guī)則。整個(gè)網(wǎng)絡(luò)中圖元與圖元的連接關(guān)系放在<g>中,編輯時(shí),對(duì)于某一電力設(shè)備的圖形和連接關(guān)系采用一定關(guān)聯(lián)關(guān)系的Id號(hào)。如下面這樣一個(gè)語句:<polyline points="401 154 401 97" fill="none" sourceId="8" targetId="6" stroke="#808000" id="7" idAssoc="" />,表示連接線Id號(hào)為7,與連接線相連的首末節(jié)點(diǎn)Id號(hào)分別為8和6。
拓?fù)潢P(guān)系矩陣分析框圖如圖2所示,獲取連接關(guān)系矩陣時(shí),根據(jù)Id號(hào)遍歷搜索結(jié)果將除文本框、母線、連接線外的圖形對(duì)象的Id存儲(chǔ)在哈希表中,連接線Id另外存儲(chǔ)為一數(shù)組。通過連接線Id找到與該連接線相連的首末節(jié)點(diǎn)Id,在連接關(guān)系矩陣中,將首節(jié)點(diǎn)對(duì)應(yīng)行及末節(jié)點(diǎn)對(duì)應(yīng)列的位置置1,其余置0,便得到了反映連接關(guān)系的矩陣。
圖2 拓?fù)潢P(guān)系矩陣分析框圖
哈希表(Hash map,也叫散列表),是根據(jù)關(guān)鍵碼值(Key value)而直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu),用一個(gè)下標(biāo)范圍比較大的數(shù)組來存儲(chǔ)元素,設(shè)計(jì)一個(gè)函數(shù)(哈希函數(shù)),使得每個(gè)元素的關(guān)鍵字都與這個(gè)函數(shù)值(即數(shù)組下標(biāo))相對(duì)應(yīng),并將這個(gè)元素存儲(chǔ)在這個(gè)數(shù)組單元。哈希表通過把關(guān)鍵碼值映射到表中一個(gè)位置來訪問記錄,能夠提供快速的插入操作和查找操作,因此將連接線外的Id存放在哈希表里,可迅速查找與連接線相連的首末節(jié)點(diǎn)Id號(hào)。hashcode是用來查找的,例如內(nèi)存中有這樣的位置:01234567,類的字段為Id號(hào),則定義hashcode為Id值,將類存放在Id值那個(gè)位置,比如Id為3,則將該類存在3這個(gè)位置,如果Id是6,則將該類放在6這個(gè)位置,這樣,在查找該類時(shí)就可以直接找到存放的位置了。
線損計(jì)算中,沒有必要把大量的數(shù)據(jù)都放在SVG文件中,這樣只會(huì)使它變得臃腫,性能低下,而將數(shù)據(jù)由專門的數(shù)據(jù)庫保存,可減少SVG的處理運(yùn)算。線損計(jì)算所需參數(shù)的數(shù)據(jù)庫存儲(chǔ)E-R圖如圖3所示,配電網(wǎng)一次接線圖建模時(shí)將線路參數(shù)及變壓器參數(shù)存儲(chǔ)到數(shù)據(jù)庫,其中線路參數(shù)表存儲(chǔ)架空、電纜線路的線路長度、線路單位電阻及單位電抗,變壓器參數(shù)表存儲(chǔ)變壓器的編號(hào)、SN、UN、短路損耗、短路電壓百分比、空載損耗、空載電流百分比、終端安裝處等數(shù)據(jù)。連接關(guān)系表通過拓?fù)浞治龊蟠娴綌?shù)據(jù)庫,終端測(cè)量功率數(shù)據(jù)則從終端讀取存儲(chǔ),終端測(cè)量功率表S存儲(chǔ)的是一天24h的數(shù)據(jù)。
圖3 數(shù)據(jù)庫線損計(jì)算參數(shù)E-R圖
由于數(shù)據(jù)存在數(shù)據(jù)庫中,客戶端要實(shí)現(xiàn)將每小時(shí)的功率值更新顯示在頁面上或者進(jìn)行線損計(jì)算都需要先與數(shù)據(jù)庫進(jìn)行交互,提取相關(guān)數(shù)據(jù),而SVG則僅做為數(shù)據(jù)的展現(xiàn)手段。此交互過程采用Ajax異步交互模式,Ajax并不是一項(xiàng)新的技術(shù),而是集合了DOM、XML、JavaScript、XHTML、XSTL和XMLHttpReauest等技術(shù)的一種設(shè)計(jì)方式。
Ajax以“按需取數(shù)據(jù)”為原則,可以最大程度的減少冗余請(qǐng)求和響應(yīng)對(duì)服務(wù)器造成的負(fù)擔(dān),無刷新更新頁面。當(dāng)要讀取數(shù)據(jù)時(shí),Ajax使用XMLHttp Request對(duì)象發(fā)送請(qǐng)求并得到服務(wù)器響應(yīng),在不重新載入整個(gè)頁面的情況下用Javascript操作DOM最終更新頁面。這樣不需要更新整個(gè)窗口就可以顯示新獲取的數(shù)據(jù),只要來回傳送采用XML格式的數(shù)據(jù),在瀏覽器里面運(yùn)行的JavaScript代碼就可以與服務(wù)器進(jìn)行聯(lián)系。執(zhí)行結(jié)果到達(dá)時(shí),才會(huì)通知瀏覽器客戶端,使之能夠在合適的時(shí)間顯示執(zhí)行結(jié)果,JavaScript代碼還可以把樣式表加載到檢索到的數(shù)據(jù)上,然后在現(xiàn)有網(wǎng)頁的某個(gè)部分加以顯示。
實(shí)時(shí)信息顯示結(jié)構(gòu)圖如圖4所示,整個(gè)過程主要由四部分組成,負(fù)責(zé)數(shù)據(jù)顯示的是SVG,負(fù)責(zé)數(shù)據(jù)存儲(chǔ)的是數(shù)據(jù)庫,中間起橋梁作用的是Ajax技術(shù)和服務(wù)器端程序。Ajax主要角色在于JavaScript事件觸發(fā)和響應(yīng)、發(fā)起異步通信請(qǐng)求、接收返回的數(shù)據(jù)并更新頁面內(nèi)容。
圖4 實(shí)時(shí)信息顯示結(jié)構(gòu)圖
首先由客戶端SVG發(fā)出請(qǐng)求,調(diào)用setInterval函數(shù)來執(zhí)行XMLHttpRequest函數(shù)進(jìn)行異步交互。setInterval函數(shù)可以定時(shí)執(zhí)行發(fā)出請(qǐng)求,線損計(jì)算中一般采用一天24h整點(diǎn)數(shù)據(jù),也只在每小時(shí)更新電表顯示數(shù)據(jù),即一天只需要讀取24h的整點(diǎn)數(shù)據(jù)即可,因此不需要頻繁的發(fā)出數(shù)據(jù)請(qǐng)求,只需定時(shí)(如每十分鐘)讀取一次數(shù)據(jù)便可。服務(wù)器接收到請(qǐng)求后,判斷用戶行為(即是只讀取電表數(shù)據(jù)還是需要讀取與線損計(jì)算相關(guān)的所有數(shù)據(jù)),然后將響應(yīng)結(jié)果以 HTML/XHTML/XML形式封裝好。XMLHttpRequest檢測(cè)到服務(wù)器已將響應(yīng)結(jié)果打印出來,則將響應(yīng)結(jié)果以文本或者XML文檔形式返回。數(shù)據(jù)發(fā)回到客戶端后,JavaScript調(diào)用DOM進(jìn)行數(shù)據(jù)解析與處理。數(shù)據(jù)處理完畢,則改變DOM樹,更新相應(yīng)的頁面內(nèi)容。
配電網(wǎng)發(fā)展速度較快,電網(wǎng)結(jié)構(gòu)經(jīng)常變化,且存在大量不對(duì)稱負(fù)荷和單相、兩相、三相線路混合供電模式,使得配電網(wǎng)的三相電壓、電流不對(duì)稱,無法使用對(duì)稱模型,同時(shí)對(duì)稱模型不易考慮單相變壓器移相。對(duì)配電系統(tǒng)如果像對(duì)待對(duì)稱系統(tǒng)那樣,只是單純按照理論中將對(duì)稱三相等同于單相進(jìn)行計(jì)算,就會(huì)忽略很多由三相不對(duì)稱所引起的問題,因此必須計(jì)算三相的情形,也即要求對(duì)不對(duì)稱系統(tǒng)進(jìn)行三相整體的建模計(jì)算。本文的線損計(jì)算采用前推回代潮流計(jì)算的方法,計(jì)算流程圖如圖5所示。
圖5 前推回代計(jì)算流程圖
首先根據(jù)廣度優(yōu)先搜索將網(wǎng)絡(luò)的節(jié)點(diǎn)支路進(jìn)行分層編號(hào),再進(jìn)行前推回代計(jì)算。前推過程中,首先根據(jù)配變終端量測(cè)的節(jié)點(diǎn)各相負(fù)荷的有功、無功功率計(jì)算支路電流,如果終端安裝在配變的高壓側(cè),則直接利用采集上來的三相有功、無功功率計(jì)算負(fù)荷支路電流,如果安裝在配變的低壓側(cè),則還要考慮變壓器的接線方式、損耗與移相等對(duì)計(jì)算負(fù)荷支路電流的影響。然后從各負(fù)荷支路開始向潮流的前方直到源點(diǎn)根據(jù)KCL計(jì)算各支路的電流分布。最后求出源點(diǎn)的三相電流。回代過程中,由已知電源電壓和所求得的三相電流,從源點(diǎn)向各負(fù)荷節(jié)點(diǎn)根據(jù)KVL計(jì)算系統(tǒng)所有節(jié)點(diǎn)的三相電壓。每次迭代須按求得的各負(fù)荷節(jié)點(diǎn)電壓修正配電變壓器的損耗,由修正后的變壓器損耗和給定的負(fù)荷功率修正負(fù)荷支路電流。經(jīng)過反復(fù)迭代和修正,直到兩次迭代的三相各節(jié)點(diǎn)電壓差的絕對(duì)值均小于給定值。最后,利用計(jì)算收斂后的電流、電壓值和等值線路的阻抗、變壓器的阻抗和導(dǎo)納值計(jì)算出相應(yīng)的各支路損耗和變壓器損耗值。
本文以福建省石獅市古浮變菲寶線625線路為例,根據(jù)以上設(shè)計(jì)思想,預(yù)先布置好服務(wù)器的數(shù)據(jù)庫,模擬終端上傳至數(shù)據(jù)庫過程,實(shí)現(xiàn)客戶端實(shí)時(shí)顯示每個(gè)時(shí)間點(diǎn)的功率數(shù)據(jù)及計(jì)算顯示每天的線損率,表1為2009年8月1日至8月5日五天理論線損表。
表1 菲寶線2009年08月1-5日理論線損表
如圖6所示為2009年8月1日的顯示效果,每個(gè)小時(shí)的功率數(shù)據(jù)及時(shí)更新顯示在屏幕上,一天24h數(shù)據(jù)全部更新過后,計(jì)算當(dāng)天線損值并顯示。
圖6 菲寶線625系統(tǒng)實(shí)時(shí)顯示圖
本文研究了基于SVG的配電網(wǎng)線損在線可視化計(jì)算,建立系統(tǒng)圖模一體化及實(shí)時(shí)在線顯示電表數(shù)據(jù)并進(jìn)行線損計(jì)算,最后通過一個(gè)實(shí)例應(yīng)用來驗(yàn)證該系統(tǒng)的可行性。SVG通過一定的配電網(wǎng)圖形描述格式,實(shí)現(xiàn)圖模一體的數(shù)據(jù)模型,能輕易地制作強(qiáng)大的動(dòng)態(tài)交互。實(shí)現(xiàn)線損計(jì)算在線可視化功能,既減少了供電部門線損管理人員的工作量,而且避免了由于抄表人抄表不同時(shí)性等原因引起的線損計(jì)算誤差的出現(xiàn),使得線損計(jì)算值更容易接近于電網(wǎng)的實(shí)際損耗值。
[1] 王杏.SVG在電網(wǎng)線損管理系統(tǒng)中的應(yīng)用研究[D].華中科技大學(xué),2006.10.
[2] 黃凱偉.SVG開發(fā)實(shí)踐[M].北京:電子工業(yè)出版社,2008.1.
[3] 鄭貴省,趙銳,趙國亮,等.10kV電網(wǎng)故障圖模一體化處理平臺(tái)[J].電力系統(tǒng)保護(hù)與控制,2009,7(15):91-98.
[4] 樊淑麗,王康元,邱家駒.基于SVG的電力信息可視化框架設(shè)計(jì)[J].繼電器,2007,35(10):48-51.
[5] 張文生,王雷,喬洪巖.XML與SVG技術(shù)在變電站抄表系統(tǒng)中的應(yīng)用[C].中國高等學(xué)校電力系統(tǒng)及其自動(dòng)化專業(yè)第二十屆學(xué)術(shù)年會(huì)論文集,2007.
[6] 賀繼艷,王穎.分層潮流前推回代算法的改進(jìn)及實(shí)現(xiàn)[J].電力科學(xué)與工程,2009,25(11):42-44.
[7] 王崢,叢培杰.基于改進(jìn)前推回代法的輻射狀配電網(wǎng)潮流計(jì)算[J].東北電力技術(shù),2008,(2):7-10.
[8] 李林輝,王玉芹,劉瑩.基于 SVG的電力圖形系統(tǒng)的實(shí)現(xiàn)[J].東北電力大學(xué)學(xué)報(bào),2007,27(1):73-76.
[9] 浙江省電力公司企業(yè)標(biāo)準(zhǔn).Q/ZDJ48-2006.基于SVG的公共圖形交互規(guī)則[S].
[10] 郭創(chuàng)新,齊旭,朱傳柏,等.基于SVG的電力調(diào)度圖形支撐平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].電力系統(tǒng)及其自動(dòng)化學(xué)報(bào),2007,19(2):28-33.
[11] 陳傳波,王菁,鄧凱.基于SVG 的實(shí)時(shí)數(shù)據(jù)動(dòng)態(tài)發(fā)布術(shù)的研究[J].小型微型計(jì)算機(jī)系統(tǒng),2002,23(5):609-612.