[發明專利]基于SPCD及SCD形成智能站過程層網絡拓撲的方法有效
| 申請號: | 201711476138.9 | 申請日: | 2017-12-29 |
| 公開(公告)號: | CN108199879B | 公開(公告)日: | 2021-03-05 |
| 發明(設計)人: | 謝民;劉宏君;王同文;王海港;孫月琴;余俊杰;趙子根;胡曉飛;陳實;黃太貴;戴長春;程曉平;王棟;葉遠波;邵慶祝;俞斌 | 申請(專利權)人: | 國網安徽省電力有限公司;長園深瑞繼保自動化有限公司 |
| 主分類號: | H04L12/24 | 分類號: | H04L12/24;H04L29/08;H02J13/00 |
| 代理公司: | 深圳市中知專利商標代理有限公司 44101 | 代理人: | 孫皓;林虹 |
| 地址: | 230000 *** | 國省代碼: | 安徽;34 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 spcd scd 形成 智能 過程 網絡 拓撲 方法 | ||
1.一種基于SPCD及SCD形成智能站過程層網絡拓撲的方法,包括以下步驟:
一、導入SPCD文件
由智能變電站運維服務器的運維分析系統將存放在本服務器的SPCD文件導入運維分析系統,將電子文檔的文本文件轉化為計算機識別的機器語言;
二、從SPCD文件中提取信息,形成智能變電站二次設備網絡模型結構,獲取SPCD文件的結構關系,包括以下步驟:
(21)解析區域Region節點,提取Region節點信息:描述、名稱,構建SPCD_Region模型結構:區域名稱、區域描述、區域內預制艙列表;
(22)解析預制艙Cubile節點,提取Cubile節點信息:描述、名稱,構建SPCD_Cubile模型結構:名稱、描述、該預制艙內所有端口連線的集合、該預制艙內所有單元的集合;
(23)解析單元Unit節點,提取Unit節點信息:名稱、描述、生產廠家、類型、類別信息,構建SPCD_Unit模型結構:名稱、描述、生產廠家、類型、類別、單元內所有的板卡列表;
(24)解析板卡Board節點,提取Board節點信息:描述、類型、卡槽編號信息,構建SPCD_Board模型結構:描述、類型、卡槽編號、該板卡所有端口的列表;
(25)解析端口Port節點,提取Port節點信息:描述、方向、類型、編號信息,構建SPCD_Port模型結構:描述、方向、類型、編號、上一個發送端口標識、下一個接收 端口標識、所屬單元的標識;
(26)解析同一個預制艙內端口連線IntCore節點,提取IntCore節點信息:連線名稱、發送端口編號、接收端口編號,構建SPCD_Core_Int模型結構:名稱、類型、接收 端口標識、發送端口標識;
(27)解析線纜Cable節點,提取Cable節點信息:描述、名稱、類型、線纜連接的一端預制艙標識、線纜連接的另外一端預制艙標識、預制艙之間端口接線的數目,構建SPCD_Cable模型結構:描述、名稱、類型、線纜連接的一端預制艙標識、線纜連接的另外一端預制艙標識、預制艙之間端口接線的數目、預制艙之間端口接線的集合;
(28)解析不同預制艙之間的端口連線Core節點,提取Core節點信息:編號、發送端口標識、接收端口標識,構建SPCD_Core_Out模型結構:編號、發送端口標識、接收端口標識;
三、構建繼電保護二次設備之間直連路徑或繼電保護二次設備經過交換機間接連接的路徑,包括以下步驟:
(31)將預制艙內部的端口連線對象SPCD_Core_Int集合中每個端口連線對象的端口方向明確為發送Tx或接收Rx的端口,指定發送、接收關系;
(32)不同預制艙之間的端口連線對象SPCD_Core_Out集合中每一個端口連線對象端口方向明確為發送Tx或者接收Rx的端口,指定發送、接收關系;
(33)將步驟(32)中過濾的方向都為RT的端口連線SPCD_Core_Out對象和步驟(31)中過濾的方向都為RT的端口連線對象SPCD_Core_Int對象,存入端口連線對象SPCD_Core列表,對所述端口連線對象指定兩端口的發送端、接收端關系;
(34)形成至少2個端口連接的路徑列表;
四、導入SCD文件
由智能變電站運維服務器的運維分析系統將存放在本服務器的SCD文件導入運維分析系統,將電子文檔的文本文件轉化為計算機識別的機器語言;
五、解析SCD文件,獲取變電站繼電保護信號發送端的二次設備到變電站繼電保護二次設備信號接收端口的映射,包括以下步驟:
(51)根據SCD文件,遍歷SCD文件中的所有節點,創建對象SCD_Object,包含屬性:標簽名、父節點、子節點列表、屬性與屬性值的映射集合;
(52)過濾SCD_Object對象,如果該對象標簽名“ExtRef”,且父節點對象的標簽名為“Inputs”,則將該對象存入對象隊列,標識為vObjects;如果該對象標簽名為“SCL”;則將該節點對象視為根節點對象;
(53)遍歷標簽名為“ExtRef”,并且父對象標簽名為“Inputs”對象的隊列vObjects,獲取對象屬性為“IedName”的值作為發送端二次設備的標識;獲取對象屬性為“intAddr”的值并且根據該對象父節點標識回溯查找標簽名稱為“IED”的節點對象,獲取該標簽名為“IED”的節點對象屬性“name”的值,組成接收端二次設備端口標識;構建從接收端二次設備的端口到發送端二次設備的映射集合;
六、獲得接收端二次設備的端口到發送端二次設備映射的集合,標識為vTxIed2RxportMap,獲得從發送端口到接收端口的網絡路徑集合,標識為vPaths,通過兩集合構建跨交換機的路徑,包括以下步驟:
(61)獲取vTxIed2RxportMap和vPaths;
(62)過濾掉vPaths的直連路徑;
(63)結合直連路徑過濾vTxIed2RxportMap中的對應的映射;
(64)結合過濾以后的vTxIed2RxportMap處理vPaths中發送端口為交換機接收端為設備的路徑,獲取跨交換機從二次設備到二次設備的網絡拓撲;
七、形成完整的網絡路徑列表;
所述步驟一的運維分析系統為PRS7012運維分析系統;
所述步驟(31)包括以下步驟:
(3101)遍歷SPCD_Core_Int列表;
(3102)判斷SPCD_Core_Int列表是否為空,若SPCD_Core_Int列表為空,結束遍歷的過程;
(3103)獲得SPCD_Core_Int列表中當前索引的對象,標識為pCore;
(3104)pCore的端口PortA和端口PortB合理性判斷,不合理依據:PortA的端口方向為“TX”、“RX”、“RT”中的一種,如果未設置或設置不對,即不合理,不合理則中斷該步驟,獲取下一個SPCD_Core_Int對象,重新開始執行步驟(3101);
(3105)判斷pCore的PortB和PortA的方向都為“RT”,“RT”為端口數據傳輸方向的類型;
(3106)將方向都為“RT”的端口存入列表,在步驟(31)中暫不處理該列表;在后續的步驟(33)中,循環處理兩個端口都為“RT”類型的連線對象,形成發送端口和接收端口唯一,中間端口不固定的所有的路徑;
(3107)判斷pCore的PortB方向和PortA的方向,兩端口方向必定為“RX”、“TX”或“RT”,且不相同,方向相同則配置錯誤,中斷流程,重新開始步驟(3101),遍歷下一個端口連線對象;
(3108)判斷pCore的PortA方向等于“Tx”或者PortB的方向等于“Rx”;
(3109)判斷pCore的PortA方向等于“Rx”或者PortB的方向等于“Tx”;
(3110)pCore的PortB的接收端口存在,且不為PortA,則說明配置錯誤,造成PortB的接收端口多個,中斷pCore接下來的流程,重新開始步驟(3101),遍歷下一個端口連線對象;
(3111)pCore的PortA的發送端口存在,且不為PortB,則說明配置錯誤,造成PortA的發送端口多個,中斷pCore接下來的流程,重新開始步驟(3101),遍歷下一個端口連線對象;
(3112)將PortA的發送端口置為PortB,將PortB的接收端口置為PortA,將PortA、PortB存入端口列表中;
(3113)pCore的PortA的接收端口存在,且不為PortB,則說明配置錯誤,造成PortA的接收端口多個,中斷pCore接下來的流程,重新開始步驟(3101),遍歷下一個端口連線對象;
(3114)pCore的PortB的發送端口存在,且不為PortA,則說明配置錯誤,造成PortB的發送端口多個,中斷pCore接下來的流程,遍歷下一個端口連線對象;
(3115)將PortA、PortB存入端口列表中,將PortA的接收端口置為PortB,將PortB的發送端口置為PortA;
所述步驟(32)包括以下步驟:
(3201)遍歷SPCD_Core_Out列表;
(3202)判斷SPCD_Core_Out列表是否為空,列表為空,結束遍歷的過程;
(3203)獲得SPCD_Core_Out列表中當前索引的對象,標識為對象pCore;
(3204)pCore的端口PortA;和端口PortB;合理性判斷,合理性依據:PortA的端口方向為“TX”、“RX”、“RT”中的一種,如果未設置或者設置不對,即不合理,不合理則中斷流程,獲取下一個SPCD_Core_Out對象,重新執行步驟(3201);
(3205)判斷pCore的PortB和PortA的方向都為“RT”,“RT”為端口數據傳輸方向的類型;
(3206)將方向都為“RT”的端口存入列表,在步驟(32)暫不處理該列表;在后續的步驟(33)中,循環處理兩個端口都為“RT”類型的連線,形成發送端口和接收端口唯一,中間端口不固定的所有的路徑;
(3207)判斷pCore的PortB方向和PortA的方向,兩端口方向必定為“RX”、“TX”或“RT”,且不相同,方向相同則配置錯誤,中斷pCore接下來的流程,遍歷下一個端口連線對象;
(3208)判斷pCore的PortA方向等于“Tx”或PortB的方向等于“Rx”;
(3209)判斷pCore的PortA方向等于“Rx”或者PortB的方向等于“Tx”;
(3210)pCore的PortB的接收端口存在,且不為PortA,則配置錯誤,造成PortB的接收端口多個,中斷pCore接下來的流程,重新開始步驟(3201),遍歷下一個端口連線對象;
(3211)pCore的PortA的發送端口存在,且不為PortB,則配置錯誤,造成PortA的發送端口多個,中斷pCore接下來的流程,重新開始步驟(3201),遍歷下一個端口連線對象;
(3212)將PortA的發送端口置為PortB,將PortB的接收端口置為PortA,將PortA、PortB存入端口列表中;
(3213)pCore的PortA的接收端口存在,且不為PortB,則配置錯誤,造成PortA的接收端口多個,中斷pCore接下來的流程,重新開始步驟(3201),遍歷下一個端口連線對象;
(3214)pCore的PortB的發送端口存在,且不為PortA,則配置錯誤,造成PortB的發送端口多個,中斷pCore接下來的流程,遍歷下一個端口連線對象;
(3215)將PortA、PortB存入端口列表中,將PortA的接收端口置為PortB,將PortB的發送端口置為PortA;
所述步驟(33)包括以下步驟:
(3301)判斷端口方向都為RT的端口連線對象SPCD_Core列表是否空或者是否每個非孤立端口連線對象都已經執行過步驟(33),列表為空或者每個非孤立對象都已經處理,則結束該步驟;
(3302)遍歷SPCD_Core列表,逐個獲取端口連接對象,標識為pCore;
(3303)判斷是否遍歷完SPCD_Core列表;
(3304)當遍歷完一輪SPCD_Core列表,用來標識遍歷次數的nCount計數減一;
(3305)未遍歷完SPCD_Core列表,則獲取該索引對應的端口連接對象,標識為pCore;
(3306)判斷pCore的一端口,標識為PortA的發送端口是否存在,若不存在轉至步驟(3313);
(3307)判斷PortA的發送端口是否等于pCore的另外一個端口,標識為PortB,若不等于轉至步驟(3313);
(3308)判斷PortA的接收端口存在并且不等于PortB是否成立,若等于轉至步驟(3313);
(3309)判斷PortB的發送端口存在并且不等于PortA是否成立,若成立轉至步驟(3313);
(3310)將PortA、PortB存入端口列表;
(3311)PortA的接收端口置為PortB,PortB的發送端口置為PortA;
(3312)從SPCD_Core列表中刪除該pCore,nCount計數減一,重新按步驟(3301)開始;
(3313)判斷pCore的PortA的接收端口是否存在,若不存在轉至步驟(3320);
(3314)判斷PortA的接收端口不等于PortB是否成立,若不成立轉至步驟(3320);
(3315)判斷PortA的發送端口存在并且不等于PortB是否成立,若不成立轉至步驟(3320);
(3316)判斷PortB的接收端口存在并且不等于PortA是否成立,若不成立轉至步驟(3320);
(3317)將PortA、PortB存入端口列表m_vPaths;
(3318)PortA的發送端口置為PortB;PortB的接收端口置為PortA;
(3319)從SPCD_Core列表中刪除該pCore,nCount計數減一,重新按步驟(3301)開始;
(3320)判斷pCore的PortB的發送端口是否存在,若不存在轉至步驟(3327);
(3321)判斷PortB的發送端口不等于PortA是否成立,若不成立轉至步驟(3327);
(3322)判斷PortB的接收端口存在并且不等于PortA是否成立,若不成立轉至步驟(3327);
(3323)判斷PortA的發送端口存在并且不等于PortB是否成立,若不成立轉至步驟(3327);
(3324)將PortA、PortB存入端口列表;
(3325)PortA的發送端口置為PortB,PortB的接收端口置為PortA;
(3326)從SPCD_Core列表中刪除pCore,nCount計數減一,重新按步驟(3301)開始;
(3327)判斷pCore的PortB的接收端口是否存在,若不存在轉至步驟(3302);
(3328)判斷PortB的接收端口不等于PortA是否成立,若不成立轉至步驟(3302);
(3329)判斷PortA的接收端口存在并且不等于PortB是否成立,若不成立轉至步驟(3302);
(3330)判斷PortB的發送端口存在并且不等于PortA是否成立,若不成立轉至步驟(3302);
(3331)將PortA、PortB存入端口列表;
(3332)PortB的發送端口置為PortA,PortA的接收端口置為PortB;
(3333)從SPCD_Core列表中刪除該pCore,nCount計數減一,從新按步驟(3301)開始;
所述步驟(34)包括以下步驟:
(3401)判斷端口列表是否為空,若為空結束該步驟;
(3402)從端口列表中取出待處理的端口,標識為PortA,同時從隊列中移除該端口;
(3403)經過步驟(31)到步驟(33),每個端口如果存在發送端口,則可以通過發送端口的標識,一直回溯找到PortA的源發送端口,標識為PortC,并將所經過的端口從端口隊列中移除;
(3404)經過步驟(31)到步驟(33),每個端口如果存在接收端口,則可以通過接收端口的標識,一直下順找到PortA的目的接收端口,并將經過的端口從端口隊列中移除除;
(3405)將源發送端口PortC存入新的端口隊列;
所述步驟四的運維分析系統為PRS7012運維分析系統;
所述步驟(64)包括以下步驟:
(641)從網絡路徑的集合vPaths中獲取接收端為繼電保護二次設備,發送端為交換機的路徑集合,標識為vTxSwitch2RxIed;
(642)判斷vTxSwitch2RxIed是否空,為空則退出步驟(64);
(643)取出vTxSwitch2RxIed中未處理的路徑;
(644)獲得接收端口,標識為pRecvPort以及該端口的標識字符串,標識為sRecvPort;
(645)從vTxIed2RxportMap獲取關鍵字為sRecvPort對應的值,標識為values;
(646)判斷values是否為空;
(647)獲取values中未處理的發送端設備名稱標識為sIedName;
(648)根據sRecvPort和發送方繼電保護二次設備名稱sIedName遞歸獲取完整鏈路。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于國網安徽省電力有限公司;長園深瑞繼保自動化有限公司,未經國網安徽省電力有限公司;長園深瑞繼保自動化有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711476138.9/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:高性能IP網絡中個人標識信息識別系統及方法
- 下一篇:一種故障修復方法及裝置





