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