C#进行Visio二次开发之电气线路停电分析逻辑
停电分析,顾名思义,是对图纸进行停电的逻辑分析。在电气化线路中,一条线路是从一个电源出来,连接着很多很多的设备的,进行停电分析,有两个重要的作用:一是看图纸上的Shape元件是否连接正常,二是看哪些设备有电无电。通过给有电的设备一种颜色(如绿色),无电的设备一种颜色(如红色),那么就可以很明显地看到通电的不同变化。
对一张Visio绘制的电气线路图,我们如何进行停电分析呢?下面我们看看相关的序列逻辑先。
在上面的序列图中,主要实现了这样的思路:
停电分析是通过保存设备相关连接信息到数据库,以电源(如飞达)为起点,对设备信息进行线路的拓扑分析,把分析保存到数据库中,然后获得拓扑模型中有电的设备,对图纸的设备颜色进行更新(有电为绿色,无电为红色),如果撞电,则恢复所选开关的颜色。
由于以上的关系表,只是对一个飞达进行了线损模型分析,因此只会存在一个
-1
即飞达的情况,其他
ID
都是和该飞达相关联的下游设备
ID
;如果我们找到每一个的设备
ID
和其父
ID
(上游设备
ID
)即满足要求。
Equipment
1、
得到下列模型:
ID
PID
1
-1
2、
ID
PID
1
-1
2
1
3、
ID
PID
1
-1
2
1
3
2
8
2
7
2
10
2
4、
ID
PID
1
-1
2
1
3
2
8
2
7
2
10
2
4
3
11
3
继续对 再对
ID
PID
1
-1
2
1
3
2
8
2
7
2
10
2
4
3
11
3
5
4
12
4
继续对
ID
PID
1
-1
2
1
3
2
8
2
7
2
10
2
4
3
11
3
5
4
12
4
6
5
继续对
ID
PID
1
-1
2
1
3
2
8
2
7
2
10
2
4
3
11
3
5
4
12
4
6
5
13
6
5、
ID
PID
1
-1
2
1
3
2
8
2
7
2
10
2
4
3
11
3
5
4
12
4
6
5
13
6
9
8
对
ID
PID
1
-1
2
1
3
2
8
2
7
2
10
2
4
3
11
3
5
4
12
4
6
5
13
6
9
8
15
9
16
9
17
9
18
9
为设备的
ID
,
ConnectionShapes
为关联的设备
ID
集合
先在
ConnectionShapes
寻找有
-1
的
Equipment
下面再找
1
下游设备;在关系表中寻找
Equipment=1
的
ConnectionShapes
有那些关联设备,发现有
-1
,
2
;
-1
是
1
的上游设备,不能使用,因此剩下
2
,得到如下表。
继续找
2
的下游设备;发现
2
有
1
、
3
、
8
、
7
、
10
和其关联,
1
是
2
的上游设备,不能使用,剩下的列出来。
依次对
3
、
8
、
7
、
10
进行分析,得到以下数据,下面先对
3
下游设备进行分析
4
、
11
进行分析,先对
11
进行分析,发现
11
只有
3
相连,
3
为上游设备,结束;
4
进行分析,如下。
5
、和
12
进行分析,先对
12
进行分析,发现
12
只有
4
相连,
4
为上游设备,结束;对
5
进行分析,如下。
6
进行分析,有
13
相连;继续分析
13
下游设备没有,结束,得到如下。
继续第上面步骤的分析,上面说到
2
下游设备有
3
、
8
、
7
、
10
,还有
8
、
7
、
10
没有分析,对
8
下游设备继续分析。
9
继续分析
继续分析
15
、
16
、
17
、
18
发现没有下游设备,结束。
根据上面的分析结果,我们就
可以得到线路的拓扑树状图,即一个倒立的树,分析的存储结果为下图所示。
其中关键的ID、PID是用来在树之间漫游的,LoginIP用来区分不同用户的分析结果,BelongTo在多个电源通电的时候,区分不同的电源(即构造几颗倒立的树),其他信息用作辅助。注意:断开的开关,看成是树的分支终点。构造模型的时候不会记录该开关设备的信息,分析的时候会自动断层。
最后附上分析的结果,红的红,绿的绿,多好看,哈哈