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