基于Visio界面的继电保护装置仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Visio界面的继电保护装置仿真

摘要针对电力行业从事继电保护专业的员工的培训需求,本文基于常用的PC机及Windows操作系统,选择合理的编程语言,并引用Visio Drawing Control 图形控件实现各模块的图形化开发,利用非实时系统建立了准实时机制,描述了构建仿真系统需要的类及对象,分析信息获取及拓扑结构获得的关键方法。

关键词继电保护装置;仿真;培训

0 引言

目前,大量的继电保护仿真都是以研究或测试为目的的实时系统仿真,对于保护装置性能的研究和保护网络的配合验证非常有效,但是针对继电保护装置内部逻辑,以教学为目的研究较少。

以教学为目的的仿真往往成本投入较少,需要建立在现有硬件资源的基础上,对保护时间精度要求较低,只要求动作逻辑正确,具备友好的人机界面。

1 软件环境搭建

1.1 软件环境

1.1.1 Windows操作系统丰富一致的图形用户接口和面对对象编程方法的支持一直得到开发人员的普遍认同,其使用在我国非常普及,可以在Windows上进行开发。

1.1.2 应用现在比较流行的Visio,可以方面使用人员绘制保护装置原理图,同时应用VisioDrawingControl图形控件作为与程序的接口,对继电保护装置的内部逻辑关系进行拓扑化绘制。

1.1.3 编程环境

C#是由微软公司发布的编程语言,继承了传统的c语言代码风格,并且封装了大量Windows操作系统功能,与Windows平台有良好的兼容性。

2 对象及类的构成

2.1 Visio模具

Visio绘图方法除了直接在绘图区添加直线、圆、矩形等基本图像外,更常用的方式是直接向绘图区添加模具。模具相当于类,可以被多次使用,每次使用相当于生成一个对象,以ID进行区别。模具的Shapesheet中可以读取很多有用的信息,仿真中主要用到的有以下4个。

2.1.1 shapetransform

该信息主要表示图形在绘图区的位置,高度等信息,主要的属性有width、height、pinx、piny。

2.1.2 connectionpoints

表示该图形有几个可以用于连接的点,每个连接点在模具中的位置信息,主要属性有x、y,用于表示连接点的坐标。

2.1.3 customproperties

表示用户自定义属性,由使用者定义,在此应用中,主要用于存储保护定制信息。

2.2 VisioDrawingControl控件

VisioDrawingControl中包含了丰富的对象资源,在c#程序中嵌入控件后,便与其建立了联系,下面对主要对象进行介绍。

2.2.1 Application对象

控件的主显示界面,可以通过其调用直接隶属的各个对象,在向c#插入控件后获得,其内部封了大量的对象及方法。

2.2.2 Window对象

表示VisioDrawingControl的绘图窗口,是与用户的主要交互界面,是主要响应用户绘图,侦听用户添加、修改、删除的主要部分,active window可以获得当前窗口属性的窗口。

2.2.3 Shape对象

Shape对象是绘图区每个图像的对应对象,可以反映用户对图形元件的所有操作。其对象数组page.shape[]包含了绘图区所有的元件对象。

2.3 保护元件的基类

由于VisioDrawingControl只提供图形描述,不具备拓扑、动作逻辑等功能,需要在c#中建立一套与VisioDrawingControl中绘图对应的数据模型,将VisioDrawingControl中无逻辑关系的连通图变为有逻辑关系、适合计算使用的数据集。

3 仿真的关键步骤

3.1 准实时机制的建立

由于本应用不需要时间的精确性,而更注重动作逻辑的正确性,Windows 是一个非实时系统,其CPU时间分配的随机性会对保护逻辑判断的正确性产生影响,自制时钟系统是一种解决方案,通过Timer控件模拟系统时钟,由其作为标准时间为所有消息加上时标,将程序内部的元件动作时间放在统一的坐标系进行比较,很好的解决了Windows系统的响应时间问题。

3.2 图形链接关系的建立

3.2.1 读取所有链接关系

在VisioDrawingControl控件的页面page对象中,提供shapes对象集来表示页面上所有的元件,通过对shapes对象集的遍历,可以访问到每一个已经添加到绘图界面的元件。

由于VisioDrawingControl只提供连接点信息,如果想获取保护元件之间的关系,还需要对所有连接进行判别,并存储。在读取连接的过程中,使用自定义整数数组A[]和B[]分别存储所有保护元件和连接线的ID,再通过对这两个数组的分析获取足够的信息。

3.2.2 生成保护元件链接表

在连接线的shape对象中,connects对象集包含了连接线两端的节点信息,通过读取这两个connect点的ToSheet.ID属性,可以知道这条连接线两侧的保护元件ID,这样就有了获得保护元件连接关系的方法。

由于在connects对象集中,连入连出点存在先后顺序,其顺序已经根据图形中的横坐标排序,所以只需要顺序的读出连接线的两个connect.ID即可。

3.3 生成保护元件对象

在链接表的基础上可以建立保护元件的对象,首先通过遍历绘图区所有的保护元件,向保护对象写入ID 属性。然后使用衔接表,向链接表首端(formID)的保护元件的output列表中添加链接表末端(toID)的元件ID。这样,保护元件的连接关系已经建立。

4 结论

本文基于员工的培训的需求,搭建了进行继电保护装置仿真的基础环境,描述了类的构成及功能之间的联系,对基于Visio Drawing Control控件基本操作进行了概况,整理了仿真工作的关键步骤。

相关文档
最新文档