王瑞雪,王開(kāi)宇,李忠安
(1.南瑞繼保電氣有限公司,江蘇南京211102;2.遼寧省電力有限公司,遼寧沈陽(yáng)110006)
數(shù)字化變電站工程中,變電站間隔設(shè)備與過(guò)程層采集設(shè)備之間以網(wǎng)絡(luò)傳輸方式取代并行電纜連接的SMV通信受到了廣泛關(guān)注,SMV通信主要有IEC 61850-9-1和IEC 61850-9-2 2種格式。文獻(xiàn)[1]和文獻(xiàn)[2]以連接電子式電流互感器合并單元MU裝置為例說(shuō)明了IEC 61850-9-2采樣值的建模、發(fā)送和接收過(guò)程。文獻(xiàn)[3]說(shuō)明IEC 61850-9-2比IEC 61850-9-1更靈活、完善,除了支持直接映射到數(shù)據(jù)鏈路層的SendSMVMessage服務(wù),還支持直接MMS映射服務(wù)。文獻(xiàn)[4]提到了自主開(kāi)發(fā)的SMV報(bào)文測(cè)試與分析軟件。文獻(xiàn)[5]說(shuō)明OMICRON測(cè)試儀器可以配置IEC 61850-9-2模塊發(fā)出IEC 61850-9-2報(bào)文用于測(cè)試數(shù)字化保護(hù)裝置,文獻(xiàn)[6]和文獻(xiàn)[7]說(shuō)明可以使用WINPCAP軟件包使計(jì)算機(jī)Windows系統(tǒng)直接發(fā)出GOOSE報(bào)文用于數(shù)字化保護(hù)設(shè)備測(cè)試。目前還未見(jiàn)專(zhuān)門(mén)基于Windows平臺(tái)通過(guò)網(wǎng)卡介質(zhì)直接收發(fā)的IEC61850-9-2數(shù)據(jù)模擬測(cè)試收發(fā)軟件的報(bào)道。
文中主要使用WinPcap4.0.2版本軟件開(kāi)發(fā)包設(shè)計(jì)了IEC 61850-9-2仿真收發(fā)測(cè)試軟件。設(shè)計(jì)了5個(gè)模塊:MAC嗅探模塊、CID文件讀取模塊、SNTP對(duì)時(shí)模塊、IEC 61850-9-2報(bào)文發(fā)送模塊、IEC 61850-9-2報(bào)文接受模塊。該仿真測(cè)試軟件在計(jì)算機(jī)Windows環(huán)境下網(wǎng)卡介質(zhì)上能夠直接發(fā)送和接受符合數(shù)字化變電站裝置要求的IEC 61850-9-2報(bào)文,從而方便了數(shù)字化變電站裝置測(cè)試人員的相關(guān)測(cè)試工作。
WinPcap由Packet.dll、函數(shù)庫(kù)Libpcap和Wpcap.dll 3個(gè)部分組成軟件開(kāi)發(fā)包,可以在Windows操作平臺(tái)上實(shí)現(xiàn)對(duì)底層網(wǎng)絡(luò)數(shù)據(jù)包的截取過(guò)濾[7]。其主要執(zhí)行函數(shù)如表1所示。
表1 WinPcap函數(shù)
IEC 61850-9-2實(shí)現(xiàn)了過(guò)程層到間隔層采樣值的數(shù)字化傳輸,可以靈活定義數(shù)據(jù)集,讀寫(xiě)控制塊等,對(duì)數(shù)據(jù)傳輸進(jìn)行VLAN和優(yōu)先級(jí)設(shè)置[4]。其結(jié)構(gòu)如圖1所示。
此仿真測(cè)試軟件首先使用Microsoft xml CORE SERVICES 3.0解析裝置配置文本CID文件,把得出IEC 61850-9-2的ASDU配置參數(shù)再配置為WinPcap可發(fā)送的sendqueue數(shù)據(jù),使用IPHLPAPI.LIB來(lái)獲得網(wǎng)絡(luò)內(nèi)設(shè)備的MAC信息、IP信息、name信息。用pcap_open打開(kāi)網(wǎng)絡(luò)適配器,pcap_sendqueue_transmit發(fā)送和pcap_next_ex接受,最后用pcap_close關(guān)閉網(wǎng)絡(luò)適配器。此軟件使用SNTP對(duì)時(shí)。其程序流程如圖2所示。
圖2 軟件程序流程
在設(shè)置時(shí)區(qū)參數(shù)、客戶(hù)端IP參數(shù)和服務(wù)器IP參數(shù)后,接受SNTP對(duì)時(shí)服務(wù)器的2種對(duì)時(shí)方式。(1)主動(dòng)查詢(xún)點(diǎn)對(duì)點(diǎn);(2)廣播對(duì)時(shí)。保證IEC 61850-9-2數(shù)據(jù)報(bào)文發(fā)送和接受時(shí)間的一致性。
WinPcap的發(fā)送函數(shù)有pcap_sendpacket和pcap_sendqueue_transmit,分別為發(fā)送單個(gè)數(shù)據(jù)包和發(fā)送隊(duì)列[7]。pcap_sendpacket函數(shù)需要的參數(shù)是1個(gè)裝有要發(fā)送數(shù)據(jù)的緩沖區(qū)、發(fā)送的長(zhǎng)度和1個(gè)適配器。緩沖區(qū)中的數(shù)據(jù)將不被WinPcap內(nèi)核緩沖協(xié)議處理,只是作為最原始的數(shù)據(jù)流被發(fā)送,發(fā)送時(shí)間隨機(jī),不能固定。而pcap_sendqueue_transmit函數(shù)提供同步時(shí)間最優(yōu)機(jī)制來(lái)發(fā)送1組隊(duì)列數(shù)據(jù)包,pcap_sendqueue_alloc函數(shù)用來(lái)創(chuàng)建1個(gè)隊(duì)列,pcap_sendqueue_queue函數(shù)將帶有時(shí)間戳和長(zhǎng)度的pcap_pkthdr結(jié)構(gòu)附加在隊(duì)列數(shù)據(jù)包上,然后調(diào)用pcap_sendqueue_transmit函數(shù)來(lái)發(fā)送隊(duì)列數(shù)據(jù)包,該函數(shù)的第3個(gè)參數(shù)如果非0則表示發(fā)送將是同步的,這樣能夠使發(fā)送時(shí)間精確到微秒,但是將占用很大的CPU資源,因?yàn)閃inPcap的數(shù)據(jù)是在內(nèi)核級(jí)上被緩沖,最后使用pcap_sendqueue_destroy函數(shù)來(lái)釋放掉所有的隊(duì)列資源。
對(duì)于數(shù)字化變電站設(shè)備來(lái)說(shuō),IEC 61850-9-2報(bào)文在1 s內(nèi)要被發(fā)送上千次,所以需將發(fā)送IEC 61850-9-2報(bào)文的時(shí)間精確到微秒級(jí)別,這就需要使用pcap_sendqueue_transmit函數(shù)。本文實(shí)驗(yàn)聯(lián)調(diào)的數(shù)字化變電站設(shè)備1 s需要接受4 000次IEC 61850-9-2報(bào)文,并且根據(jù)ASDU中數(shù)據(jù)變化計(jì)算幅值和角度。
此軟件編譯環(huán)境是Windows下的Visual C++編譯環(huán)境,Visual C++的定時(shí)器極限只能到達(dá)1 ms。本文對(duì)比使用了2種微秒定時(shí)器:rdtsc內(nèi)嵌機(jī)器碼微秒定時(shí)器和CPU時(shí)鐘頻率微秒定時(shí)器。
rdtsc內(nèi)嵌機(jī)器碼微秒定時(shí)器使用2次getcyclecount函數(shù)返回CPU時(shí)鐘周期數(shù)值差來(lái)測(cè)知時(shí)間,和CPU主頻速率直接對(duì)應(yīng),1個(gè)計(jì)數(shù)相當(dāng)于1/s(CPU主頻Hz數(shù)),缺點(diǎn)是數(shù)據(jù)抖動(dòng)不穩(wěn)定。
CPU時(shí)鐘頻率微秒定時(shí)器首先調(diào)用QueryPerformanceFrequency函數(shù)取得高精度運(yùn)行計(jì)數(shù)器的頻率f,單位是每秒多少次,在需要定時(shí)的代碼的兩端分別調(diào)用QueryPerformanceCounter函數(shù)以取得高精度運(yùn)行計(jì)數(shù)器的數(shù)值n1、n2,兩次數(shù)值的差值通過(guò)f換算成時(shí)間間隔t=(n2-n1)/f,當(dāng)t大于或等于定時(shí)時(shí)間長(zhǎng)度時(shí)啟動(dòng)定時(shí)器。
本文使用毫秒定時(shí)器內(nèi)嵌套微秒定時(shí)器和pcap_next_ex函數(shù)來(lái)接受IEC 61850-9-2報(bào)文,速度較快,接受不丟包。
此軟件與PCS9705B裝置進(jìn)行IEC 61850-9-2數(shù)據(jù)收發(fā)聯(lián)調(diào),硬件設(shè)備連接如圖3所示。
圖3 硬件設(shè)備連接
設(shè)置完電壓一次值、電壓二次值和UA,UB,UC之間相角后,計(jì)算機(jī)發(fā)送4組IEC 61850-9-2電壓數(shù)據(jù) (ua1,ub1,uc1;ua2,ub2,uc2;ua3,ub3,uc3;ua4,ub4,uc4), 第 1組聯(lián)調(diào)電壓數(shù)據(jù)的SMV參數(shù)示意如下。
4組電壓數(shù)據(jù)經(jīng)過(guò)以太網(wǎng)-光纖轉(zhuǎn)換器到達(dá)PCS9705B裝置的光纖數(shù)據(jù)接入插件,4組IEC 61850-9-2數(shù)據(jù)可分別持續(xù)發(fā)送1 min,裝置接受效果較好。測(cè)試人員進(jìn)行分析,第1組聯(lián)調(diào)電壓數(shù)據(jù)顯示結(jié)果如下:UA=57.7V,UB=57.7V,UC=57.7V,UAB=100.0V,UBC=100.0V,UCA=100.0V。
本文主要設(shè)計(jì)了基于WinPcap4.0.2版軟件包、在計(jì)算機(jī)網(wǎng)卡介質(zhì)上直接收發(fā)的IEC 61850-9-2數(shù)據(jù)收發(fā)仿真測(cè)試軟件,可以用來(lái)測(cè)試數(shù)字化變電站設(shè)備的SMV數(shù)據(jù)接受。
此軟件受到pcap_sendqueue_transmit函數(shù)建立數(shù)據(jù)緩沖區(qū)大小的制約,需要改進(jìn)以下幾點(diǎn)。(1)由于IEC 61850-9-2報(bào)文發(fā)送點(diǎn)數(shù)太多,需要的數(shù)據(jù)緩沖區(qū)太大,如果想持續(xù)發(fā)送,必須不斷地建立和釋放SMV數(shù)據(jù)緩沖區(qū),在建立和釋放的時(shí)間片段內(nèi)如何保證發(fā)送數(shù)據(jù)時(shí)間的連貫性是一個(gè)問(wèn)題,需要改進(jìn)。(2)接受的SMV數(shù)據(jù)合成波形COMTRADE格式文件用于故障分析。(3)SNTP對(duì)時(shí)精度不夠,需要改進(jìn)對(duì)時(shí)方式。
[1]萬(wàn) 博,蘇 瑞.遵循IEC 61850-9-2實(shí)現(xiàn)變電站采樣值傳輸[J].電網(wǎng)技術(shù),2009,33(19):199-203.
[2]趙應(yīng)兵,周水斌,馬朝陽(yáng),等.基于IEC 61850-9-2的電子式互感器合并單元的研制[J].電力系統(tǒng)保護(hù)與控制,2010,38(6):104-110.
[3]鄭新才,施魯寧,楊 光,等.IEC 61850標(biāo)準(zhǔn)下采樣值傳輸規(guī)范9-1、9-2的對(duì)比和分析[J].電力系統(tǒng)保護(hù)與控制,2008,36(18):47-50.
[4]莫 峻,譚建成.基于IEC 61850-9-2的合并單元研究[J].現(xiàn)代電力,2009,26(4):10-14.
[5]何 剛,胡 寶,陳強(qiáng)林,等.OMICRON測(cè)試儀在數(shù)字化保護(hù)裝置測(cè)試中的應(yīng)用[J].電力系統(tǒng)保護(hù)與控制,2010,38(12):132-135.
[6]范建忠,馬千里.基于WINPCAP的GOOSE報(bào)文捕獲分析工具開(kāi)發(fā)[J].電力系統(tǒng)自動(dòng)化,2007,31(23):52-56.
[7]循序漸進(jìn)學(xué)習(xí)使用WINPCAP[EB/OL].http://www.onlyblog.com/blog/saobaolpsj/archives/2007/5404.html.