徐 宁,刘金官,严国平
(江苏电力调度通信中心,江苏南京210024)
随着电网不断发展,电网设备检修次数的增加,调度运行人员在检修方式下进行继电保护定值校核的工作量也越来越大,由此产生了继电保护定值校核自动化的问题。国家电网公司在2007年1月召开的继电保护工作会议中指出:“对于正常运行的系统,要定期对保护整定计算方案的整体性和适应性进行评估。在特殊检修方式下,要随着电网运行方式变化,校核保护定值的配合问题”[1]。最近,江苏电力调度通信中心开发了一套适应于电网检修方式下保护定值灵敏度校验的系统,提高了检修方式下保护定值校验的效率。
保护定值灵敏度校验系统的主要用途之一是让继电保护运行人员根据未来几天电网运行方式的变化,快速方便地调整计算模型参数,进行全网各种类型的故障计算,再将计算结果与装置运行保护定值做比较,找出保护定值可能存在的隐患,最后做出定值调整策略。
根据系统的实现目标,分析继电保护定值灵敏度校验系统的核心数据是电网参数,因此该系统除了实现保护定值灵敏度校验的功能以外,其主要功能还应包括:网络参数维护、数据有效性检查、简单计算任务管理、简单故障分析、短路容量计算、保护灵敏度校验、等值线计算,并辅助有用户管理及计算结果查询。系统的数据流图如图1所示。
系统依据通用性、实用性、可靠性的设计准则,采用B/S结构,由1台调度服务器、1台数据服务器和若干台仿真计算服务器组成,其中调度服务器安装Web应用程序和计算任务调度程序,实现电网数据的维护、计算任务管理调度等工作。计算服务器上安装有电力系统仿真程序(PSS/E),负责计算用户提交的各种仿真计算任务。通过有效的任务管理,实现Web环境下PSS/E仿真应用的扩展,建立继电保护定值适应性校验平台,系统结构如图2所示。
图1 系统数据流
1976年PSS/E问世以来,已经广泛地应用在电力系统仿真、分析、优化等方面[2]。此外,PSS/E还向研究人员提供了二次开发的接口,允许研究人员通过二次开发接口开发脚本程序,以便扩充模型自动完成大批量的仿真计算以及结果分析[3]。本系统所有的仿真计算均通过调用PSS/E程序完成。
PSS/E提供了3种方式实现用户程序与PSS/E的接口,它们分别是:批处理方式、IPLAN语言以及Python语言。30.0以上版本的PSS/E程序支持Python开发语言,Python是一种跨平台的、面向对象的、通用的、开放的编程语言[4,5]。 Python的设计目标之一就是成为一种“胶水”语言,利用Python开发PSS/E的高级应用程序具有结构开放、开发周期短、易于扩展等优点,特别适合于开发大型、复杂的高级应用。
图2 系统结构
Python能直接调用PSS/E内部提供的丰富的API函数,PSS/E与Python之间的接口函数主要有以下几类[6]:(1)潮流计算API;(2)读取潮流计算结果 API;(3)最优潮流 API;(4)动态仿真 API;(5) 定义子系统 API;(6)绘图 API;(7)数据读取 API;(8)PV/QV/POLY打印API;(9)系统API。利用这些API函数,用户编制的程序可完全控制PSS/E,实现各种短路、潮流计算等仿真分析功能,并获取计算结果。相比其他任何程序设计语言,Python允许软件设计者更关注于问题本身而不是实现细节。
PSS/E程序提供一个可被Python程序调用的对象模块——Psspy。通过Psspy对象提供的属性和方法,Python程序就可以调用PSS/E程序内的各种计算功能并获得结果。
系统基于B/S结构,所有的仿真计算均在计算服务器上完成。虽然一次故障计算所花费的时间有限,通常几秒钟左右,但是,当有很多用户同时使用系统,或者做轮断组合故障计算时,系统需要做上百个故障计算,所花费的时间就相当可观。因此,为了解决计算速度问题,系统中的计算服务器可以设计为任意多台,并且引入了多机多任务协同管理机制,来协调多台计算服务器的工作。系统的故障计算功能是通过调用PSS/E开发的接口实现,通过Python与PSS/E之间的接口和利用Python嵌入式语言的优势,可以建立起WEB程序和PSS/E之间的桥梁。为了充分发挥多机协同计算在计算速度上的优势,将系统分为数据服务器、调度服务器和计算服务器,通过它们之间的协调完成计算功能。
这篇故事其实是在嘲讽那些质量低劣的画作,而陈译本非常恰当地从赞美词的角度传译出实实在在的鄙视和嘲讽,译文如下:
数据服务器:平台的数据服务器用于集中管理电网数据和实现平台计算功能所需要的临时数据。由于PSS/E本身没有数据库管理功能,它是通过读入的文本文件实现计算功能,会给用户带来数据管理上的不便。通过数据库技术可以实现电网参数的集中管理以提高办公自动化程度。在使用平台计算功能时,程序首先根据任务的类型,结合电网参数库和各个计算任务的参数表形成PSS/E的数据文件(如:raw文件、seq文件),PSS/E将这些文件读入后进行计算,完成后将计算结果写回到数据库中。为了实现数据管理和仿真计算功能,平台数据库分为两类,一类是电网参数数据库,用于存储电网参数,同时在仿真计算时利用参数数据库中的数据生成PSS/E的计算文件;另一类是参数数据库,包括用于储存临时停运设备的临时停运设备表,用于做电网等值计算时存放要进行等值的母线的等值母线表,用于存放保护整定值的电网整定表,用于存放仿真计算结果数据的结果数据表,用于存放用户提交的计算任务表等。
调度服务器:任务调度模块为Web应用程序和Python之间搭起联系的桥梁。当用户提交了某个计算任务,就会在计算任务表中增加一条任务信息。调度服务器监测计算任务表,如果出现新的任务,将生成与该任务对应的任务控制块,并将其加入任务队列。调度服务器从注册到本机的计算服务器中查找到空闲的计算服务器,将该计算任务提交给该计算服务器。计算任务完成后,从计算任务列表中删除该任务控制块,并将计算任务表中的任务状态更改为已执行。
调度服务器工作方式如图3所示。
图3 调度服务器工作方式
计算服务器:平台的计算功能是通过计算服务器实现的。PSS/E开放了与Python之间的接口,以故障计算为例,调用接口函数SCMU就可以计算出当前电网中指定位置的故障电流电压。Python程序通过其与PSS/E之间的接口,利用PSS/E的计算功能,实现电力系统仿真计算。通过计算服务器可以实现包括简单故障计算、节点等值计算、短路容量计算、保护灵敏度校验、计算文件下载等在内的一系列计算功能。当计算服务器接受到调度服务器提交的计算任务后,计算程序根据参数库中的电网参数形成PSS/E的计算文件。在使用PSS/E相关模块进行计算后,将计算结果写入结果数据库中。
采用CPU为P42.4GHz,内存512MB。以PSS/E的Sample网络数据为例,考虑校验母线154到母线155之间的线路154侧开关的保护灵敏度,校验范围为1,即停运母线154,155以及他们相邻母线上的所有设备时,通过计算得到24个停运设备。如果采用3台计算服务器时耗费的计算时间为25 s,采用单台计算服务器时耗费的计算时间为63 s。以江苏电网数据为例,考虑校验线路晋陵到魏村线路2Y83(母线30910~母线33580)晋陵侧开关的保护灵敏度,停运级别为1级,进行计算得到52个停运设备,如果采用3台计算服务器时耗费的计算时间为55 s,采用单台计算服务器时,耗费的计算时间为137 s。采用单机计算与采用三机计算所花费的时间比较见表1。
表1 单机计算与三机计算耗费时间比较
孤岛自动检查模块的主要功能是在使用PSS/E的网络故障分析计算或网络等值功能之前对当前电网模型进行检查,确保该模型是一个连通的拓扑结构,以免导致PSS/E计算时出现异常。
导致网络拓扑出现孤岛主要有2种情况:一是在建立网络模型的时候出现数据输入的错误;二是临时指定停用设备后导致原来连通的网络产生孤立节点。因此,对于网络拓扑检查不仅要能对完整网络进行拓扑检查,同时还要实现在指定临时停用设备时的网络拓扑检查。
分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。分治法解题的一般步骤如下。
(1)分解。将要解决的问题划分成若干规模较小的同类问题。
(2)求解。当子问题划分得足够小时,用较简单的方法解决。
(3)合并。按原问题的要求,将子问题的解逐层合并构成原问题的解。
分治算法可以有2种表示形式,即“自顶向下”的分解自治算法和“自底向上”的聚合分治算法[7]。本系统采用“自底向上”的聚合分治算法和集合划分的结合进行网络孤岛自动检查。首先以线路和变压器为单位把电网分为不可再分的若干最小母线集合,再观察2个集合是否存在共有的母线,如果存在共有母线,则将2个集合合并,如此反复,直到2个母线集合之间不存在共有的母线,得到的最终集合即网络拓扑的结果。
集合划分法:集合被定义为成员(即对象,或称元素)的1个群集。集合的成员可以是原子 (单元素),也可以是集合。集合划分的基本思想就是把同属性的元素归并到同一集合中去。算法的基本流程是依据待划分的元素与现有集合之间的关系来处理待划分的元素,管理集合。算法的最终输出结果是若干集合,每个集合中的元素具有某种相同属性。设现有N(N≥0)个集合,待划分的元素为X,其与现有集合的关系可以列举出以下3种情况。
以上列举的3种情况及由此对于待划分元素X的相应处理描述如下。
(1)待划分元素X在现有的集合i中命中,对于元素X不做处理;
(2)待划分的元素X满足同时属于m(1≤m≤N)个集合 Seti1,Seti2,…,Setim (i1<i2<i3<…<im)的条件。Seti1=X∪Seti11∪Seti2∪…∪Setim,删除集合 Seti2,…,Setim,N=N-m+1,文章称之为集合的归并。当m=1时,仅有Seti1=X∪Seti1,可以看成集合归并的特例。
(3)待划分的元素X与现有集合之间没有直接联系,动态创建1个集合,在该集合中加入元素X。N=N+I。
需要特别指出的是,当划分第一个元素的时候,尚未有任何集合存在(N=0),所以满足上文所述的第三种情况[8]。
文章介绍的保护定值灵敏度校验系统是1个基于B/S模式的系统。系统由1台调度服务器、1台数据服务器和若干台仿真计算服务器组成。系统利用PSS/E二次开发技术,通过Python与PSS/E之间的接口建立起Web程序和PSS/E之间的桥梁。为解决系统采用B/S模式后,集中计算可能出现计算速度下降的问题,本系统采用多机多任务协同管理机制,采用分布式计算系统的构架,可管理任意多台计算服务器并行进行仿真计算,大大提高计算速度。系统应用在江苏省电力调度通信中心,并取得了良好的效果。
[1]国家电网公司继电保护工作会议材料汇编[Z].2007.
[2]李广凯,李银庚.电力系统仿真软件综述[J].电气电子教学学报,2005,27(3):61-65.
[3]Power Technologies Inc(PTI).PSS/E-30 Program Application Guide Online Documentation[S].2004.
[4]HAMMOND M,ROBINSON A.Python Programming on Win32[M].O'Reilly,2000.
[5]罗 霄,任 勇,山秀明.基于Python的混合语言编程及其实现[J].计算机应用与软件,2004,21(12):17-18.
[6]Shaw Power Technologies,Inc.PSS/ETM30 PSS/E Application Program Interface[M/CD].2004.
[7]王海源.分治算法的两种思路和形式[J].上海师范大学学报(自然科学版),2003(1):39-43.
[8]冯 畅,万秋兰,陈歆技.集合划分方法在电力系统图模转换分析中的应用[J].电力系统自动化,2002,26(5):54-59.