一種智能變電站scd文件快速解析方法
【技術領域】
[0001]本發明涉及智能變電站自動化技術領域,尤其涉及一種智能變電站SCD文件快速解析方法。
【背景技術】
[0002]在智能變電站中,變電站配置描述文件(substat1n configurat1ndescript1n, SCD)描述了包含站內各個智能電子設備(Intelligent Electronic Device,IED)裝置的保護定值、數據描述、數據類型、通信參數、控制塊參數和裝置間的互聯關系,尤其是SMV與GOOSE數據類型、描述和短地址等信息。在智能變電站的設計、調試、運維、改造和擴建過程中需要針對SCD文件內容反復修改,從而需要反復打開SCD文件進行解析查看數據信息。目前智能變電站SCD解析的主要工作是通過設計高效的快速解析方法,快速提取SCD文件中站內各個IED裝置的數據信息。快速解析方法主要是針對減少內存開銷、降低時間消耗、提高查找效率而設計。
[0003]S⑶文件是由SCL語言描述的文本文件,無法直觀體現一次系統模型、通信網絡配置、邏輯回路配置、裝置實例配置、LN功能分配、SMV及G00SE配置等。通過現有的解析方法得到的數據結果非常抽象不利于理解,還需要實現數據內容拼接、比較、交叉查找等方法,在打開SCD文件解析的過程中需要占用系統大量的內存資源,整個流程消耗時間比較漫長,不利于智能變電站的設計、調試、運維、改造和擴建過程中需要針對SCD文件內容反復修改后,需要進行解析查看驗證工作。因此,快速解析方法需要實現內存管理機制、高效查找算法和數據實例化操作接口。
[0004]專利CN104346474A公開了一種智能變電站S⑶文件的快速解析方法,其主要是通過分步解析的方法實現,并未從根本上提高解析效率,且應用場合有限。
【發明內容】
[0005]本發明所要解決的技術問題在于,提供一種智能變電站SCD文件快速解析方法減少了內存開銷、降低了時間消耗、提高了查找效率。
[0006]為了解決上述技術問題,本發明提供了一種智能變電站SCD文件快速解析方法,包括:
[0007]加載SCD文件,并對SCD文件的節點數據采用深解析、淺拷貝的方法建立樹形結構對象;
[0008]根據所述樹形結構對象進行數據提取并構建全局哈希表;
[0009]根據所述全局哈希表的映射關系,快速查找SCD文件中全部節點數據。
[0010]進一步的,所述加載SCD文件,并對SCD文件的節點數據采用深解析、淺拷貝的方法建立樹形結構對象,具體包括:
[0011]將SCD文件的XML數據一次性完整讀入內存中,將其過程所產生的值域數據在原數據基礎上按照樹形節點進行分割,將每個節點的節點名稱、節點值、屬性名稱、屬性值、父節點和子節點通過指針記錄,將節點實例化,從而實現深解析;
[0012]在對節點的結構進行組合時,節點優先采用棧內存空間進行分配,當棧內存空間不夠時按塊分配存儲空間,塊的大小通過系統處理器緩存或頁表大小進行指定,每個節點只對其樹形結構進行抽象,值域數據完全由指針進行指向,從而實現淺拷貝,建立樹形結構對象。
[0013]進一步的,所述根據所述樹形結構對象進行數據提取并構建全局哈希表,具體包括:
[0014]獲取所述樹形結構對象中的網絡通信參數節點指針,并根據所述網絡通信參數節點中的子網、網絡連接點和地址信息,構建第一哈希表映射關系,所述第一哈希表映射關系支持快速查找的IED裝置中的網絡通信參數數據信息;
[0015]獲取所述樹形結構對象中的站內各個裝置IED節點指針,根據邏輯設備、邏輯節點、數據集和裝置間的互聯關系,構建第二哈希表映射關系,所述第二哈希表映射關系支持快速查找IED裝置中的SMV、GOOSE發布及訂閱數據信息;
[0016]獲取所述樹形結構對象中的站內各個數據類型模板節點指針,根據模板類型,構建第三哈希表映射關系,所述第三哈希表映射關系支持快速查找的IED裝置中的數據集中發布及訂閱的數據類型。
[0017]進一步的,所述根據所述全局哈希表的映射關系,快速查找SCD文件中全部節點數據,具體包括:
[0018]當需要提取SCD文件中的節點數據時,采用單通道方式,采用指針按層次遍歷樹形結構對象,從而獲取整個節點數據的提取;
[0019]當需要快速定位并獲取網絡通信參數、IED裝置信息、數據類型模板中的指定模板類型時,通過所述全局哈希表映射關系根據關鍵字快速查找;
[0020]根據每個數據實例化對象內部數據信息的功能特性,實現一系列通用的數據查找接口函數,用于快速得到IED裝置中的網絡通信參數、數據集信息、數據類型、數據描述、短地址、和虛端子互聯關系。
[0021]實施本發明,具有如下有益效果:
[0022]本發明利用智能變電站配置描述文件,實現了智能變電站配置描述文件快速解析方法。通過內存管理機制優化了內存分配及數據拷貝;建立內部查找算法提高了 SCD文件各個站內IED裝置數據信息快速查找;利用SCD文件內部結構封裝了數據實例化操作接口,提供了通用數據快速查找方法,簡化了解析流程中的反復操作、查找數據。本發明優化內存開銷,減低時間消耗,有效指導智能變電站設計、調試、運維、改造和擴建的現場調試工作,極大的提高了現場設計、調試和運維的效率。
【附圖說明】
[0023]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0024]圖1是本發明提供的智能變電站SCD文件快速解析方法的一個實施例的流程示意圖。
【具體實施方式】
[0025]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0026]圖1是本發明提供的智能變電站SCD文件快速解析方法的一個實施例的流程示意圖,如圖1所示,包括步驟:
[0027]S101、加載S⑶文件,并對S⑶文件的節點數據采用深解析、淺拷貝的方法建立樹形結構對象。
[0028]具體的,SlOl包括步驟:
[0029]SlOlldf S⑶文件的XML數據一次性完整讀入內存中,將其過程所產生的值域數據在原數據基礎上按照樹形節點進行分割,將每個節點的節點名稱、節點值、屬性名稱、屬性值、父節點和子節點通過指針記錄,將節點實例化,從而實現深解析;
[0030]具體的,在對XML數據深解析時,每遇到‘〈’符號代表節點的開始,緊接著是節點名稱,如果沒有遇到‘〉’或V’符號代表有節點屬性,遇到空格符號后,代表節點名稱的結束,同時代表屬性名稱的開始,如果遇到‘=’符號后并遇到‘“’符號代表屬性值的開始,之后遇到‘”’符號代表屬性值的結束,循環查找空格符號、‘=’符號便可以解析當前節點所有的屬性名稱及屬性值,直到遇到‘〈’、‘〉’或V’符號表示所有屬性解析完成;其次如果遇到‘〉’符號之后緊接的不是‘〈’符號,代表節點值的開始,直到遇到‘〈’符號代表節點值的結束;再次如果沒有遇到‘〉’或V’符號而先遇到‘〈’符號代表子節點的開始,子節點的解析方法和父節點一致,直到遇到符號代表節點的結束。解析過程中遇到的所有‘〈’、
和空格符號都將用‘\0’符號替換,每個節點的節點名稱、節點值、屬性名稱、屬性值、父節點和子節點都是通過指針來記錄,獲取指針指向的數據時可以通過‘\0’符號快速尋值。
[0031]S1012、在對節點的結構進行組合時,節點優先采用棧內存空間進行分配,當棧內存空間不夠時按塊分配存儲空間,塊的大小通過系統處理器緩存或頁表大小進行指定,每個節點只對其樹形結構進行抽象,值域數據完全由指針進行指向,從而實現淺拷貝,建立樹形結構對象。獲取值域數據不需要進行內存分配和數據拷貝,全部以指針的形式返回。這樣可以提高處理器對其訪問的命中機率,由于結構與值域的耦合分離以及處理器的快速地址訪問機率,其程序訪問接口性能會被大大提高。
[0032]S102、根據所述樹形結構對象進行數據提取并構建全局哈希表。
[0033]具體的,S102包括步驟:
[00