于丰,薛明
(丰县供电公司,江苏丰县221700)
由于电力系统的复杂和庞大的特点,电力系统呈现出分区和分层的特点。随着电力系统的发展和电力体制改革的深化,为保证电网安全、优质和经济运行以及电力市场的有序运行,电力调度中心可能同时运行有多个应用系统,例如能量管理系统(EMS)、电能量计量系统、调度生产管理系统、配电管理系统(DMS)和电力市场技术支持系统等;每个系统中可能同时包括了多个应用,例如EMS包括数据采集与监控系统(SCADA),自动发电控制(AGC),网络分析和调度员仿真培训模拟(DTS)等应用。这些系统或应用存在如下需求:需要交换数据,共享信息,包括实时信息和非实时信息两种;来源于不同的开发商,需要异构和互操作;需要不断扩展新应用或系统,并降低接口的难度和成本。为此,IEC第57技术委员会的13工作组推出了主站侧各应用系统接口的系列标准IEC61970,以满足上述需求,其主要部分以CIM描述电网的公用信息、以CIS访问电网的公用信息,其理想目标是实现“即插即用”,当前目标是解决互联和异构问题[1-5]。
电力系统运行部门需要分析处理的信息数量大、类型广,有效便捷地管理这些数据对电力系统实时监控、分析计算、模拟仿真、信息管理等工作有着重要的意义。计算机图形技术在电力系统中的实际应用很好地解决了这个问题,在软件中运用图形表达信息并引导各种操作的方法代替传统的文本、表格式数据管理方式,使系统工作人员在形象、直观的图形化界面上工作而无需直接面对大量单调繁琐的数据,从而大大降低了数据处理工作的繁杂性与出错率,为系统安全稳定的运行起到了重要的作用。随着计算机技术的发展,应用图形技术来处理电力系统的计算、分析等任务方面起着越来越重要的作用[6]。通过研究IEC61970 CIM标准的特点,本文用面向对象语言实现了一个遵循CIM标准的图形系统。
面向对象方法是基于客观世界的对象模型化的软件开发方法。所谓对象是一个属性集(数据)及其操作(行为)的封装体。封装性、继承性和多态性是面向对象的3个基本特征[7]。根据面向对象的继承、封装和多态性的特点,把电力元件类中具有相同操作的方法在它们的基类中定义一个虚函数,而方法的实现在具体的电力元件类中实现,用基类的指针通过多态性的优点来调用不同类电力元件的动作。
类与对象所建模的正是电力系统中需要以一种对各种EMS应用通用的方法来描绘的东西。一个类是对现实世界中发现的一种对象的表示,例如在EMS中需要表示为整个电力系统模型的一部分的变压器、发电机或负荷。其他类型的对象包括诸如EMS应用需要处理、分析与储存的计划与量测。这些对象需要以一种通用的表示,以达到EMS-API标准的插入兼容和互操作的目的。在电力系统中具有惟一身份的一个具体对象则被建模成它所属类的一个实例。
UML是用于面向对象建模的一种通用语言。CIM是一个用UML语言建立的抽象模型,它表示了EMS信息模型中包含的电力企业的所有主要对象。这个模型包含这些对象的公共类和属性,以及它们之间的关系,规定了一个基本包集,这些包提供了电力企业内各应用之间共享的EMS信息的物理方面的逻辑视图。
CIM是一个抽象模型,它表示通常包含在EMS信息模型中的电力企业的所有主要对象。通过提供一种用对象类和属性及他们之间的关系来表示电力系统资源的标准方法,CIM方便实现不同卖方独立开发的EMS应用的集成、多个独立开发的完整EMS的集成,或EMS和其他涉及电力系统运行的不同方面的系统,例如发电或配电管理系统之间的集成。这是通过定义标准应用程序接口,这些应用或系统能够不依赖于信息的内部表示而访问公共数据和交换信息来实现的。
每一个CIM包的类图展示了该包中所有的类及它们的关系。在与其他包中的类存在关系时,这些类也展示出来,且标以表明其所属的包的符号。
还应该注意到,定义CIM是为了方便数据交换。正如标准中定义的那样,CIM实体除了缺省的生成、删除、更新和读出外,没有其他行为。为了使CIM尽可能地通用,非常希望对具体实现易于配置。一般来说,改变属性的值域比改变类定义更为容易。这些原则暗示CIM应当避免定义类的太多的具体子类型。相反,CIM定义一些通用的类,由属性来给定类型名。应用可以根据需要使用这一信息去实例化具体的对象类型。应用可能需要其他信息去定义有效类型与关系的集合。
类的属性可以表示对象的特征。CIM中的每一个类包含描述和识别该类的具体实例的属性。只有各EMS应用共同感兴趣的那些属性包括在类的描述中。
每一个属性都具有一个类型,它识别该属性是哪一种类型的属性。典型的属性类型有整型、浮点型、布尔型、字符串型及枚举型,它们被称为原始类型。然而,许多其他类型也被定义为CIM规范的一部分。例如,Capacitor Bank(电容器组)有一个具有Voltage(电压)类型的Maximum属性。数据类型的定义包含在Domain类中。
类之间的关系揭示了它们相互之间是怎样构造的。CIM模型的包集中的类以种种方式相互关联。各种类之间的关联主要有3种:普遍化,简单关联和聚集。
其中CIM模型中核心包、拓扑包和线包的相关类和继承层次框图如图1所示[1]。
其中,表示电力元件的类是线路包中的变压器、开关类元件、线路和负荷以及拓扑包中的母线模型。
由于CIM模型中的各个类的继承关系与面向对象设计方法中的类的继承关系完全一致,因此可以用面向对象的方法来在CIM的基础上进行电力系统图形系统的建模。在CIM的基础上,通过扩充数据和添加动作行为来设计一个面向对象的电力系统图形系统能够充分发挥CIM通用性的优点。需要完成的工作,是把在绘图中要实现的电力元件的各种动作添加到CIM中相应的类中,在相应的类中定义实现绘制电力图形元件所需要的几何参数。
电力系统图形类是对电力系统中具体电力元件如变压器,线路,母线,断路器等的抽象和概括,包括属性和方法。电力图形元件的属性包括图形属性和电器属性两种;方法包括图形元件的绘制,移动,缩放,旋转,以及图形属性和电气属性的确定和改正。
由图1可以看出,核心包中的设备类是除了母线外的多数电力元件的公共基类,电力图形元件类中的公共属性和方法应该在该类中定义。各个元件的几何公共属性包括显示状态的属性,是否选择的属性,图形范围属性,图形元件的连接状态,图元的惟一标示;公共方法包括图形绘制,位置移动,显示状态改变,旋转,缩放。类中的电气属性按照CIM模型中定义的规定,这样就实现了在CIM模型的基础上图形系统类的框架的建立。
电力系统图形系统的目的就是要实现对数据管理的图形化,增强人机交互的功能,能够实现对电气主接线进行快速方便的修改,设计和计算[6]。图形系统的界面上人机交互主要靠鼠标和键盘,在界面上设计了一个绘制图形元件的工具箱,可以选择不同的元件,设计了一个对图形元件进行动作操作的工具栏。
图形系统首先要对各种电力元件进行管理,采用Visual C++6.0中的数据模板类CPtrArray可以方便的对各种元件进行动态的添加和删除。定义一个图形元件类型和一个元件的指针,可以在对图元进行操作的时候快速定位[8]。
定义一个可以缩放大小的单元格,每一个元件的长宽都是整数单元格,每个元件的端口都定位在单元格的交点上,这就使图元之间的连接关系能正确的确定,也方便使用。通过调整单元格的大小,可以对整个图形进行缩放。
对电力元件参数的录入采用对话框的方式,本图形系统设计了一系列元件参数对话框,并编写了相应的代码。用户能够在网络接线图上方便迅速地进行数据处理。
只要双击接线图上某种类型的元件,应用程序便会弹出同该类元件相对应的元件参数对话框,用户通过填写对话框各项参数,即可完成对某一图元的建模,或对已建模图的参数修改。这种图形化的参数录入方式既直观又明了,提高了操作的可靠性,并且设置了简单的逻辑判断和计算,减少了录入参数过程中出现错误的概率。
对电压等级的表示方法,在绘制元件时采用不同的线条颜色来表示元件的电压,可以快速准确的对元件的电压状态进行判断。
电力系统中各种元件之间的连接关系是进行电力系统拓扑分析的基础。CIM中拓扑包中定义的连接点类Connectivity Node是一个抽象概念,是电力元件端子连接在一起时的一个概念的抽象,只是为了方便的表示元件之间的互相连接关系。本文中通过给这个连接点类添加一个适当的几何范围,可以在电气主接线图画完后自动生成元件和连接点之间的连接关系。连接点定义的几何范围是根据单元格的初始大小定义的,定义为单元格大小的三分之一,这样连接点的几何范围不会重复,并且因为每个电力图形元件的端子都在单元格上,确保了CIM模型中一个元件的端子只连接在一个连接点上。
电力系统中的电力元件按端子数可分为单端子元件和多端子元件。对于具有一个端子元件如电源,负荷等,定义一个状态变量表示元件的连接情况;对于多端子元件,对每一个端子都定义一个表示端子连接与否的状态变量,如果该端子连接于一个连接点上,则该端子的连接状态为真,否则为假;对元件本身定义一个表示整体连接的状态变量,如果元件所有的端子的连接状态都为真,则元件的连接状态为真,否则为假。采用栈数据结构和一个改进的深度优先的搜索算法来生成连接关系,每次都从栈顶元素开始搜索没有完成连接关系的元件,算法的实现步骤如下:(1)从电源元件集合中搜索没有连接的电源元件,根据电源的端子生成第一个连接点实例,并且让该连接点进栈;(2)搜索所有端子连接于第一个连接点实例的元件,对这些元件进行编号,并加入到连接点的连接集合中;(3)查看栈中连接点,如果栈已经空,转(5);否则,根据栈顶的连接点中连接的元件的没有连接的端子来生成下一个连接点实例,把它加入到栈顶,并且搜索端子连接于该连接点实例的所有元件;(4)对栈中的所有连接点进行连接检查,如果连接在该连接点的所有元件都完成连接,则该连接点出栈;检查完后转(3);(5)在所有的元件中查找还没有连接的元件,如果找到元件,则根据该元件的端子生成新的连接点,搜索端子连接于该点的所有元件,并入栈,转(3);如果所有的元件都已经连接,则连接关系就建立完成,转(6);(6)退出。
通过对CIM模型的分析和研究,在CIM的基础上建立了面向对象的电力系统图形平台。由于完全采用了CIM模型作为图形系统建模的框架,使用面向对象的技术进行编程,所以对系统的扩展十分方便;对CIM中拓扑包中定义的连接点类Connectivity Node的扩充使得不需要额外的操作,就能确立电力图形元件之间连接关系,对提高分析和计算的准确度有很大的帮助。
[1] IEC第57技术委员会.量管理系统应用程序接口(EMS-API).第302部分:公共信息模型(CIM)基础[M].北京:中国电力出版社,2005.
[2] 张慎明,黄海峰.基于IEC61970标准的电网调度自动化系统体系结构[J].电力系统自动化,2002,5(25):45-47.
[3] 钱锋,唐国庆,顾全.基于CIM标准和SVG的分散式图模合并[J].电力系统自动化,2007,31(5):84-89.
[4] 徐爱春,魏艳华,章坚民.基于CIM/SVG图模一体编辑器系统的设计及实现[J].继电器,2006,36(23):49-53.
[5] 郭创新,金成生.基于CIM的广域测量系统的信息模型[J].电力系统自动化学报,2007,19(1):34-38.
[6] 胡旦,王星华,段献忠.电力系统高级软件中的图形功能应用分析[J].继电器,2005,33(14):65-70.
[7] 吴炜熠.面向对象分析设计与编程[M].北京:清华大学出版社,2007.
[8] 曾祥辉,宋玮,邓健,等.面向对象的电力图形系统的分析和设计[J].继电器,2006,32(5):36-39.