近年来, 随着调度自动化系统从文本信息到图库一体化的升级, 电力软件行业发展迅速, 以图形可视化建模为特点的图模库一体化技术得到广泛的应用, 作为调度自动化系统的支撑性平台图形系统则在系统化建模方向不断完善, 各种软件开发技术在系统应用实现上层出不穷[1]。Qt作为强大的GUI开发工具, 是开放的C++框架, 它具有完善的、系统化的图形交互类库, 在2D绘图及3D渲染方面具有优越的应用特性, 非常适用于图形化系统的研发。基于此, 本文利用Qt开发工具开发电力图形系统的图模平台。
1 基于CIM的系统建模
随着电力自动化系统向信息标准化发展, 系统建模要求对系统结构及设备的模型描述标准化。IEC 61970 CIM (Common Information Model) [2]是对电力系统的标准化建模描述方法, 它描述了电力系统的层次模型、变压器模型、发电模型、线路模型、负荷模型、拓扑模型及量测模型等。它把电力系统模型高度聚合成几个包 (package) , 每个包又内含不定数量的类, 类间的关系延用UML的描述方法, 包括聚合、普遍化及关联三种作用关系。
电力系统的结构模型可以通过类间的作用关系体现出来。通过普遍化关系, 断路器 (Breaker) 继承于开关类 (Switch) , 开关类又继承于导电设备类 (conductingEquipmen t) , 导电设备类继承于设备类 (Equipment) , 变压器类 (Transformer) 也聚集于设备类 (E quipment) , 而设备类继承于电力系统资源类 (PowersystemResource) 。通过关联关系, 可以使开关关联到电压等级类 (voltageleve l) 。通过聚合关系, 可以描述电力系统的拓扑结构模型, 导电设备都具有端点 (Termin al) , 端点以0~n量数聚集于连接节点 (conne ctivityNode) (也就是端点通过连接节点相连) , 如图1中DC2、BB1及BR3各有一个端点聚集于连接点CN5。通过网络拓扑分析, 把闭合开关两个端点所连接的连接节点合并为一个拓扑节点TopologicalNode, 形成系统的母线/分支模型 (Bus/Branch Model) 。在母线/分支模型中, 每一个连通集合是一个拓扑岛 (TopologicalIsland) 。
电力系统的设备模型是设备图形与设备电气属性的综合体。一方面要图形化显示设备的几何属性, 包括线条颜色、线条宽度、尺寸缩放、旋转等;设备在不同的工作状态下有不同的显示, 如开关有开合两个状态 (如图2) , 也就是设备是动态的。
另一方面要综合电力设备在电力应用方面的静态数据, 比如开关、刀闸的名称、正常状态, 当前状态, 类型, 变压器的名称、ID、额定容量, 高低绕组电压等级/容量等数据, 这些静态数据在建模时先存储在商用库中, 在需要应用时再把这些数据装载到实时库中。
2 Qt图模库一体化
设备建模的实现原理是:按照CIM的命名方法定义设备类并描述设备的电气属性, 另外在该设备下组合一个图形实现相关的类, 它的功能主要就是管理图形的显示操作。这样做的好处是, 设备从整体上被分成图形操作和电气属性两部分, 方便管理和扩展。
首先介绍设备的图形显示实现技术。Qt由于在2D绘图方面的优良特性, 使得设备的图形显示部分可以方便的实现。在Qt的2D类库中, QGraphicsItem是图元类, 它可以具有任意的图形形状, 它最终继承于QObject[4]。用户通过继承它, 并实现它的图形相关的几个虚函数, 就可以实现指定形状的图元。如图3是QGraphicsItem的三个图形相关的虚函数。
BoudingRect () 规定图元的方形绘图区域, shape () 规定对象碰撞、重叠检测等区域形状, paint () 则规定图元的几何形状绘制方法。比如, 图4是开关设备的模型, 开关设备的图元类GBreaker的paint () 函数实现如下。
实现了这个函数就可以实现开关设备的图形显示操作了。电力系统其它设备类的图形显示部分也可以这么实现。
其次是设备的连接显示。也就是在图中如何表示两个设备是相连的, 这通过定义CIM的拓扑包中Terminal类来实现。上面代码中的t1和t2都是Terminal的对象实例, 它们是组合到开关图元中的。Terminal类可以继承QGraphicsItem作为图元类来实现, 实现方法大致同开关设备的图元类, 只是要跟踪端点的碰撞状态以随时决定端点的颜色变化, 如红色表示连接, 蓝色表示挂空。Terminal类的paint () 的函数在此就不再赘述。通过Terminal不仅可以显示图形的连接属性, 还可以描述厂站接线图的拓扑结构、潮流数据的绑定显示等。
最后是设备的电气参数的入库。设备的静态电气参数如设备名称、额定参数 (电压、容量等) 等一般存储到商用数据库, 而动态参数如有功/无功潮流, 开关状态等一般存储到实时库, 为此需要设计两个数据库操作接口类。本文的商用库采用Microso ft SQL Server 2000开发, 实时库则采用自主开发的面向对象及层次模式的轻量级数据库。两个数据库的数据操作类似:查询、插入、删除及更新, 即Select、Insert、delete及Update四个操作。商用库的接口类的实现, 是借助于Qt的数据库访问操作类QSql、QSq ldata、QSqlquery等, 通过ODBC作为数据源, 用户可以设定数据库登陆用户名及密码, 连接成功后即可访问商用库。
商用数据库的结构是由一系列的设备表、厂站表、区域表等组成, 其中最主要是设备表, 它的结构设计是按CIM中类的典型属性来设置, 以开关表DEVICE_BREAK为例:
开关设备表字段:
DEVID【设备ID】, NAME【设备名称】, C O M_S T A T U S【正常状态:开/合】, CUR_STAT US【当前状态:开/合】, T YP E【开关类型:母联/旁路/母联兼旁路/普通】, MAX_I【最大开断电流值】。
从商用数据库查询某个设备, 只需要知道该设备的ID号 (默认主键) 就可以据此查到该设备的其它所有信息了, 图5是设备参数在商用库中的查询。
实时库接口类的实现则完全是按一般C++的方式定义, 由于实时库是面向层次和对象设计的, 访问某个厂站内的设备时, 需要知道设备的ID、厂站ID等, 格式如:厂站数组[厂ID]、开关数组[开关设备ID]。由于是数组结构, 下标访问的速度是很快的, 这样设计以后就能满足实时性的要求。
3 拓扑分析
厂站主接线图绘制好后, 图中各设备间的物理连通关系就是原始拓扑关系, 它是静态的。原始拓扑形成的是图形的物理节点;动态拓扑是在原始拓扑的基础上考虑了开关和刀闸的开断与闭合状态, 因而形成拓扑逻辑节点, 比如, 操作任一开关或刀闸分或合后, 厂站的拓扑结构就改变了, 不再是静态的了, 而是动态的, 所以生成的拓扑是动态拓扑, 预示它以后还有可能变化。
根据CIM的拓扑模型的描述, 首先对厂站进行端点-连接点分析, 也就是Terminals合并到ConnectivityNodes的过程, 形成端点指针链表及连接点指针链表, 然后对连接点链表进行开关/刀闸合并分析, 形成拓扑逻辑节点。合并的方法有广度优先算法BFS, 可以参考文献[5]。
4 图层管理
采用Qt的QGrahpics View体系管理现场的设备图元是很方便的。尽管如此, 为了达到特定功能的要求 (比如电网规划、EMS动态数据分析等) , 需要对设备及设备的参数进行分层管理。图6为厂站内分层示意图, 其中规划层代表规划用设备及测试数据, EMS层代表现有EMS设备及实时应用数据, SCADA层是远动数据层, 经过量测分析后存入实时库。程序采用多视图机制来管理不同层次上的图形和参数数据库。
分层管理的实现方法是给每个厂站设备做分层标记, 通过标记实现对设备的分类。由于电力设备图元类都是继承自QGraphicsItem类, 而QGraphicsItem有一个函数setTooltips () , 这个函数的功能本来是设置图元的鼠标hover时显示的tip信息, 但这里不需要这么一个功能, 将其运用到分层管理应用, 可大大简化代码。通过scene () ->items () , 查看各个图元的tooltip () 的内容可以确定处在公共层的各个电力图元的所属层信息。在切换图层时, 根据各图元的tooltip () 内容可以判定在当前切换后的图层中是显示还是隐藏。比如, 当前图层处于公共图层, 那么所有的设备都会显示, 但当切换到EMS图层后, 现场做有“EMS”标记的设备都会显示, 而没有做标记的则会暂时性隐藏, 同时, 数据访问类别从公共层数据库切换到EMS数据库 (也就是访问的表的名字变化了) 。
5 导航功能
导航功能是图形系统发展的趋势。通过图形导航功能, 用户可以在不同的厂站、Compangy、subcontrolArea间进行切换, 方便了图形浏览。比如用户当前在1号厂站浏览, 现在现场有一个导航按钮, 上面显示导航到22号厂站, 那么用户单击该按钮, 应该是立刻安全关闭当前厂站文件并打开目的厂站文件, 这样就是整个的导航效果。可以看出, 导航功能的实现主要是明确导航目的文件的名称和类型 (厂站/Company/subcontrolArea) 就可以了, 关键就是如何实现导航按钮了。
从图7中可以看出, 通过选择导航目的地 (这里是导航到“南昌地区”) , 再选择导航按钮文本内容可以控制按钮的导航及显示功能。图中的厂站树直接从图模平台的系统厂站面板获得厂站树结构。像电力元件一样, 导航按钮类也是继承于QGraphicsItem。
6 结语
适应软件业的发展和电力系统自动化发展方向的要求, 本文采用Qt新技术实现的图形平台, 完成了系统及设备建模、图模库一体化、厂站导航及分层管理等功能, 并最终开发了一套电力系统支撑性平台。其友好的人机交互界面及高效的设备信息管理能力, 在电力调度自动化领域中正得到切实的应用和扩展。
摘要:电力图形系统是现代调度自动化系统的基础, 它为EMS/DMS提供图形及信息支持, 是现代电力系统信息综合及功能整合的载体;本文从面向对象开发技术和实用性角度出发, 遵循IEC 61970 CIM标准, 阐述了Qt在电力图形支撑平台开发中的关键应用技术, 包括设备建模、图模库一体化、拓扑分析功能及图层管理等。
关键词:Qt,CIM,设备建模,图模库一体化
参考文献
[1] 辛耀中.新世纪电网调度自动化技术发展趋势[J].电网技术, 2001, 25 (12) :1~10.
[2] IEC61970.Energy Management Sys-tem Application Program Interface (EMS-API) Part1:Guidelines and Gen-eral Requirements, 2003.
[3] 蔡志明, 卢传富, 李立夏, 等.精通Qt4编程[M].电子工业出版社, 2008, 1.
[4] 于辉.面向对象技术电力系统网络拓扑分析的研究[J].太原理工大学, 2005, 4.
相关文章:
最新幼儿园毕业典礼主持词稿 幼儿园毕业典礼主持词煽情汇总01-20
浅析智能手机游戏的UI设计现状与问题研究01-20
幼儿园大班毕业典礼主持稿幼儿(十四篇)01-20
2025年幼儿园毕业班典礼主持稿 幼儿园大班毕业典礼小主持人稿(14篇)01-20
最新幼儿园毕业典礼主持词稿 幼儿园毕业典礼的主持词(22篇)01-20
基于SOA的物流平台设计与实现01-20
3d技术在游戏设计与开发中的地位01-20