ASN.1解碼過程就變成了將整個報文中的APDU拆成一個一個小結(jié)構(gòu),直接將小結(jié)構(gòu)的數(shù)據(jù)值取出。
[0108]本實施例針對數(shù)據(jù)分析的高效性,針對固定的報文,可以選擇性的解析數(shù)據(jù),而不是按照傳統(tǒng)方法,將數(shù)據(jù)從頭解析到尾。有些數(shù)據(jù)比較特殊,可以根據(jù)其數(shù)據(jù)類型,直接進(jìn)行選擇性解析,其大大提高了解碼的處理效率。
[0109]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項】
1.一種數(shù)字化變電站網(wǎng)絡(luò)報文的解碼方法,其特征在于,包括如下步驟: A)接收數(shù)據(jù)報文,并對其進(jìn)行解析獲取報文類型; B)判斷所述數(shù)據(jù)報文是否是smv報文,如是,獲取所述smv報文的長度,執(zhí)行步驟C);否則,執(zhí)行步驟D); C)判斷所述smv報文的數(shù)據(jù)頭類型并依據(jù)其數(shù)據(jù)頭類型的內(nèi)容解析數(shù)據(jù)內(nèi)容,執(zhí)行步驟F); D)判斷所述數(shù)據(jù)報文是否是goose報文,如是,獲取所述goose報文的長度,執(zhí)行步驟E);否則,不執(zhí)行任何操作; E)判斷所述goose報文的數(shù)據(jù)頭類型并依據(jù)其數(shù)據(jù)頭類型的內(nèi)容解析數(shù)據(jù)內(nèi)容,執(zhí)行步驟F); F)判斷所述數(shù)據(jù)內(nèi)容是否解析完畢,如是,結(jié)束;否則,返回所述步驟C)或步驟E)。
2.根據(jù)權(quán)利要求1所述的數(shù)字化變電站網(wǎng)絡(luò)報文的解碼方法,其特征在于,所述步驟C)進(jìn)一步包括: Cl)判斷smv報文的標(biāo)識是否為0x80,如是,獲取所述smv報文中結(jié)構(gòu)體的個數(shù),執(zhí)行步驟C3);否則,執(zhí)行步驟C2); C2)出現(xiàn)錯誤提示并跳出程序; C3)判斷所述smv報文的標(biāo)識是否為0x81,如是,獲取所述smv報文的安全等級數(shù)據(jù),執(zhí)行步驟C4);否則,返回步驟C2); C4)判斷所述smv報文的標(biāo)識是否為0xa2,如是,獲取所述smv報文中結(jié)構(gòu)體的數(shù)據(jù)內(nèi)容,執(zhí)行步驟C5);否則,返回步驟C2); C5)依次解析采樣值ID、數(shù)據(jù)集字符串、采樣計數(shù)、配置版本、刷新時間、采樣同步和采樣率。
3.根據(jù)權(quán)利要求2所述的數(shù)字化變電站網(wǎng)絡(luò)報文的解碼方法,其特征在于,所述步驟E)進(jìn)一步包括: El)判斷goose報文的標(biāo)識是否為0x80,如是,獲取所述goose報文中結(jié)構(gòu)體的個數(shù),執(zhí)行步驟E3);否則,執(zhí)行步驟E2); E2)出現(xiàn)錯誤提示并跳出程序; E3)依次解析控制塊引用、生成時間、數(shù)據(jù)集引用、goose應(yīng)用標(biāo)識、事件時間、狀態(tài)計數(shù)、序列計數(shù)、測試、版本、需要重新配置和數(shù)據(jù)集條目數(shù),執(zhí)行步驟E4); E4)判斷所述goose報文的標(biāo)識是否為0x82,如是,將其解析為bool類型,執(zhí)行步驟E5);否則,返回步驟E2); E5)判斷所述goose報文的標(biāo)識是否為0x84,如是,將其解析為bit_string類型,執(zhí)行步驟E6);否則,返回步驟E2); E6)判斷所述goose報文的標(biāo)識是否為0x85,如是,將其解析為int類型,執(zhí)行步驟E7);否則,返回步驟E2); E7)判斷所述goose報文的標(biāo)識是否為0x86,如是,將其解析為unsigned類型,執(zhí)行步驟ES);否則,返回步驟E2); E8)判斷所述goose報文的標(biāo)識是否為0x87,如是,將其解析為float類型,執(zhí)行步驟E9);否則,返回步驟E2); E9)判斷所述goose報文的標(biāo)識是否為0x91,如是,將其解析為UTC類型,執(zhí)行步驟E10);否則,返回步驟E2); E10)判斷所述goose報文的標(biāo)識是否為0xa2,如是,將其解析為數(shù)據(jù)結(jié)構(gòu)體類型;否貝1J,返回步驟E2)。
4.根據(jù)權(quán)利要求1至3任意一項所述的數(shù)字化變電站網(wǎng)絡(luò)報文的解碼方法,其特征在于,在所述步驟B)中,獲取所述smv報文的長度后,還根據(jù)所述smv報文的長度進(jìn)行數(shù)據(jù)的有效性驗證。
5.根據(jù)權(quán)利要求1至3任意一項所述的數(shù)字化變電站網(wǎng)絡(luò)報文的解碼方法,其特征在于,在所述步驟D)中,獲取所述goose報文的長度后,還根據(jù)所述goose報文的長度進(jìn)行數(shù)據(jù)的有效性驗證。
6.一種實現(xiàn)如權(quán)利要求1所述的數(shù)字化變電站網(wǎng)絡(luò)報文的解碼方法的裝置,其特征在于,包括: 報文接收解析單元:用于接收數(shù)據(jù)報文,并對其進(jìn)行解析獲取報文類型;smv報文判斷單元:用于判斷所述數(shù)據(jù)報文是否是smv報文,如是,獲取所述smv報文的長度;否則,繼續(xù)判斷是否為goose報文; smv報文數(shù)據(jù)頭類型判斷單元:用于判斷所述smv報文的數(shù)據(jù)頭類型并依據(jù)其數(shù)據(jù)頭類型的內(nèi)容解析數(shù)據(jù)內(nèi)容; goose報文判斷單元:用于判斷所述數(shù)據(jù)報文是否是goose報文,如是,獲取所述goose報文的長度;否則,不執(zhí)行任何操作; goose報文數(shù)據(jù)頭類型判斷單元:用于判斷所述goose報文的數(shù)據(jù)頭類型并依據(jù)其數(shù)據(jù)頭類型的內(nèi)容解析數(shù)據(jù)內(nèi)容; 解析判斷單元:用于判斷所述數(shù)據(jù)內(nèi)容是否解析完畢,如是,結(jié)束;否則,返回。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述smv報文數(shù)據(jù)頭類型判斷單元進(jìn)一步包括: 第一 smv報文標(biāo)識判斷模塊:用于判斷smv報文的標(biāo)識是否為0x80,如是,獲取所述smv報文中結(jié)構(gòu)體的個數(shù);否則,出現(xiàn)錯誤提示并跳出程序; 第一錯誤提示模塊:用于出現(xiàn)錯誤提示并跳出程序; 第二 smv報文標(biāo)識判斷模塊:用于判斷所述smv報文的標(biāo)識是否為0x81,如是,獲取所述smv報文的安全等級數(shù)據(jù);否則,返回; 第三smv報文標(biāo)識判斷模塊:用于判斷所述smv報文的標(biāo)識是否為0xa2,如是,獲取所述smv報文中結(jié)構(gòu)體的數(shù)據(jù)內(nèi)容;否則,返回; smv報文解析模塊:用于依次解析采樣值ID、數(shù)據(jù)集字符串、采樣計數(shù)、配置版本、刷新時間、采樣同步和采樣率。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述goose報文數(shù)據(jù)頭類型判斷單元進(jìn)一步包括: 第一 goose報文標(biāo)識判斷模塊:用于判斷goose報文的標(biāo)識是否為0x80,如是,獲取所述goose報文中結(jié)構(gòu)體的個數(shù);否則,出現(xiàn)錯誤提示并跳出程序; 第二錯誤提示模塊:用于出現(xiàn)錯誤提示并跳出程序; goose報文解析模塊:用于依次解析控制塊引用、生成時間、數(shù)據(jù)集引用、goose應(yīng)用標(biāo)識、事件時間、狀態(tài)計數(shù)、序列計數(shù)、測試、版本、需要重新配置和數(shù)據(jù)集條目數(shù); 第二 goose報文標(biāo)識判斷模塊:用于判斷所述goose報文的標(biāo)識是否為0x82,如是,將其解析為bool類型;否則,返回; 第三goose報文標(biāo)識判斷模塊:用于判斷所述goose報文的標(biāo)識是否為0x84,如是,將其解析為bit-string類型;否則,返回; 第四goose報文標(biāo)識判斷模塊:用于判斷所述goose報文的標(biāo)識是否為0x85,如是,將其解析為int類型;否則,返回; 第五goose報文標(biāo)識判斷模塊:用于判斷所述goose報文的標(biāo)識是否為0x86,如是,將其解析為unsigned類型;否則,返回; 第六goose報文標(biāo)識判斷模塊:用于判斷所述goose報文的標(biāo)識是否為0x87,如是,將其解析為float類型;否則,返回; 第七goose報文標(biāo)識判斷模塊:判斷所述goose報文的標(biāo)識是否為0x91,如是,將其解析為UTC類型;否則,返回; 第八goose報文標(biāo)識判斷模塊:用于判斷所述goose報文的標(biāo)識是否為0xa2,如是,將其解析為數(shù)據(jù)結(jié)構(gòu)體類型;否則,返回。
9.根據(jù)權(quán)利要求6至8任意一項所述裝置,其特征在于,在所述smv報文判斷單元中,獲取所述smv報文的長度后,還根據(jù)所述smv報文的長度進(jìn)行數(shù)據(jù)的有效性驗證。
10.根據(jù)權(quán)利要求6至8任意一項所述裝置,其特征在于,在所述goose報文判斷單元中,獲取所述goose報文的長度后,還根據(jù)所述goose報文的長度進(jìn)行數(shù)據(jù)的有效性驗證。
【專利摘要】本發(fā)明提出了一種數(shù)字化變電站網(wǎng)絡(luò)報文的解碼方法及裝置,方法包括:接收數(shù)據(jù)報文,并對其解析獲取報文類型;判斷數(shù)據(jù)報文是否是smv報文,如是,獲取smv報文的長度,執(zhí)行下一步驟;否則,判斷是否為goose報文;判斷smv報文的數(shù)據(jù)頭類型并依據(jù)其數(shù)據(jù)頭類型的內(nèi)容解析數(shù)據(jù)內(nèi)容;判斷數(shù)據(jù)報文是否是goose報文,如是,獲取goose報文的長度,執(zhí)行下一步驟;否則,不執(zhí)行任何操作;判斷goose報文的數(shù)據(jù)頭類型并依據(jù)其數(shù)據(jù)頭類型的內(nèi)容解析數(shù)據(jù)內(nèi)容,執(zhí)行下一步驟;判斷數(shù)據(jù)內(nèi)容是否解析完畢,如是,結(jié)束;否則,返回。實施本發(fā)明的數(shù)字化變電站網(wǎng)絡(luò)報文的解碼方法及裝置,具有以下有益效果:解碼效率較高、提高處理性能。
【IPC分類】H04L1-00
【公開號】CN104618062
【申請?zhí)枴緾N201510054558
【發(fā)明人】曹珍崇, 陳娟, 陸以夫, 昊皓, 陳明華, 徐晶
【申請人】中國能源建設(shè)集團(tuán)廣西電力設(shè)計研究院有限公司, 廣州思唯奇計算機(jī)科技有限公司
【公開日】2015年5月13日
【申請日】2015年2月2日