黃其培,匡 彪,李興武
(昆明船舶設備研究中心 云南 昆明 650051)
而今互聯(lián)網(wǎng)時代,隨著社會經(jīng)濟的不斷發(fā)展,新技術不斷涌現(xiàn),電力已經(jīng)成為人們的必需品,變電站的數(shù)字化已成為變電站發(fā)展的趨勢。數(shù)字化變電站采用IEC61850標準進行建模,在IEC61850標準的統(tǒng)一規(guī)約下,站內設備間傳送的信息必須按該標準所規(guī)定的相關協(xié)議進行編解碼[1]。由此可知,依據(jù)IEC61850標準對站內流動信息的編解碼在數(shù)字變電站建設中有著不可替代的地位。研究編解碼的快速實現(xiàn)方法具有較高應用、學術價值。
目前國內數(shù)字站數(shù)據(jù)采集與傳輸中,IEC61850-9-1、9-2都有一定的應用,由9-1幀格式固定,編解碼方面軟硬件都有實現(xiàn),對于9-2幀結構的不確定性,其編解碼實現(xiàn)較為復雜,目前主要是采用軟件形式實現(xiàn)。隨著網(wǎng)絡管理功能,交換機技術的迅速發(fā)展和其成本的降低,9-2相對于9-1在安裝靈活、便于實現(xiàn)跨間隔保護及光纖連接簡潔等方面的優(yōu)勢越發(fā)突出,勢必9-2將得到更多的應用,當前關于9-2的研究,主要是通過ARM芯片和軟件來實現(xiàn),由于該方法處理速度較慢,當隨著采樣率的提高,其性能未能改善,不能很好的滿足系統(tǒng)實時性要求,不利于系統(tǒng)工作的穩(wěn)定性,因此,對一種更快速的實現(xiàn)方法的研究迫在眉睫。
基于速度、實時性的考慮,本文提出了采用FPGA實現(xiàn)9-2數(shù)據(jù)幀快速解碼的設計方案,通過軟件仿真和在線數(shù)據(jù)測試,滿足了設計要求,為后期的進一步數(shù)據(jù)處理提供了可靠保證。
IEC61850-9-2標準采用以太網(wǎng)模式,面向任意間隔,通信通道的采樣數(shù)據(jù)傳輸形式可任意組合,便于實現(xiàn)跨間隔的二次功能的采樣值的數(shù)據(jù)傳送[2]。9-2采樣值應用協(xié)議數(shù)據(jù)單元(APDU)采用與基本編碼規(guī)則(BER)相關的ASN.1語法對通過ISO/IEC8802-3傳輸?shù)牟蓸又敌畔⑦M行編碼,則基于IEC61850-9-2標準的APDU幀格式如圖1所示[3]。
本文設計主要分為數(shù)據(jù)解碼和網(wǎng)絡傳輸兩個部分實現(xiàn),實現(xiàn)過程采用模塊化設計,其功能模塊包括存儲器、解碼模塊、網(wǎng)絡傳輸模塊。其中解碼模塊中設有寄存器,CPU可以通過訪問相應的寄存器實現(xiàn)對解碼模塊的設置和狀態(tài)信息的讀取。功能模塊框圖如圖2所示。
由圖可知,當系統(tǒng)開始工作時,CPU通過Avalon總線接口對存儲器、解碼模塊和以太控制器進行初始化設置,解碼模塊與網(wǎng)絡傳輸模塊之間采用流控制模式傳輸,使得解碼模塊可以在不受CPU干預的情況下進行解碼[4]。在解碼過程中,解碼模塊從網(wǎng)絡上獲取數(shù)據(jù),進行實時解碼,以實現(xiàn)幀結構數(shù)據(jù)類分離,并對數(shù)據(jù)進行分類存儲,用戶可以隨時訪問解碼模塊寄存器和存儲器,以獲取自己關心的信息內容(如解碼狀態(tài)、APDU配置信息、采樣速率、采樣值序列等)。
圖1 基于IEC61850-9-2的APDU幀格式Fig.1 The form of APDU of IEC61850-9-2
圖2 系統(tǒng)功能框圖Fig.2 Function diagram of system
研究工作的實現(xiàn)分兩個階段:1)針對具體的9-2數(shù)據(jù)幀的結構特點進行了解碼模塊設計和仿真,解碼模塊仿真采用離線形式,即仿真時所解碼的數(shù)據(jù)幀源于FPGA片上RAM(由CPU初始化)。通過對解碼模塊的仿真,驗證了其功能上的正確性。2)在實現(xiàn)解碼功能的基礎上,對解碼模塊進行了連網(wǎng)測試,驗證了整個解碼系統(tǒng)的正確性和實用性。
解碼模塊運用Verilog HDL進行代碼編寫,其設計的重、難點在于Decode_FSM和TLV_FSM狀態(tài)機的編寫。狀態(tài)機采用Mealy型設計;對于狀態(tài)常量,Decode_FSM采用獨熱碼,TLV_FSM采用二進制編碼[5]。
Decode_FSM狀態(tài)機由14個狀態(tài)常量構成,其狀態(tài)轉移圖如圖3所示。其中IDLE狀態(tài)是狀態(tài)機處于等待解碼狀態(tài);READ狀態(tài)是狀態(tài)機使能Avalon主端口讀操作狀態(tài);在WAIT_READ狀態(tài),狀態(tài)機將從Avalon總線捕獲讀返回的數(shù)據(jù),并對數(shù)據(jù)進行過濾條件的判斷;在TLV_TAG狀態(tài),主要實現(xiàn)對APDU中所包含的數(shù)據(jù)類型進行解碼,并對APDU完整性進行判斷,有誤則終止解碼,同時轉入IDLE狀態(tài);DATA_CLASSIFICATION狀態(tài)下,依據(jù)Flag_gen輸出標志位來完成下一個狀態(tài)的轉移;WRITE_ETH和WAIT_WRITE_ETH狀態(tài)用于實現(xiàn)以太配置信息的存儲;WRITE_APDU和WAIT_WRITE_APDU用于實現(xiàn)APDU配置信息的存儲;WRITE_ASDU和WAIT_WRITE_ASDU狀態(tài)用于實現(xiàn)ASDU配置信息的存儲;WRITE_SAMPDATA和WAIT_WRITE_SAMPDATA用于實現(xiàn)采樣值序列的存儲;當完成一幀數(shù)據(jù)的解碼,進入DONE。
TLV_FSM狀態(tài)機共包括5個狀態(tài)常量,其狀態(tài)轉移圖如圖4所示。TLV_IDLE狀態(tài)是等待TLV編碼的長度域(L域)解碼,沒有進行解碼將一直處于該狀態(tài);TLV_STRUCT_LENGTH狀態(tài)主要是對APDU中結構類型數(shù)據(jù)的L域進行解碼;TLV_N_STRUCT_LENGTH_JUDGE狀態(tài)用于實現(xiàn)對基本類型數(shù)據(jù)的L域編碼進行類型判斷;TLV_N_STRUCT_DEFINITE_LONG用于實現(xiàn)基本類型數(shù)據(jù)的L域編碼為長定長型的解碼;TLV_INDEFINITE用于實現(xiàn)L域編碼為非定長型的解析。
通過SOPC builder[6]構建Nios系統(tǒng),對解碼模塊進行軟件仿真,軟件仿真流程如圖5所示。圖6為存放于RAM中用于仿真的待解碼的一幀數(shù)據(jù),仿真結果如圖7。通過兩圖對比可知,解碼模塊很好的實現(xiàn)了數(shù)據(jù)幀的分離解析,表明了解碼的正確性,并在CPU工作頻率為50 MHz時,解碼一幀557 Bytes的9-2數(shù)據(jù)幀所花費的時間約為54 μs。
運用SOPC builder構建了網(wǎng)絡傳輸模塊,解碼模塊與網(wǎng)絡模塊采用Avalon-ST接口連接,在LOOPBACK模式下,對解碼模塊進行了連網(wǎng)測試,測試數(shù)據(jù)流向圖如圖8所示。仿真測試數(shù)據(jù)源來自FPGA片上RAM,其中包括完整的且符合過濾條件的數(shù)據(jù)幀(下面稱為正確的數(shù)據(jù)幀)、不完整的數(shù)據(jù)幀以及不符合過濾條件的數(shù)據(jù)幀。圖9為RAM中用于仿真測試的數(shù)據(jù)源。在測試過程中,為了對解碼模塊在數(shù)據(jù)過濾和解碼方面的性能進行測試,這里采用具有不同過濾條件的20幀數(shù)據(jù)用于測試,軟件測試流程圖如圖10所示。
在測試過程中,從數(shù)據(jù)發(fā)送情況看,這里利用MMS Ethernet抓包軟件在PC機端對發(fā)送的數(shù)據(jù)進行抓包,抓包結果如圖11所示。由抓包結果表明了網(wǎng)絡模塊成功發(fā)送了20幀數(shù)據(jù)。
圖3 Decode_FSM狀態(tài)機狀態(tài)轉移圖Fig.3 Status tranfer diagram of Decode_FSM
圖4 TLV_FSM狀態(tài)機狀態(tài)轉移圖Fig.4 Status tranfer diagram of TLV_FSM
圖5 解碼模塊的軟件驗證流程圖Fig.5 Flow chart of software checking of decoding module
在loopback模式下,發(fā)送的數(shù)據(jù)從網(wǎng)絡(dp83848網(wǎng)絡芯片)環(huán)回到網(wǎng)絡模塊接收端,同時解碼模塊將對接收到得數(shù)據(jù)進行檢測分析。解碼測試結果通過在Nios II IDE中查看變量值,清楚的反應了整個解碼過程。測試結果如圖12所示。
圖6 待解碼9-2數(shù)據(jù)幀F(xiàn)ig.6 Encoded data of 9-2 frame
從變量查看結果可知,網(wǎng)絡接收端收到了來自網(wǎng)絡的20幀數(shù)據(jù),并傳送給了解碼模塊進行檢測,其中有8幀正確的數(shù)據(jù)幀、2幀非9-2數(shù)據(jù)幀及10幀錯誤的數(shù)據(jù)幀。這里對非9-2數(shù)據(jù)幀不做分析且丟棄;對于錯誤的數(shù)據(jù)幀(1幀MAC地址不符合過濾條件、1幀不符合APPID過濾條件、1幀APDU配置信息有誤以及7幀ASDU出錯)分析后,也選擇丟棄;而對于正確的數(shù)據(jù),給出了每一幀數(shù)據(jù)解碼情況,變量數(shù)組中每一個組元對應一個數(shù)據(jù)幀,其中包括:幀長度、一幀數(shù)據(jù)所含ASDU數(shù)、各字段數(shù)據(jù)存放的基地址以及各字段數(shù)據(jù)的長度值。
最后,對解碼模塊進行了589815幀數(shù)據(jù)的測試,測試結果如圖13,從結果可知,解碼系統(tǒng)能夠穩(wěn)定可靠的工作,并能給出正確的結果,滿足設計要求。
圖7 9-2數(shù)據(jù)幀解碼信息Fig.7 Decoding data of 9-2 frame
圖8 Loopback測試數(shù)據(jù)流向圖Fig.8 The direction diagram of shift tested data under loopback mode
圖9 數(shù)據(jù)發(fā)送區(qū)待解碼的數(shù)據(jù)幀F(xiàn)ig.9 Encoding data frame in sending area of storage
圖10 解碼系統(tǒng)驗證流程Fig.10 Flow chart of checking of decoding system
圖11 發(fā)送數(shù)據(jù)抓包結果Fig.11 The case of intercpeting frame for sending data
圖12 20幀數(shù)據(jù)解碼結果Fig.12 The decoding result of 20 frame
圖13 在線測試結果Fig.13 The decoding result of online data
基于IEC6150-9-2數(shù)據(jù)幀解碼實時性考慮,本設計采用FPGA實現(xiàn)了快速解碼。通過解碼模塊嵌入Nios II的SOPC系統(tǒng),對模塊進行了軟件仿真和在線數(shù)據(jù)測試,驗證了方案的正確性和實用性,很好的實現(xiàn)了對9-2數(shù)據(jù)幀的篩選檢測與幀結構數(shù)據(jù)類分離存儲,為后期進一步數(shù)據(jù)處理提供可靠保證,滿足了實時性的要求,并在系統(tǒng)工作時鐘為50 MHz,測得解碼一幀557 Bytes的9-2數(shù)據(jù)幀的時間約為54 μs。本設計所研究的IEC61850-9-2數(shù)據(jù)幀解碼模塊,主要是為了能夠很方便的集成在數(shù)字化變電站的IED中,成為其設備的一部分,以此實現(xiàn)設備間實時通信。
[1]劉東,張沛超,李曉露.面向對象的電力系統(tǒng)自動化[M].北京:中國電力出版社,2009.
[2]IEC.Communication networks and systems in substations,Part 9-2:Specific Communication Service Mapping(SCSM)Sample values over ISO/IEC 8802-3 link[S].2006.
[3]朱超,黃燦,梅軍,等.基于FPGA與ARM的智能合并單元設計[J].電網(wǎng)技術,2011(6):13.ZHU Chao,HUANG Can,MEI Jun,et al.Design of smart merging unit based on FPGA and ARM[J].Power System Technology,2011(6):13.
[4]徐欣,于紅旗,易凡,等.基于FPGA的嵌入式系統(tǒng)設計[M].北京:機械工業(yè)出版社,2004.
[5]夏宇聞.Verilog數(shù)字信號系統(tǒng)設計教程[M].北京:北京航空航天大學出版社,2003.
[6]Altera Corporation.Nios II Software Developer’s Handbook[EB/OL].[2013-11-08].http://wenku.baidu.com/link?url=519 Qb6uLjyOmo-MlVkrqIYzVqsjy2b0uR-KJp7JwErW_ycQG pbpSI8pjYmFUWDmkD5rhSE4x4VeuyHYtV-wbj89erko_0Kt_wTg4zrPpKmS.