摘 要:介紹基于Web的故障診斷系統(tǒng)的結(jié)構(gòu)及其故障診斷方法,并利用ASP和MATLAB技術(shù)實現(xiàn)在線診斷的方法,利用LabVIEW的DataSocket技術(shù)實現(xiàn)網(wǎng)絡(luò)診斷的方法,以及如何用VisualC++設(shè)計COM組件實現(xiàn)基于Web的故障診斷方法。最后對三種網(wǎng)絡(luò)故障診斷方法進(jìn)行了比較。
關(guān)鍵詞:故障診斷;組件;MATLAB;LabVIEW
隨著Internet技術(shù)與Web技術(shù)的迅速發(fā)展,建立開放式、可擴(kuò)展的遠(yuǎn)程故障診斷系統(tǒng)成為現(xiàn)實,它是Internet技術(shù)、通信技術(shù)與機(jī)械設(shè)備故障診斷技術(shù)相結(jié)合而發(fā)展的產(chǎn)物。隨著Internet的日益普及,機(jī)電設(shè)備監(jiān)測診斷模式正經(jīng)歷著新的革命。經(jīng)過單機(jī)封閉式監(jiān)測診斷系統(tǒng)到基于工業(yè)局域網(wǎng)的分布式監(jiān)測診斷系統(tǒng)(DMDS)之后,基于廣域網(wǎng)的遠(yuǎn)程故障診斷系統(tǒng)的研究和應(yīng)用受到廣泛的關(guān)注。
基于Web的遠(yuǎn)程在線故障診斷系統(tǒng)的結(jié)構(gòu)
遠(yuǎn)程故障診斷系統(tǒng)采用的技術(shù)比較多,國內(nèi)外在這一領(lǐng)域的研究也日益深入,在研究方案選擇上有多種的思路。本系統(tǒng)采用B/S結(jié)構(gòu)搭建,診斷服務(wù)器端實現(xiàn)了MATLAB診斷技術(shù)、LABVIEW診斷技術(shù)及COM診斷組件技術(shù)的融合,進(jìn)行了一些新的探索。遠(yuǎn)程故障診斷系統(tǒng)結(jié)構(gòu),如圖1所示。
圖1 監(jiān)測診斷系統(tǒng)結(jié)構(gòu)
診斷過程
基于Web的遠(yuǎn)程故障診斷系統(tǒng)進(jìn)行故障診斷的過程如下:設(shè)備運行現(xiàn)場的數(shù)據(jù)采集系統(tǒng),根據(jù)設(shè)備運行特點,利用傳感器在線獲取設(shè)備運行的振動、溫度、電流、電壓等狀態(tài)信息。同時,計算機(jī)監(jiān)測系統(tǒng)對采集回來的信號進(jìn)行實時處理,顯示各種信號的數(shù)值和圖表,判斷設(shè)備是否正常運行。一旦出現(xiàn)異常情況,立即發(fā)出警報信號。此時,用戶只需打開Web瀏覽器,輸入故障診斷中武漢科技大學(xué)學(xué)報(自然科學(xué)版)2005年第4期心的URL地址,就可以訪問到故障診斷中心服務(wù)器。該站點向用戶提供Web頁面指導(dǎo),用戶交互輸入待診斷的有關(guān)觀測數(shù)據(jù),選擇相關(guān)的診斷方法,提交后發(fā)送到Web服務(wù)器。Web服務(wù)器接著執(zhí)行某一ASP程序,對用戶請求進(jìn)行處理,調(diào)用故障診斷服務(wù)器上的故障診斷組件,對數(shù)據(jù)進(jìn)行診斷分析,并將處理結(jié)果以網(wǎng)頁形式由Web服務(wù)器返回給客戶瀏覽器,用戶即可在瀏覽器上看到診斷結(jié)果。系統(tǒng)結(jié)構(gòu)如圖1所示。
關(guān)鍵技術(shù)
基于Web的故障診斷,主要是利用動態(tài)網(wǎng)頁技術(shù)編制交互性較強(qiáng)的網(wǎng)頁,由遠(yuǎn)程客戶瀏覽器啟動,實現(xiàn)對設(shè)備的診斷。本文主要介紹其中的關(guān)鍵軟件實現(xiàn)技術(shù):數(shù)據(jù)庫訪問技術(shù)、故障診斷組件的編制技術(shù)及其在網(wǎng)頁中的調(diào)用技術(shù)。
數(shù)據(jù)庫訪問技術(shù)
數(shù)據(jù)庫服務(wù)器安裝Microsoft公司的SQLServer2000,現(xiàn)場在線監(jiān)測系統(tǒng)得到的數(shù)據(jù)通過網(wǎng)絡(luò)實時送往數(shù)據(jù)庫服務(wù)器中保存和管理。目前在Windows環(huán)境下有多種訪問Web數(shù)據(jù)庫的技術(shù),這里采用ActiveX數(shù)據(jù)對象(ADO)。ActiveX數(shù)據(jù)對象(ADO,ActiveX Data Objects)是通用數(shù)據(jù)訪問(UDA,Universal Data Access)的核心技術(shù)。當(dāng)用戶使用瀏覽器請求ASP主頁時,Web服務(wù)器響應(yīng),調(diào)用ASP引擎來執(zhí)行ASP文件,解釋其中的腳本語言(JavaScript或VBScript),用組件ADO(ActiveX Data Objects)完成數(shù)據(jù)庫訪問操作,最后ASP生成包含有數(shù)據(jù)查詢結(jié)果的HTML頁并返回用戶端顯示。在ASP中訪問SQL Server數(shù)據(jù)庫關(guān)鍵代碼如下:
<%
setconn=Server.CreateObject(“ADODB.Connection”)//建立連接對象
conn.Opencon.open“PROVIDER=
SQLOLEDB;DATASOURCE=SQL服務(wù)器名稱;UID=sa;PWD=數(shù)據(jù)庫密碼;DATABASE=數(shù)據(jù)庫名稱”
sqlStr=“SQL語句’”//指定要執(zhí)行的SQL命令
rs=conn.Execute(sqlStr)rs=Server.CreateObject(“ADODB.RecordSet”)//建立記錄集對象
rs.MoveNext//指向下一條記錄
rs.close()//關(guān)閉連接
conn.close()//關(guān)閉數(shù)據(jù)庫
%>
故障診斷組件的編制及其在網(wǎng)頁中的調(diào)用技術(shù)
MATLAB診斷技術(shù)
MATLAB的含義是矩陣實驗室(Matrix Laboratory)。它是MathWorks公司于1982年推出的一套高性能的數(shù)值計算和可視化數(shù)學(xué)軟件。在系統(tǒng)開發(fā)中,要把時域波形、功率譜分析、相關(guān)分析、濾波、倒譜、頻率細(xì)化、曲線擬合、小波分析等信號處理方法編成相應(yīng)的m文件存放在SQL Server數(shù)據(jù)庫服務(wù)器上,等待調(diào)用??蛻舳擞脩暨x用以上任一種方法后提交給服務(wù)器端執(zhí)行,服務(wù)器將分析結(jié)果再返回給客戶瀏覽器。MATLAB提供了COM/DCOM接口,用戶可以在ASP網(wǎng)頁程序中執(zhí)行MATLAB命令。下面是MATLAB編寫的小波分析的m文件的主要代碼(其結(jié)果見圖2):
圖2 用Matlab進(jìn)行小波分析
functionwavelet(J,K,CH,F(xiàn)S,F(xiàn)ILENAME,SCALE,OFFSET)
//CH采樣通道號;FS采樣頻率
DATA=load(FILENAME);
[lc]=size(DATA);
N=l;
SIGNAL=DATA(:,CH)3SCALE+OFFSET;
T1=0;T2=(N-1)/FS;T=T2-T1;[c,ll]=wavedec(SIGNAL,J,’db10’);//尺度
UD(:,1)=wrcoef(’a’,c,ll,‘db10’,J);
For
j=2:1:J+1 UD(:,j)=wrcoef(‘d’,c,ll,‘db10’,j-1);
End
t=(0:(N-1))/FS;
P=UD(:,K);
P=P’;
P=mat2str(P3100,3);
P
采用ASP調(diào)用MATLAB應(yīng)用程序關(guān)鍵代碼如下:
<%
SetMatlabapp=CreateObject(“MATLAB.Application”)//創(chuàng)建對象
StringReturn=Matlabapp.Execute(“MATLAB語句”)//執(zhí)行MATLAB算法
SetMatlabapp=Nothing//關(guān)閉對象
%>
LabVIEW診斷技術(shù)
Labview是一種用圖表代碼來代替編程語言創(chuàng)建應(yīng)用程序的開發(fā)工具。充分利用了PC價格便宜(相對于其他測控儀器)、功能強(qiáng)大的特點。使用圖形語言(G語言)、圖標(biāo)和連線代替文本的形式編寫程序。其最大的優(yōu)點是編程簡單、界面友好,可以很方便地把實驗數(shù)據(jù)以圖表的形式呈現(xiàn)出來。
在LabVIEW下設(shè)計虛擬儀器,用不同的儀器來顯示速度、位移、功率等值。在瀏覽器中,用戶可以獲取系統(tǒng)設(shè)置和當(dāng)前的運行狀態(tài),而且系統(tǒng)工作狀態(tài)可以實現(xiàn)共享。GWebServer可以將LabVIEW環(huán)境下設(shè)計的虛擬儀器前面板發(fā)布到Intranet或Internet上,遠(yuǎn)程用戶可以通過瀏覽器使用現(xiàn)場運行的虛擬儀器。利用GWebServer并結(jié)合LABIEW提供的CGIVis和CGIAnimations編程工具,在瀏覽器中就可實現(xiàn)啟動、停止、參數(shù)傳遞、密碼保護(hù)等用戶交換功能。
LabVIEW采用DataSocket技術(shù)解決網(wǎng)絡(luò)編程問題。DataSocket是NI公司提供的一種基于TCP/IP協(xié)議的網(wǎng)絡(luò)編程新技術(shù)。它支持本地文件I/O操作、FTP和HTTP文件傳輸、實時數(shù)據(jù)共享,并提供通用的API編程接口。它包括兩部分,即DataSocketAPI和DataSocketServer,前者提供統(tǒng)一的編程接口,作為客戶,可以在多種編程環(huán)境下與多種數(shù)據(jù)類型通信。NI分別提供了DataSocket的ActiveX控件、LABWindows/CVIC庫、一系列的LabVIEW的Vis,所以可以在任何編程環(huán)境下使用。本課題使用ActiveX控件形式,通過DataSocketServer,借助DataSocketAPI程序發(fā)布,并以很高的速度廣播實時數(shù)據(jù)到多個遠(yuǎn)程客戶端。并且將DataSocketActiveX控件進(jìn)一步封裝,實現(xiàn)具有一定功能的ActiveX控件并集成到Web頁面上,同時將現(xiàn)場數(shù)據(jù)發(fā)布到DataSocketServer上。這樣,用戶通過瀏覽器就可以訪問該Web頁面。用此方法實現(xiàn)的濾波如圖3所示。
COM組件診斷技術(shù)
COM組件是遵循COM規(guī)范編寫,以Win32動態(tài)鏈接庫(DLL)或可執(zhí)行文件(EXE)形式發(fā)布的可執(zhí)行二進(jìn)制代碼。ActiveX控件是應(yīng)用得最廣泛的COM組件。通過ActiveX技術(shù),程序員能把可重用的軟部件組裝到應(yīng)用程序中去,控件由三部分組成:控件外觀是公有的,用戶能看到它并能同它進(jìn)行交互;控件的接口,包括控件的所有屬性、方法和事件也是公有的,任何包含該控件實例的程序都會用到它;控件的私有部分是它的實現(xiàn),即控件工作的代碼。也就是說,控件的實現(xiàn)效果是可見的,但代碼本身不可見。用戶通過繼承控件私有部分,修改其可見部分,就能匹配新的應(yīng)用需求。本課題采用VC++自編一個ActiveX控件,實現(xiàn)采集信號波形圖的繪制。在使用VC++開發(fā)ActiveX控件時,有兩種比較常用的選擇:Microsoft基礎(chǔ)類庫(MFC)和Active模板庫(ATL)。在這里,采用ATL進(jìn)行開發(fā)。
圖3 用LabVIEW進(jìn)行濾波
ATL提供了生成ActiveX控件的小型精致框架。這種框架可以方便地建立小型的、快速的、基于COM的組件。ATL的使用給軟件開發(fā)人員在實現(xiàn)組件的時候帶來了更大的靈活性,可以不依賴于任何輔助的DLL文件。ATL是開發(fā)ActiveX的充滿活力的平臺,它將在不斷地發(fā)展過程中,逐漸成為開發(fā)ActiveX組件的主流工具。但是MFC的長處正是它的短處,也就是它缺乏對通用類和工具的支持。
在VC++6.0開發(fā)平臺中通過“ATLCOMAppWizard”建立ATL工程,并插入NewATL0bject,完成對象的屬性設(shè)置,點擊Next,在Name表項的shortname中輸人控件名稱Drboxt,這時可以看到在其他各欄中wizard自動生成了各項的名稱,這些名稱可以修改,單擊確定。這時打開ClassView,將會發(fā)現(xiàn)增加了一個類CDrboxt和一個接口IDrboxt,這是為新建的控件準(zhǔn)備的。該控件的屬性和方法的聲明,就加在接口的聲明中,而把其實現(xiàn)加在新增加的類中。接口的聲明在一個idl(InterfaceDefineLanguage)文件中。由于要在網(wǎng)絡(luò)中使用此控件,所以必須對其安全性進(jìn)行設(shè)置。在此采用IObjectSafety將控件標(biāo)記為初始化/腳本安全。CDrboxt類的定義如圖4所示。
classATL_NO_VTABLECDrboxt:
publicCComObjectRootEx
,
publicIObjectSafety,
……
{public:
STDMETHOD(get_Yunit)(/*[out,retval]*/short*pVal);
STDMETHOD(start)();
UINTm_timer;
……}
ASP調(diào)用組件關(guān)鍵代碼如下:
<%
Set Obj=Server. CreateObject("Huabo.Drboxt")//創(chuàng)建對象
obj.start()//調(diào)用方法實現(xiàn)畫波形圖
set? Obj=nothing//釋放對象
圖4 COM組件實現(xiàn)繪波
三種診斷技術(shù)的比較
以上三種實現(xiàn)基于Web的故障診斷軟件技術(shù)各有如下特點:
(1)MATLAB語言易學(xué)易用,不要求用戶有高深的數(shù)學(xué)和程序語言知識,不需要用戶深刻了解算法及編程技巧。MATLAB既是一種編程環(huán)境,又是一種程序設(shè)計語言。這種語言與C,F(xiàn)ORTRAN等語言一樣,有其內(nèi)定的規(guī)則,但MATLAB的規(guī)則更接近數(shù)學(xué)表示,使用更為簡便,可使用戶大 大節(jié)約設(shè)計時間,提高設(shè)計質(zhì)量。應(yīng)用MATLAB技術(shù)不需開發(fā)專門的軟件,它本身就帶有大量的信號處理工具,直接調(diào)用就行,大大降低了對使用者的數(shù)學(xué)基礎(chǔ)和計算機(jī)語言知識的要求,而且編程效率和計算效率極高,還可在計算機(jī)上直接輸出結(jié)果和精美的圖形拷貝,其成本較低。
(2)虛擬儀器技術(shù)的好處有:不需開發(fā)專門的客戶端軟件,開放性好,用戶隨時可以加入;服務(wù)器端不需編寫專門的網(wǎng)關(guān)處理程序,可以直接用該工具包的VI實現(xiàn);原有的LABVIEW應(yīng)用可以提升到網(wǎng)絡(luò)環(huán)境,通過FTP,SMTP自動傳輸數(shù)據(jù)和信息,便于遠(yuǎn)程進(jìn)一步分析。虛擬儀器不但功能多樣、測量準(zhǔn)確,而且界面友好、操作簡易,維護(hù)費用低廉。與其他設(shè)備集成方便靈活,還有可以擴(kuò)展的功能。
(3)COM組件技術(shù)需要自己編寫程序,開發(fā)及調(diào)試?yán)щy,技術(shù)難度較高,對開發(fā)人員有一定的要求,開發(fā)成本也較另外兩種方法高。但是升級、修改組件不需修改頁面,因此擴(kuò)展性好,而且開發(fā)出來后,組件調(diào)用方便,節(jié)省代碼,運行效率高,便于使用和管理。另外,編譯之后的組件以二進(jìn)制的形式發(fā)布,可跨Windows平臺使用,而且源程序代碼不會外泄,有效地保證了組件開發(fā)者的版權(quán)。
結(jié)語
本課題實現(xiàn)了ASP和MATLAB技術(shù)在線診斷的方法,LabVIEW的DataSocket技術(shù)實現(xiàn)網(wǎng)絡(luò)診斷的方法,以及如何用VisualC++設(shè)計COM組件實現(xiàn)基于Web的故障診斷方法,并將三者融合與一體,在向用戶提供多種診斷方法方面進(jìn)行了探索。