廖 輝,李 輝,郝后堂,吳 磊
(南瑞集團有限公司(國網電力科學研究院有限公司),江蘇 南京 211106)
為了加強電網資產管理,進行故障重現分析,提升系統安全運行水平,需要對電力物聯網設備的軟硬件版本進行管控[1]。作為管控的重要一環,配置信息的全生命周期管理也越來越受到重視[2]。
在變電領域,IEC 61850標準采用可擴展標記語言(Extensible Markup Language XML)作為變電站配置描述語言[3],使得XML成為智能電子設備的主流配置。XML為純文本文件,有良好的自我描述能力,但其有特定的語法結構[4],需要更大的空間來存儲,消耗更多的時間來解析。
在輸配電領域,在線監測設備數量龐大,形態不同、架構各異,物理空間跨度大,監測數據實時性要求低,單次通信數據量小;運行環境復雜,供電和通信問題突出[5]。考慮到經濟性和節能因素,設備多采用低功耗微處理器作為核心處理單元,硬件資源有限[6-9],使用XML作為配置運行效率低下。現有配置多為二進制,配置項由廠家自定義,存儲空間小,軟件處理簡單;但可讀性差,不易維護,配置格式與配置工具耦合性強。雖然,目前國家電網有限公司通過通信協議對一些共有配置項進行了規范[10],但對設備專有配置項的管控仍依賴廠家,存在管理缺陷。
為了解決上述缺陷,提出了一種基于XML離線管理、以二進制配置供設備在線運行的管理方法。可避免對大量存量輸配電在線監測設備進行改造,又能有效加強配置管理。
XML是W3C(World Wide Web Consortium,萬維網聯盟)制定的用于描述數據文檔中數據的組織和安排的一種標記語言[11]。他可以用于標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的元語言。XML專為存儲和交換數據而設計,提供統一的方法來描述和交換結構化數據,自我描述。XML跨越操作系統,不受編程語言的限制,實現不同系統之間的數據交互,是電力物聯網設備配置文件的理想選擇。
XML文檔是一種樹形結構。他有且只有一個根元素,該元素是其他所有元素的父元素。所有元素均可擁有子元素、文本內容和屬性。元素用于定義配置項,屬性用于添加額外描述信息,文本內容存儲實際的配置參數。
以一個具有普遍代表意義的配置為例,包含3類常見的類型參數:整數、浮點數和字符串。配置中,“Item1~Item3”定義3項參數名稱,第1項參數是整數,第2項參數是浮點數,第3項參數是字符串,參數值分別是“1 000、10.00、Null”。對應的XML文件如下:
<Item0 Name="Item0 name">
<Item1>1000</Item1>
<<Item2>10.00</Item2>
<<Item3>Null</Item3>
</Item0>
</Config>
該配置采用二進制表示時,約定:3項參數按照“Item1~Item3”順序排列,第1項參數以有符號整型(int)表示,第2項參數以單精度實型表示,第3項參數以4字節字符數組表示。對應的二進制配置內容如圖1所示。

圖1 二進制配置示例
在上述例子中,XML配置為171字節(包含不可見的制表符和換行回車符),二進制配置為12字節;XML配置便于閱讀,但機器識別較為復雜;二進制配置可通過地址直接訪問,但需要參照上文中的約定才能解讀;XML配置和二進制配置可以互相轉換。
在傳統的二進制配置方法中,首先需要開發專有的配置工具,將配置規則固化在工具中,然后采用配置工具生成二進制配置。而XML配置,僅需采用普通的文本編輯工具直接編輯文件即可。
利用XML和二進制配置的各自優點,以及兩者可以互相轉換的特點,提出了基于XML的二進制配置管理方法。如圖2所示,通過文本編輯工具生成XML配置,將其與對應的XML配置規則一起導入統一配置工具,生成二進制配置,將二進制配置下裝到電力物聯網設備中供其運行。反之,在配置維護時,從設備中提取二進制配置,將之與對應的XML配置規則一起導入統一配置工具,生成XML配置,再通過文本編輯工具進行維護,或進一步開展配置信息的全生命周期管理。

圖2 基于XML的二進制配置方法
該方法的特點是,二進制配置和XML配置存在一一對應關系;電力物聯網設備僅需解析廠家自定義的二進制配置,配置內容包含國家或行業標準的必備配置項和廠家的設備專有配置項;XML配置則用于配置的標準化和全生命周期管理。
該方法的關鍵點是XML配置規則與統一配置工具的實現。XML配置規則是配置的一部分,不同的配置制定不同的配置規則。統一配置工具與具體的配置項內容無關,僅根據XML配置規則解析配置,實現XML配置和二進制配置一一對應的轉換,可以適用于所有設備的不同配置。
XML配置規則是實現XML配置和二進制配置互相轉換的橋梁。合理設計XML配置規則和XML配置,可以生成任何結構的目標二進制配置。XML配置規則涵蓋3個要素:配置項的結構和順序;配置項在XML配置中的元素名;配置項在二進制配置中的數據類型。
XML配置規則采用XML文件格式。根元素名為<Rule>,<Rule>有多個子元素<DO>。<DO>有2個屬性:一個為“id”,用于定義XML配置中的元素名;另一個為“desc”,用于配置項的自我描述。<DO>的子元素可以為<DO>和(或)<DA>。<DA>有3個屬性:一個為“name”,用于定義XML配置中的元素屬性名;另一個為“type”,用于定義XML配置中的元素屬性轉化為二進制配置項的數據類型;最后一個為“desc”,用于配置項的自我描述。
XML配置規則的示例如下。
<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”定義的數據類型如表1所示,包含各種常見數據類型。除“str_n”外,其他數據類型為基本類型。“str_n”為構造類型,由多個“char”類型組成,表示長度為n的字符串。

表1 數據類型定義
統一配置工具使用Qt開發,可部署在Linux或Windows維護工作站上。Qt的Qt Xml模塊[12]是針對XML數據處理的成熟套件,他提供了3種不同的應用程序編程接口對XML文檔進行數據處理:QXmlStream-Reader、DOM、SAX。其 中DOM(文檔對象模型)能以任意順序遍歷XML文檔的樹形表示,實現多通解析算法,成為作者首選。
XML配置轉換為二進制配置的流程如圖3所示:統一配置工具遍歷XML配置規則樹根節點<Rule>的子節點<DO>,執行ParseElementDO()。

圖3 XML配置轉換二進制配置流程
如圖4所示,ParseElement DO(Element.R,Element.C)函數通過節點<Element.R>的屬性“id”獲取配置項名稱,在節點<Element.C>中查找同名子節點。接著遍歷<Element.R>的所有子節點,對子節點<DO>執行ParseElement DO(),對子節點<DA>執行ParseElementDA()。

圖4 ParseElementDO()函數流程
如圖5所示,ParseElement DA(Element.R,Element.C)函數通過節點<Element.R>的屬性“name”獲取參數名稱,通過屬性“type”獲取參數的數據類型。在節點<Element.C>中查找同名子節點,獲取子節點的文本值,將文本值按參數的數據類型轉換為二進制。

圖5 ParseElementDA()函數流程
直到配置規則樹中所有節點都從配置樹中獲取到對應的配置值,并按規定的數據類型完成轉換,即完成了XML配置向二進制配置的轉換。
二進制配置轉換為XML配置的過程與上述流程大同小異,區別在于:圖4、圖5中虛線框內的操作,前者為查找同名子節點,后者為創建同名子節點;圖5中最后的步驟,前者為將XML中的文本值轉換為二進制,而后者為將二進制寫入XML文件中。
以上隨機選擇了幾種輸配電在線監測設備進行方案驗證。首先,根據設備原有的二進制配置格式,制定與其一一對應的XML配置規則。然后,通過統一配置工具生成XML配置。最后,再通過統一配置工具生成新的二進制配置,與原二進制配置進行對比驗證。
經過比較,通過統一配置工具生成的二進制配置與原有的二進制配置內容完全一致,不需對設備進行任何更改,即可將生成的XML配置用于配置信息全生命周期管理。
作為W3C的推薦標準,XML勢必成為未來的主流配置格式。然而由于其特有的文本結構,對存儲空間和CPU運行速率要求較高。導致目前大量資源受限的輸配電在線監測設備仍然采用二進制配置,既不符合電網公司統一配置的規范要求,又存在管控漏洞。
基于XML生成二進制配置的管理方法,既利用了XML便于管理和信息交換的特性,又保證了電力物聯網設備可以快速、便捷的解析,解決了配置工具的維護難題。當配置內容較少時,可以直接使用XML配置;當配置內容較多時,采用本方法效果更為明顯。