胡鑫磊, 何紹瑋, 白雪飛
(石家莊鐵道大學電氣與電子工程學院,河北 石家莊 050043)
在對軸承狀態(tài)的診斷過程中信號特征頻率的提取是必不可少的,而軸承信號的噪聲消除又是特征頻率提取中最為關鍵的一部分。通常我們所采集到的軸承信號總是會混入各類噪聲,使得故障特征頻率的提取變得困難,而傳統(tǒng)的FIR濾波器需要有經(jīng)驗的操作人員根據(jù)不同類型的故障信號相應的調(diào)整FIR濾波器參數(shù)才能實現(xiàn)精準降噪[1]。在這樣的情況下,對自適應濾波器的研究成為了一個重要的方向。
自適應濾波器由權值可變的FIR濾波器和權值更新模塊兩部分組成,通過自適應算法更新濾波器參數(shù),來實現(xiàn)自適應濾波的功能。由Widrow和Hoff提出的LMS自適應濾波算法,因其算法使用簡便、計算高效等優(yōu)勢,在實際工程中得到了廣泛地應用,是工程領域最常用的自適應濾波算法[2]。文獻[3]介紹了關于LMS算法在自適應噪聲消除中的應用,但是并未解決當需要濾波的信號沒有參考信號時如何處理的問題。文獻[4]針對這一不足之處提出了一種自適應噪聲抵消技術在軸承故障診斷中的應用,以軸承故障信號的延時信號作為參考值,可以從軸承的振動信號中提取出故障特征,但是并沒有解決軟件實現(xiàn)的LMS自適應濾波器實時性不強的問題。
本文基于這種應用于軸承故障診斷的LMS的自適應濾波器,給出了其適合在FPGA上實現(xiàn)的方案, 并就這種實現(xiàn)方案對該算法的性能進行了仿真測試。測試結果表明:在FPGA上實現(xiàn)的LMS自適應濾波器濾波效果良好,并且擁有很好的實時性能。
LMS算法是目前實際工程中最簡單也是應用最廣泛的一種自適應濾波算法,它是以輸出信號y(n)與參考信號d(n)之間差值的最小均方值為準則的線性濾波算法,該自適應濾波系統(tǒng)需要經(jīng)過兩個模塊才能使其性能趨于穩(wěn)定,分別為自適應系數(shù)調(diào)整模塊和信號濾波模塊[5]。通過這兩個模塊使該算法構成一個反饋系統(tǒng),得到LMS自適應濾波算法的基本原理,如圖1所示。
圖1 LMS自適應濾波算法基本原理
用瞬時誤差的平方e2(n)來進行估計,可以使權值系數(shù)多次調(diào)整并趨于最佳狀態(tài),此時權值系數(shù)的更新方程為:
w(n+1)=w(n)-μe2(n)
(1)
(2)
則LMS算法中權值系數(shù)的更新方程:
w(n+1)=w(n)+2μe(n)X(n)
(3)
綜上可得,LMS自適應濾波算法的流程如下:
步驟(1),選定合適的步長μ作為濾波器初始參數(shù)輸入。
步驟(2),將初始權值設定為w(0)=0,后面的權值系數(shù)w(n)根據(jù)計算結果更新。
步驟(3),給定n時刻的故障信號X(n),參考信號d(n),計算濾波器的輸出y(n)=wT(n)X(n)。
步驟(4),誤差信號計算,e(n)=d(n)-y(n)。
步驟(5),權值系數(shù)更新計算,w(n+1)=w(n)+2μe(n)X(n)。
步驟(6),將時刻加1,回到步驟(2),重復以上的步驟,直至達到最優(yōu)濾波。
上述步驟中,步驟(2)和步驟(4)為算法的濾波過程,步驟(5)為算法權值的自適應調(diào)整過程。LMS算法通過計算參考信號與輸出信號的差來自適應改進濾波器的權值系數(shù),使下一次輸出更加精確。
本文的硬件設計采用了流水線設計方式,通過將LMS算法分解為幾個連續(xù)的部分[6],可以實現(xiàn)每個時鐘周期都有一個數(shù)據(jù)輸出。從LMS算法的原理可知,實現(xiàn)LMS自適應濾波器最為關鍵的是要完成上文所述的算法流程的步驟(3)、步驟(4)和步驟(5)三個部分的計算,這些步驟均為簡單的復數(shù)運算,只包括加法、減法和乘法三種演算方式,三種演算均可以通過Verilog語言編程來實現(xiàn)。
由于并非每個部分的輸出都是同步完成,因此需要使用數(shù)個數(shù)據(jù)延時模塊來協(xié)調(diào)各運算模塊的數(shù)據(jù)流動,以實現(xiàn)算法內(nèi)部各運算模塊的流暢運行。本文采用Verilog語言編寫了數(shù)據(jù)延時模塊,插入到算法內(nèi)部以保證各模塊之間數(shù)據(jù)流通高效、穩(wěn)定、正確,得到準確的計算結果[7]。
硬件程序采用Verilog語言編寫,通過Vivado 2017.4開發(fā)環(huán)境進行代碼綜合以及仿真測試。在本文設計的Vivado工程中,系統(tǒng)時鐘Clk設定為100 MHz。圖2是經(jīng)Vivado 2017.4軟件綜合后得到的LMS自適應濾波器頂層模塊RTL視圖。
圖2 LMS自適應濾波器頂層模塊RTL視圖
圖2所示的自適應濾波器的電路圖中Data_in為原始軸承信號的輸入端口,Desired_in為經(jīng)過延遲過后的軸承信號輸入端,Step_size為步長值輸入端,步長值μ一般取2的整數(shù)次方的倒數(shù)(如2-4),Y_out為降噪后的結果輸出端口。Data_reg為上文提到的數(shù)據(jù)延時模塊,用來協(xié)調(diào)各方信號的流動,使信號流通更加流暢,避免出現(xiàn)資源浪費的情況。
LMS模塊為核心的自適應濾波模塊,它由數(shù)個LMS_tap模塊串行連接而成,對輸入信號進行處理,將每個LMS_tap模塊結果相加得到最終信號濾波結果。將LMS模塊展開后可得LMS_tap模塊的RTL級電路圖,如圖3所示。
圖3 LMS_tap模塊RTL視圖
LMS_tap模塊以流水線的方式工作,數(shù)據(jù)輸入后先通過LMS模塊外部的乘法器實現(xiàn)權值系數(shù)計算:Δwi(n)=2μei(n)x(n),之后通過tap模塊內(nèi)部的乘法器來計算yi(n)=wi(n)X(N-I+1),通過加法器用來計算ei(n)=di(n)-yi(n),來實現(xiàn)LMS自適應濾波的各部分功能;最終由該tap模塊輸出傳遞到下一個tap模塊的輸入信號x(n)和濾波結果yi(n)。
用Vivado自帶仿真工具對上述FPGA工程進行仿真,選擇從濾波性能和實時性能這兩個方面對該FPGA工程進行分析,來判斷其是否適合于實際應用。
仿真采用的輸入信號為實測軸承故障信號,用實際軸承的外圈磨損故障信號對提出的FPGA方案進行測試。在測試程序testbench的編寫過程中,采用了readmemh命令從上位機中讀入采集到的軸承故障信號數(shù)據(jù)用來進行濾波測試,濾波結束后,使用fswrite和fscanf命令將濾波后的軸承數(shù)據(jù)以文本的形式輸出并存儲到上位機中[8]。圖4為軸承故障信號濾波前后的仿真結果波形對比圖。
圖4 軸承故障信號仿真結果對比
圖4中,Sine_display為輸入的軸承故障信號波形圖,Y_out為濾波后得到的濾波數(shù)據(jù)波形圖。對圖4濾波前后波形圖的直觀對比可以得出該LMS自適應濾波器在FPGA中已經(jīng)得到了實現(xiàn)。為了進一步分析該方案能否實現(xiàn)對軸承故障信號特征頻率的提取,將仿真測試程序得到的濾波結果存儲后利用Matlab對濾波結果進行包絡解調(diào)[9],圖5與圖6分別為濾波前與濾波后軸承外圈故障信號的包絡結果。
圖5 濾波前信號的包絡結果
圖6 濾波后信號的包絡結果
經(jīng)過對包絡結果圖對比分析,可以看出未經(jīng)過任何處理的原始故障信號經(jīng)過包絡后無法準確的分辨其倍頻以及提取出準確的工作頻率,經(jīng)過LMS自適應濾波器濾波后的故障信號經(jīng)過包絡后可以清晰的看出該信號的倍頻,準確的提取出故障頻率約為28 Hz,說明該自適應濾波器的FPGA實現(xiàn)方案適合于對軸承故障信號進行濾波。
為了驗證該FPGA方案的實時性能,采用3組不同的實測軸承故障數(shù)據(jù)對系統(tǒng)進行了對比測試,測試的結果如表1所示,其中,軟件實現(xiàn)的程序由Matlab語言編寫,運行在PC機上。從測試結果可以看出, 硬件實現(xiàn)的LMS自適應濾波器要比軟件的快2個數(shù)量級。
表1 測試結果表
仿真結果表明軸承故障信號經(jīng)過LMS自適應濾波器處理之后,信號中噪聲分量明顯降低,可以準確的提取出故障頻率,達到了濾波的目的。同時,該方案實現(xiàn)的LMS自適應濾波器具有很強的實時性能,可以達到工程實際要求。