基于FPGA的電網(wǎng)實時數(shù)據(jù)采集與控制
隨著科學技術和國民經(jīng)濟的快速發(fā)展,各種工業(yè)生產(chǎn)對電力系統(tǒng)對電能質(zhì)量的要求越來越高,因此,對電網(wǎng)參數(shù)進行實時檢測與分析具有重要的意義。要解決電能質(zhì)量問題,首先要建立電能質(zhì)量各項指標的監(jiān)測和分析系統(tǒng),對電網(wǎng)中的各種指標進行實時更新測量和數(shù)據(jù)采集。傳統(tǒng)的電網(wǎng)數(shù)據(jù)采集系統(tǒng)往往采用單片機或數(shù)字信號處理器(DSP)作為控制器,來控制模/數(shù)轉換器(ADC)、存儲器和其他外圍電路的工作。但是,由于單片機本身的指令周期以及處理速度的影響,其時鐘頻率較低,各種功能都要靠軟件的運行來實現(xiàn),而軟件運行時間在整個采樣時間中占有很大的比例,效率較低,很難滿足系統(tǒng)對數(shù)據(jù)采集系統(tǒng)實時性和同步性的要求。由于對電網(wǎng)的諧波進行FFT分析時,電網(wǎng)頻率不是一成不變的,因此,以固定的采樣頻率對電信號進行采樣時,如電網(wǎng)頻率發(fā)生波動,采樣頻率將不能與輸入信號同步,因而會產(chǎn)生頻譜泄漏。事實上,除了產(chǎn)生頻譜泄露以外,對于離散傅里葉變換來說,非同步采樣時,即使信號含有單一頻率,其離散傅里葉變換也不可能求出信號的準確參數(shù),而會產(chǎn)生柵欄效應。
為了解決這些不足,可在數(shù)據(jù)采樣部分采用高速A/D轉換芯片ADS7864,即在數(shù)據(jù)采集的控制部分則利用FPGA(可編程邏輯器件)直接控制ADS7864對模擬信號進行采樣。然后將轉換好的12位二進制數(shù)據(jù)迅速存儲到FPGA內(nèi)部的存儲器中。為了提高諧波測量的精度,還可采用硬件描述語言VHDL來設計數(shù)字鎖相環(huán)和同步被測信號,以實現(xiàn)對誤差的修正。控制器則根據(jù)數(shù)字鎖相環(huán)模塊檢測出的信號頻率大小實時調(diào)整A/D轉換器的采樣頻率,以同步被測信號,提高測量精度。
1 設計方案
圖1所示是本數(shù)據(jù)采集控制模塊的設計框圖。圖中,數(shù)字鎖相倍頻模塊每輸出一個有效的采樣觸發(fā)信號CLK,ADC控制器就完成一次6通道的采樣操作,然后停止等待下一個觸發(fā)脈沖的到來。時鐘管理模塊的作用是利用最小系統(tǒng)板上的50 MHz晶振輸入,經(jīng)過編程進行1000分頻,以將其轉換成50 kHz提供給AD控制器。至于雙口RAM存儲模塊,由于QuqartusII內(nèi)部有一個可調(diào)用的ROM宏功能模塊,因此,在使用時,只要將其調(diào)出,并按照本系統(tǒng)的要求對存儲容量和地址端口進行設置,就可以作為模塊來用。
[!--empirenews.page--]2 數(shù)字鎖相倍頻
2.1 數(shù)字鎖相倍頻器的基本原理
輸入信號經(jīng)整形后可轉換為與輸入信號同頻率的方波信號,其頻率為FS,可對其進行K倍頻。首先設置一標準的時鐘信號,若時鐘頻率為FC,采用可編程分頻器對時鐘信號進行分頻,其分頻系數(shù)由計數(shù)器提供。若分頻系數(shù)為N,則輸出頻率為FC的N分頻,即:
時鐘信號經(jīng)K分頻后可送至計數(shù)器,由計數(shù)器在輸入信號的一個周期內(nèi)對FC/K脈沖進行計數(shù),若忽略各種誤差因數(shù),其計數(shù)值為N,則:
由上兩式可得:F0=KFS,這樣就實現(xiàn)了對輸入信號頻率的K倍頻,倍頻后的信號即可作為A/D的采樣信號。數(shù)字鎖相倍頻器中計數(shù)器的實質(zhì)是選用采樣窗口信號通過同步過程所得的方波信號作為閘門信號,并將高頻率的同步時鐘信號作為填充脈沖來進行計數(shù),設計數(shù)值為Ⅳ實現(xiàn)周期測量,由于該模塊在工作過程中可連續(xù)測量輸入信號的周期,所以兼有測頻的功能。因此,保證數(shù)字倍頻器跟蹤精度的關鍵是提高周期測量的精度和分頻系數(shù)的準確度。數(shù)字倍頻器的原理框圖如圖2所示。
2.2 數(shù)字鎖相倍頻的FPGA實現(xiàn)
輸入信號經(jīng)整形后也可轉換為與基波信號同頻率的方波,然后對方波信號進行二分頻。二分頻的目的有兩個,一是作為控制信號來實現(xiàn)周期測量;二是可以消除輸入波形不對稱的影響,提高測量周期的精度。將二分頻后的方波信號一路送K分頻器I的控制端,另一路反相后接K分頻器Ⅱ的控制端,以使兩路K分頻器在輸入信號相鄰兩個周期內(nèi)交替處于分頻、清零狀態(tài)。這樣,兩路輪流工作就可避免使用單路計數(shù)器連續(xù)計數(shù)時由于數(shù)據(jù)保持和清零過程所造成的測量誤差和相位延遲問題。K分頻器在每次工作前,其輸出為0電平,這樣可以保證計數(shù)器的輸入方波與其計數(shù)周期同步,防止計數(shù)器輸入方波與計數(shù)周期的隨機性帶來的計數(shù)誤差,從而提高測量精度。本系統(tǒng)中,K取128。
計數(shù)器的計數(shù)值N在被測周期結束后將立刻送鎖存器鎖存,并作為可編程分頻器的分頻系數(shù)N。由于采用兩路計數(shù)器輪流工作方式,因此,鎖存器要有選擇地對每路計數(shù)器的計數(shù)結果進行鎖存??紤]到要盡可能地減小相位滯后,在每個周期結束后,鎖存器應在最短的時間內(nèi)將數(shù)據(jù)鎖存。這就要求鎖存器在鎖存脈沖到來前,先選擇好被鎖存的計數(shù)器,保證每個周期計數(shù)值的可靠鎖存。鎖存信號由輸入方波信號經(jīng)微分電路產(chǎn)生,這種設計使可編程分頻器在每個周期的開始時刻,總是以新的數(shù)據(jù)、新的起點開始分頻。兩路計數(shù)器在計數(shù)工作前要先清零,使計數(shù)器的計數(shù)值準確的反映輸入信號的周期。清零工作必須在計數(shù)結果鎖存后的下一次計數(shù)開始前完成。數(shù)字鎖相倍頻的頂層電路如圖3所示。
[!--empirenews.page--]在FPGA軟件QuartusII7.2開發(fā)平臺上完成硬件設計后即可進行仿真,其仿真波形如圖4所示。其中,標準時鐘clk的頻率為10 MHz;shuru:為倍頻的輸入信號,shuru頻率設置為50 Hz,倍頻系數(shù)為128;beipin:表示倍頻電路的輸出信號。從仿真中可以看到,本設計可以達到128倍頻的效果。
3 A/D采集控制
由于本設計要同時采集電網(wǎng)的三相電壓和電流,所以,應把采樣倍頻信號接至HOLDA、HOLDB、HOLDC,以同時保持六路輸入信號,讀出模式設置為循環(huán)模式。
由ADS7864的時序圖可以得到如圖5所示的ADC控制器的軟件控制流程。以便在QuartusII開發(fā)平臺上利用VHDL語言進行軟件編程。
通過ADS7864的工作狀態(tài)控制模塊可根據(jù)ADS7864的轉換時序圖,用VHDL編寫FPGA控制ADS7864的轉換程序,并可采用雙進程有限狀態(tài)機的方法來在Quartus II 7.2內(nèi)對A/D控制模塊進行時序仿真,其仿真波形如圖6所示。仿真結果表明,該模塊的設計完全符合要求。
4 結束語
本文給出了基于FPGA的電網(wǎng)實時數(shù)據(jù)采集系統(tǒng)的設計方法。該方法采用FPGA作為數(shù)據(jù)采集系統(tǒng)的控制核心。并充分利用了高速模數(shù)轉換芯片ADC和可編程邏輯控制器件FPGA,最終通過硬件描述語言VHDL實現(xiàn)了A/D的控制和數(shù)字鎖相倍頻電路。該電路具有良好的可移植性和可擴展性,便于調(diào)試和修改,在電網(wǎng)的實時數(shù)據(jù)采集方面有較好的應用前景。