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