王 鑫,劉 巖
(1.佳木斯大學(xué) 黑龍江 哈爾濱 150030;2.哈爾濱市衛(wèi)生局 黑龍江 哈爾濱 150000)
FFT[1]的全稱是Fast Fourier Transform,就是不斷將長(zhǎng)序列的DFT 分解為短序列的DFT,并利用WmN的周期性和對(duì)稱性及其一些特殊值來(lái)減少DFT 運(yùn)算量的快速算法。文中使用的基2 FFT 算法是最基本最常用的傅里葉快速算法。
由于交流電網(wǎng)有效分量為工頻單一頻率,因此任何與工頻頻率[2]不同的成分都可以稱之為諧波。由于正弦電壓加壓于非線性負(fù)載,基波電流發(fā)生畸變產(chǎn)生諧波[3]。諧波的危害十分嚴(yán)重。諧波使電能的生產(chǎn)、傳輸和利用的效率降低,使電氣設(shè)備過(guò)熱、產(chǎn)生振動(dòng)和噪聲,并使絕緣老化,使用壽命縮短,甚至發(fā)生故障或燒毀。諧波可引起電力系統(tǒng)局部并聯(lián)諧振或串聯(lián)諧振,使諧波含量放大,造成電容器等設(shè)備燒毀。諧波還會(huì)引起繼電保護(hù)和自動(dòng)裝置誤動(dòng)作,使電能計(jì)量出現(xiàn)混亂。對(duì)于電力系統(tǒng)外部,諧波對(duì)通信設(shè)備和電子設(shè)備會(huì)產(chǎn)生嚴(yán)重干擾。文中使用FFT 算法既能有效地檢測(cè)出電網(wǎng)諧波,又能滿足實(shí)時(shí)性要求,在實(shí)際應(yīng)用中取得了較好的保護(hù)作用。
文中主要介紹使用TMS320F2812[4]高性能DSP 處理器作為算法硬件平臺(tái),并根據(jù)該處理器的結(jié)構(gòu)編寫(xiě)基2 FFT 算法,并且該方案已成功應(yīng)用到電網(wǎng)諧波的檢測(cè)中。TMS320F2812 是德州儀器出品的16 位高性能數(shù)字處理器,主頻可達(dá)150 MHz,單片集成了Flash、SRAM 以及多種外設(shè),并且成本低廉,廣泛適用于各種工控應(yīng)用。
長(zhǎng)度為N 的序列x(n)的N 點(diǎn)DFT為
由上式可知,計(jì)算X(k)的每一個(gè)值需要計(jì)算N 次復(fù)數(shù)乘法和N-1 次復(fù)數(shù)加法,所以計(jì)算X(k)的N個(gè)值需要計(jì)算N2次復(fù)數(shù)乘法和(N-1)*N 次復(fù)數(shù)加法。當(dāng)N 增大時(shí),運(yùn)算量非線性迅速增大。例如N=210時(shí),N2=1048576。為了將DFT 應(yīng)用于各種實(shí)時(shí)信號(hào)處理的實(shí)際工程中,必須減少其運(yùn)算量。
由于N 點(diǎn)DFT 的運(yùn)算量隨N2增長(zhǎng),因此當(dāng)N 較大時(shí),減少運(yùn)算量最有效的途徑就是將N 點(diǎn)DFT 分解為幾個(gè)較短的DFT 計(jì)算。例如,分解為M個(gè)N/M 點(diǎn)DFT,則復(fù)數(shù)乘法運(yùn)算量為N2/M,下降到原來(lái)的1/M。因此可根據(jù)WmN的周期性和對(duì)稱性減少DFT 的運(yùn)算量。
FFT 變換就是不斷地將長(zhǎng)序列的DFT 分解為短序列的DFT,并利用WmN的周期性和對(duì)稱性及其一些特殊值減少DFT運(yùn)算量的快速算法。文中介紹的基2 FFT 算法是最基本且最常用的快速算法。
基2 FFT 要求DFT 變換區(qū)間長(zhǎng)度N=2M。序列x(n)的N點(diǎn)DFT 按照n 的奇偶性分解為
令x1(l)=x(2l),x2(l)=x(2l+1)。
這樣N 點(diǎn)DFT 的計(jì)算分解為計(jì)算兩個(gè)N/2 點(diǎn)離散傅立葉變換X1(k)、X2(k)。
如上節(jié)所述,N 點(diǎn)FFT 運(yùn)算中,每級(jí)都有N/2個(gè)蝶形。每個(gè)蝶形都要乘以因子WpN,稱其為旋轉(zhuǎn)因子,p 稱為旋轉(zhuǎn)因子的指數(shù)。設(shè)序列x(n)經(jīng)時(shí)域抽選(位反轉(zhuǎn))后,存入數(shù)組X 中。如果蝶形運(yùn)算的兩個(gè)輸入數(shù)據(jù)相距B個(gè)點(diǎn),應(yīng)用原位運(yùn)算,則蝶形運(yùn)算可表示成如下形式
其中p=J*2M-L;J=0,1,…,2L-1-1;L=1,2,…,M。
綜上所述可采用下述運(yùn)算方法。先從輸入端開(kāi)始,逐級(jí)進(jìn)行,共進(jìn)行M 級(jí)運(yùn)算。在進(jìn)行第L 級(jí)運(yùn)算時(shí),依次求出2L-1個(gè)不同的旋轉(zhuǎn)因子,每求出一個(gè)旋轉(zhuǎn)因子,就計(jì)算完它對(duì)應(yīng)的所有2M-L個(gè)蝶形。這樣我們可用三重循環(huán)實(shí)現(xiàn)基2 FFT 運(yùn)算,程序流程圖如圖1 所示。
按照此流程圖編寫(xiě)的C 語(yǔ)言[5]程序代碼如下,
圖1 基2 FFT 算法流程圖Fig.1 Based 2 FFT algorithm flow diagram
按照以上方法實(shí)現(xiàn)的軟件經(jīng)過(guò)編譯調(diào)試,運(yùn)行效果良好,128 點(diǎn)FFT 算法執(zhí)行的時(shí)間為0.8 ms,滿足電網(wǎng)諧波檢測(cè)的實(shí)時(shí)性條件。
在LCD[6]屏幕上打印出電流信號(hào)各個(gè)頻點(diǎn)的譜線,當(dāng)輸入信號(hào)為標(biāo)準(zhǔn)正弦波時(shí),譜線圖如圖2 所示,只在50 Hz 頻點(diǎn)位置有一條譜線;當(dāng)輸入信號(hào)為矩形波時(shí),譜線圖如圖3 所示,在50 Hz、150 Hz、250 Hz、350 Hz…處均有譜線;通過(guò)這兩個(gè)譜線圖對(duì)比可以得出該FFT 算法準(zhǔn)確有效。
利用此算法在 處理器上執(zhí)行的程序可以準(zhǔn)確、高效地檢測(cè)出電網(wǎng)諧波,對(duì)電網(wǎng)諧波抑制或保護(hù)起到了良好的作用。
圖2 正弦信號(hào)FFT 譜線圖Fig.2 Sine signal FFT spectrum figure
圖3 矩形波信號(hào)FFT 譜線圖Fig.3 Rectangular-wave signal FFT spectrum figure
[1]普???,著.數(shù)字信號(hào)處理[M].4版.方艷梅,譯.電子工業(yè)出版社,2007.
[2]李國(guó)曉.水輪機(jī)調(diào)速器運(yùn)行與維護(hù)[M].北京:水利水電出版社,2012.
[3]德拉羅薩,著.電力系統(tǒng)與諧波[M].趙琰,孫秋野,譯.北京:機(jī)械工業(yè)出版社,2009.
[4]陳是知,姜蕊輝.TMS320F2812原理與開(kāi)發(fā)實(shí)踐[M].北京:中國(guó)電力出版社,2010.
[5]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì) [M].北京:清華大學(xué)出版社,2008.
[6]孫俊喜.LCD驅(qū)動(dòng)電路、驅(qū)動(dòng)程序設(shè)計(jì)及典型應(yīng)用[M].北京人民郵電出版社,2009.