刘平
摘 要: 提出将电路图描述为等电位点构成的群落及其相互关系的抽象模型的方法,并据此重点探讨在电工教学仿真的特定环境下,通过在矢量绘图软件Visio的后台进行二次开发,来实现电路图上等电位点的搜索的方法。进而通过模型对比的方式,从功能层面判定Visio 所作电路图与标准接法的一致性。
关键词: Visio; 二次开发; 电工教学仿真; 拓扑; 等电位群
中图分类号:TP391.9 文献标志码:A 文章编号:1006-8228(2019)02-43-03
Application of Visio based topology operation in electrical engineering simulation
Liu Ping
(Guiyang Vocational and Technical College, Guiyang, Guizhou 550008, China)
Abstract: A simple and intuitive method is proposed to describe the circuit diagram as an abstract model of community composed of equipotential points and their relationships. On this basis, this paper mainly discusses a search method of equal potential point on the circuit diagram through the network topology operation of Visio software in the specific environment of electrical engineering teaching simulation. Then, through the model comparison, the consistency of the circuit diagram made by Visio and the standard approach is determined from the functional level.
Key words: Visio; secondary development; electrical engineering teaching simulation; topology; group of equipotential point
0 引言
Visio作為一款较为流行矢量的绘图软件,已经被广泛运用于流程图、工程图的绘制等领域。它具有绘图简单、灵活和呈现效果好等优点,这里不再累述。多数使用者或许没有注意到,由于该软件与Word、Excel和PPT等同为Microsoft公司Office系列软件,它同样具有强大的后台编程控制能力,甚至在这方面其功能明显强于上述其姊妹软件,例如其表单(Shapesheet)集成了页面上所有图形(或是图形组合)的所有可用属性,通过在对应的属性栏填入相应的Formula(公式)就能简单地改变图元的形态、色彩以及位置等属性。同时,在Visio后台的VB编程环境下,则能够实现对页面中的图元进行较为复杂的控制,例如时序控制,也包括本文将要用到的拓扑运算等。不仅如此,通过其OCX的植入,还能够在C/C++以及.NET编程环境下实现对Visio绘图的控制[1]。正是由于Visio软件不仅有简单、灵活的绘图功能,还具备强大的后台编程控制能力,所以Visio软件可视化仿真方面的运用正逐步得到重视。
1 电气仿真过程中电路接线正确难以判断的问题及其解决方案
在使用电气仿真软件中经常会遇到一个尴尬的问题:接线完全正确,却被系统判错。通过分析和向相关厂商咨询,发现问题在于仿真系统仅将某一种标准接法作为正确,但实际上,相对于液压和机械等领域而言,电气原件之间的连接具有较大的灵活性,这个特点给电气接线的仿真带来了困难。例如,在控制回路里面有m个线圈(每个线圈有两个端头,假定为 x和y),要求y端都与直流电源的负极相连接,从理论上说,至少有一种连接方法。可以想象,如果是一个完整的电路图,实现同一个功能的接线方式会更多。显然,在符合电气安装规范的前提下,从功能而言,不能仅将标准答案认为是惟一答案。
经过分析可知,解决该问题的关键是找到电气上的等电位点问题。文献[2]有论述:在电路中,如果两点间没有电阻,那么这两个点就是等电位点。不论导线有多长,只要中间没有电源、电器等,则导线两端点均可以看成等电位点。在识别不规范电路的过程中,可将等电位点命名为相同的点,以达到简化问题的目的。可见,以上问题实际上可以归结为通过导线连接的节点构成的等电位点(注:在后面的抽象模型中将其称为等电位群)的判别,即不论如何连接,只要电源的负极与m个线圈的y端通过导线构成等电位点都判定为正确。显然,该结论还可以推广到电路中其他有等电位点的存在的部分。
本方案在软件上实现的思路是:将电气接线图(例如图1,其中包含2个常开型触头B、C和3个线圈D、E、F,还有编号分别为1-12的12个节点以及若干导线组成)转换为由等电位群及其相互关系来描述的抽象模型(例如图2,其中包含4个等电位群,图1中的12个节点被划分到其中,4个等电位群则通过B、C、D、E、F等5个原件连接),然后,通过与标准接线方式的结构模型进行比较来判定当前接线方式的正确性。其中,等电位节点的搜索,即等电位群的建立是关键,这也是本文的重点。
2 通過网络拓扑判别等电位点
在实际的电路接线图中,等电位点的分布可能是比较复杂的网络节点,所以,要从网络等电位点层面来分析,而网络拓扑是分析该问题的有效手段。网络拓扑分析有多种方式[3],其中,运用效果较好的树搜索法分又分为DFS和BFS两种方式,即通常所说的深度优先搜索法和广度优先搜索法。广度搜索法进行拓扑时,对于网络的结构和起始点没有依赖性,可以很好地适应各种网络[4]。所以本方案采用BFS法来对等电位点进行搜索。
通过广度搜索法进行网络拓扑图解析的过程中,搜索节点及其路径是重点,关键是将这两个抽象的概念与物理存在的电路建立对应关系。根据网络拓扑图中节点和路径的概念,结合电气接线图可以发现电路图与网络拓扑图的相似之处。以图1(电气接线图)为例,可以将电气接线图中表示接线端口的小圆作为节点,而将连接端口的连接线作为路径,从而通过网络拓扑的方法来搜索所有的等电位点。但是这里会出现一个问题:Visio是一款绘图软,本身并没有提供与用于网络拓扑分析的相关函数和方法。前文所说的代表节点的小圆以及代表路径的电气连接线,在Visio中仅仅是一个普通的图元。如何高效地解析相关节点及其生长路径,这得要从Visio的一个重要属性——连接(Connects)入手,在Visio绘制的电气接线图中,当表示连接端口的那个小圆被连线连接后就生成一个连接。通过相关函数对该连接进行分析,就可以得到构成该连接的两个对象的名称以及连接的方向等相关信息。对于一张用Visio绘制的电气接线图,其中有多个连接。如果对其中所有的连接作上述分析,结合连接端口为网络节点、连接线为路径的思路,就可以算出该电气连接图的网络结构模型。
下面简要说明具体的实施步骤和方法:首先,通过Visio后台编程将当前页面指定为活动页面(ActivePage),并用表1所示的Page.connects.counts函数获取页面上连接的数目,其中的第n个连接用Page.connect(n)来表示[5]。然后,逐一对所有连接进行Tosheet.name属性和Fromsheet.name属性的解读[7],获得所有连接的连接端口的名称信息(也就是网络节点的名称)和连接线的名称(也就是网络拓扑路径的名称)。如果某连接对应的连接端口名称与初始化连接端口(一般取编号为0的端口)一致,则该连对应的连接线就是初始化节点的一条生长路径。所有具备该特征的连接线就是初始化节点的全部生长路径。通过类似的方法,再次遍历所有的连接点,如果其对应的连接线名称是上述路径之一,并且是通过连接线的另一端连接(对于连接线这样的一维图形,Visio可以通过表1中的Frompart返回值是Visbegin还是Visend[8]来判断该连接是通过连接线的始端和末端进行连接),那么该连接对应的接线端口就是下一层的节点。再对第二层的所有等电位节点做上述运算,就可得第三层等电位节点。如此循环,即由节点搜索路径,又由路径搜索节点的过程,直到该层节点都没有新的生长路径(在这里需要注意:拓扑路径不能反向生长,即同一路径不能二次经由),则得到的所有节点为等电位节点,也就是一个等电位群,如图3所示。对剩余的节点再重复上述过程直到所有节点被分配到对应的等电位群,即得到了电气接线图中的所有等电位群。
3 等电位群之间连接关系的判别
前面将所有节点归属到各自的等电位群。接下来还要解决一个问题——等电位群之间的连接关系。显然,等电位群之间总是通过一个(多个)电气元件连接的。如果某电气元件图的某两个接线端口(节点)被归属到某两个等电位群,就可以确定这两个群通过该电气元件进行了一个连接,如图1所示。根据这个思路,以电路中电气元件的连接端口为对象,通过Shapes.items.name属性确定其上节点名称,然后搜索包含该节点所属的等电位群[9]。符合条件的等电位群即是通过该电气元件连接的群。在剔除搜寻过的电气元件后继续以上过程,直到所有电气元件被识别后,就得到以群为节点的拓扑图,如图2所示。
为了便于对两个电路模型进行比较,需要建立一个统一格式的集合(Dataset)来存放以上得到的等电位群及其相互连接关系。该集合要包含表示等电位群的数量及其各自子集等条目,其中,等电位群子集又包含相关连接路径和对应的等电位群,以及其中包含的等电位点数目、各自名称等条目。由于篇幅所限和已有文献做过详细论述,该集合的建构和比较过程就不再累述,相关知识见文献[6]。
4 结束语
该方案以电工学相关知识作为理论基础,同时采用了数学的拓扑和归纳等方法,将繁杂的电路抽象为描述等电位群及其相互连接关系的模型。将该模型与标准模型进行比较,以此作为判别接线正确的标准,能够有效解决在电工仿真教学中,仿真软件不能识别具有相同功能的其他接线方式的问题,从而提高电工仿真的实用性。
参考文献(References):
[1] 刘强,刘向君.利用Visio二次开发实现逻辑图自动分析[J].软件导刊,2008.8(1):13-14
[2] 陈荣高.利用等.电位点解决初中电路问题[J].物理教师,2012.6:33-35
[3] 黄正,陈凡等.电力拓扑分析算法的元研究[J].南京工程学院学报(自然科学版),2013.2:21-23
[4] 李冰剑,张学军.电力系统网络拓扑的分析与比较[J].图书情报导刊,2011.21(1):184-187
[5] (美)Microsoft著,莱恩工作室译.开发Microsoft Visio解决方案[M].北京大学出版社,2002.
[6] 催竞.Visual Basic 6.0基础与实践教程[M].电子工业出版社,2007.
[7] 王凯,李贵阳,应文健.基于Visio故障树的舰炮故障诊断专家系统设计与实现[J].舰船电子工程,2017.1:42-43
[8] 郭伟伟,张锋,章健.Visio图形化电力计算软件中电网拓扑结构的识别[J].河南科学,2006.6:22-24
[9] 李平玉.自动测试系统图形化资源建模与测试描述工具的实现[D].电子科技大,2016.