王瑞雪,王開宇,李忠安
(1.南瑞繼保電氣有限公司,江蘇南京211102;2.遼寧省電力有限公司,遼寧沈陽110006)
數字化變電站工程中,變電站間隔設備與過程層采集設備之間以網絡傳輸方式取代并行電纜連接的SMV通信受到了廣泛關注,SMV通信主要有IEC 61850-9-1和IEC 61850-9-2 2種格式。文獻[1]和文獻[2]以連接電子式電流互感器合并單元MU裝置為例說明了IEC 61850-9-2采樣值的建模、發送和接收過程。文獻[3]說明IEC 61850-9-2比IEC 61850-9-1更靈活、完善,除了支持直接映射到數據鏈路層的SendSMVMessage服務,還支持直接MMS映射服務。文獻[4]提到了自主開發的SMV報文測試與分析軟件。文獻[5]說明OMICRON測試儀器可以配置IEC 61850-9-2模塊發出IEC 61850-9-2報文用于測試數字化保護裝置,文獻[6]和文獻[7]說明可以使用WINPCAP軟件包使計算機Windows系統直接發出GOOSE報文用于數字化保護設備測試。目前還未見專門基于Windows平臺通過網卡介質直接收發的IEC61850-9-2數據模擬測試收發軟件的報道。
文中主要使用WinPcap4.0.2版本軟件開發包設計了IEC 61850-9-2仿真收發測試軟件。設計了5個模塊:MAC嗅探模塊、CID文件讀取模塊、SNTP對時模塊、IEC 61850-9-2報文發送模塊、IEC 61850-9-2報文接受模塊。該仿真測試軟件在計算機Windows環境下網卡介質上能夠直接發送和接受符合數字化變電站裝置要求的IEC 61850-9-2報文,從而方便了數字化變電站裝置測試人員的相關測試工作。
WinPcap由Packet.dll、函數庫Libpcap和Wpcap.dll 3個部分組成軟件開發包,可以在Windows操作平臺上實現對底層網絡數據包的截取過濾[7]。其主要執行函數如表1所示。

表1 WinPcap函數
IEC 61850-9-2實現了過程層到間隔層采樣值的數字化傳輸,可以靈活定義數據集,讀寫控制塊等,對數據傳輸進行VLAN和優先級設置[4]。其結構如圖1所示。
此仿真測試軟件首先使用Microsoft xml CORE SERVICES 3.0解析裝置配置文本CID文件,把得出IEC 61850-9-2的ASDU配置參數再配置為WinPcap可發送的sendqueue數據,使用IPHLPAPI.LIB來獲得網絡內設備的MAC信息、IP信息、name信息。用pcap_open打開網絡適配器,pcap_sendqueue_transmit發送和pcap_next_ex接受,最后用pcap_close關閉網絡適配器。此軟件使用SNTP對時。其程序流程如圖2所示。

圖2 軟件程序流程
在設置時區參數、客戶端IP參數和服務器IP參數后,接受SNTP對時服務器的2種對時方式。(1)主動查詢點對點;(2)廣播對時。保證IEC 61850-9-2數據報文發送和接受時間的一致性。
WinPcap的發送函數有pcap_sendpacket和pcap_sendqueue_transmit,分別為發送單個數據包和發送隊列[7]。pcap_sendpacket函數需要的參數是1個裝有要發送數據的緩沖區、發送的長度和1個適配器。緩沖區中的數據將不被WinPcap內核緩沖協議處理,只是作為最原始的數據流被發送,發送時間隨機,不能固定。而pcap_sendqueue_transmit函數提供同步時間最優機制來發送1組隊列數據包,pcap_sendqueue_alloc函數用來創建1個隊列,pcap_sendqueue_queue函數將帶有時間戳和長度的pcap_pkthdr結構附加在隊列數據包上,然后調用pcap_sendqueue_transmit函數來發送隊列數據包,該函數的第3個參數如果非0則表示發送將是同步的,這樣能夠使發送時間精確到微秒,但是將占用很大的CPU資源,因為WinPcap的數據是在內核級上被緩沖,最后使用pcap_sendqueue_destroy函數來釋放掉所有的隊列資源。
對于數字化變電站設備來說,IEC 61850-9-2報文在1 s內要被發送上千次,所以需將發送IEC 61850-9-2報文的時間精確到微秒級別,這就需要使用pcap_sendqueue_transmit函數。本文實驗聯調的數字化變電站設備1 s需要接受4 000次IEC 61850-9-2報文,并且根據ASDU中數據變化計算幅值和角度。
此軟件編譯環境是Windows下的Visual C++編譯環境,Visual C++的定時器極限只能到達1 ms。本文對比使用了2種微秒定時器:rdtsc內嵌機器碼微秒定時器和CPU時鐘頻率微秒定時器。
rdtsc內嵌機器碼微秒定時器使用2次getcyclecount函數返回CPU時鐘周期數值差來測知時間,和CPU主頻速率直接對應,1個計數相當于1/s(CPU主頻Hz數),缺點是數據抖動不穩定。
CPU時鐘頻率微秒定時器首先調用QueryPerformanceFrequency函數取得高精度運行計數器的頻率f,單位是每秒多少次,在需要定時的代碼的兩端分別調用QueryPerformanceCounter函數以取得高精度運行計數器的數值n1、n2,兩次數值的差值通過f換算成時間間隔t=(n2-n1)/f,當t大于或等于定時時間長度時啟動定時器。
本文使用毫秒定時器內嵌套微秒定時器和pcap_next_ex函數來接受IEC 61850-9-2報文,速度較快,接受不丟包。
此軟件與PCS9705B裝置進行IEC 61850-9-2數據收發聯調,硬件設備連接如圖3所示。

圖3 硬件設備連接
設置完電壓一次值、電壓二次值和UA,UB,UC之間相角后,計算機發送4組IEC 61850-9-2電壓數據 (ua1,ub1,uc1;ua2,ub2,uc2;ua3,ub3,uc3;ua4,ub4,uc4), 第 1組聯調電壓數據的SMV參數示意如下。

4組電壓數據經過以太網-光纖轉換器到達PCS9705B裝置的光纖數據接入插件,4組IEC 61850-9-2數據可分別持續發送1 min,裝置接受效果較好。測試人員進行分析,第1組聯調電壓數據顯示結果如下:UA=57.7V,UB=57.7V,UC=57.7V,UAB=100.0V,UBC=100.0V,UCA=100.0V。
本文主要設計了基于WinPcap4.0.2版軟件包、在計算機網卡介質上直接收發的IEC 61850-9-2數據收發仿真測試軟件,可以用來測試數字化變電站設備的SMV數據接受。
此軟件受到pcap_sendqueue_transmit函數建立數據緩沖區大小的制約,需要改進以下幾點。(1)由于IEC 61850-9-2報文發送點數太多,需要的數據緩沖區太大,如果想持續發送,必須不斷地建立和釋放SMV數據緩沖區,在建立和釋放的時間片段內如何保證發送數據時間的連貫性是一個問題,需要改進。(2)接受的SMV數據合成波形COMTRADE格式文件用于故障分析。(3)SNTP對時精度不夠,需要改進對時方式。
[1]萬 博,蘇 瑞.遵循IEC 61850-9-2實現變電站采樣值傳輸[J].電網技術,2009,33(19):199-203.
[2]趙應兵,周水斌,馬朝陽,等.基于IEC 61850-9-2的電子式互感器合并單元的研制[J].電力系統保護與控制,2010,38(6):104-110.
[3]鄭新才,施魯寧,楊 光,等.IEC 61850標準下采樣值傳輸規范9-1、9-2的對比和分析[J].電力系統保護與控制,2008,36(18):47-50.
[4]莫 峻,譚建成.基于IEC 61850-9-2的合并單元研究[J].現代電力,2009,26(4):10-14.
[5]何 剛,胡 寶,陳強林,等.OMICRON測試儀在數字化保護裝置測試中的應用[J].電力系統保護與控制,2010,38(12):132-135.
[6]范建忠,馬千里.基于WINPCAP的GOOSE報文捕獲分析工具開發[J].電力系統自動化,2007,31(23):52-56.
[7]循序漸進學習使用WINPCAP[EB/OL].http://www.onlyblog.com/blog/saobaolpsj/archives/2007/5404.html.