鐘功祥 等
摘要:結(jié)合MATLAB強(qiáng)大的運(yùn)算能力和VB的友好界面,詳細(xì)介紹VB調(diào)用MATLAB生成的COM組件在鉆井泵故障診斷中的應(yīng)用過(guò)程,提高編程的工作效率。其中鉆井泵故障診斷數(shù)據(jù)處理使用小波分析方法,得出小波分析的能量比和波形分析圖形,對(duì)鉆井泵故障診斷數(shù)據(jù)處理提供了簡(jiǎn)便途徑。
Abstract: Combined with the powerful operation ability of MATLAB and friendly interface of VB, the paper introduces in detail the application of COM components generated by VB call MATLAB, improves the efficiency of programming. The drilling pump fault diagnosis data processing uses wavelet analysis method, and draws the energy of wavelet analysis and waveform analysis graph, providing a simple way to the drilling pump fault diagnosis data processing.
關(guān)鍵詞: MATLAB;VB;COM組件;鉆井泵故障診斷
Key words: MATLAB;VB;COM components;drilling pump fault diagnosis
中圖分類號(hào):TP39 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2013)03-0192-02
0 引言
鉆井泵是石油鉆井循環(huán)系統(tǒng)中關(guān)鍵的設(shè)備,因結(jié)構(gòu)復(fù)雜和工況惡劣,生產(chǎn)中常因異常故障導(dǎo)致施工停止,從而造成極大的經(jīng)濟(jì)損失。鉆井泵故障診斷一般分為狀態(tài)信號(hào)采集、故障特征提取、故障識(shí)別和狀態(tài)預(yù)測(cè),其中故障特征提取一般摻雜其它因素的影響,因此,需要對(duì)采集的信號(hào)進(jìn)行必要的處理,以突出故障特征。
鉆井泵故障診斷信號(hào)處理計(jì)算量相當(dāng)復(fù)雜,若用單一的軟件處理數(shù)據(jù),其編程復(fù)雜和耗費(fèi)時(shí)間,且給編程人員造成了很大的工作量。
文章采用VB6.0,充分利用VB的界面和較強(qiáng)的開發(fā)軟件的能力,并且它的編程速度簡(jiǎn)單快捷,但VB的數(shù)值計(jì)算能力很弱,處理數(shù)據(jù)運(yùn)算能力很差。所以用VB不能很好的處理鉆井泵故障診斷數(shù)據(jù)。
而MATLAB是MathWorks公司推出的一種具有強(qiáng)大的數(shù)值計(jì)算、信號(hào)處理和圖形繪制能力的軟件,但是MATLAB的界面開發(fā)能力較弱,給工程計(jì)算人員帶來(lái)很大的不變。
文章結(jié)合兩者間的優(yōu)點(diǎn),通過(guò)混合編程,將復(fù)雜的鉆井泵故障診斷數(shù)據(jù)處理變得簡(jiǎn)單易做,提高了編程工作效率。
1 MATLAB制作COM組件
1.1 將M文件轉(zhuǎn)化成dll文件 文章采用MATLAB7.8,將M文件轉(zhuǎn)化成dll時(shí),先在MATLAB的Command Window中輸入mbuild - setup,對(duì)compilers進(jìn)行設(shè)置,選擇Microsoft Visual C++ 6.0 。然后在Command Window輸入deploytool新建一個(gè)工程文件(MATLAB菜單欄上點(diǎn)擊File—New —Deployment Project)。
在新建的窗口中添加M文件,然后點(diǎn)擊Build the project生成dll文件。如果要脫離MATLAB環(huán)境運(yùn)行dll文件,則需要安裝MATLAB中的MCRIstaller.exe,然后再打包。
1.2 VB調(diào)用dll文件 打開VB新建工程標(biāo)準(zhǔn)exe,在菜單欄“工程”中選擇“引用”,進(jìn)入引用對(duì)話框。在引用對(duì)話框中選擇生成的dll文件,筆者通過(guò)COM組件生成的dll文件的命名是fen 1.0 Type Library,并且要在VB的通用欄中聲明COM組件,其結(jié)構(gòu)為:Private xiao As fen.fen,其中xiao是參數(shù)定義(自定義)。
在VB窗體中初始化組件,并且在初始化時(shí)要與參數(shù)定義相結(jié)合,其結(jié)構(gòu)為:Set xiao = New fen.fen。
2 MATLAB中的M文件
鉆井泵故障診斷分為動(dòng)力端和液力端,它的數(shù)據(jù)處理方法包含有經(jīng)驗(yàn)?zāi)B(tài)分解、小波分析、細(xì)化處理和時(shí)域分析等。文章主要介紹鉆井泵故障診斷液力端小波分析方法,其MATLAB中M文件的程序如下:
function E=xiaobofenjian (unnamed2)
a6=wprcoef(y,[3 5]);
B=unnamed2/500*9.8;%單位換算
a7=wprcoef(y,[3 6]);
t=0:2/8192:2-2/8192;
a8=wprcoef(y,[3 7]);
figure(2);subplot(211);
subplot(4,2,1);plot(t,a1);ylabel('S30');
plot(unnamed2);title(‘單位換算);
subplot(4,2,2);plot(t,a2);ylabel('S31');
wname='sym8';lev=5;
subplot(4,2,3);plot(t,a3);ylabel('S32');
[c,l]=wavedec(unnamed2,lev,wname);
subplot(4,2,4);plot(t,a4);ylabel('S33');
s=wden(c,l,'rigrsure','s','mln',lev,wname); %濾波處理
subplot(4,2,5);plot(t,a5);ylabel('S34');
M=mean(s);%求平均值
subplot(4,2,6);plot(t,a6);ylabel('S35');
q=(s-M);%零值化處理
subplot(4,2,7);plot(t,a7);ylabel('S36');
subplot(212);
subplot(4,2,8);plot(t,a8);ylabel('S37');
plot(s);title(‘濾波后信號(hào));
E=wenergy(y); %求能量比
y=wpdec(q,3,'db16','shannon');%小波包分解
EE=num2str(E');
%信號(hào)重構(gòu)
EEE=mat2str(E');
a1=wprcoef(y,[3 0]);
sel ok]=listdlg('Liststring',EE,'Name','能量比E
a2=wprcoef(y,[3 1]);
的值', 'ListSize', [400 200]);
a3=wprcoef(y,[3 2]);
if ok==1
a4=wprcoef(y,[3 3]);
clipboard('copy',EEE);
a5=wprcoef(y,[3 4]);
end
3 VB調(diào)用MATLAB
在VB的窗體中添加一個(gè)按鈕并且在該按鈕下寫出VB調(diào)用MATLAB的程序,其結(jié)構(gòu)為:Call xiao.xiaobofenjian(1, E, unnamed2)。再根據(jù)鉆井泵故障診斷的要求,編寫和設(shè)計(jì)相應(yīng)的輸入數(shù)據(jù)按鈕和通道按鈕。
在此工作面上點(diǎn)擊“輸入?yún)?shù)”按鈕,選擇“通道”,最后再點(diǎn)擊“小波分析”,可以得出小波分析的能量比和分析圖形。
4 結(jié)束語(yǔ)
文章介紹基于COM組件的MATLAB和VB混合編程在鉆井泵故障診斷中的應(yīng)用,利用了VB的良好用戶界面和MATLAB的強(qiáng)大計(jì)算能力與圖形繪制能力,提高了編程人員的工作效率,為鉆井泵故障診斷的數(shù)據(jù)處理的方法提供了便利。
通過(guò)MATLAB與VB的混合編程技術(shù)的運(yùn)用,可以把此方法運(yùn)用在處理復(fù)雜數(shù)據(jù)和繪制復(fù)雜圖形上,發(fā)揮兩軟件的優(yōu)點(diǎn)。
在編寫完程序后,將VB和MATLAB打包,可以單獨(dú)在其它機(jī)器上運(yùn)行,使編寫的軟件程序具有更高保密性。
參考文獻(xiàn):
[1]馬培勇,羅紅潤(rùn),周思柱.基于COM組件的MATLAB和VB 混編方法在機(jī)械可靠性工程中的應(yīng)用[J].2012.7.
[2]張賽民,陳靈君.VB調(diào)用Matlab制作的COM組件實(shí)現(xiàn)二者混合編程[J].2006.
[3]王江萍,鮑澤富.MATLAB與VB混合編程及其鉆井事故診斷中的應(yīng)用[J].2009.4.