一種適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的fft實(shí)現(xiàn)方法
【專利摘要】本發(fā)明提供一種適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的FFT實(shí)現(xiàn)方法,應(yīng)用于以數(shù)字信號(hào)處理器為核心的電能質(zhì)量監(jiān)測(cè)裝置中,適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的情況。DSP讀取N個(gè)采樣數(shù)據(jù),分解組合為行列的陣列,使用C28x_FixedPoint_Lib.lib庫文件對(duì)每一行個(gè)數(shù)據(jù)進(jìn)行基2FFT計(jì)算,再乘以對(duì)應(yīng)的旋轉(zhuǎn)因子,最后對(duì)所得陣列的每一列個(gè)數(shù)據(jù)進(jìn)行基FFT計(jì)算,即實(shí)現(xiàn)了N點(diǎn)FFT分析。本發(fā)明無需對(duì)采樣數(shù)據(jù)進(jìn)行插值或者補(bǔ)零處理,充分保留原始數(shù)據(jù)所含信息,也無需修改硬件裝置,就可直接對(duì)采樣數(shù)據(jù)進(jìn)行FFT分析,計(jì)算結(jié)果具有較好的精度。
【專利說明】一種適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的FFT實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于電力系統(tǒng)自動(dòng)化領(lǐng)域,涉及一種電能質(zhì)量數(shù)據(jù)處理方法,具體為涉及 一種適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的FFT實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002] 電能質(zhì)量的好壞是電力系統(tǒng)安全穩(wěn)定運(yùn)行的重要指標(biāo)。近年來,越來越多的非線 性負(fù)荷和沖擊負(fù)荷投入電網(wǎng),使得電力系統(tǒng)的電能質(zhì)量問題越加嚴(yán)重。且許多精密儀器對(duì) 電能質(zhì)量的要求也越來越高。這些都促使電能質(zhì)量監(jiān)測(cè)成為電力系統(tǒng)自動(dòng)化領(lǐng)域的一個(gè)重 要研究方向。
[0003] 目前,通常將數(shù)字信號(hào)處理器OSP)作為電能質(zhì)量監(jiān)測(cè)裝置的核心控制器,DSP不 但具有強(qiáng)大的數(shù)字信號(hào)處理能力,而且還具有較為完善的事件管理和嵌入式控制功能,因 此被廣泛應(yīng)用于在處理速度、處理精度方面要求較高的電能質(zhì)量監(jiān)測(cè)領(lǐng)域。
[0004] 快速傅里葉變換(FFT)是電能質(zhì)量監(jiān)測(cè)領(lǐng)域的主流算法,該算法 在以DSP為核心的電能質(zhì)量裝置中運(yùn)行,對(duì)所采集的原始數(shù)據(jù)計(jì)算分析, 得到電能質(zhì)量的各個(gè)指標(biāo)。傳統(tǒng)的FFT算法為基2FFT,適用于采樣點(diǎn)數(shù)為 2K的序列。但是隨著智能電網(wǎng)的發(fā)展,出現(xiàn)了采樣點(diǎn)數(shù)為復(fù)合數(shù)的情況,IEC61850-9-1標(biāo) 準(zhǔn)中規(guī)定的采樣點(diǎn)數(shù)有多個(gè),比如80點(diǎn)、200點(diǎn),并不滿足2K,如仍采用傳統(tǒng)FFT進(jìn)行電能 質(zhì)量分析,則計(jì)算結(jié)果會(huì)出現(xiàn)較大誤差。針對(duì)此種情況,如何進(jìn)行準(zhǔn)確地計(jì)算分析是急需解 決的問題。
【發(fā)明內(nèi)容】
[0005] 為了解決傳統(tǒng)FFT不能對(duì)采樣點(diǎn)數(shù)為復(fù)合數(shù)的數(shù)據(jù)進(jìn)行分析的問題,本發(fā)明提供 了一種適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的FFT實(shí)現(xiàn)方法。由于該方法是應(yīng)用于電能質(zhì)量監(jiān)測(cè)領(lǐng) 域,故該方法是在以DSP為核心的電能質(zhì)量監(jiān)測(cè)裝置中實(shí)現(xiàn)的。
[0006] 本發(fā)明采用以下方式是實(shí)現(xiàn)上述目的: 一種適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的FFT實(shí)現(xiàn)方法,應(yīng)用于以數(shù)字信號(hào)處理器為核心的電 能質(zhì)量監(jiān)測(cè)裝置中,適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)Y1 _F/2的情況,包括以下步驟: 步驟一、DSP讀取N點(diǎn)原始數(shù)據(jù),原始數(shù)據(jù)為經(jīng)過AD芯片的數(shù)字電壓或電流信號(hào),N為 復(fù)合數(shù),并不滿足2的整數(shù)次冪,但可將其分解為見=251 *F2s2 ; 步驟二、對(duì)原始數(shù)據(jù)重新組合,將N點(diǎn)數(shù)據(jù)分解并重新組合為況行2;1列的陣列; 步驟三、將陣列中的每一行2sl個(gè)數(shù)據(jù)使用基2FFT進(jìn)行計(jì)算,使用C28X_FiXedPoint_ Lib.lib庫文件進(jìn)行基2FFT計(jì)算,計(jì)算結(jié)果為維數(shù)相同的復(fù)數(shù)陣列; 步驟四、將步驟三所得結(jié)果陣列中的每一個(gè)值乘以旋轉(zhuǎn)因子; 步驟五、將步驟四所得陣列中每一列F/2個(gè)數(shù)據(jù)進(jìn)行基FFT計(jì)算。
[0007] 進(jìn)一步,所述的數(shù)字信號(hào)處理器為TMS320F2812型。
[0008] 進(jìn)一步,所述步驟三中C28x_FixedPoint_Lib.lib庫文件在本方法中的使用包括 如下步驟: 步驟一、將該庫文件C28x_FixedPoint_Lib.lib添加至所建工程中; 步驟二、配置配套的頭文件fft.h和CMD文件,CMD的作用是為FFT計(jì)算用到的計(jì)算緩 沖區(qū)和旋轉(zhuǎn)因子兩個(gè)數(shù)據(jù)段分配合適的存儲(chǔ)空間; 步驟三、選擇復(fù)數(shù)FFT(CFFT)作為計(jì)算方法,CFFT雖為復(fù)數(shù)FFT但同樣適用于原始數(shù) 據(jù)為實(shí)數(shù)的情況,只需將虛部置零即可; 步驟四、將原始數(shù)據(jù)寫入計(jì)算緩沖區(qū),經(jīng)過實(shí)部位倒序和虛部位倒序后再將該緩沖區(qū) 地址賦值給FFT計(jì)算指針; 步驟五、調(diào)用fft.init(&fft)和fft.calc(&fft)函數(shù)即可完成FFT計(jì)算;由于FFT具 有原址運(yùn)算的特點(diǎn),所以計(jì)算結(jié)果仍存儲(chǔ)在計(jì)算緩沖區(qū)內(nèi)。
[0009] 與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為: 本發(fā)明適合采樣點(diǎn)數(shù)為復(fù)合數(shù)F= 231 *F/2的情況,使用本方法進(jìn)行電能質(zhì)量分析, 無需對(duì)采樣數(shù)據(jù)進(jìn)行插值或者補(bǔ)零處理,充分保留原始數(shù)據(jù)所含信息,也無需修改硬件裝 置,就可直接對(duì)采樣數(shù)據(jù)進(jìn)行FFT分析,計(jì)算結(jié)果具有較好的精度。
【專利附圖】
【附圖說明】
[0010] 圖1為本發(fā)明的總體流程圖; 圖2為電能質(zhì)量監(jiān)測(cè)裝置示意圖; 圖3為本發(fā)明中C28x_FixedPoint_Lib.lib使用流程圖; 圖4為80點(diǎn)的FFT流程圖。
[0011] 【具體實(shí)施方式】 假設(shè)電能質(zhì)量監(jiān)測(cè)裝置一個(gè)周波的采樣序列為攻〇),減1),…,4W-1),共有N個(gè) 采樣點(diǎn)。當(dāng)N不是2的整數(shù)次冪時(shí),可將N分解為P?g,此時(shí)可將該序列用陣列的形 式表不:
【權(quán)利要求】
1. 一種適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的FFT實(shí)現(xiàn)方法,其特征在于:應(yīng)用于 以數(shù)字信號(hào)處理器為核心的電能質(zhì)量監(jiān)測(cè)裝置中,適用于采樣點(diǎn)數(shù)為復(fù)合數(shù) 見=2/1 ? 的情況,包括以下步驟: 步驟一、DSP讀取N點(diǎn)原始數(shù)據(jù),原始數(shù)據(jù)為經(jīng)過AD芯片的數(shù)字電壓或電流信號(hào),N為 復(fù)合數(shù),并不滿足2的整數(shù)次冪,但可將其分解為F = 251* JV/2 ; 步驟二、對(duì)原始數(shù)據(jù)重新組合,將N點(diǎn)數(shù)據(jù)分解并重新組合為F252行F1列的陣列; 步驟三、將陣列中的每一行251個(gè)數(shù)據(jù)使用基2FFT進(jìn)行計(jì)算,使用C28X_FiXedPoint_ Lib. Iib庫文件進(jìn)行基2FFT計(jì)算,計(jì)算結(jié)果為維數(shù)相同的復(fù)數(shù)陣列; 步驟四、將步驟三所得結(jié)果陣列中的每一個(gè)值乘以旋轉(zhuǎn)因子; 步驟五、將步驟四所得陣列中每一列F/2個(gè)數(shù)據(jù)進(jìn)行基F2 FFT計(jì)算。
2. 根據(jù)權(quán)利要求1所述的一種適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的FFT實(shí)現(xiàn)方法,其特征在于: 所述的數(shù)字信號(hào)處理器為TMS320F2812型。
3. 根據(jù)權(quán)利要求1所述的一種適用于采樣點(diǎn)數(shù)為復(fù)合數(shù)的FFT實(shí)現(xiàn)方法,其特征在于: 所述步驟三中C28x_FixedPoint_Lib. Iib庫文件在本方法中的使用包括如下步驟: 步驟一、將該庫文件C28x_FixedPoint_Lib. Iib添加至所建工程中; 步驟二、配置配套的頭文件fft. h和CMD文件,CMD的作用是為FFT計(jì)算用到的計(jì)算緩 沖區(qū)和旋轉(zhuǎn)因子兩個(gè)數(shù)據(jù)段分配合適的存儲(chǔ)空間; 步驟三、選擇復(fù)數(shù)FFT (CFFT)作為計(jì)算方法,CFFT雖為復(fù)數(shù)FFT但同樣適用于原始數(shù) 據(jù)為實(shí)數(shù)的情況,只需將虛部置零即可; 步驟四、將原始數(shù)據(jù)寫入計(jì)算緩沖區(qū),經(jīng)過實(shí)部位倒序和虛部位倒序后再將該緩沖區(qū) 地址賦值給FFT計(jì)算指針; 步驟五、調(diào)用fft. init (&fft)和fft. calc (&fft)函數(shù)即可完成FFT計(jì)算;由于FFT具 有原址運(yùn)算的特點(diǎn),所以計(jì)算結(jié)果仍存儲(chǔ)在計(jì)算緩沖區(qū)內(nèi)。
【文檔編號(hào)】G06F17/10GK104330673SQ201410653971
【公開日】2015年2月4日 申請(qǐng)日期:2014年11月18日 優(yōu)先權(quán)日:2014年11月18日
【發(fā)明者】趙慶生, 王志偉, 郭賀宏, 何志方, 韓肖清 申請(qǐng)人:太原理工大學(xué)