文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.179022
中文引用格式: 張灣,張華,郭肖旺,等. 基于工控網(wǎng)絡(luò)拓撲結(jié)構(gòu)的可視化分層方法[J].電子技術(shù)應用,2017,43(12):85-88.
英文引用格式: Zhang Wan,Zhang Hua,Guo Xiaowang,et al. Visualization hierarchical method based on industrial network Topology[J].Application of Electronic Technique,2017,43(12):85-88.
0 引言
隨著國產(chǎn)可編程邏輯控制器(Programming Logical Controller,PLC)的研究取得了豐碩的成果,組態(tài)軟件也有了蓬勃發(fā)展[1]。組態(tài)軟件在自動控制系統(tǒng)中是處于監(jiān)控層一級的軟件平臺和開發(fā)環(huán)境[2],具有快速靈活地提供構(gòu)建工業(yè)自動控制系統(tǒng)監(jiān)控和配置的功能。圖形子系統(tǒng)是組態(tài)軟件中非常重要的一個系統(tǒng),組態(tài)拓撲結(jié)構(gòu)的存儲、應用、分析、顯示是圖形子系統(tǒng)重要的一部分,拓撲結(jié)構(gòu)的可視化也顯得日趨重要。
拓撲結(jié)構(gòu)的研究已經(jīng)受到計算機、物理、數(shù)學等多個領(lǐng)域的重視,廣泛應用于交通、網(wǎng)絡(luò)、電力等方面[3-6]。目前已經(jīng)形成了很多完善的拓撲發(fā)現(xiàn)、拓撲生成、拓撲優(yōu)化算法。針對復雜網(wǎng)絡(luò)拓撲的可視化,張暢等人提出一種NECB壓縮算法,并應用FR算法進行點布局[7];肖群健等提出了基于SNMP協(xié)議,使用MIBs數(shù)據(jù)的拓撲發(fā)現(xiàn)算法,該算法具有更好的穩(wěn)定性,運算簡單,獲得的網(wǎng)絡(luò)拓撲圖更加準確,具有很強的可操作性[8];劉金明、萬明祥提出了一種基于FR[9]的分層算法——DHL算法,很好地解決了Internet網(wǎng)絡(luò)拓撲中路由級拓撲分層顯示的問題,DHL算法可以多層遞歸,適用于所有節(jié)點對等級的網(wǎng)絡(luò)[10];VATHY-FOGARASSY A和WERNER-STARK A等人提出了一種拓撲的量化和低維可視化算法[11],這些算法按照通信協(xié)議分別從網(wǎng)絡(luò)層和物理層進行拓撲結(jié)構(gòu)的發(fā)現(xiàn)、分析、生成、可視化等算法的研究。在工業(yè)控制領(lǐng)域,由于網(wǎng)關(guān)模塊、IO模塊、耦合模塊等的特性不同,整個設(shè)備系統(tǒng)組成的拓撲結(jié)構(gòu)中的節(jié)點可以被分成幾種不同的類別,形成一個節(jié)點不對等的網(wǎng)絡(luò)拓撲。然而,針對結(jié)點不對等的網(wǎng)絡(luò)拓撲結(jié)構(gòu)的可視化研究尚未引起足夠的關(guān)注。
本文以自主研發(fā)的PLC為硬件依托,針對復雜工控網(wǎng)絡(luò)拓撲結(jié)構(gòu)的可視化問題,提出一種合理的方案對網(wǎng)絡(luò)拓撲進行分層,合理去除了環(huán)狀結(jié)構(gòu),將大數(shù)據(jù)劃分為小數(shù)據(jù),降低圖形子系統(tǒng)的顯示復雜度。以關(guān)鍵度為標準實現(xiàn)關(guān)鍵節(jié)點網(wǎng)絡(luò)壓力的預警,提高工業(yè)控制網(wǎng)絡(luò)的健壯性。
1 組態(tài)軟件概述
組態(tài)的含義是配置、設(shè)置、設(shè)定等意思,是指用戶通過類似“搭積木”的方式來完成自己所需要的軟件功能,而不需要編寫計算機程序。典型的監(jiān)控系統(tǒng)主要包括管理層、監(jiān)控層、控制層、工業(yè)現(xiàn)場四個部分,其中組態(tài)軟件用于管理層和監(jiān)控層。組態(tài)軟件主要完成現(xiàn)場數(shù)據(jù)收集處理、遠程監(jiān)控、控制命令轉(zhuǎn)發(fā)等工作,以及數(shù)據(jù)的接收處理、監(jiān)控界面刷新、歷史數(shù)據(jù)保存等[12]。
PLC網(wǎng)絡(luò)控制系統(tǒng)的連接圖如圖1所示,組態(tài)軟件存于PC,通過網(wǎng)1和主站按照自定義的網(wǎng)絡(luò)協(xié)議進行通信,將PC端配置的所有數(shù)據(jù)信息發(fā)送給主站,由主站將這些數(shù)據(jù)按照存儲地址偏移值及長度搬到CPU的共享內(nèi)存中,CPU通過共享內(nèi)存區(qū)域與從站設(shè)備,例如AI、AO、DI、DO、網(wǎng)關(guān)模塊進行數(shù)據(jù)交互。網(wǎng)關(guān)模塊可以轉(zhuǎn)變網(wǎng)絡(luò)的通信協(xié)議,圖1中網(wǎng)2按照相應的通信協(xié)議完成了網(wǎng)關(guān)模塊與其從站設(shè)備的數(shù)據(jù)交互。同時,組態(tài)軟件會分析由主站返回來的數(shù)據(jù)信息,進行在線的實時顯示。組態(tài)軟件中顯示連接關(guān)系應該與控制系統(tǒng)的實際連接相匹配,例如,每一個AI對應組態(tài)畫面中的一個AI模塊圖形,每個物理設(shè)備都應在組態(tài)軟件中,并且能夠在組態(tài)界面中找到一個模塊圖形與之對應。
由于總線和可擴展設(shè)備的存在,一個網(wǎng)絡(luò)中可以連接多個總線,每個總線又可以分別連接很多設(shè)備,同時大多數(shù)設(shè)備(例如網(wǎng)關(guān)模塊)可以掛載自己的子設(shè)備,這樣整個控制系統(tǒng)的設(shè)備連接就形成了一個復雜的拓撲結(jié)構(gòu)。設(shè)備的物理連接是一種三維物體的存在形式,如何將這些三維物體的連接清晰明了地映射到二維空間中顯示在組態(tài)軟件中成為拓撲結(jié)構(gòu)可視化的重點。本文使用分層的方法將二維的顯示擴展到三維空間,添加分層層次為第三維數(shù)據(jù)。
2 組態(tài)拓撲設(shè)計
網(wǎng)絡(luò)拓撲結(jié)構(gòu)主要有總線型、星型、環(huán)型、樹型、網(wǎng)狀和混合型。本文采用以上類型都能轉(zhuǎn)化的樹型結(jié)構(gòu)為數(shù)據(jù)存儲方式。
2.1 拓撲數(shù)據(jù)結(jié)構(gòu)
在組態(tài)軟件中的拓撲結(jié)構(gòu)可以轉(zhuǎn)化為一個無向圖來描述:G=(V,E)。其中,V為節(jié)點集合,E為無向圖的邊集合。節(jié)點集合由組態(tài)工程中出現(xiàn)的所有設(shè)備組成,邊則代表各個設(shè)備的連接關(guān)系。
圖2中上半部分為工控領(lǐng)域?qū)嶋H硬件連接的示意圖,黑色粗實線表示總線,方形表示模塊,圓形表示CPU;下半部分為數(shù)據(jù)的結(jié)構(gòu)存儲方式。按照圖中的連接關(guān)系及數(shù)據(jù)的存儲結(jié)構(gòu),將CPU轉(zhuǎn)化為根節(jié)點,CPU直接連接的總線上的所有節(jié)點作為CPU的子節(jié)點。網(wǎng)關(guān)模塊可以掛載支持該網(wǎng)絡(luò)通信協(xié)議的從設(shè)備,即網(wǎng)關(guān)模塊可以連接其他葉子節(jié)點。耦合模塊可以連接兩個模塊,使得設(shè)備連接拓撲中出現(xiàn)環(huán)狀,分層方法可以降低環(huán)形顯示的復雜性。
在拓撲結(jié)構(gòu)的分層可視化顯示中,應該對總線、IO模塊、耦合模塊加以區(qū)分。本文提出的使用廣度優(yōu)先分層算法,可以很好地發(fā)現(xiàn)環(huán)路中的耦合模塊節(jié)點。
2.2 可視化方法設(shè)計
拓撲結(jié)構(gòu)的顯示重要性很高,圖形系統(tǒng)中圖元的重疊會影響拓撲組態(tài)和拓撲分析過程。在工控網(wǎng)絡(luò)中,各個設(shè)備形成的節(jié)點是不對等的,導致網(wǎng)絡(luò)中的DHL分層算法并不適用[7]。工控網(wǎng)絡(luò)中節(jié)點的連接關(guān)系具有一定的層次性,在選取環(huán)路的拆分點時,環(huán)路的節(jié)點并不對等。本文根據(jù)層次關(guān)系強這一特點,提出工控網(wǎng)絡(luò)拓撲的分層顯示,使用廣度優(yōu)先的方法可以很好地發(fā)現(xiàn)環(huán)路中的耦合模塊,并利用該點拆分環(huán)路。
2.2.1 分層方法
拓撲結(jié)構(gòu)可視化時,為了清晰起見會對繪制圖元進行碰撞檢測來防止重疊顯示。但是,對于一個三維的物理拓撲結(jié)構(gòu),如果控制網(wǎng)絡(luò)過于復雜,利用空間碰撞檢測的方法避免圖元重疊和交叉的效果并不理想。本文提出使用廣度優(yōu)先的方法對拓撲圖進行分層,在二維空間坐標系的基礎(chǔ)上,添加層次作為第三維數(shù)據(jù),每層的數(shù)據(jù)仍然映射到二維平面中。對于拆分之后在同一層的拓撲數(shù)據(jù),使用分離距離來進行碰撞檢測[13],本文采用歐式距離的計算如下:
式中,d表示距離,(x1,y1)和(x2,y2)分別是二維空間中的兩個點。
按照圖的廣度優(yōu)先生成樹的節(jié)點高度進行分層,在第一個配置界面上只顯示高度為1的節(jié)點組成的拓撲結(jié)構(gòu)。圖的廣度優(yōu)先生成樹是按照圖的廣度優(yōu)先遍歷的方法生成的。如圖3所示,每個節(jié)點中的數(shù)字代表當前節(jié)點的值。
(1)初始化拓撲圖中每個節(jié)點的值為1,選取控制站所在的節(jié)點作為第一個節(jié)點;
(2)按照廣度優(yōu)先的方法對拓撲圖中的節(jié)點進行遍歷,節(jié)點每被遍歷一次就將該節(jié)點的值減1;
(3)直到遍歷過所有的節(jié)點,遍歷的路徑即為圖的廣度優(yōu)先生成樹。
根據(jù)數(shù)據(jù)結(jié)構(gòu)的定義方法,每個節(jié)點的子節(jié)點都是該節(jié)點設(shè)備的從設(shè)備。故將從站設(shè)備的配置顯示在該設(shè)備的主設(shè)備的下一層,從設(shè)備的從設(shè)備同理。對于圖中不同層的公共節(jié)點,即在廣度優(yōu)先生成樹中,值為小于0的節(jié)點,用特定顏色來進行標記。在圖3中節(jié)點值為-1的節(jié)點,表明是形成環(huán)的節(jié)點。
生成廣度優(yōu)先生成樹后,按照樹的高度進行分層顯示。這里仍然以圖3中的樹結(jié)構(gòu)為例,為了描述方便起見,將圖3樹中節(jié)點內(nèi)的值改為節(jié)點編號顯示,如圖4所示。將高度為1的節(jié)點顯示在第一層,高度為2的節(jié)點顯示在第二層,每層都要保留其父節(jié)點。節(jié)點5為廣度生成樹中的值為-1的節(jié)點,故在第二層顯示時,以深色顯示,并分別顯示到第二層的兩個子樹中。在層次的劃分上,也可以根據(jù)實際情況,改變劃分的間隔高度。
2.2.2 分層算法實現(xiàn)
基于廣度優(yōu)先生成樹的分層算法,首先選取CPU節(jié)點為根節(jié)點,對整個拓撲圖進行遍歷,保留下各個節(jié)點的遍歷路徑,即為廣度優(yōu)先生成樹,并根據(jù)樹的高度分層顯示到界面上。廣度優(yōu)先生成樹的偽代碼如下:
廣度優(yōu)先遍歷的方法時間復雜度為O(|E|),|E|為拓撲圖中邊的數(shù)量。故使用廣度優(yōu)先生成樹的方式進行拓撲圖的劃分,并不會提高計算的復雜度。
3 拓撲分析預警
拓撲圖可以根據(jù)對圖中各個節(jié)點的度、經(jīng)過的最短路徑長度、聚集度等特征[7]來分析整個拓撲的狀態(tài),根據(jù)這些信息可以發(fā)現(xiàn)拓撲中的關(guān)鍵節(jié)點。
關(guān)鍵節(jié)點就是節(jié)點的損壞會導致拓撲網(wǎng)絡(luò)中與這個節(jié)點連通的其他節(jié)點受到嚴重影響,例如網(wǎng)關(guān)模塊的損壞就有比IO模塊更大的影響。對于拓撲圖中的一個節(jié)點i與其他ki個葉子節(jié)點連通,則稱ki為節(jié)點i的連通度,記為d(i)。節(jié)點的度越大,設(shè)備在工控網(wǎng)絡(luò)中越重要,設(shè)備的損壞對工控網(wǎng)絡(luò)的影響就越大。
假設(shè)生成如圖5所示的廣度優(yōu)先生成樹,節(jié)點內(nèi)的數(shù)字表示節(jié)點的編號。對于根節(jié)點1來說,葉子節(jié)點3、10、6、8、9都與根節(jié)點1連通,所以節(jié)點1的度d(1)=5。同理,d(5)=3,d(7)=2,又有d(5)>d(7),所以節(jié)點5是比節(jié)點7重要的節(jié)點。
整個圖可以使用回溯法計算節(jié)點可連通的葉節(jié)點的個數(shù),回溯法就是在生成廣度優(yōu)先生成樹之后,再從樹的根節(jié)點開始進行遍歷,按照后續(xù)深度優(yōu)先的方法計算每個節(jié)點的可連通葉節(jié)點的數(shù)量,節(jié)點中子節(jié)點的可連通的葉節(jié)點的和,即為可連通的值。
根據(jù)這種方法,可以查找出拓撲圖中網(wǎng)絡(luò)承受壓力大的設(shè)備,例如節(jié)點5壞掉會導致節(jié)點6、7、8、9都失去控制。在用戶組態(tài)時,檢查對比當前的拓撲關(guān)鍵點,提示用戶改變拓撲連接方法,可以提高工控網(wǎng)絡(luò)的健壯性。
4 結(jié)論
本文提出的拓撲結(jié)構(gòu)分層算法將復雜的工控網(wǎng)絡(luò)拓撲結(jié)構(gòu)進行分層,實現(xiàn)小數(shù)據(jù)量的可視化,提高將數(shù)據(jù)轉(zhuǎn)化為圖形顯示的速度,同時通過對當前圖形的分析實現(xiàn)預警。該方法可以應用于工控網(wǎng)絡(luò)中組態(tài)拓撲與物理拓撲的一致性檢查,從站掃描自動生成組態(tài)拓撲等方面,但是本文中的方法忽略了總線這個數(shù)據(jù)實體,未考慮某些模塊自帶環(huán)路的情況。在接下來的工作中,將會在收集大量的數(shù)據(jù)之后,對分層方法的參數(shù)標準進行研究。
參考文獻
[1] 歐金成,歐世樂,林德杰,等.組態(tài)軟件的現(xiàn)狀與發(fā)展[J].工業(yè)控制計算機,2002,15(4):42-45.
[2] 徐鑫鑫.基于HTML5和SVG跨平臺工控圖形組態(tài)軟件的研發(fā)[D].南京:南京大學,2014.
[3] 鄭耿忠,劉三陽,齊小剛.基于小世界網(wǎng)絡(luò)模型的無線傳感器網(wǎng)絡(luò)拓撲研究綜述[J].控制與決策,2010,25(12):1761-1768.
[4] 鄭嘯,陳建平,邵佳麗,等.基于復雜網(wǎng)絡(luò)理論的北京公交網(wǎng)絡(luò)拓撲性質(zhì)分析[J].物理學報,2012,61(19):95-105.
[5] 苗新,張東霞,宋璇坤.全球電力能源互聯(lián)網(wǎng)拓撲的矩陣表述[J].電力系統(tǒng)自動化,2016(5):8-16.
[6] 朱鐵穩(wěn),李琦,苗前軍.三維空間對象拓撲關(guān)系的研究[J].計算機工程與應用,2003,39(17):1-3.
[7] 張暢,謝鈞,胡谷雨,等.復雜網(wǎng)絡(luò)拓撲可視化方案設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2014(12):78-82.
[8] 肖群健.局域網(wǎng)拓撲發(fā)現(xiàn)技術(shù)研究與應用[D].廣州:廣東工業(yè)大學,2011.
[9] 李海峰.圖布局FR算法的研究與實現(xiàn)[J].電腦知識與技術(shù),2013(12):2864-2865.
[10] 劉金明,萬明祥.基于節(jié)點度分層的路由器級拓撲布局算法[J].計算機技術(shù)與發(fā)展,2015(1):100-106.
[11] VATHY-FOGARASSY A,WERNER-STARK A,GAL B,et al.Visualization of Topology representing networks[M].Intelligent Data Engineering and Automated Learning:IDEAL 2007,2007:557-566.
[12] 王光.基于C#的監(jiān)控組態(tài)軟件開發(fā)[D].哈爾濱:哈爾濱工業(yè)大學,2012.
[13] 潘海鴻,馮俊杰,陳琳,等.基于分離距離的碰撞檢測算法綜述[J].系統(tǒng)仿真學報,2014,26(7):1407-1416.
作者信息:
張 灣1,張 華2,郭肖旺1,霍玉鮮1,張曉莉1
(1.華北計算機系統(tǒng)工程研究所,北京100083;2.北京航天飛行控制中心,北京102206)