廖 輝,李 輝,郝后堂,吳 磊
(南瑞集團有限公司(國網(wǎng)電力科學研究院有限公司),江蘇 南京 211106)
為了加強電網(wǎng)資產(chǎn)管理,進行故障重現(xiàn)分析,提升系統(tǒng)安全運行水平,需要對電力物聯(lián)網(wǎng)設(shè)備的軟硬件版本進行管控[1]。作為管控的重要一環(huán),配置信息的全生命周期管理也越來越受到重視[2]。
在變電領(lǐng)域,IEC 61850標準采用可擴展標記語言(Extensible Markup Language XML)作為變電站配置描述語言[3],使得XML成為智能電子設(shè)備的主流配置。XML為純文本文件,有良好的自我描述能力,但其有特定的語法結(jié)構(gòu)[4],需要更大的空間來存儲,消耗更多的時間來解析。
在輸配電領(lǐng)域,在線監(jiān)測設(shè)備數(shù)量龐大,形態(tài)不同、架構(gòu)各異,物理空間跨度大,監(jiān)測數(shù)據(jù)實時性要求低,單次通信數(shù)據(jù)量小;運行環(huán)境復雜,供電和通信問題突出[5]??紤]到經(jīng)濟性和節(jié)能因素,設(shè)備多采用低功耗微處理器作為核心處理單元,硬件資源有限[6-9],使用XML作為配置運行效率低下。現(xiàn)有配置多為二進制,配置項由廠家自定義,存儲空間小,軟件處理簡單;但可讀性差,不易維護,配置格式與配置工具耦合性強。雖然,目前國家電網(wǎng)有限公司通過通信協(xié)議對一些共有配置項進行了規(guī)范[10],但對設(shè)備專有配置項的管控仍依賴廠家,存在管理缺陷。
為了解決上述缺陷,提出了一種基于XML離線管理、以二進制配置供設(shè)備在線運行的管理方法。可避免對大量存量輸配電在線監(jiān)測設(shè)備進行改造,又能有效加強配置管理。
XML是W3C(World Wide Web Consortium,萬維網(wǎng)聯(lián)盟)制定的用于描述數(shù)據(jù)文檔中數(shù)據(jù)的組織和安排的一種標記語言[11]。他可以用于標記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標記語言進行定義的元語言。XML專為存儲和交換數(shù)據(jù)而設(shè)計,提供統(tǒng)一的方法來描述和交換結(jié)構(gòu)化數(shù)據(jù),自我描述。XML跨越操作系統(tǒng),不受編程語言的限制,實現(xiàn)不同系統(tǒng)之間的數(shù)據(jù)交互,是電力物聯(lián)網(wǎng)設(shè)備配置文件的理想選擇。
XML文檔是一種樹形結(jié)構(gòu)。他有且只有一個根元素,該元素是其他所有元素的父元素。所有元素均可擁有子元素、文本內(nèi)容和屬性。元素用于定義配置項,屬性用于添加額外描述信息,文本內(nèi)容存儲實際的配置參數(shù)。
以一個具有普遍代表意義的配置為例,包含3類常見的類型參數(shù):整數(shù)、浮點數(shù)和字符串。配置中,“Item1~Item3”定義3項參數(shù)名稱,第1項參數(shù)是整數(shù),第2項參數(shù)是浮點數(shù),第3項參數(shù)是字符串,參數(shù)值分別是“1 000、10.00、Null”。對應(yīng)的XML文件如下:
<Item0 Name="Item0 name">
<Item1>1000</Item1>
<<Item2>10.00</Item2>
<<Item3>Null</Item3>
</Item0>
</Config>
該配置采用二進制表示時,約定:3項參數(shù)按照“Item1~Item3”順序排列,第1項參數(shù)以有符號整型(int)表示,第2項參數(shù)以單精度實型表示,第3項參數(shù)以4字節(jié)字符數(shù)組表示。對應(yīng)的二進制配置內(nèi)容如圖1所示。
圖1 二進制配置示例
在上述例子中,XML配置為171字節(jié)(包含不可見的制表符和換行回車符),二進制配置為12字節(jié);XML配置便于閱讀,但機器識別較為復雜;二進制配置可通過地址直接訪問,但需要參照上文中的約定才能解讀;XML配置和二進制配置可以互相轉(zhuǎn)換。
在傳統(tǒng)的二進制配置方法中,首先需要開發(fā)專有的配置工具,將配置規(guī)則固化在工具中,然后采用配置工具生成二進制配置。而XML配置,僅需采用普通的文本編輯工具直接編輯文件即可。
利用XML和二進制配置的各自優(yōu)點,以及兩者可以互相轉(zhuǎn)換的特點,提出了基于XML的二進制配置管理方法。如圖2所示,通過文本編輯工具生成XML配置,將其與對應(yīng)的XML配置規(guī)則一起導入統(tǒng)一配置工具,生成二進制配置,將二進制配置下裝到電力物聯(lián)網(wǎng)設(shè)備中供其運行。反之,在配置維護時,從設(shè)備中提取二進制配置,將之與對應(yīng)的XML配置規(guī)則一起導入統(tǒng)一配置工具,生成XML配置,再通過文本編輯工具進行維護,或進一步開展配置信息的全生命周期管理。
圖2 基于XML的二進制配置方法
該方法的特點是,二進制配置和XML配置存在一一對應(yīng)關(guān)系;電力物聯(lián)網(wǎng)設(shè)備僅需解析廠家自定義的二進制配置,配置內(nèi)容包含國家或行業(yè)標準的必備配置項和廠家的設(shè)備專有配置項;XML配置則用于配置的標準化和全生命周期管理。
該方法的關(guān)鍵點是XML配置規(guī)則與統(tǒng)一配置工具的實現(xiàn)。XML配置規(guī)則是配置的一部分,不同的配置制定不同的配置規(guī)則。統(tǒng)一配置工具與具體的配置項內(nèi)容無關(guān),僅根據(jù)XML配置規(guī)則解析配置,實現(xiàn)XML配置和二進制配置一一對應(yīng)的轉(zhuǎn)換,可以適用于所有設(shè)備的不同配置。
XML配置規(guī)則是實現(xiàn)XML配置和二進制配置互相轉(zhuǎn)換的橋梁。合理設(shè)計XML配置規(guī)則和XML配置,可以生成任何結(jié)構(gòu)的目標二進制配置。XML配置規(guī)則涵蓋3個要素:配置項的結(jié)構(gòu)和順序;配置項在XML配置中的元素名;配置項在二進制配置中的數(shù)據(jù)類型。
XML配置規(guī)則采用XML文件格式。根元素名為<Rule>,<Rule>有多個子元素<DO>。<DO>有2個屬性:一個為“id”,用于定義XML配置中的元素名;另一個為“desc”,用于配置項的自我描述。<DO>的子元素可以為<DO>和(或)<DA>。<DA>有3個屬性:一個為“name”,用于定義XML配置中的元素屬性名;另一個為“type”,用于定義XML配置中的元素屬性轉(zhuǎn)化為二進制配置項的數(shù)據(jù)類型;最后一個為“desc”,用于配置項的自我描述。
XML配置規(guī)則的示例如下。
<Rule>
<DO id=""desc="">
<DA name=""type=""desc=""/>
<DO id=""desc="">
<DA name=""type=""desc=""/>
</DO>
</DO>
<DO id=""desc="">
<DA name=""type=""desc=""/>
</DO>
</Rule>
屬性“type”定義的數(shù)據(jù)類型如表1所示,包含各種常見數(shù)據(jù)類型。除“str_n”外,其他數(shù)據(jù)類型為基本類型?!皊tr_n”為構(gòu)造類型,由多個“char”類型組成,表示長度為n的字符串。
表1 數(shù)據(jù)類型定義
統(tǒng)一配置工具使用Qt開發(fā),可部署在Linux或Windows維護工作站上。Qt的Qt Xml模塊[12]是針對XML數(shù)據(jù)處理的成熟套件,他提供了3種不同的應(yīng)用程序編程接口對XML文檔進行數(shù)據(jù)處理:QXmlStream-Reader、DOM、SAX。其 中DOM(文檔對象模型)能以任意順序遍歷XML文檔的樹形表示,實現(xiàn)多通解析算法,成為作者首選。
XML配置轉(zhuǎn)換為二進制配置的流程如圖3所示:統(tǒng)一配置工具遍歷XML配置規(guī)則樹根節(jié)點<Rule>的子節(jié)點<DO>,執(zhí)行ParseElementDO()。
圖3 XML配置轉(zhuǎn)換二進制配置流程
如圖4所示,ParseElement DO(Element.R,Element.C)函數(shù)通過節(jié)點<Element.R>的屬性“id”獲取配置項名稱,在節(jié)點<Element.C>中查找同名子節(jié)點。接著遍歷<Element.R>的所有子節(jié)點,對子節(jié)點<DO>執(zhí)行ParseElement DO(),對子節(jié)點<DA>執(zhí)行ParseElementDA()。
圖4 ParseElementDO()函數(shù)流程
如圖5所示,ParseElement DA(Element.R,Element.C)函數(shù)通過節(jié)點<Element.R>的屬性“name”獲取參數(shù)名稱,通過屬性“type”獲取參數(shù)的數(shù)據(jù)類型。在節(jié)點<Element.C>中查找同名子節(jié)點,獲取子節(jié)點的文本值,將文本值按參數(shù)的數(shù)據(jù)類型轉(zhuǎn)換為二進制。
圖5 ParseElementDA()函數(shù)流程
直到配置規(guī)則樹中所有節(jié)點都從配置樹中獲取到對應(yīng)的配置值,并按規(guī)定的數(shù)據(jù)類型完成轉(zhuǎn)換,即完成了XML配置向二進制配置的轉(zhuǎn)換。
二進制配置轉(zhuǎn)換為XML配置的過程與上述流程大同小異,區(qū)別在于:圖4、圖5中虛線框內(nèi)的操作,前者為查找同名子節(jié)點,后者為創(chuàng)建同名子節(jié)點;圖5中最后的步驟,前者為將XML中的文本值轉(zhuǎn)換為二進制,而后者為將二進制寫入XML文件中。
以上隨機選擇了幾種輸配電在線監(jiān)測設(shè)備進行方案驗證。首先,根據(jù)設(shè)備原有的二進制配置格式,制定與其一一對應(yīng)的XML配置規(guī)則。然后,通過統(tǒng)一配置工具生成XML配置。最后,再通過統(tǒng)一配置工具生成新的二進制配置,與原二進制配置進行對比驗證。
經(jīng)過比較,通過統(tǒng)一配置工具生成的二進制配置與原有的二進制配置內(nèi)容完全一致,不需對設(shè)備進行任何更改,即可將生成的XML配置用于配置信息全生命周期管理。
作為W3C的推薦標準,XML勢必成為未來的主流配置格式。然而由于其特有的文本結(jié)構(gòu),對存儲空間和CPU運行速率要求較高。導致目前大量資源受限的輸配電在線監(jiān)測設(shè)備仍然采用二進制配置,既不符合電網(wǎng)公司統(tǒng)一配置的規(guī)范要求,又存在管控漏洞。
基于XML生成二進制配置的管理方法,既利用了XML便于管理和信息交換的特性,又保證了電力物聯(lián)網(wǎng)設(shè)備可以快速、便捷的解析,解決了配置工具的維護難題。當配置內(nèi)容較少時,可以直接使用XML配置;當配置內(nèi)容較多時,采用本方法效果更為明顯。