數據濾波算法在電能質量在線監測裝置中的具體實現,需圍繞 “數據采集→預處理→算法執行→參數適配→效果驗證→結果輸出” 的全流程展開,核心是結合裝置硬件特性(采樣率、ADC 精度)和干擾類型(高頻電磁、瞬時脈沖等),選擇適配的濾波算法并落地。以下以電能質量監測中最常用的IIR 低通濾波(抗高頻干擾)、滑動平均濾波(抗瞬時脈沖)、卡爾曼濾波(抗動態波動) 為例,詳解具體實現步驟:
一、前置準備:明確濾波目標與硬件基礎(實現前提)
在編寫或配置濾波算法前,需先確定 “濾除什么干擾”“基于什么硬件實現”,避免算法與實際場景脫節:
1. 確定濾波目標(針對具體干擾)
干擾類型與濾波算法匹配:
高頻電磁干擾(如變頻器 1kHz-10MHz 雜波)→ 選IIR 低通濾波(保留 50Hz 基波 + 2-50 次諧波,濾除高頻噪聲);
瞬時脈沖干擾(如雷電尖峰、靜電放電)→ 選滑動平均濾波(平滑瞬時跳變,避免單組數據異常);
動態波動干擾(如振動導致的電流時斷時續)→ 選卡爾曼濾波(動態跟蹤真實值,抑制隨機波動)。
關鍵指標要求:
濾波延遲:≤1 個周波(50Hz 系統 20ms,避免影響暫態事件捕捉);
幅值衰減:對目標頻段(如 50Hz 基波)衰減≤0.1%(保證測量精度),對干擾頻段(如 1kHz 以上)衰減≥20dB(濾除效果)。
2. 確認硬件支撐條件
采樣率:濾波算法需與裝置采樣率匹配(如 IIR 低通濾波要求采樣率≥2 倍干擾頻率,即 “奈奎斯特準則”)。例如:濾除 1kHz 高頻干擾,采樣率需≥2kHz(電能質量裝置常規采樣率為 12.8kHz/51.2kHz,完全滿足);
ADC 精度:24 位 ADC(如 AD7794)支持更高濾波精度,16 位 ADC(如 ADS1115)需簡化濾波階數(避免計算誤差疊加);
計算資源:復雜算法(如 8 階 IIR、卡爾曼濾波)需 FPGA / 高性能 MCU(如 STM32H7)支撐,低端 MCU(如 STM32F1)優先選滑動平均等輕量級算法。
二、通用核心步驟:以 “IIR 低通濾波(抗高頻電磁干擾)” 為例
IIR(無限脈沖響應)低通濾波是電能質量裝置抗高頻干擾的核心算法,常用 “巴特沃斯濾波器”(通帶平坦、阻帶衰減陡峭),具體實現分 6 步:
1. 步驟 1:算法參數設計(確定濾波 “規則”)
確定關鍵參數:
通帶截止頻率(fc):500Hz(保留 50Hz 基波 + 2-50 次諧波,50 次諧波為 2500Hz?此處需修正:50 次諧波為 50×50=2500Hz,若需保留 50 次諧波,fc 應設為≥2500Hz,實際濾除 10kHz 以上高頻干擾,fc 設為 10kHz);
阻帶截止頻率(fs):20kHz(對 20kHz 以上干擾衰減≥40dB);
通帶波紋(Rp):≤1dB(保證通帶內數據平滑);
阻帶衰減(Rs):≥40dB(確保高頻干擾濾除徹底)。
計算濾波系數:通過 MATLAB “Filter Design Toolbox” 或 Python“scipy.signal” 工具,輸入上述參數生成 IIR 濾波系數(分子 b、分母 a)。例如:8 階巴特沃斯低通濾波,生成 b=[b0,b1,...,b8]、a=[a0,a1,...,a8](a0 通常歸一化為 1)。
2. 步驟 2:數據采集與緩存(獲取原始采樣數據)
多通道同步采樣:裝置對電壓 / 電流的 3 個通道(A/B/C 相)同步采樣(時間誤差≤1μs),每個通道連續采集 N 個采樣點(如 N=1024 點 / 周波,50Hz 系統對應 20ms),存儲在 “原始數據緩存數組”(如 uint16_t raw_data [3][1024]);
數據格式轉換:將 ADC 采集的 “無符號整數”(如 0-65535)轉換為 “有符號電壓 / 電流值”(如 - 10V~+10V),公式:real_value = (raw_data - 32768) * 20.0 / 65536(假設 ADC 參考電壓為 10V,16 位精度)。
3. 步驟 3:預處理(消除原始數據 “異常點”)
去極值處理:若原始數據中存在 “超出合理范圍的尖峰”(如電壓突然跳至 300V,遠超 220V 系統正常范圍),用 “相鄰 3 點中值替換”(如第 i 點值>1.5× 第 i-1 點且>1.5× 第 i+1 點,判定為極值,替換為(第 i-1 點 + 第 i+1 點)/2),避免極值影響濾波系數計算;
數據對齊:若多通道采樣存在微小延遲(如 A 相比 B 相延遲 1 個采樣點),通過 “插值法” 調整為完全同步(保證三相數據相位一致性)。
4. 步驟 4:濾波算法執行(核心計算過程)
按 IIR 濾波遞歸公式對每個通道的采樣數據逐點計算,公式為:y(n) = (b0*x(n) + b1*x(n-1) + ... + bN*x(n-N)) - (a1*y(n-1) + ... + aN*y(n-N))
其中:
x (n):當前原始采樣值,x (n-1)~x (n-N):歷史原始采樣值(N 為濾波階數,如 8 階取前 8 個值);
y (n):當前濾波后值,y (n-1)~y (n-N):歷史濾波后值(需緩存歷史結果,占用 RAM 資源);
實現細節:
在裝置軟件中定義 “歷史數據緩存數組”(如 float x_hist [8]、float y_hist [8]),存儲前 8 個 x 和 y 值;
每采集 1 個新 x (n),先將 x_hist 數組 “右移”(x_hist [7]=x_hist [6], ..., x_hist [0]=x (n)),y_hist 同理;
代入公式計算 y (n),注意使用 “浮點運算”(避免整數運算截斷誤差),高性能 MCU 可啟用硬件 FPU(浮點運算單元)加速。
5. 步驟 5:濾波效果驗證(判斷是否達標)
頻域驗證:通過 “快速傅里葉變換(FFT)” 對比濾波前后的頻譜:
濾波前:頻譜中存在 1kHz、5kHz 等高頻干擾峰值;
濾波后:高頻干擾峰值衰減≥40dB(幾乎消失),50Hz 基波、2-50 次諧波峰值無明顯衰減(幅值誤差≤0.1%);
時域驗證:查看濾波前后的電壓 / 電流波形:
濾波前:波形存在 “毛刺”(高頻噪聲);
濾波后:波形平滑,無毛刺,且與標準源輸出波形(如純正弦波)對比,偏差≤0.2%(A 級裝置要求)。
6. 步驟 6:結果輸出與應用(對接后續模塊)
將濾波后的 y (n) 值(如電壓 220.05V、電流 99.98A)存儲至 “濾波后數據緩存”,用于:
實時顯示:在 LCD 屏展示當前電壓 / 電流有效值(需進一步計算有效值:RMS = sqrt(1/N * sum(y(n)^2)));
暫態事件監測:若濾波后數據滿足 “電壓≤85% Un 且持續≥100ms”,判定為電壓暫降,觸發報警;
歷史數據存儲:按 1 分鐘 / 1 小時間隔統計有效值、諧波等參數,存入 SD 卡或上傳至后臺。
三、其他常用算法實現步驟(簡化版)
1. 滑動平均濾波(抗瞬時脈沖干擾)
核心邏輯:取連續 M 個采樣點的平均值,平滑瞬時尖峰,步驟:
確定窗口寬度 M:5-10 個采樣點(如 M=5,50Hz 系統采樣率 12.8kHz,5 個點對應≈0.39ms,避免延遲過大);
緩存 M 個原始采樣值(如 x1~x5);
新采樣 x6 接入時,移除 x1,加入 x6,計算平均值:y = (x2+x3+x4+x5+x6)/5;
驗證:對 100ms 內的瞬時尖峰(如電流從 100A 跳至 120A),M=5 時濾波后值約 104A,無明顯跳變。
2. 卡爾曼濾波(抗動態波動干擾)
核心邏輯:通過 “預測 - 更新” 迭代,動態跟蹤真實值,適用于振動導致的電流波動,步驟:
建立狀態方程:x(k) = A*x(k-1) + w(k)(A=1,假設電流緩慢變化;w (k) 為過程噪聲,方差 Q=0.01);
建立觀測方程:z(k) = H*x(k) + v(k)(H=1,觀測值 = 真實值 + 觀測噪聲;v (k) 方差 R=0.1,基于 ADC 精度);
預測階段:x_hat(k|k-1) = A*x_hat(k-1|k-1)(預測當前真實值),P(k|k-1) = A*P(k-1|k-1)*A^T + Q(預測誤差協方差);
更新階段:K(k) = P(k|k-1)*H^T/(H*P(k|k-1)*H^T + R)(卡爾曼增益),x_hat(k|k) = x_hat(k|k-1) + K(k)*(z(k)-H*x_hat(k|k-1))(更新真實值),P(k|k) = (I-K(k)*H)*P(k|k-1)(更新誤差協方差);
輸出:x_hat(k|k)即為濾波后值,對振動導致的 ±5A 電流波動,濾波后波動可降至 ±0.5A。
四、關鍵注意事項(避免實現誤區)
避免濾波延遲過大:高階 IIR(如 16 階)會導致 2-3 個周波延遲,需在 “濾波階數” 與 “延遲” 間平衡(A 級裝置常用 8 階 IIR,延遲≤1 個周波);
防止數值溢出:濾波計算中(尤其是 IIR),多組數據累加可能超出 MCU 浮點精度范圍,需定期 “歸一化”(如將 y (n) 限制在 ±10V 范圍內,超出時截斷并標記異常);
適配多參數監測:對諧波、暫降等不同參數,需切換濾波算法(如計算諧波時用 “帶通濾波”,捕捉暫降時用 “卡爾曼濾波”),避免單一算法影響多參數精度;
現場調試優化:若濾波后數據仍有干擾,需調整參數(如 IIR 截止頻率從 10kHz 降至 5kHz),或結合硬件措施(如屏蔽線纜),軟件濾波無法完全解決強干擾。
總結:實現流程的核心邏輯
數據濾波算法的實現,本質是 “先定義規則(參數設計)→ 再處理數據(采集 + 計算)→ 最后驗證效果(頻域 + 時域)”,需緊扣 3 個核心:
場景適配:高頻干擾用 IIR 低通,瞬時脈沖用滑動平均,動態波動用卡爾曼,不盲目追求復雜算法;
硬件匹配:根據采樣率、MCU 性能選擇算法復雜度,避免 “算法先進但硬件跑不動”;
精度優先:濾波后需保證電能質量核心參數(有效值、諧波、暫降)的測量誤差≤裝置精度等級(A 級≤±0.1%,S 級≤±0.5%)。
實際操作中,多數裝置會將濾波算法集成在 “數據處理模塊” 中,用戶可通過軟件菜單(如 “濾波配置”)調整參數(如窗口寬度、截止頻率),無需手動編寫代碼;若需定制算法(如特殊場景抗干擾),則需結合 MATLAB/Python 工具設計系數,再移植到裝置 MCU/FPGA 中。
審核編輯 黃宇
-
濾波算法
+關注
關注
2文章
96瀏覽量
14384
發布評論請先 登錄
單片機ADC采樣算法-中位值平均濾波法
ADC的采樣濾波算法利用卡爾曼濾波算法
SM4算法實現分享(一)算法原理
如何使用恢復算法來實現開平方運算
25年11月上海FPGA算法實現與應用技術高級研修分享
基于Matlab與FPGA的雙邊濾波算法實現
STM32與機智云連接實現步驟與技巧(上篇)
藍牙信標RSSI濾波算法
打開FSP配置器界面的具體步驟
數據濾波算法的具體實現步驟是怎樣的?
評論