用于智能變電站icd模型之間的一致性校驗方法
【技術領域】
[0001] 本發(fā)明涉及一種電力系統(tǒng)領域的方法,具體講涉及一種用于智能變電站ICD模型 之間的一致性校驗方法。
【背景技術】
[0002] 國家電網(wǎng)公司為深化基建標準化建設,加強智能變電站信息模型標準化管理,規(guī) 范信息模型的檢測要求,頒布了企業(yè)標準Q/GDW11156-2014《智能變電站二次系統(tǒng)信息模型 校驗規(guī)范》(以下簡稱《規(guī)范》),推動智能變電站二次信息模型標準化應用,促進二次系統(tǒng) 信息模型校驗的規(guī)范化,確保信息模型的有效性、完整性和一致性,確保不同廠家設備的互 操作性。
[0003] 《規(guī)范》中第7. 4節(jié)定義了不同I⑶模型文件之間的一致性校驗,其中包括數(shù)據(jù)類 型模板沖突性檢查和數(shù)據(jù)類型模板重復定義檢查(冗余性檢查)。
[0004] 數(shù)據(jù)類型模板沖突性檢查針對不同I⑶模型文件中數(shù)據(jù)類型模板 〈DataTypeTemplates〉定義的各種數(shù)據(jù)類型是否存在內(nèi)容不同、命名相同的情況,若存在, 說明該數(shù)據(jù)類型模板定義沖突,應進行區(qū)分命名。具體的校驗內(nèi)容包括:
[0005] 1)LNodeType是否存在沖突;
[0006] 2)D0Type是否存在沖突;
[0007] 3)DAType是否存在沖突;
[0008] 4)EnumType是否存在沖突。
[0009] 數(shù)據(jù)類型模板重復定義檢查針對不同I⑶模型文件中數(shù)據(jù)類型模板 〈DataTypeTemplates〉定義的各種數(shù)據(jù)類型是否存在內(nèi)容相同、命名不同的情況,若存在, 說明數(shù)據(jù)類型模板重復定義,應進行統(tǒng)一命名,具體的校驗內(nèi)容包括:
[0010] 1)LNodeType是否存在重復定義;
[0011] 2)DOType是否存在重復定義;
[0012] 3)DAType是否存在重復定義;
[0013] 4)EnumType是否存在重復定義。
[0014]目前,國內(nèi)外尚未出現(xiàn)不同ICD模型文件數(shù)據(jù)類型模板沖突性和冗余性校驗方 法,而傳統(tǒng)的基于模型文本靠人力檢查的方法效率十分低下。因此,本發(fā)明填補了這一方面 的空白,能夠進行快速的、準確的對不同ICD模型文件進行數(shù)據(jù)類型模板的沖突性和冗余 性校驗。
【發(fā)明內(nèi)容】
[0015] 為克服上述現(xiàn)有技術的不足,本發(fā)明提供一種用于智能變電站ICD模型之間的一 致性校驗方法。
[0016] 實現(xiàn)上述目的所采用的解決方案為:
[0017] 一種用于智能變電站ICD模型之間的一致性校驗方法,其中,所述方法包括以下 步驟:
[0018] 1)建立模型結構體;
[0019] 2)輸出沖突性校驗結果;
[0020] 3)輸出冗余性校驗結果。
[0021] 局部解析并抽取ICD模型文件的屬性信息,并對每個模板子節(jié)點的屬性信息按照 一定的規(guī)則進行連接,生成特征字符串,然后采用MD5散列函數(shù)哈希算法計算生成第一層 哈希值,第一層哈希值與對應的屬性信息組成第一層哈希表,即第一層哈希-屬性信息表;
[0022] 將每個模板的所有子節(jié)點計算生成的第一層哈希值按照一定規(guī)則相連后,采用 MD5散列函數(shù)哈希算法計算生成第二層哈希值,第二層哈希值與對應的模板id組成第二層 哈希表,即模板id-第二層哈希表及第二層哈希-模板id表;
[0023] 所述模板id-第二層哈希表主鍵為模板id ;
[0024] 所述第二層哈希-模板id表主鍵為哈希值;
[0025] 第二層哈希值與對應的第一層哈希值組成的哈希關系表。
[0026] 采用SAX技術基于可擴展配置文件解析I⑶模型文件,抽取出I⑶模型文件的屬 性信息,并根據(jù)屬性信息通過哈希計算得到雙層嵌套哈希表,包括以下步驟:
[0027] 1)、采用SAX技術按照深度優(yōu)先的方式對ICD模型文件進行遍歷,抽取出ICD模型 的屬性信息。
[0028] 2)、屬性信息包括以下內(nèi)容:〈LNodeType〉中<DO>元素及其name、type屬性; 〈DOType〉中有效的<SD0>元素及其name、type屬性,<DA>元素及其name、bType、type (如果 有)、功能約束FC、有效的<Val>等屬性;〈DAType〉中<BDA>元素及其name、bType、type (如 果有)屬性;〈EnumType〉中〈EnumVal〉元素及其ord、text屬性。
[0029] 3)、將每個模板子節(jié)點的屬性信息按照以下格式進行連接:
[0030] 元素名:屬性名1 =屬性值1屬性名2 =屬性值2......
[0031] 4)、對連接后的屬性信息采用MD5散列函數(shù)哈希算法計算得到128位的第一層哈 希值,模型文件中所有模板每個子節(jié)點的第一層哈希值和對應的屬性信息組成第一層哈希 表,即第一層哈希-屬性信息表。
[0032] 5)、將每個模板的所有子節(jié)點計算生成的第一層哈希值按照一定規(guī)則相連,連接 格式如下:哈希值1哈希值2哈希值3……。
[0033] 6)、對由第一層哈希值連接的字符串采用MD5算法得到第二層哈希值,第二層哈 希值與對應的模板id組成第二層哈希表,即模板id-第二層哈希表及第二層哈希-模板id 表;
[0034] 7)、由5)可以看出,第二層哈希表中每個哈希值都是由第一層哈希表中的部分哈 希值連接后采用MD5計算生成,因此第二層哈希值與第一層哈希值存在一對多關系,通過 這種關系得到由第二層哈希值與對應的第一層哈希值組成的哈希關系表。
[0035] 所述模型結構體包含以下內(nèi)容:哈希關系表、第一層哈希-屬性信息表、模板 id-第二層哈希表及第二層哈希-模板id表。
[0036] 根據(jù)模型結構體中模板id-第二層哈希表進行沖突性校驗,具體步驟為:
[0037] 1)、抽取待檢測的兩個模型文件的模型結構體;
[0038] 2)、比對兩個模型結構體中模板id-第二層哈希表,如果id相同,所對應的第二層 哈希值不同,則發(fā)生了沖突;
[0039]3)、發(fā)生沖突后,根據(jù)哈希關系表,找到發(fā)生沖突的第一層哈希值;
[0040]4)、根據(jù)特征字符串確定發(fā)生沖突的位置;比如特征字符串一個是:DA:bType = VisString255name = mRID,另一個是 DA:bType = Int name = mRID,即可判斷哪里發(fā)生沖 突了。
[0041] 5)、輸出沖突性校驗結果。
[0042] 根據(jù)模型結構體中第二層哈