基于MMS-Lite SCL文件解析功能的改进

2016-12-15 10:11沈石兰徐强超邝国安邹三红
电气技术 2016年12期
关键词:链表数据结构解析

沈石兰 徐强超 邝国安 邹三红 刘 雍

(广州供电局有限公司,广州 510060)

基于MMS-Lite SCL文件解析功能的改进

沈石兰 徐强超 邝国安 邹三红 刘 雍

(广州供电局有限公司,广州 510060)

本文介绍了IEC 61850中SCL文件的基本结构;分析了MMS-Lite中SCL解析的数据结构以及实现过程;针对MMS-Lite在解析中所生成的信息树形结构中缺乏IED设备及GOOSE等信息的弱点,对MMS-Lite的源代码进行改进,得到更加完整的解析信息量,有利于更全面了解变电站状态。

MMS_lite;SCL文件;解析功能;改进

变电站配置语言SCL是IEC 61850采用的变电站专用描述语言,它采用基于XML1.0的可扩展标记语言,描述了变电站IED设备及变电站网络通信拓扑结构的配置,用于数字化变电站实施的不同阶段传递模型信息,其最终的目的是为了在不同制造厂商的设备配置工具以及系统配置工具间交换系统的配置信息,实现互操作[1-3]。XML文件是一种简单的文本格式,采用 XML文件描述变电站配置可以使得语义与设备结构能很好结合,使用SCL能够使系统维护升级、智能电子器件控制变得更为简单易行。变电站中的各种设备统一使用IEC 61850,可以避免协议转换的开销,减少数据集成和维护的成本。

IEC 61850将工程实施不同阶段符合SCL语法规则的文件进行了分类,包括SSD(系统规范描述文件)、ICD(智能电子设备能力描述文件)、SCD(变电站配置描述文件)、CID(配置过的智能电子设备描述文件文件),IID(实例化的智能电子设备描述文件),SED(系统交换描述文件)。实现 IEC 61850规定的配置工具,无论是IED配置工具还是系统配置工具,都需要对SCL文件进行正确解析。

当前世界主要电力自动化厂商都使用SISCO公司的MMS-Lite实现IEC 61850,MMS-Lite对应的嵌入式应用版本是 MMS-EASE Lite。MMS-EASE Lite以ANSI C源代码的形式提供,不依赖于具体编译器和操作系统。它提供了基本的协议处理框架和相关的API接口以及IEC 61850建模功能[4-5]。

本文对MMS-lite中SCL文件解析使用的数据结构和过程进行了分析。为了建立SCL文件中IED设备的连接关系,对MMS-lite源代码进行了相应的修改,使所解析出来的信息量更加完整,有利于全面了解变电站的状态。

1 SCL文件的基本结构

符合SCL语法规则的文件将各节点以树形结构组织起来,完整的文件由 Header、Substation、Communication、IED、DataTypeTemplates五大部分组成[6]。其中Header为信息头,用来存放版本、修改信息及名称映射信息,Substation节点用来描述变电站的功能结构、主元件,电气连接,电压等级、间隔层、电力设备节点等,IED部分描述了所有智能电子设备,说明了所包含的逻辑装置、逻辑节点、数据对象和智能电子设备所具备的通信服务能力等相关设置。DataTypeTemplates为数据类型模板,定义了在文件中出现的逻辑节点的实例,包括类型及该逻辑节点包含的数据对象DO等,Communication节点定义了逻辑节点之间通过逻辑总线和IED接入地安置点的联系方式。SCL包含的4个部分如图1所示。

图1 SCL文件结构

SCL文件中可存在0到无穷个Substation节点,用来描述数字化变电一次系统模型,可包含多个变电站的信息。可包含0到无穷个Communication节点,用来描述各个IED的SV控制块和GOOSE控制块的地址信息,IED部分用来描述各个智能电子设备的具体内容,SV及GOOSE的发布和订阅都在IED部分进行描述。DataTypeTemplates部分用来定义逻辑节点类型 LNodeType、数据对象类型DOType、数据属性类型DAType等数据类型模板。SCD文件中的虚连接信息位于 IED section 每个逻辑设备LD的Inputs节点下,每条虚连接包括:接收装置、输入虚端子描述、输入虚端子引用、设计描述、输出虚端子描述、输出虚端子引用、发送装置等信息。

2 MMS-Lite解析SCL关键数据结构

MMS-Lite软件包在解析SCL文件时规定所解析的SCL文件必须包含至少一个IED节点,在IED节点下至少包含一个AccessPoint节点。IED的name属性必须匹配 iedName参数,同时 AccessPoint的name属性必须匹配accessPointName参数。

为了了解SCL文件中的各部分的IED设备的连接信息,需要修改SCL文件中的相关数据结构,在MMS-Lite中使用了sclInfo结构体来存储从SCL文件解析出的相关信息。SclInfo结构体如下所示:

从此结构体可以看出,结构体中的多数变量都是作为所对应的SCL语言节点部分的链表头指针,系统的SCL_INFO结构体对应IEC 61850规约包含了 Header的结构体,Header结构体包含了 id,version,revisiontoolID等head的内容,subnetHead结构体指针对应IEC 61850规约中的communication节点、LnTypeHead对应了IED节点、doTypeHead对应了IED节点下的相关设备的控制块等数据。利用 MMS-Lite进行 SCL文件解析的软件可以通过SCL_INFO结构体找到相应的根节点,通过这些链表指针可以获取系统中的Communication,IED设备及系统中的DO、DI信息。

在 subnetHead、LnTypeHead、doTypeHead、enumTypeHead、ldHead除了包含了name等这些和节点相关的变量外,均包含了next和prev两个指针,对每一个树形结构体均可形成相应节点的双向链表,在后续的程序中可以通过SCL_INFO指针访问不同的节点,以及不同节点下的各种设置信息。

为了获取系统中的 IED设备的相关信息,在SCL_INFO结构体中间加入了SCL_IED* iedHead指针用来获取IED设备信息,从而为分析系统的虚端子连接情况作准备。

从以上分析可知,系统中的数据结构包含了SCL文件的对应的内容,同时也与SCL文件中的相关的设备联系在一起。系统中的数据结构联系如图2所示。

除了SCL_INFO结构体外,MMS-Lite使用了另外一个结构体用来保存SCL解析过程中的数据。

此结构体可以针对系统中的IED设备的相关信息进行保存。

图2 SCL文件解析数据结构联系图

3 MMS-Lite解析SCL流程

MMS_lite支持使用EXPAT解析SCL文件,也支持自定义的 SCL文件解析方式,本文使用的是MMS_lite自定义的SCL文件解析。

在MMS-Lite软件包以scl_parse函数作为入口点对SCD文件进行解析。scl_parse函数改进后的原型如下所示:

ST_RET scl_parse (ST_CHAR *xmlFileName,SCL_INFO *sclInfo,int (*parse_prog)(int pos));

其中 xmlFileName参数用来指向需要解析的SCL文件,sclInfo作为以上所分析的SCL_INFO的结构体指针,parse_prog作为函数指针可以用来在MMS-Lite在解析的过程调用用户定义的函数来完成用户指定的功能。scl_parse函数实际调用了sx_parseExx_mt函数来完成 SCL文件的解析。SX_parseExx_mt函数调用 sx_parse_mt函数进行SCL文件的解析。系统解析SCL文件的流程图如图3所示。

图3 MMS-Lite解析流程图

从以上流程图中可知,MMS-Lite在解析 SCL文件的快速性在于解析的过程中将SCL文件全部读入到系统的内存中。

MMS_Lite软件包解析XML文件的核心部分在sx_rip_xml函数中实现,此函数通过循环来解析整个SCL文件的内容,在解析的过程中按照了XML文件的基本格式,以“<、!--、-->、![CDATA[”等标识来判断当前的文件解析的节点并且根据“>”符号来判断数据的结束以及节点内容的嵌套,通过“<”符号与“>”符号之间的匹配来判断节点内容是否嵌套完毕。MMS_Lite软件包中的sx_rip_xml函数的流程图如图4所示。为了简单的描述此函数的处理过程,本流程图省略了MMS_Lite软件中循环处理过程及相关的出错处理,在MMS_Lite中可通过相关的出错处理来判断SCL文件的完整性。

图4 解析函数流程图

4 MMS_lite源代码改进

MMS_lite在解析 SCL文件的过程中会解析出大部分的信息,为系统的信息建立了树形的结构。但是此树形结构并没有包含IED设备及GOOSE信息发送和接收端的信息,为了建立虚端子的连接情况需要补充某些节点结构缺少的参数,例如SCL_GSE的MinTime和MaxTime等参数,还需要补充缺少的节点结构,如SCL_PYHCNN,SCL_SDI,SCL_SDO等节点,因此结构体中需要增加scl_ied、scl_ap、scl_doi和scl_extref这4个单向链表的指针,通过这4个单项链表直接的关系就可以得出系统中的虚端子的连接情况。比对scl_ied链表的name及scl_ap链表中的name、LD的实例名inst和控制块的name找到与控制块匹配的SMV/GSE;通过比对控制块的datSet属性和数据集DataSet的name找到与控制块匹配的DataSet。

MMS-Lite原始代码中同一个LN节点下的所有DAI以扁平化方式存储在一个大的 SCL_DAI链表中,这样的存储结构与 SCD文件原始结构并不一致,不符合 SCD的原始结构,因此需要新增SCL_SDI和 SCL_DOI结构,这两个结构下都有SCL_DAI链表,另外SCL_DOI和SCL_SDI都包含一个SCL_SDI链表,通过这两个链表可以让解析的数据和SCD原始结构一致。

SCL_SDI数据结构如下:

将以上两个数据结构加入到SCL_LN数据结构中,为解析的数据预留空间。在新增SCD文件需要的数据节点后还需要对新增节点结构添加解析函数同时在父节点的子元素表中添加新增节点的解析参数。以SCL_PHYCNN为例,需要在父节点的的子元素表中新增以下解析参数。

若新增节点中包含子元素,还需添加节点的子元素表。

最后利用系统中解析出的 sclDecCtrl数据结构来填充新的数据结构,对于SCL_PHYCNN需要增加_PhysConn_SEFun函数进行数据填充。填充的函数如下。

5 结论

IEC 61850规定的SCL文件是基于XML的文件,变电站中的配置工具无论是系统配置工具还是IED配置工具,都不可避免的要对SCL文件进行解析。本文针对MMS-lite软件对SCL文件的解析中的数据结构进行了分析,同时为了建立SCL文件中的IED设备的连接关系,增加了部分数据结构,实现了MMS-Lite软件的改进。

[1]张沛超,高翔.智能变电站[J].电气技术,2010(8): 4-10.

[2]祁忠,笃竣,张志学,等.IEC 61850 SCL配置工具的研究与实现[J].电力系统保护与控制,2009,37(7): 76-81.

[3]何磊,田霞.IEC 61850SCL配置文件测试工具的设计与实现[J].电力自动化设备,2012,32(4): 134-137.

[4]MMS-EASE Reference Manual,System Integration Specialists Company,Inc.

[5]MMS-EASE Lite Reference Manual,System Integration Specialists Company,Inc.

[6]刘希峰,韩振峰,李颖.GOOSE报文与SCD文件间对应关系的应用研究[J].电力系统保护与控制,2013,41(24): 95-100.

Improvement of the SCL File Prase Function based on MMS-Lite

Shen Shilan Xu Qiangchao Kuang Guoan Zou Sanhong Liu Yong
(Guangzhou Power Supply Co.,Ltd,Guangzhou 510060)

This paper introduces the basic structure of SCL file.The data structure and implementation process of MMS-Lite for SCL file parse are analysised.As the classical tree structure of MMS-Lite paraser lacks the information of IED equipments and GOOSE,the authors modified the source codes of MMS-Lite to get such information.Finally a more complete information structure was gained,and it is more helpful for showing of the state of the substation.

MMS-Lite; SCL file; parse function; improvement

南方电网科技资助项目(No.K-GZM2014-120)

沈石兰(1985-),女,广西桂平人,工程师,主要从事继电保护及自动化工作。

猜你喜欢
链表数据结构解析
三角函数解析式中ω的几种求法
数据结构线上线下混合教学模式探讨
为什么会有“数据结构”?
基于二进制链表的粗糙集属性约简
跟麦咭学编程
睡梦解析仪
基于MTF规则的非阻塞自组织链表
电竞初解析
C++的基于函数模板实现单向链表
对称巧用解析妙解