程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#進行Visio二次開發之電氣線路停電分析邏輯

C#進行Visio二次開發之電氣線路停電分析邏輯

編輯:關於C#

停電分析,顧名思義,是對圖紙進行停電的邏輯分析。在電氣化線路中,一條線路是從一個電源出來,連接著很多很多的設備的,進行停電分析,有兩個重要的作用:一是看圖紙上的Shape元件是否連接正常,二是看哪些設備有電無電。通過給有電的設備一種顏色(如綠色),無電的設備一種顏色(如紅色),那麼就可以很明顯地看到通電的不同變化。

對一張Visio繪制的電氣線路圖,我們如何進行停電分析呢?下面我們看看相關的序列邏輯先。

在上面的序列圖中,主要實現了這樣的思路:

停電分析是通過保存設備相關連接信息到數據庫,以電源(如飛達)為起點,對設備信息進行線路的拓撲分析,把分析保存到數據庫中,然後獲得拓撲模型中有電的設備,對圖紙的設備顏色進行更新(有電為綠色,無電為紅色),如果撞電,則恢復所選開關的顏色。

由於以上的關系表,只是對一個飛達進行了線損模型分析,因此只會存在一個-1即飛達的情況,其他ID都是和該飛達相關聯的下游設備ID;如果我們找到每一個的設備ID和其父ID(上游設備ID)即滿足要求。

Equipment為設備的ID,ConnectionShapes為關聯的設備ID集合

1、先在ConnectionShapes尋找有-1的Equipment

得到下列模型:

ID PID 1 -1

2、下面再找1下游設備;在關系表中尋找Equipment=1的ConnectionShapes有那些關聯設備,發現有-1,2;-1是1的上游設備,不能使用,因此剩下2,得到如下表。

ID PID 1 -1 2 1

3、繼續找2的下游設備;發現2有1、3、8、7、10和其關聯,1是2的上游設備,不能使用,剩下的列出來。

ID PID 1 -1 2 1 3 2 8 2 7 2 10 2

4、依次對3、8、7、10進行分析,得到以下數據,下面先對3下游設備進行分析

ID PID 1 -1 2 1 3 2 8 2 7 2 10 2 4 3 11 3

繼續對4、11進行分析,先對11進行分析,發現11只有3相連,3為上游設備,結束;

再對4進行分析,如下。

ID PID 1 -1 2 1 3 2 8 2 7 2 10 2 4 3 11 3 5 4 12 4

繼續對5、和12進行分析,先對12進行分析,發現12只有4相連,4為上游設備,結束;對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

繼續對6進行分析,有13相連;繼續分析13下游設備沒有,結束,得到如下。

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、繼續第上面步驟的分析,上面說到2下游設備有3、8、7、10,還有8、7、10沒有分析,對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

對9繼續分析

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

繼續分析15、16、17、18發現沒有下游設備,結束。

根據上面的分析結果,我們就可以得到線路的拓撲樹狀圖,即一個倒立的樹,分析的存儲結果為下圖所示。

其中關鍵的ID、PID是用來在樹之間漫游的,LoginIP用來區分不同用戶的分析結果,BelongTo在多個電源通電的時候,區分不同的電源(即構造幾顆倒立的樹),其他信息用作輔助。注意:斷開的開關,看成是樹的分支終點。構造模型的時候不會記錄該開關設備的信息,分析的時候會自動斷層。

最後附上分析的結果,紅的紅,綠的綠,多好看,哈哈

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved