您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 基于-VisioVBA-编程的图形化电力系统计算软件的开发
1基于VisioVBA编程的图形化电力系统计算软件的开发章健,张锋,海德伦(郑州大学电气工程学院,郑州450001)摘要:提出并研究了一种以MicrosoftVisio2003图形软件为平台,利用VBA进行二次开发的图形化电力系统计算软件开发的新技术和新的实现方法。研究了基于所绘电气接线图和地理接线图的电力系统通用的图形化建模方法,以及电网拓扑结构的自动识别。开发了运行于Visio2003的实用的电力系统图形化潮流与短路计算软件。开发实践表明,Visio的二次开发技术为图形化电力系统计算软件的开发提供了新的有效的途径。关键词:Visio2003;VBA编程;图形化;电力系统计算0引言将电力系统接线图的绘制功能与电力系统专业计算功能结合起来,形成的基于所绘电力系统接线图的参数输入、状态设置、仿真操作和结果输出的软件,称为图形化或可视化电力系统应用软件[1][2]。图形化电力系统应用软件因其界面友好、直观、操作简单和符合专业习惯等优点受到电力企业的欢迎。具备图形化的功能是电力系统应用软件开发的趋势。目前图形化电力系统应用软件,都主要是用VB、Delphi或VC等开发工具完成的。这种开发模式工作量大、周期较长、功能有限、后期维护困难,实是一种少、慢、差、费的开发方法。MicrosoftVisio2003是当今最优秀的绘图软件之一[3],在许多场合下使用Visio较之AutoCAD,更加简单高效。但许多人都只是在其各自的工作中用该软件绘制图形,基于Visio进行图形化应用软件的二次开发则还鲜为人知。利用Visio进行电力系统计算应用软件的开发,尚未见报道。实际上Visio2003不但是一个优秀的绘图软件,还提供了功能十分强大的二次开发功能[4]。站在这样高的平台上进行专业化二次开发,可以充分利用Visio2003的所有功能,仅花很少的代价和用很短的开发周期就可以实现用纯VB、Delphi或VC开发工具编程所难以实现的十分完善的功能,并且以后的技术支持还绝对有保障,后期维护和升级都非常容易。本文首先介绍基于所绘电气接线图和地理接线图的电力系统通用的图形化建模方法。然后提出以Visio2003图形软件为平台的基于所绘电网电气和地理接线图的电网拓扑结构识别的算法。最后介绍以Visio2003为平台的图形化电力系统潮流和短路计算的软件实现和应用。1基于Visio的电力系统图形化建模方法1.1图件和模具的设计图形化电力应用软件需要设计出用于绘制电网电气接线图和地理接线图的常用元件符号,这些绘图元件放在绘图工具箱中。图形化建模时,用鼠标把图元拖拽到绘图区,通过准确的连接构造电气接线图和地理接线图。在Visio中,用于绘图的图元称为图件,放置图件的绘图工具箱称为模具。图件和模具的设计十分简单。首先,在绘图区内绘制出所需的绘图元件符号,并对其连接端子增加端点,以便连接和拓扑结构自动识别时使用。然后,利用ShapeSheet电子表格为图元设置属性,即附加到该元件设备上的参数,例如,变压器图元有名称、容量、型号、短路试验数据、空载试验数据、绕组组别等。为了双击图元能够弹出相应的对话窗体用于参数的输入、设置、修改和查询,还需要对图元赋以双击事件。最后,将完成的图件用鼠标拖拽到一个新的模具中,为新模具命名后保存即可。本软件设计的电网电气接线图绘图模具与图件如图1a所示,本软件设计的电网地理接线图绘图模具与图件如图1b所示。2图1a电网电气接线图绘图模具与图件图1b电网地理接线图绘图模具与图件特别是为了避免出错和加快绘图速度,还可以把常用主接线的变电站做成了一个整体绘图单元,绘图时根据具体变电站的形式,将相应的变电站单元拖拽到绘图区,然后用输电线路将变电站连接起来,大大提高了绘图效率。1.2ShapeSheet电子表格的应用在Visio中,与图形对应的有一个ShapeSheet电子表格。图形的编辑和改变,例如位置、大小、高度、宽度、角度和颜色等改变,可以在ShapeSheet立即看到数值的变化。在ShapeSheet中改变数值和有关公式会引起相应图形的改变。可以通过公式的方式精确的描述和控制图形。ShapeSheet内容很丰富,因篇幅所限,这里仅介绍元件属性的设置和事件的定义两部分在Visio图形化电力应用软件开发中必不可少的内容。1.2.1属性(CustomProperties)的设置在图形化电力计算软件中,需要把图件和其表示的电气设备的数据关联起来。可以把图件和数据分离,数据存放在数据库中,通过图件的唯一ID号与数据库中的相应记录关联起来,从而实现数据的图形化查询、检索、输入和修改。对于数据量比较大时,可以采用这种数据库的方式来组织、存储和管理数据。当数据量不大时,也可以把数据与图件绑定在一起,在制作图件时,对其ShapeSheet表中的用户属性CustomProperties区进行增加和定义。例如,线路图件的数据属性有端点编号、导线型号、导线长度、单位长度电阻和电抗等。在绘图区绘制的图形都带有相应属性,其数据就存放在用户属性CustomProperties区的电子表格中。数据的输入、查询通过窗体实现。图2绘图图元的属性定义1.2.2事件(Events)的定义为了输入、修改、查询所绘图形设备的数据,需要在鼠标双击图形设备元件时弹出相应的窗体。为此,在设计图件时。要对其ShapeSheet表中的事件Events区的双击事件EventsDblClick定义。其格式为:=RUNADDON(ThisDocument.过程名称Name)在VBA编辑环境中,有一个Visio对象,在其中的ThisDocument下写一段过程名为Name的打开相应窗体的程序即可。这样这个图件就具有响应鼠标双击事件的能力了。如图3所示为三绕组变压器图元的双击事件定义,用鼠标双击该图形符号将弹出一对话窗体,供参数输入与修改。图3图元的事件定义1.3窗体的设计窗体的主要功能是提供交互式的界面,通过窗体可以进行数据输入、修改、设置、查询和显示等。窗体是一个集合对象,可以在窗体中增加用户定义属性事件定义区绘图模具绘图模具3或减少控件,并且可以设置窗体和控件的属性。这和一般的VB编程中窗体的设计是一样的。在电力系统计算软件中,通过窗体实现对ShapeSheet电子表格中用户属性CustomProperties区的数据的存取和修改。通过上述工作,可以实现电网电气接线图的绘制和编辑,根据所绘制的电气接线图,可以通过鼠标事件对电力元件进行交互式参数输入、设置和查询等。完成了一个操作简单、直观的通用图形化电力应用软件界面。图4元件参数输入与修改窗体1.4电网图形化建模电力系统接线图分为电气接线图和地理接线图两种形式。电气接线图只反映电力设备或设施之间的电气连接,即元件之间的拓扑关系,不反映设备或设施的地理位置。电气接线图中显示了构成系统的所有设备和设施,信息比较丰富,但因缺乏地理位置感,显得不够直观,缺乏层次,图形表现有些复杂。地理接线图以地图为背景,反映变电站、发电厂的地理位置及其通过输电线路的连接关系。电力系统地理接线图中一般只显示厂站和输电线路的地理位置,图形简洁,但无法显示厂站中电气设备的连接情况,作为电气计算软件,无法根据地理接线图来识别电网的拓扑结构。两种接线图各有其优缺点,各有其用途,因此,作为一个实用的图形化电力系统计算软件,应能提供这样两种图形化建模方式供用户选择。1.4.1电力系统电气接线图形式的图形化建模从前述设计好的绘图模具中拖拽出电力设备或设施的绘图符号或图元,放置到绘图区中适当的位置,然后用连接线连接起来,完成电气接线图的绘制。如前所述,因为在设计模具中的图件时已经赋给其用户属性和双击事件,所以用鼠标双击绘图区中的图元,则会弹出参数输入与修改对话窗体,从用户属性中读入有关数据显示在窗体上,或等待输入数据。所有元件参数输入完毕,则图形化建模完成,可以开始进入计算阶段。1.4.2电力系统地理接线图形式的图形化建模从设计好的电力系统地理接线图模具中拖拽出各类发电厂、各电压等级变电站和输电线路,按其实际的地理位置放置在绘图区中的地图上,构造地理接线图。因地理接线图中的厂站不能反映其电气设备的连接情况,因此,通过鼠标双击地理接线图中的厂站符号进入构建其电气主接线的绘图页,再利用电力系统电气接线图模具绘制构成厂站的电气设备及连接关系,并且元件的参数也在该绘图页中,通过鼠标双击后弹出的对话窗体上输入。输电线路参数则直接在绘制的地理接线图上通过鼠标双击后弹出的参数输入对话窗体上输入。2电网拓扑结构的自动识别电力系统潮流、短路、稳定和无功优化等计算是以电网数学模型或网络方程为基础的[5][6],而网络方程的建立需要反映电网元件连接关系的拓扑结构数据[7]和元件参数。可视化软件开发技术产生之前,电网拓扑数据和元件参数是通过数据文件、表格、数据库等方式输入的,缺乏直观性。目前用VB、Delphi或VC等工具开发的图形化电力计算软件,许多已可以从所绘制的电气接线图中提取电网拓扑结构的数据,实现了电网的拓扑结构自动识别[8]。与VB、Delphi或VC等编程工具的图形化软件开发方法不同,以Visio2003为平台的图形化电力计算软件开发的新技术有其自身的特点,其电网拓扑结构的识别也有所不同。与目前许多电力系统可视化软件中通过坐标进行元件连接关系的识别不同,这里利用Connect对象识别元件连接关系,简单、高效且不易出错。在MicrosoftVisio绘图中,一个图形可以和其它图形连接到一起,图形之间的连接关系在VisioVBA中是用Connect对象来表示的。图形之间有两种连接关系,其一表示的是某个图形主动地连接到其他图形上,如图5中所示的图形A主动地连接到图形B上;其二表示的是某个图形被动地被其它图形连接到自己身上,如图5中所示的图形A被图形C和图形D连接到自己身上。这两种连接关系在VisioVBA中又与图形(Shape)对象中的Connects属性和FromConnects属性相对应。其中Connects属性与第一种连接关系相对应,它返回的是该图形主动连接到其它图4形上的这种连接关系(Connect对象)的集合;FromConnects属性与第二种连接关系对应,它返回的是该图形被其它图形连接到自己上面的这种连接关系(Connect对象)的集合。并且对于任意一个连接关系(Connect对象)都能且只能由两个图形对象(Shape),即主动连接的图形和被动连接的图形构成,而这两个图形对象又可以通过Connect对象的FromSheet属性和ToSheet属性来返回。图5图形之间的连接关系通过上面的介绍,我们对Connect对象有了基本的了解,那么我们如何通过Connect对象的来识别Visio图形间的连接关系呢?如图5所示:图形A主动连接到图形B上。若已知图形A对象怎样得到图形B对象呢?思路是:先通过图形A的Connects属性得到一个Connect对象集合,这里只有一个Connect对象(因为只有一种连接关系,它表示的是图形A连接到了图形B上),然后通过该Connect对象的ToSheet属性就得到了图形B对象;若已知B对象怎样得到图形A对象呢?思路是:先通过图形B的FromConnects属性得到一个Connect对象集合,这里只有一个Connect对象(因为只有一种连接关系,它表示图形B被图形A连接到自己身上),然后通过该Connect对象的FromSheet属性就得到了图形A对象。图形元件端点自动编号的基本步骤是:(1)对母线进行编号,并且把与母线相连的元件端点编号设置为与所连母线的编号相同。(2)对T形节点进行编号,同时把与T形节点相连的元件端点编号设置为与所连T形节点的编号相同。(3)对输电线路没有被编号的端点进行编号,并把与其相连的元件的端点编号设置成与该端点的编号相同。(4)对双绕组变压器的两端进行编号,并把与其相连的元件的端点编号设置成与所连双绕组变压器端点的编号相同。(5)对三绕组变压器的三端进行编号,并把与其相连的元件的端点编号设置成与所连三绕组变压器端点的编号相同
本文标题:基于-VisioVBA-编程的图形化电力系统计算软件的开发
链接地址:https://www.777doc.com/doc-5502910 .html