亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VBA的CIM/XML的電網(wǎng)模型解析與轉(zhuǎn)換

        2022-11-19 09:16:02戴喬旭羅宗杰
        現(xiàn)代信息科技 2022年19期
        關(guān)鍵詞:信息模型

        戴喬旭,羅宗杰

        (廣東電網(wǎng)有限責(zé)任公司湛江供電局,廣東 湛江 524001)

        0 引 言

        當(dāng)前,CIM 已經(jīng)廣泛應(yīng)用于各國(guó)的電力系統(tǒng),CIM 所提出的電力系統(tǒng)信息交互標(biāo)準(zhǔn)可使不同的系統(tǒng)及應(yīng)用軟件實(shí)現(xiàn)相互連通[1]。但CIM 模型只定義了電力系統(tǒng)數(shù)據(jù)模型,對(duì)于數(shù)據(jù)庫(kù)和交互格式等實(shí)現(xiàn)方面沒(méi)有提供具體的相關(guān)的定義。具有交互特點(diǎn)的XML 語(yǔ)言恰好能與CIM 模型互補(bǔ),它通過(guò)添加標(biāo)記來(lái)完成數(shù)據(jù)所要表達(dá)的信息和數(shù)據(jù)的組織結(jié)構(gòu)。目前,電力系統(tǒng)大多數(shù)應(yīng)用都是基于CIM/XML 進(jìn)行離線模型交互,但XML 語(yǔ)言處理過(guò)程需要對(duì)標(biāo)簽進(jìn)行打開(kāi)及關(guān)閉,使得CIM/XML 在描述、解析等方面效率較低,因而常用于離線式的模型交互。而JSON 作為現(xiàn)今互聯(lián)網(wǎng)最常用的數(shù)據(jù)交互格式之一,相比XML 語(yǔ)言更為簡(jiǎn)潔、處理速度更快、占用CPU 資源更少,在在線數(shù)據(jù)交互、關(guān)鍵電網(wǎng)模型信息傳輸方面具有更大優(yōu)勢(shì)。因此,將CIM/XML 描述的離線電網(wǎng)模型進(jìn)行關(guān)鍵信息提取,轉(zhuǎn)換為JSON 數(shù)據(jù)格式存儲(chǔ),更便于實(shí)現(xiàn)電網(wǎng)模型的在線交互及高效的數(shù)據(jù)處理。

        1 項(xiàng)目相關(guān)技術(shù)背景

        在電力系統(tǒng)中有著許多獨(dú)立分工不同的信息處理系統(tǒng),而這些系統(tǒng)常由不同廠家提供,其應(yīng)用程序也運(yùn)行于不同的平臺(tái),因此數(shù)據(jù)交互相當(dāng)困難。國(guó)際電工委員會(huì)(IEC)在20 紀(jì)90年代提出了IEC61970 規(guī)范,且定義了公用信息模型(CIM),使得不同的電力系統(tǒng)應(yīng)用之間可按照統(tǒng)一的模型進(jìn)行數(shù)據(jù)交換[2]??蓴U(kuò)展標(biāo)記語(yǔ)言(XML)是由全球信息網(wǎng)協(xié)會(huì)(W3C)于1998年提出的一種標(biāo)準(zhǔn),其優(yōu)越性主要表現(xiàn)在易于實(shí)現(xiàn)異構(gòu)系統(tǒng)間的信息交互、自定義性和可擴(kuò)展性、數(shù)據(jù)內(nèi)容與顯示處理的分類(lèi)。由于CIM 并未對(duì)模型的數(shù)據(jù)庫(kù)和數(shù)據(jù)交換格式進(jìn)行定義,因此XML 語(yǔ)言是一種較好的載體。因此,通過(guò)CIM/RDF 模型作為元模型框架,并通過(guò)RDF 語(yǔ)法的子集作為描述規(guī)則,即可實(shí)現(xiàn)構(gòu)建電網(wǎng)靜態(tài)數(shù)據(jù)模型的CIM/XML 文檔。

        JSON 是一種可在多種語(yǔ)言之間進(jìn)行數(shù)據(jù)交互的輕量級(jí)數(shù)據(jù)格式,在現(xiàn)今互聯(lián)網(wǎng)中最為常用。JSON 字符串由Unicode 字符集合而成,其由規(guī)則簡(jiǎn)單、使用壓縮格式、占用帶寬小等優(yōu)點(diǎn)。XML 作為一種既可以用以標(biāo)記數(shù)據(jù)也可以定義數(shù)據(jù)類(lèi)型的源語(yǔ)言,是互聯(lián)網(wǎng)數(shù)據(jù)交互中的一種跨平臺(tái)技術(shù)手段,能對(duì)結(jié)構(gòu)化的文檔信息實(shí)現(xiàn)高效處理[3]。JSON 和XML 都是開(kāi)放式數(shù)據(jù)交互,JSON 相比XML 最顯而易見(jiàn)的優(yōu)點(diǎn)在于簡(jiǎn)潔,在XML 中需要打開(kāi)和關(guān)閉標(biāo)簽,而JSON 使用名稱/值來(lái)表示數(shù)據(jù),“{”及“}”標(biāo)記對(duì)象,“[”及“]”標(biāo)記數(shù)組,“:”表示數(shù)據(jù)分隔,“;”表示名稱與值的分隔。在與包含相同信息的XML 比較,JSON 總是更小,這意味著更快的傳輸和處理速度。在相關(guān)研究表明,在不考慮大小情況下,JSON 執(zhí)行序列和反序列的速度顯著優(yōu)于使用XML。JSON 數(shù)據(jù)處理在CPU 資源的使用上也優(yōu)于XML,占用內(nèi)存相對(duì)更小,更利于網(wǎng)絡(luò)傳輸與移動(dòng)設(shè)備的處理[4]。

        2 CIM/XML 模型與JSON 格式的轉(zhuǎn)換

        全球信息協(xié)會(huì)(WC)建立了文件對(duì)象模型(DOM)標(biāo)準(zhǔn),它提供了跨瀏覽器的應(yīng)用程序?qū)崿F(xiàn)的平臺(tái)。W3C DOM 是一個(gè)能夠讓程序和腳本動(dòng)態(tài)訪問(wèn)和更新文檔內(nèi)容、結(jié)構(gòu)和樣式的語(yǔ)言平臺(tái),它提供了HTML 和XML 對(duì)象集,并有一個(gè)標(biāo)準(zhǔn)的接口訪問(wèn)和操作它們[5]。W3C DOM 可分為不同的部分(核心、XML 和HTML)和不同的版本(DOM1/2/3)。其中,DOM 對(duì)XML 文件的解析是將其轉(zhuǎn)換為一個(gè)對(duì)象模型集合,用樹(shù)形結(jié)構(gòu)對(duì)XML 文檔信息放在內(nèi)存中進(jìn)行存儲(chǔ),應(yīng)用程序可在任何時(shí)候訪問(wèn)XML 文檔中的任意部分?jǐn)?shù)據(jù)[6]。因此,這種利用DOM 接口解析訪問(wèn)方法也被稱為隨機(jī)訪問(wèn)。

        VBA 是Visual Basic 的一種宏語(yǔ)言,是其在桌面應(yīng)用程序中執(zhí)行通用的自動(dòng)化(OLE)任務(wù)的編程語(yǔ)言,算是一種應(yīng)用程式視覺(jué)化的Basic 腳本。在WPS 軟件中一般自帶了VBA 環(huán)境安裝包,可實(shí)現(xiàn)VBA 編程。由于VBA 中存在XMLDOM 對(duì)象,可對(duì)XML 文件進(jìn)行解析、數(shù)據(jù)處理。因此,可通過(guò)常用的WPS 軟件使用VBA 編程對(duì)XML 文檔進(jìn)行讀寫(xiě)與控制。

        VBA 編程貫穿CIM/XML 電網(wǎng)模型數(shù)據(jù)解析轉(zhuǎn)換整個(gè)過(guò)程,首先利用WPS 表格工具的VBA 程序平臺(tái)將CIM/XML 文檔數(shù)據(jù)加載到內(nèi)存中,并調(diào)用軟件DOM 解析將結(jié)果暫存在表格中,再根據(jù)實(shí)際需要提取模型中設(shè)備、聯(lián)絡(luò)情況等信息進(jìn)行提取,依據(jù)JSON 格式對(duì)信息進(jìn)行處理,最終生成便于網(wǎng)絡(luò)傳輸?shù)腏SON 數(shù)據(jù)格式,實(shí)現(xiàn)數(shù)據(jù)模式的轉(zhuǎn)換,具體過(guò)程如圖1 所示。

        圖1 CIM/XML 轉(zhuǎn)換JSON 格式流程

        在數(shù)據(jù)表格的VBA 編程部分,首先需要利用宿主WPS軟件自帶的DOM 將待解析電網(wǎng)模型CIM/XML 文檔整個(gè)樹(shù)狀結(jié)構(gòu)加載到系統(tǒng)內(nèi)存,變?yōu)橐姿阉?、操作的?shù)據(jù)形式。

        具體應(yīng)用為通過(guò)Create.Object() 方法,生成一個(gè)Microsoft XMLDOC 對(duì)象。通過(guò)VBA 編程中xmlDoc.Load()方法可將待解析的CIM/XML 文檔與所生成的Microsoft XMLDOC 對(duì)象相關(guān)聯(lián),DOM 處理器將CIM/XML 文檔模型整個(gè)以樹(shù)形結(jié)構(gòu)全部載入內(nèi)存中,以后的所有增、刪、改、查均對(duì)內(nèi)存中的樹(shù)形結(jié)構(gòu)操作。樹(shù)形結(jié)構(gòu)存在諸多結(jié)點(diǎn),包括根節(jié)點(diǎn)與各級(jí)分支接點(diǎn),下級(jí)節(jié)點(diǎn)可通過(guò)上級(jí)節(jié)點(diǎn)不斷往下延伸。因此,獲取內(nèi)存中樹(shù)形結(jié)構(gòu)的根節(jié)點(diǎn)即可對(duì)各分支節(jié)點(diǎn)信息進(jìn)行操作。具體可通過(guò)Document Element 獲取根節(jié)點(diǎn),即可實(shí)現(xiàn)利用宿主軟件的DOM 將電網(wǎng)模型CIM/XML 文檔加載內(nèi)存中的樹(shù)狀結(jié)構(gòu)進(jìn)行操作,具體實(shí)現(xiàn)代碼為:

        Set xmlDoc = CreateObject(“Microsoft.XMLDOM”)

        xmlDoc.Load (“ABCD.xml”)

        Set xmlRoot = xmlDoc.DocumentElement

        在獲取到CIM/XML 文檔樹(shù)狀結(jié)構(gòu)的根節(jié)點(diǎn)后,需獲取內(nèi)存中樹(shù)狀結(jié)構(gòu)的特定節(jié)點(diǎn),如元素節(jié)點(diǎn)、實(shí)體應(yīng)用節(jié)點(diǎn)等方可實(shí)現(xiàn)訪問(wèn)和修改。在VBA 編程中,讀取及修改樹(shù)狀結(jié)構(gòu)節(jié)點(diǎn)首先需通過(guò)DOM 提供的SelectSingleNode 方法選擇XML 樹(shù)狀結(jié)構(gòu)文檔中的分支節(jié)點(diǎn)位置信息,再通過(guò)GetAttributeNode(“xxx”).Nodevalue 方法即可獲取到分支的值。具體實(shí)現(xiàn)代碼為:

        documentElement.SelectSingleNode

        GetAttributeNode(“xxx”).Nodevalue

        在CIM/XML 文檔中,按XML 文檔格式要求定義了大量的斷路器、配變、電桿、導(dǎo)線等電力設(shè)備設(shè)施基本信息及其物理拓?fù)?。以開(kāi)關(guān)為例,其部分CIM/XML 表達(dá)為:

        <cim:Breaker rdf:ID=”SWITCH_123456”>

        <cim:Naming.name>10T1 開(kāi)關(guān)</cim:Naming.name>

        <cim:PowerSystemResource.location>POINT(110.1234,21.5678)

        </cim:PowerSystemResource.location>

        </cim:Breaker>

        在標(biāo)簽“Breaker”間包含了開(kāi)關(guān)名稱信息“10T1 開(kāi)關(guān)”以及其經(jīng)緯度位置信息“110.1234,21.5678”,其中“Breaker”為XML 數(shù)狀結(jié)構(gòu)中的一個(gè)分節(jié)點(diǎn),節(jié)點(diǎn)名稱為“Breaker”,其往下延伸還存在“Naming.name”“PowerSystemResource.locationg”元素節(jié)點(diǎn)。對(duì)于節(jié)點(diǎn)及其數(shù)據(jù)的操作可通過(guò)上述采用DOM 解析器及VBA 編程方式獲取到具體的開(kāi)關(guān)節(jié)點(diǎn)及其元素節(jié)點(diǎn)的信息。

        類(lèi)似地,可以用同樣方法取得電網(wǎng)模型樹(shù)狀結(jié)構(gòu)中的電桿、配變、負(fù)荷開(kāi)關(guān)等設(shè)備元素的具體數(shù)據(jù)。通過(guò)VBA 程序?qū)⑾嚓P(guān)拓?fù)溥M(jìn)行解析,獲取設(shè)備的經(jīng)緯度坐標(biāo)、線徑、關(guān)聯(lián)聯(lián)絡(luò)元素節(jié)點(diǎn)等信息,并可暫存在VBA 程序宿主軟件WPS 數(shù)據(jù)表格中。通過(guò)上述VBA 編程對(duì)CIM/XML 樹(shù)狀結(jié)構(gòu)數(shù)據(jù)的解析提取,將宿主軟件WPS 數(shù)據(jù)表格中暫存的電網(wǎng)設(shè)備信息進(jìn)行組合,并可根據(jù)需要添加額外的關(guān)聯(lián)數(shù)據(jù)信息,作為目標(biāo)JSON 文件的基礎(chǔ)數(shù)據(jù)。

        在JSON 文件的生成方面,VBA 編程中提供了ADODB.Stream 對(duì)象。該對(duì)象可存取二進(jìn)制數(shù)據(jù)或文本流,從而實(shí)現(xiàn)對(duì)流的讀、寫(xiě)和管理等操作。JSON 文件的創(chuàng)建可通過(guò)ADODB.Stream 方法創(chuàng)建UTF-8+BOM 編碼的文本,并按JSON 文件格式要求生成標(biāo)準(zhǔn)的JSON 文件。具體實(shí)現(xiàn)代碼為:

        Set objStream = CreateObject(“ADODB.Stream”)

        With objStream

        .Type = 2

        .Charset = “UTF-8”

        .Open

        .WriteText “[“

        (寫(xiě)入相關(guān)數(shù)據(jù))

        .WriteText “]”

        .SaveToFile ActiveWorkbook.FullName &”.json”, 2

        End With

        Set objStream = Nothing

        通過(guò)上述步驟,可通過(guò)對(duì)WPS 表格宿主軟件中的VBA編程實(shí)現(xiàn)對(duì)CIM/XML電力系統(tǒng)模型拓?fù)湮臋n數(shù)據(jù)進(jìn)行解析、提取、處理,并根據(jù)需求將電網(wǎng)設(shè)備信息、補(bǔ)充信息組合并轉(zhuǎn)換為易于互聯(lián)網(wǎng)傳輸?shù)妮p量級(jí)JSON 數(shù)據(jù)交互格式,簡(jiǎn)便地實(shí)現(xiàn)CIM/XML 與JSON 數(shù)據(jù)格式間的轉(zhuǎn)換。

        3 實(shí)踐驗(yàn)證

        通過(guò)上述方法,在WPS 表格軟件中使用VBA 編程解析CIM/XML 電網(wǎng)模型文檔。首先通過(guò)WPS 軟件“開(kāi)發(fā)工具”模塊繪制“文本框”“按鈕控件”,通過(guò)“文本框”用以讀取存放XML 文檔的位置、“按鈕控件”用以開(kāi)啟執(zhí)行解析操作。其次在WPS 表格中建立不同的sheet 用以存放CIM/XML 電網(wǎng)模型中各類(lèi)型電網(wǎng)設(shè)備數(shù)據(jù),如配變位置坐標(biāo)sheet、開(kāi)關(guān)位置坐標(biāo)sheet、線路軌跡sheet 等。對(duì)應(yīng)的人機(jī)交互界面如圖2 所示。

        圖2 CIM/XML 轉(zhuǎn)換人機(jī)交互界面

        通過(guò)本文第二節(jié)分描述方法,創(chuàng)建XMLDOC 對(duì)象,解析CIM/XML 電網(wǎng)模型,并獲取樹(shù)狀結(jié)構(gòu)根節(jié)點(diǎn)。通過(guò)For循環(huán)歷編XML 文檔,依據(jù)子節(jié)點(diǎn)名稱“Pole”“ACLineSe gment”“Substation”“Breaker”等分別獲取電桿、導(dǎo)線、配變、開(kāi)關(guān)等設(shè)備的名稱、坐標(biāo)、聯(lián)絡(luò)節(jié)點(diǎn)等信息,并相應(yīng)寫(xiě)入至WPS 表格軟件所建立對(duì)應(yīng)的sheet 中,便于 進(jìn)行下一步處理。

        對(duì)于解析提取出的電網(wǎng)設(shè)備信息,再進(jìn)一步處理生成JSON 文件。具體通過(guò)VBA 程序創(chuàng)建ADODB.Stream 對(duì)象,按UTF-8 編碼,使用數(shù)據(jù)流模式,將電桿、導(dǎo)線、配變、開(kāi)關(guān)信息分別生成對(duì)應(yīng)的JSON 文件,并保存在指定位置便于查詢。

        4 結(jié) 論

        本文針對(duì)CIM/XML 電力系統(tǒng)靜態(tài)模型的XML 文檔,采用VBA 編程,借助宿主軟件的DOM 對(duì)XML 文檔進(jìn)行解析,并根據(jù)需求提取電力系統(tǒng)模型數(shù)據(jù)并轉(zhuǎn)換為易于進(jìn)行網(wǎng)絡(luò)傳輸與解析的JSON 格式。文章所涉及的VBA 編程方法已通過(guò)在南網(wǎng)智瞰平臺(tái)中得到實(shí)踐驗(yàn)證。該方法對(duì)于采用CIM/XML 文檔表達(dá)的電力系統(tǒng)模型轉(zhuǎn)換為輕量級(jí)的JSON數(shù)據(jù)形式,實(shí)現(xiàn)在線實(shí)時(shí)數(shù)據(jù)轉(zhuǎn)換及傳輸?shù)葢?yīng)用提供了新的思路。

        猜你喜歡
        信息模型
        一半模型
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        3D打印中的模型分割與打包
        FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
        展會(huì)信息
        一個(gè)相似模型的應(yīng)用
        信息
        健康信息
        祝您健康(1987年3期)1987-12-30 09:52:32
        久久综合视频网站| 少妇扒开毛茸茸的b自慰| 99久久综合精品五月天| 国产成人精品三级麻豆| 视频一区二区三区中文字幕狠狠| 少妇高潮精品在线观看| 亚洲无线码一区二区三区| 精品国产18久久久久久| 制服无码在线第一页| 国产视频在线观看一区二区三区| 婷婷五月深深久久精品| 性久久久久久久| аⅴ天堂一区视频在线观看| 女同舌吻互慰一区二区| 真实的国产乱xxxx在线| aaaaaa级特色特黄的毛片| 久久久久成人精品免费播放| 日韩av在线手机免费观看| 国产欧美va欧美va香蕉在| 76少妇精品导航| 久青青草视频手机在线免费观看| 自由成熟女性性毛茸茸应用特色| 五月丁香综合激情六月久久| 国产女精品视频网站免费| 18禁黄无遮挡免费网站| 国产女同舌吻1区2区| 夜夜添夜夜添夜夜摸夜夜摸| 国产欧美成人| 少妇人妻偷人中文字幕| 午夜久久久久久禁播电影| 国产精品国产午夜免费看福利| 久久青青草原国产精品最新片| 国产女主播福利在线观看| 国产精品久久久久免费观看| 熟女俱乐部五十路二区av| 精品少妇后入一区二区三区| 国产一区二区三区仙踪林| 免费a级毛片无码a∨男男| 天啦噜国产精品亚洲精品| 自拍偷拍韩国三级视频| 真人做人试看60分钟免费视频|