论文部分内容阅读
摘要: 下文主要结合笔者多年的工作实践经验,对变电站配置描述语言SCL进行了阐述,解析了SCD 文件的结构,利用TinyXML 解析 SCD 文件,仅供同行参阅。
关键词: IEC 61850; 智能变电站; SCD; TinyXML; 解析
中图分类号:TM411+.4 文献标识码:A 文章编号:
引言
伴随着我国现代社会经济与科技的不断发展于进步,我国的智能电网行业也在快速的发展着。然而智能变电站是智能电网的重要基础和支撑,作为能反映智能变电站系统配置信息的变电站配置文件(SCD) ,其描述了变电站内所有智能电子设备(IED) 的实例配置和通信参数、IED 之间的通信配置以及变电站一次系统结构等信息,而对SCD 文件的解析是 SCD 文件应用的基础。本文首先介绍智能变电站配置描述语言,分析 SCD 文件结构,并详细介绍对 SCD 文件的解析过程。该解析功能主要提取 GOOSE 的配置信息,是智能变电站网络分析的必备模块,可应用于 GOOSE 报文和 SMV 报文的解析。
1 变电站配置描述语言 SCL
IEC 61850 标准的第 6 部分定义了变电站配置描述语言,其用于描述 IED 功能、变电站结构和变电站通信网络拓扑结构,以实现设备自描述、设备在线配置及设备间的互操作。SCL语言由 XML语言发展而来。XML 是一种文本文档的元标记语言,该语言的标记不固定,可建立任何需要的标记,具有很好的可扩展性。IEC61850 标准根据变电站的实际情况固定标记,形成一种专门用于描述变电站配置的标记语言,即 SCL语言。因此,可以說 SCL 语言是 XML 语言在电力系统的应用。
2 SCD 文件结构分析及生成
2.1 SCD文件结构分析
SCD 文件作为 SCL 描述文件的一种文件类型,包含了 SCL 语言所定义的 3 个对象模型(LLN0、LPHD、LN)。SCD 文件包含 5 个主要元素: Header( 信息头) 、Substation( 变电站描述) 、Commu-nication( 通信系统描述) 、IED( 智能电子设备描述) 、 和 DataTypeTemplates( 数据类型模板) 。
笔者以实际工程(湖北孝感220kV熊家嘴变)为例:一个完整的SCD文件的树形结构
Header 包含 SCL 文件的版本号及其命名空间的映射信息; Substation 主要描述变电站的功能结构,标识一次设备及其之间的电气连接关系;IED 分别描述变电站各个 IED 的配置及其功能,包含访问点、逻辑设备、逻辑节点、数据对象等信息;Communication 通过逻辑总线和 IED 访问点来描述通信网络的连接关系; DataTypeTemplates 定义了文件的逻辑节点类型以及该逻辑节点所包含的数据对象和数据属性。
2.2SCD文件生成
一个具体的工程中,IED有多个,在初始配置SCD文件时,需要对全站的IED做具体的IEDNAME、通讯地址、组播等进行分配。
如图示意:
包括IED的命名、站内描述、厂家代码、设备型号、站控层通讯、过程层通讯等信息。
系统集成商对站内IED设备按双数表格分配后,结合工程中设计院提供的虚端子连接图(含GOOSE及SV虚端子连接)。可使用系统集成商提供的工具(如我公司系统配置工具为SCDConfig)来生成全站SCD文件。生成SCD文件后提供给各IED设备厂家导出所需的cid文件,实现全站通讯。
对智能站,SCD文件生成的工作重点在于GOOSE、SV虚端子的关联;限于篇幅,不具体介绍。
3 SCD 文件的解析实现
在读取文件的软件实现上,只需调用 TinyXML提供的 Loadfile( ) 函数即可读取 SCD 文件,并在内存中形成 DOM 树。在分析文件过程中,生成新的结构树需预先定义树的数据结构。该数据结构如图 3(图?) 所示,其中Substation、IEDNode、LDInstNode、LN0Node、Smvcb-Node、GocbNode、DatasetNode 和 FCDA 均为定义的类。Substation 类是新的结构树的根节点,对应于SCD 文件的 Substation 元素; IEDNode 对应于 SCD文件的 IED 元素; LDInstNode 对应于 SCD 文件的LDevice 元素; LNONode 类对应于 SCD 文件的 LN0元素; SmvcbNode 类对应于 SCD 文件的 SampledVal-ueControl 和 SMV 元素,包含 7 个属性,用于储存与采样控制块及控制块网络设置的相关配置信息;GocbNode 类对应于 SCD 文件的 GSEControl 和 GSE元素,包含 6 个属性,用于储存与 GOOSE 控制块及控制块的网络设置的相关配置信息; DatasetNode 类对应于 SCD 文件的 DataSet 元素,包含 2 个属性,其中 numDataset 用于记录数据集的个数,FCDAList 则是 FCDA 类的列表; FCDA 类对应于 SCD 文件的FCDA 元素,用于储存对应数据集成员的中文描述;IEDMap 是 Substation 类的属性之一,是以 iedName为索引、以 IEDNode Ptr 为对象的映射,其他情况与此类似; IEDNodePtr是指向 IEDNode 类的指针,其他情况与此类似。
生成新的结构树是一个递归的过程,需遍历由TinyXML 在内存中形成的 DOM 树,从中提取所需的配置信息,填入新的结构树的对应属性,从而生成一棵新的满足要求的结构树。由于篇幅所限,本文给出了 GOOSE 配置的遍历过程,而 SMV 配置的遍历过程与此类似。遍历过程如下:
( 1) 从根节点 SCL 元素进入 Communication 元素,扫描含 GSE 和 SMV 元素的接入点的名称,以确定 GOOSE 网和 SMV 网的接入点名称( 为了在第 2步过滤 IED 中接入 MMS 网的接入点,本文将不涉及提取 MMS 网的配置信息) 。设 GOOSE 网的接入点为 G1,SMV 网的接入点为 S1,进入第一个 IED 元素,若不存在,退出程序; 若存在,则进入第 2 步。
( 2) 建立对应的 iedNode,并进入该元素的第一个 AccessPoint 子元素,提取 name 属性。若 name 属性既不是 G1 也不是 S1,则说明该接入点既非GOOSE 网也非 SMV 网,则进入第 11 步。
( 3) 若 name 属性是 G1,则说明该接入点是GOOSE 网。进入 Server 元素,若不存在,则进入第 11步; 若存在,则进入 LDevice 子元素,再进入第4 步。
( 4) 建立对应的 ldNode,再进入 LN0 元素。建立对应的 ln0Node,进入 LN0 元素的第一个 DataSet子元素,若不存在,则进入第 10 步; 若存在,进入第5 步。
( 5) 建立对应的 datasetNode,并进入该元素的第一个 FCDA 子元素,提取 lnClass、lnInst、prefix、doName、daName 属性。根据这些信息,获取 FCDA元素对应的 LN 元素; 获取 LN 元素的 DOI 子元素;获取 DOI 元素下属性 name = dU 的 DAI 子元素; 获取 DAI 元素的 Val 子元素的文本,再存入对应的FCDA 类的 desc 属性。
( 6) 进入下一个 FCDA 子元素,重复第 5 步,直到将数据集的全部 FCDA 元素处理完毕。
( 7) 进入下一个 DataSet 元素,若存在,则重复第 5、6 步; 若不存在,则进入第 8 步。
( 8) 获取 LN0 元素的第一个 GSEControl 子元素,若不存在,则进入第 10 步; 若存在,则建立对应的 gocbNode,获取 name、desc、appID、confRev 和 dat-Set 的 5 个属性存入 gocbNode 的对应属性。
( 9) 获取下一个 GSEControl 子元素,若存在,则重复第 8 步; 若不存在,则进入第 10 步。
( 10) 获取下一个 LDevice 元素,若存在,则重复第 4—9 步; 若不存在,则进入第 11 步。
( 11) 获取下一个 AccessPoint 元素,并重复第3—10 步; 若不存在,则进入第 12 步。
( 12) 获取下一个 IED,若存在,则重复第 2—11步; 若不存在,则进入第 13 步。
( 13) 进入 Communication 元素,获取第一个type 属性为 GOOSE 的 SubNetwork 子元素,若不存在,则退出程序; 若存在,进入第 14 步。
( 14) 获取第一个 ConnectedAP 元素,进入第15 步。
( 15) 提取 ConnectedAP 元素的 iedName 属性,进入第 16 步。
( 16) 获取第一个 GSE 子元素,并提取 GSE 元素的 cbName 和 ldInst 屬性; 获取 Address 子元素,并提取该子元素下属性 type = MAC-Address 的 P 元素的文本,以及属性 type = APPID 的 P 元素的文本; 提取 GSE 元素下 MaxTime 元素的文本; 根据提取的iedName、cbName 和 ldInst 属性,查找 GocbNode,并将提取的信息填入 GocbNode 的对应属性。
( 17) 获取下一个 GSE 子元素,若存在,则重复第 16 步; 若不存在,则获取下一个 ConnectedAP 元素。若存在,则重复第 15、16 步; 若不存在,则进入第 18 步。
( 18) 获取下一个 type 属性为 GOOSE 的 Sub-Network 子元素,若存在,则重复第 14—17 步; 若不存在,则退出程序,GOOSE 配置遍历完成。
4 结论
综上所述,该功能应用于智能变电站网络分析与诊断系统的开发,通过对智能变电站 GOOSE 报文和 SMV 报文中数据集成员的解析,使数据集各成员的作用和意义变得直观并易于理解,省去了查找 SCD 文件的过程,提高了工作的效率,取得了良好的效果。
关键词: IEC 61850; 智能变电站; SCD; TinyXML; 解析
中图分类号:TM411+.4 文献标识码:A 文章编号:
引言
伴随着我国现代社会经济与科技的不断发展于进步,我国的智能电网行业也在快速的发展着。然而智能变电站是智能电网的重要基础和支撑,作为能反映智能变电站系统配置信息的变电站配置文件(SCD) ,其描述了变电站内所有智能电子设备(IED) 的实例配置和通信参数、IED 之间的通信配置以及变电站一次系统结构等信息,而对SCD 文件的解析是 SCD 文件应用的基础。本文首先介绍智能变电站配置描述语言,分析 SCD 文件结构,并详细介绍对 SCD 文件的解析过程。该解析功能主要提取 GOOSE 的配置信息,是智能变电站网络分析的必备模块,可应用于 GOOSE 报文和 SMV 报文的解析。
1 变电站配置描述语言 SCL
IEC 61850 标准的第 6 部分定义了变电站配置描述语言,其用于描述 IED 功能、变电站结构和变电站通信网络拓扑结构,以实现设备自描述、设备在线配置及设备间的互操作。SCL语言由 XML语言发展而来。XML 是一种文本文档的元标记语言,该语言的标记不固定,可建立任何需要的标记,具有很好的可扩展性。IEC61850 标准根据变电站的实际情况固定标记,形成一种专门用于描述变电站配置的标记语言,即 SCL语言。因此,可以說 SCL 语言是 XML 语言在电力系统的应用。
2 SCD 文件结构分析及生成
2.1 SCD文件结构分析
SCD 文件作为 SCL 描述文件的一种文件类型,包含了 SCL 语言所定义的 3 个对象模型(LLN0、LPHD、LN)。SCD 文件包含 5 个主要元素: Header( 信息头) 、Substation( 变电站描述) 、Commu-nication( 通信系统描述) 、IED( 智能电子设备描述) 、 和 DataTypeTemplates( 数据类型模板) 。
笔者以实际工程(湖北孝感220kV熊家嘴变)为例:一个完整的SCD文件的树形结构
Header 包含 SCL 文件的版本号及其命名空间的映射信息; Substation 主要描述变电站的功能结构,标识一次设备及其之间的电气连接关系;IED 分别描述变电站各个 IED 的配置及其功能,包含访问点、逻辑设备、逻辑节点、数据对象等信息;Communication 通过逻辑总线和 IED 访问点来描述通信网络的连接关系; DataTypeTemplates 定义了文件的逻辑节点类型以及该逻辑节点所包含的数据对象和数据属性。
2.2SCD文件生成
一个具体的工程中,IED有多个,在初始配置SCD文件时,需要对全站的IED做具体的IEDNAME、通讯地址、组播等进行分配。
如图示意:
包括IED的命名、站内描述、厂家代码、设备型号、站控层通讯、过程层通讯等信息。
系统集成商对站内IED设备按双数表格分配后,结合工程中设计院提供的虚端子连接图(含GOOSE及SV虚端子连接)。可使用系统集成商提供的工具(如我公司系统配置工具为SCDConfig)来生成全站SCD文件。生成SCD文件后提供给各IED设备厂家导出所需的cid文件,实现全站通讯。
对智能站,SCD文件生成的工作重点在于GOOSE、SV虚端子的关联;限于篇幅,不具体介绍。
3 SCD 文件的解析实现
在读取文件的软件实现上,只需调用 TinyXML提供的 Loadfile( ) 函数即可读取 SCD 文件,并在内存中形成 DOM 树。在分析文件过程中,生成新的结构树需预先定义树的数据结构。该数据结构如图 3(图?) 所示,其中Substation、IEDNode、LDInstNode、LN0Node、Smvcb-Node、GocbNode、DatasetNode 和 FCDA 均为定义的类。Substation 类是新的结构树的根节点,对应于SCD 文件的 Substation 元素; IEDNode 对应于 SCD文件的 IED 元素; LDInstNode 对应于 SCD 文件的LDevice 元素; LNONode 类对应于 SCD 文件的 LN0元素; SmvcbNode 类对应于 SCD 文件的 SampledVal-ueControl 和 SMV 元素,包含 7 个属性,用于储存与采样控制块及控制块网络设置的相关配置信息;GocbNode 类对应于 SCD 文件的 GSEControl 和 GSE元素,包含 6 个属性,用于储存与 GOOSE 控制块及控制块的网络设置的相关配置信息; DatasetNode 类对应于 SCD 文件的 DataSet 元素,包含 2 个属性,其中 numDataset 用于记录数据集的个数,FCDAList 则是 FCDA 类的列表; FCDA 类对应于 SCD 文件的FCDA 元素,用于储存对应数据集成员的中文描述;IEDMap 是 Substation 类的属性之一,是以 iedName为索引、以 IEDNode Ptr 为对象的映射,其他情况与此类似; IEDNodePtr是指向 IEDNode 类的指针,其他情况与此类似。
生成新的结构树是一个递归的过程,需遍历由TinyXML 在内存中形成的 DOM 树,从中提取所需的配置信息,填入新的结构树的对应属性,从而生成一棵新的满足要求的结构树。由于篇幅所限,本文给出了 GOOSE 配置的遍历过程,而 SMV 配置的遍历过程与此类似。遍历过程如下:
( 1) 从根节点 SCL 元素进入 Communication 元素,扫描含 GSE 和 SMV 元素的接入点的名称,以确定 GOOSE 网和 SMV 网的接入点名称( 为了在第 2步过滤 IED 中接入 MMS 网的接入点,本文将不涉及提取 MMS 网的配置信息) 。设 GOOSE 网的接入点为 G1,SMV 网的接入点为 S1,进入第一个 IED 元素,若不存在,退出程序; 若存在,则进入第 2 步。
( 2) 建立对应的 iedNode,并进入该元素的第一个 AccessPoint 子元素,提取 name 属性。若 name 属性既不是 G1 也不是 S1,则说明该接入点既非GOOSE 网也非 SMV 网,则进入第 11 步。
( 3) 若 name 属性是 G1,则说明该接入点是GOOSE 网。进入 Server 元素,若不存在,则进入第 11步; 若存在,则进入 LDevice 子元素,再进入第4 步。
( 4) 建立对应的 ldNode,再进入 LN0 元素。建立对应的 ln0Node,进入 LN0 元素的第一个 DataSet子元素,若不存在,则进入第 10 步; 若存在,进入第5 步。
( 5) 建立对应的 datasetNode,并进入该元素的第一个 FCDA 子元素,提取 lnClass、lnInst、prefix、doName、daName 属性。根据这些信息,获取 FCDA元素对应的 LN 元素; 获取 LN 元素的 DOI 子元素;获取 DOI 元素下属性 name = dU 的 DAI 子元素; 获取 DAI 元素的 Val 子元素的文本,再存入对应的FCDA 类的 desc 属性。
( 6) 进入下一个 FCDA 子元素,重复第 5 步,直到将数据集的全部 FCDA 元素处理完毕。
( 7) 进入下一个 DataSet 元素,若存在,则重复第 5、6 步; 若不存在,则进入第 8 步。
( 8) 获取 LN0 元素的第一个 GSEControl 子元素,若不存在,则进入第 10 步; 若存在,则建立对应的 gocbNode,获取 name、desc、appID、confRev 和 dat-Set 的 5 个属性存入 gocbNode 的对应属性。
( 9) 获取下一个 GSEControl 子元素,若存在,则重复第 8 步; 若不存在,则进入第 10 步。
( 10) 获取下一个 LDevice 元素,若存在,则重复第 4—9 步; 若不存在,则进入第 11 步。
( 11) 获取下一个 AccessPoint 元素,并重复第3—10 步; 若不存在,则进入第 12 步。
( 12) 获取下一个 IED,若存在,则重复第 2—11步; 若不存在,则进入第 13 步。
( 13) 进入 Communication 元素,获取第一个type 属性为 GOOSE 的 SubNetwork 子元素,若不存在,则退出程序; 若存在,进入第 14 步。
( 14) 获取第一个 ConnectedAP 元素,进入第15 步。
( 15) 提取 ConnectedAP 元素的 iedName 属性,进入第 16 步。
( 16) 获取第一个 GSE 子元素,并提取 GSE 元素的 cbName 和 ldInst 屬性; 获取 Address 子元素,并提取该子元素下属性 type = MAC-Address 的 P 元素的文本,以及属性 type = APPID 的 P 元素的文本; 提取 GSE 元素下 MaxTime 元素的文本; 根据提取的iedName、cbName 和 ldInst 属性,查找 GocbNode,并将提取的信息填入 GocbNode 的对应属性。
( 17) 获取下一个 GSE 子元素,若存在,则重复第 16 步; 若不存在,则获取下一个 ConnectedAP 元素。若存在,则重复第 15、16 步; 若不存在,则进入第 18 步。
( 18) 获取下一个 type 属性为 GOOSE 的 Sub-Network 子元素,若存在,则重复第 14—17 步; 若不存在,则退出程序,GOOSE 配置遍历完成。
4 结论
综上所述,该功能应用于智能变电站网络分析与诊断系统的开发,通过对智能变电站 GOOSE 报文和 SMV 报文中数据集成员的解析,使数据集各成员的作用和意义变得直观并易于理解,省去了查找 SCD 文件的过程,提高了工作的效率,取得了良好的效果。