基于XML的二进制配置管理在电力物联网的应用
2021-01-27郝后堂
廖 辉,李 辉,郝后堂,吴 磊
(南瑞集团有限公司(国网电力科学研究院有限公司),江苏 南京 211106)
0 引言
为了加强电网资产管理,进行故障重现分析,提升系统安全运行水平,需要对电力物联网设备的软硬件版本进行管控[1]。作为管控的重要一环,配置信息的全生命周期管理也越来越受到重视[2]。
在变电领域,IEC 61850标准采用可扩展标记语言(Extensible Markup Language XML)作为变电站配置描述语言[3],使得XML成为智能电子设备的主流配置。XML为纯文本文件,有良好的自我描述能力,但其有特定的语法结构[4],需要更大的空间来存储,消耗更多的时间来解析。
在输配电领域,在线监测设备数量庞大,形态不同、架构各异,物理空间跨度大,监测数据实时性要求低,单次通信数据量小;运行环境复杂,供电和通信问题突出[5]。考虑到经济性和节能因素,设备多采用低功耗微处理器作为核心处理单元,硬件资源有限[6-9],使用XML作为配置运行效率低下。现有配置多为二进制,配置项由厂家自定义,存储空间小,软件处理简单;但可读性差,不易维护,配置格式与配置工具耦合性强。虽然,目前国家电网有限公司通过通信协议对一些共有配置项进行了规范[10],但对设备专有配置项的管控仍依赖厂家,存在管理缺陷。
为了解决上述缺陷,提出了一种基于XML离线管理、以二进制配置供设备在线运行的管理方法。可避免对大量存量输配电在线监测设备进行改造,又能有效加强配置管理。
1 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配置和二进制配置可以互相转换。
2 基于XML的二进制配置管理方法
在传统的二进制配置方法中,首先需要开发专有的配置工具,将配置规则固化在工具中,然后采用配置工具生成二进制配置。而XML配置,仅需采用普通的文本编辑工具直接编辑文件即可。
利用XML和二进制配置的各自优点,以及两者可以互相转换的特点,提出了基于XML的二进制配置管理方法。如图2所示,通过文本编辑工具生成XML配置,将其与对应的XML配置规则一起导入统一配置工具,生成二进制配置,将二进制配置下装到电力物联网设备中供其运行。反之,在配置维护时,从设备中提取二进制配置,将之与对应的XML配置规则一起导入统一配置工具,生成XML配置,再通过文本编辑工具进行维护,或进一步开展配置信息的全生命周期管理。
图2 基于XML的二进制配置方法
该方法的特点是,二进制配置和XML配置存在一一对应关系;电力物联网设备仅需解析厂家自定义的二进制配置,配置内容包含国家或行业标准的必备配置项和厂家的设备专有配置项;XML配置则用于配置的标准化和全生命周期管理。
该方法的关键点是XML配置规则与统一配置工具的实现。XML配置规则是配置的一部分,不同的配置制定不同的配置规则。统一配置工具与具体的配置项内容无关,仅根据XML配置规则解析配置,实现XML配置和二进制配置一一对应的转换,可以适用于所有设备的不同配置。
3 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 数据类型定义
4 统一配置工具的实现
统一配置工具使用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文件中。
5 方案验证
以上随机选择了几种输配电在线监测设备进行方案验证。首先,根据设备原有的二进制配置格式,制定与其一一对应的XML配置规则。然后,通过统一配置工具生成XML配置。最后,再通过统一配置工具生成新的二进制配置,与原二进制配置进行对比验证。
经过比较,通过统一配置工具生成的二进制配置与原有的二进制配置内容完全一致,不需对设备进行任何更改,即可将生成的XML配置用于配置信息全生命周期管理。
6 结束语
作为W3C的推荐标准,XML势必成为未来的主流配置格式。然而由于其特有的文本结构,对存储空间和CPU运行速率要求较高。导致目前大量资源受限的输配电在线监测设备仍然采用二进制配置,既不符合电网公司统一配置的规范要求,又存在管控漏洞。
基于XML生成二进制配置的管理方法,既利用了XML便于管理和信息交换的特性,又保证了电力物联网设备可以快速、便捷的解析,解决了配置工具的维护难题。当配置内容较少时,可以直接使用XML配置;当配置内容较多时,采用本方法效果更为明显。