張俊紅,馬文朋,李林潔,劉 昱
ZHANG Junhong,MA Wenpeng,LILinjie,LIU Yu
天津大學 內(nèi)燃機燃燒學國家重點實驗室,天津 300072
State Key Laboratory of Engines,Tianjin University,Tianjin 300072,China
隨著民用航空事業(yè)的發(fā)展,飛行安全性和經(jīng)濟性越來越受到重視,航空發(fā)動機是飛機的心臟,結(jié)構(gòu)復雜、工作環(huán)境惡劣,是機械行業(yè)中故障率最高、維護工作量最大的系統(tǒng),其工作狀態(tài)的好壞直接影響飛行安全。據(jù)NASA統(tǒng)計資料表明,民航領(lǐng)域的發(fā)動機故障占飛機所有機械故障的三分之一;另外一項關(guān)于發(fā)動機直接運行成本的統(tǒng)計顯示,維護費用占34%。因此,進行航空發(fā)動機狀態(tài)監(jiān)測與故障診斷具有重要意義。
我國的航空發(fā)動機故障診斷研究還處于起步階段,國內(nèi)尚未出現(xiàn)成熟的商業(yè)化的航空發(fā)動機故障診斷系統(tǒng),但在相關(guān)方法、技術(shù)及系統(tǒng)開發(fā)的研究上也出現(xiàn)了一些成果。應(yīng)勇[1]設(shè)計了航空發(fā)動機監(jiān)控系統(tǒng)的硬件電路,討論了航空發(fā)動機狀態(tài)信號的多種處理方法,并利用LabWindows/CVI開發(fā)平臺和C語言,開發(fā)了一套航空發(fā)動機故障信號分析處理軟件。馬業(yè)鵬[2]利用經(jīng)典和現(xiàn)代數(shù)字信號處理方法,在LabVIEW開發(fā)平臺上,結(jié)合MATLAB和C語言,開發(fā)出了航空發(fā)動機振動的狀態(tài)監(jiān)測和故障診斷系統(tǒng)。以上系統(tǒng)擁有較強的信號處理功能,但在故障模式識別上較為薄弱。
本文基于航空發(fā)動機振動信號,利用LabVIEW虛擬儀器開發(fā)平臺,通過其外部接口調(diào)用MATLAB和C語言程序,設(shè)計了一套航空發(fā)動機故障診斷系統(tǒng)。該系統(tǒng)由數(shù)據(jù)采集、信號處理與特征提取、故障模式識別、故障數(shù)據(jù)庫管理等模塊組成,其中數(shù)據(jù)采集由LabVIEW調(diào)用動態(tài)鏈接庫驅(qū)動TST-5912數(shù)據(jù)采集儀實現(xiàn);故障模式識別由LabVIEW利用ActiveX自動化技術(shù)調(diào)用MATLAB編譯的支持向量機COM組件實現(xiàn);故障數(shù)據(jù)庫管理由LabVIEW通過數(shù)據(jù)庫連接工具包訪問Microsoft Access數(shù)據(jù)庫實現(xiàn)。其中故障模式識別模塊是該系統(tǒng)的核心。最后在航空發(fā)動機轉(zhuǎn)子實驗臺進行故障診斷實驗,對該系統(tǒng)的性能進行了測試。
支持向量機(Support Vector Machine,SVM)[3]是建立在統(tǒng)計學習理論基礎(chǔ)上的一種通用機器學習方法,在解決小樣本、非線性、高維問題中有諸多優(yōu)勢,具有良好的泛化能力,在模式識別等領(lǐng)域取得了廣泛應(yīng)用[4-5]。由于航空發(fā)動機故障樣本不易獲取,故障征兆與故障原因之間的關(guān)系復雜,鑒于SVM的優(yōu)勢,該系統(tǒng)選擇SVM作為故障診斷模型。
給定訓練樣本集 S={(yi,xi)}(i=1,2,…,l),其中,每個樣本點表示為xi∈RN,yi∈{-1,1}為其分類標識。SVM的基本思想是將輸入空間映射到高維特征空間,并在高維特征空間構(gòu)造最優(yōu)分類超平面。令z=φ(x)表示樣本從輸入空間RN到高維特征空間Z的映射。
引入懲罰因子C和松弛因子ξi,C表示對樣本被錯分的懲罰程度,ξi(ξi≥0)表示樣本 xi的錯分誤差,支持向量機的最優(yōu)分類面問題為如下優(yōu)化問題:
將該問題轉(zhuǎn)化為如下拉格朗日對偶問題:
問題(2)的最優(yōu)解αˉ滿足Karush-Kuhn-Tucker(KKT)條件:
根據(jù)二次規(guī)劃方法求得問題(2)的解αˉ,再根據(jù)KKT條件求得偏置bˉ,則可得SVM的決策函數(shù):
引入核函數(shù) K(xi,xj)=替高維特征空間Z的內(nèi)積計算以降低計算復雜度。目前常用的核函數(shù)有多項式核、徑向基函數(shù)(Radial Basis Function,RBF)核、Sigmoid核。文獻[6]的研究表明,SVM的性能與核函數(shù)的類型關(guān)系不大,而核函數(shù)的參數(shù)與懲罰因子是影響SVM性能的主要因素。RBF核函數(shù)具有高度非線性,且只有一個可控參數(shù),因而被普遍采用。RBF核函數(shù)的形式為:
本文設(shè)計了遺傳算法、粒子群算法、遺傳粒子群算法等多種算法對核參數(shù)g和懲罰因子C進行優(yōu)化以滿足不同情況的需要,并在MATLAB R2009a(7.8)環(huán)境下編制了故障診斷模型的M程序。
在工程應(yīng)用領(lǐng)域,LabVIEW和MATLAB是兩種常用的語言,LabVIEW在用戶圖形界面設(shè)計、數(shù)據(jù)采集、硬件控制等方面有獨特的優(yōu)勢,但對復雜算法的支持能力有限,而MATLAB具有強大的數(shù)據(jù)運算功能。本文結(jié)合兩者的優(yōu)勢,進行航空發(fā)動機故障診斷系統(tǒng)設(shè)計,利用LabVIEW設(shè)計用戶圖形界面和數(shù)據(jù)采集等程序,利用MATLAB設(shè)計故障模式識別程序并通過LabVIEW的接口供其調(diào)用。
在利用LabVIEW進行數(shù)據(jù)采集之前,必須先實現(xiàn)數(shù)采設(shè)備在LabVIEW下的驅(qū)動[7]。LabVIEW為NI公司的數(shù)采卡提供了配套的驅(qū)動程序與函數(shù)庫,但不支持第三方數(shù)采卡。為了在LabVIEW平臺中使用該系統(tǒng)的數(shù)采設(shè)備(TST-5912),編制了TST-5912的動態(tài)鏈接庫(DLL)驅(qū)動程序,利用LabVIEW的調(diào)用庫函數(shù)節(jié)點(CLFN)調(diào)用DLL中的函數(shù)進行數(shù)據(jù)采集。調(diào)用DLL進行數(shù)據(jù)采集有諸多優(yōu)勢:DLL是在應(yīng)用程序運行時被裝入和鏈接的,使用DLL可以實現(xiàn)多個應(yīng)用程序之間代碼和資源的共享,可以提高內(nèi)存使用率;DLL獨立于編程語言,可以使用多種語言(Visual C++、C++Builder、Visual Basic等)編制DLL。本文采用Visual C++6.0編制了該DLL。
將CLFN放置在流程圖中,雙擊打開配置對話框,配置DLL的文件名、被調(diào)用函數(shù)的名稱及調(diào)用方式、函數(shù)的返回類型、函數(shù)的參數(shù)及類型等信息,即可完成對DLL的調(diào)用。輔以其他函數(shù)和控件,完成數(shù)據(jù)采集模塊的設(shè)計。數(shù)據(jù)采集的流程圖和操作界面分別如圖1和圖2。選用12個時域參數(shù)和3個頻域參數(shù)作為故障特征,如表1所示。
圖1 數(shù)據(jù)采集流程圖
圖2 數(shù)據(jù)采集操作界面
航空發(fā)動機的振動信號中含有豐富的能夠反映其運行狀態(tài)的有用信息,但也混有大量噪聲和干擾。為了消除和減少噪聲及干擾的影響,提取有用信息,首先對其進行剔除異常點、零均值化、消除趨勢項、濾波等預處理。
信號處理的另一項重要內(nèi)容是從振動信號中提取出能夠反映系統(tǒng)狀態(tài)分類本質(zhì)的特征向量,為后續(xù)的故障模式識別做準備。航空發(fā)動機發(fā)生故障時,其振動信號在時域的峰值和概率分布將會發(fā)生變化;信號的頻率成分,不同頻率成分的能量,以及頻譜的主能量譜峰位置也會發(fā)生變化,可以作為判斷其狀態(tài)的依據(jù)。本系統(tǒng)
故障模式識別模塊采用LabVIEW和MATLAB混合編程的方法實現(xiàn)。在LabVIEW中調(diào)用MATLAB程序有以下幾種常見方法[8-9]:利用MathScript節(jié)點;使用ActiveX函數(shù)模塊;利用ActiveX自動化技術(shù)調(diào)用MATLAB編譯的COM組件;使用CLFN調(diào)用M文件轉(zhuǎn)換成的DLL。前兩種方法不能脫離MATLAB編程環(huán)境,不利于獨立應(yīng)用程序的開發(fā),運行效率低,而且操作不夠靈活;最后一種方法需要借助其他方法或語言實現(xiàn)LabVIEW和MATLAB之間的數(shù)據(jù)轉(zhuǎn)換和傳遞,編程較為繁瑣。采用COM組件技術(shù)實現(xiàn)二者的混合編程。
MATLAB R2007a(7.4)及以后的版本中提供了Deployment Tool,幫助用戶將用M語言開發(fā)的算法自動快速地轉(zhuǎn)換成獨立的COM組件,該組件可被任何支持COM的語言調(diào)用。把M文件編譯為COM組件,需要借助外部編譯器,需先進行MATLAB編譯環(huán)境的設(shè)置,在MATLAB的命令窗口中輸入mex-setup和mbuild-setup,選擇Microsoft Visual Studio 6.0作為外部編譯器。
使用Deployment Tool創(chuàng)建COM組件的過程一般為四個步驟:新建工程、添加M文件和MEX文件、編譯生成組件、打包和發(fā)布組件。以SVM主程序svc.m為例,創(chuàng)建COM組件的過程如下:
表1 故障特征參數(shù)
(1)打開Deployment Tool,選擇Create a new deployment project→MATLAB Builder NE→Generic COM Component,輸入要創(chuàng)建的COM組件的名稱(svm)和位置。
(2)選擇Project→Add Files添加svc.m和其他必要的M文件和MEX文件。
(3)選擇Tools→Build創(chuàng)建組件。
(4)選擇Tools→Package即可打包發(fā)布組件。
編譯打包完成后,svm文件夾下distrib文件夾中會生成相應(yīng)的svm_1_0.dll文件和svm_pkg.exe自解壓文件。DLL文件會自動注冊到系統(tǒng)中,將自解壓文件發(fā)布到其他計算機,運行即可實現(xiàn)DLL的安裝和COM組件的注冊。需要注意的是注冊后不能改變DLL的存儲路徑或刪除,否則將找不到注冊組件;使用MATLAB工具箱函數(shù)時,需要將工具箱函數(shù)的源M文件添加在工程中;為了在沒有安裝MATLAB的目標機上使用COM組件,需要在打包時將MATLAB Compiler Runtime(MCR)打包在內(nèi)。
在LabVIEW中調(diào)用上面生成的COM組件,需進行以下操作:
(1)調(diào)用Automation Open函數(shù),右擊選擇Select ActiveX Class→Browse,在列表中選擇 svm 1.0 Type Library Version 1.0,將 svm_1_0.dll的 Refnum 添加到LabVIEW程序中。
(2)調(diào)用Invoke Node并連接Refnum,在Method中選擇svc。方法中的nargout參數(shù)表示函數(shù)輸出參數(shù)的個數(shù),若方法無輸出,則無此參數(shù)。nargout的值與輸出參數(shù)個數(shù)不等時,LabVIEW將反饋錯誤信息。輸出參數(shù)的左端定義部分不用處理,賦值常量即可;右端輸出結(jié)果的類型為變體型,需要通過Variant to Data節(jié)點將變體型數(shù)據(jù)轉(zhuǎn)換成LabVIEW可以處理和顯示的數(shù)據(jù)類型。需要注意的是,數(shù)據(jù)轉(zhuǎn)換前必須清楚函數(shù)輸出變量的類型,選擇錯誤的類型標識,LabVIEW將報錯;當函數(shù)輸出矩陣類型時,必須將其轉(zhuǎn)換成LabVIEW下的2D Array類型,即使其本應(yīng)是一維數(shù)組,否則也會報錯。本例中svc的輸出變量為字符串和一維數(shù)組,處理方式如圖3所示。輸入?yún)?shù)可以直接輸入對應(yīng)的數(shù)據(jù)類型,LabVIEW會將其自動轉(zhuǎn)換成變體型以滿足COM組件的輸入要求。
圖3 LabVIEW調(diào)用COM組件流程圖
(3)調(diào)用完成后用Close Automation函數(shù)關(guān)閉Refnum。
故障診斷系統(tǒng)需要采集大量的信息,將發(fā)動機的運行狀態(tài)和故障信息存入數(shù)據(jù)庫,可以方便地對數(shù)據(jù)進行管理和維護。在比較幾種LabVIEW訪問數(shù)據(jù)庫方法[10]的基礎(chǔ)上,系統(tǒng)選用Microsoft Access作為數(shù)據(jù)庫管理系統(tǒng),采用NI公司的數(shù)據(jù)庫連接工具包對Access進行訪問、操作和管理。
使用LabVIEW訪問數(shù)據(jù)庫之前,需先建立其與數(shù)據(jù)庫的連接,該系統(tǒng)以字符串的形式輸入連接信息。使用此方法可以通過一些路徑獲取函數(shù)和字符串函數(shù)將數(shù)據(jù)庫的實時位置提供給數(shù)據(jù)庫操作函數(shù),避免數(shù)據(jù)庫文件的位置發(fā)生變化時重新配置連接,從而可以提高程序的可移植性和靈活性。
故障數(shù)據(jù)庫包含信號的故障特征、故障類型等信息,是故障診斷的依據(jù)和基礎(chǔ),需要保證其正確性及實效性。本文開發(fā)的故障數(shù)據(jù)庫管理系統(tǒng)能夠及時添加數(shù)據(jù)、按用戶要求查詢數(shù)據(jù)、對數(shù)據(jù)進行修改和更新、刪除過期和無用的數(shù)據(jù)。以查詢數(shù)據(jù)為例,說明故障數(shù)據(jù)庫管理系統(tǒng)的設(shè)計過程和操作。
查詢數(shù)據(jù)程序設(shè)計包括以下幾個步驟:
(1)利用DB Tools Open Connection.vi建立與數(shù)據(jù)庫的連接。
(2)利用DB Tools Execute Query.vi通過SQL數(shù)據(jù)查詢語句SELECT查詢數(shù)據(jù)庫,例如查詢故障診斷數(shù)據(jù)表中峰值大于0.2的記錄,SQL語句為:“select*from 故障診斷數(shù)據(jù)表where峰值>0.2”。
(3)利用DB Tools Fetch Recordset Data.vi獲取查詢結(jié)果并輸出顯示。
(4)利用DB Tools Free Object.vi釋放對象,并用DB Tools Close Connection.vi斷開連接。
為簡便操作,在程序中嵌入部分SQL語句,用戶只需輸入需要查詢的數(shù)據(jù)條件(峰值>0.2)即可。查詢數(shù)據(jù)的操作界面如圖4。
圖4 查詢數(shù)據(jù)操作界面
為測試本文設(shè)計的航空發(fā)動機故障診斷系統(tǒng)的性能,在航空發(fā)動機轉(zhuǎn)子實驗臺上進行了故障診斷實驗。該實驗臺由轉(zhuǎn)子試驗器、安裝臺架、電機、基礎(chǔ)平臺和潤滑系統(tǒng)等組成,如圖5所示。轉(zhuǎn)子試驗器由某航空發(fā)動機設(shè)計研究所設(shè)計制造,外形與發(fā)動機核心機的機匣一致,尺寸縮小三倍;內(nèi)部結(jié)構(gòu)作了必要簡化,支承形式簡化為0-2-0式,多級壓氣機與渦輪簡化為單級盤片結(jié)構(gòu),葉片簡化為斜置平面形狀,取消了火焰筒,采用電機驅(qū)動,最大工作轉(zhuǎn)速為7 000 r/m。該實驗臺可模擬航空發(fā)動機轉(zhuǎn)子不平衡、不對中、碰摩及各種滾動軸承故障。斷精度,且高于未優(yōu)化的模型,能夠滿足工程需要,同時也驗證了優(yōu)化的有效性。
圖6 故障診斷操作界面
圖5 航空發(fā)動機轉(zhuǎn)子實驗臺
本文進行了正常狀態(tài)、轉(zhuǎn)子不平衡、不對中、碰摩、不平衡-碰摩耦合、軸承內(nèi)圈故障、外圈故障、滾動體故障等八種狀態(tài)下的數(shù)據(jù)采集和故障診斷實驗,在軸承座和兩端機匣上安裝三向加速度傳感器來采集轉(zhuǎn)子的振動信號,經(jīng)信號處理及特征提取后,形成故障診斷樣本,如表2。將樣本輸入故障模式識別模塊,選擇合適的參數(shù)和優(yōu)化算法,進行故障診斷模型訓練與測試,每種算法下重復十次實驗取平均,結(jié)果如表3。為研究優(yōu)化算法的效果,對未優(yōu)化的故障診斷模型進行了訓練與測試,結(jié)果也見于表3。最后將訓練好的模型用于故障診斷,操作界面如圖6。
表2 故障診斷樣本
表3 故障診斷結(jié)果
由故障診斷結(jié)果可見,針對該實驗獲取的樣本,采用四種算法優(yōu)化的支持向量機都達到了較高的故障診
本文基于支持向量機模型,利用LabVIEW、MATLAB和C語言混合編程,設(shè)計了一套融數(shù)據(jù)采集、信號處理與特征提取、故障模式識別和故障數(shù)據(jù)庫管理為一體的航空發(fā)動機故障診斷系統(tǒng)。應(yīng)用該系統(tǒng)在航空發(fā)動機轉(zhuǎn)子實驗臺上進行故障診斷實驗,對轉(zhuǎn)子幾種典型故障的診斷結(jié)果表明該系統(tǒng)擁有較高的故障診斷精度。該系統(tǒng)的設(shè)計為研制商業(yè)化的航空發(fā)動機故障診斷系統(tǒng)提供了可行思路,并為后續(xù)研究奠定了基礎(chǔ)。
[1]應(yīng)勇.航空發(fā)動機故障監(jiān)控系統(tǒng)設(shè)計與方法研究[D].西安:西北工業(yè)大學,2007.
[2]馬業(yè)鵬.基于LabVIEW的航空發(fā)動機振動狀態(tài)監(jiān)測及故障診斷系統(tǒng)設(shè)計[D].沈陽:沈陽航空工業(yè)學院,2007.
[3]Vapnik V N.An overview of statistical learning theory[J].IEEE Transactions on Neural Networks,1999,10(5):988-999.
[4]Xian G M,Zeng B Q.An intelligent fault diagnosis method based on wavelet packer analysis and hybrid support vector machine[J].Expert Systems with Applications,2009,36(10):12131-12136.
[5]Konar P,Chattopadhyay P.Bearing fault detection of induction motor using wavelet and Support Vector Machines(SVMs)[J].Applied Soft Computing,2011,11(6):4203-4211.
[6]Vapnik V N.The nature of statistical learning theory[M].New York:Springer-Verlag,1995.
[7]楊忠仁,饒程,鄒建,等.基于LabVIEW數(shù)據(jù)采集系統(tǒng)[J].重慶大學學報,2004,27(2):32-35.
[8]李沈,李森,劉俊磊,等.LABVIEW和MATLAB混合編程方法研究及其在柴油機故障診斷中的應(yīng)用[J].儀表技術(shù)與傳感器,2007(1):22-25.
[9]王禹林,熊振華,丁漢.LabVIEW與MATLAB的無縫集成[J].計算機應(yīng)用,2006,26(3):695-698.
[10]唐亞鵬,侯媛彬.基于LabVIEW的實踐教學平臺與Access數(shù)據(jù)庫的開發(fā)[J].計算機技術(shù)與發(fā)展,2011,21(5):219-222.