GOOSE卡發(fā)送的技術(shù)實現(xiàn)
GOOSE發(fā)送是IEC61850中的一種快速報文傳輸機制,主要依賴于各智能設(shè)備的通信處理能力以及GOOSE網(wǎng)絡(luò)的組網(wǎng)方案。一般來說GOOSE報文的發(fā)送間隔會比較長,需要固定時間間隔來進行。同時GOOSE網(wǎng)絡(luò)的組網(wǎng)方式共分3個階段逐漸改進;a.GOOSE獨立組網(wǎng);b.GOOSE與站控層共用網(wǎng)絡(luò)方式;c.數(shù)字化變電站內(nèi)共用網(wǎng)絡(luò)方式。
一. GOOSE發(fā)送允許發(fā)送的GOOSE報文個數(shù)為N(定義為宏,方便擴展),數(shù)據(jù)流程如圖1所示:
圖1 GOOSE發(fā)送數(shù)據(jù)流
① 根據(jù)IED標志將GOOSE發(fā)送的系統(tǒng)參數(shù)寫入節(jié)點中;
② GOOSE實時參數(shù)有些部分需要寫入節(jié)點中;
③ 根據(jù)GOOSE實時參數(shù)中allData總長度找到TxFrameBuf合適位 置(從尾部開始留出空間),再將實時參數(shù)中allData數(shù)據(jù)集轉(zhuǎn)換成MMS格式并存儲;
④ 將節(jié)點中數(shù)據(jù)按從Node_10到Node_0的逆順序填充到TxFrameBuf中,將記錄sqNum位置和幀頭指針;
⑤ 將組織好的GOOSE報文發(fā)送到EMAC口,組織好超時時間和回調(diào)函數(shù)并加入到系統(tǒng)超時鏈中。
二. GOOSE接收允許接收的GOOSE報文個數(shù)為N(定義為宏,方便擴展),數(shù)據(jù)流程如圖2所示:
圖2 GOOSE接收數(shù)據(jù)流
從EMAC接收的數(shù)據(jù)存儲在RxFrameBuf中,根據(jù)stNum和sqNum的值判斷本報文是否為重傳,如果是重傳將直接丟棄,否則執(zhí)行如下解析:
① 首先根據(jù)判別ID知道IED的序號,再將GOOSE報文中的Head部分解析并存儲到節(jié)點中;
② 將GOOSE報文allData的MMS格式轉(zhuǎn)換成接口格式,轉(zhuǎn)發(fā)給cRIO,如果allData數(shù)據(jù)量很大,那將會分片成多幀發(fā)送給cRIO;
③ 將GOOSE接收實時幀轉(zhuǎn)發(fā)給cRIO。
三. GOOSE報文重傳要確保GOOSE報文重傳需要如圖3所示信息:p_Head指向重傳GOOSE報文的頭部,p_sqNum指向GOOSE報文中的域sqNum,TotLen等于GOOSE報文總長度,TOCnt保存下次重傳時間(單位為毫秒)。
TOCnt的計算規(guī)則如下:
每次接收到GOOSE實時數(shù)據(jù)幀時賦初值為FirsTInterval,以后每次執(zhí)行如下語句操作:If (TOCnt 《 MaxInterval) TOCnt *= Mul;
圖3 GOOSE重傳數(shù)據(jù)結(jié)構(gòu)
最后一步操作是將需要重傳的相關(guān)信息加入到系統(tǒng)超時鏈中:TOCnt是超時時間(單位為毫秒),CallBack根據(jù)p_sqNum對sqNum進行加一操作,再將 GOOSE報文發(fā)送到EMAC,Arg是圖3所示數(shù)據(jù)結(jié)構(gòu)的指針。
圖4 系統(tǒng)超時鏈
在定時器的IRQ中,對圖4的系統(tǒng)超時鏈每個TOCnt不為0的元素進行減1操作,如果等于零,則傳遞指針Arg給CallBack并執(zhí)行該回調(diào)函數(shù)。