⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mukadepan.m

📁 This is a souurce code for GUI implementation for example
💻 M
字号:
function varargout = MukaDepan(varargin)
% MUKADEPAN M-file for MukaDepan.fig
%      MUKADEPAN, by itself, creates a new MUKADEPAN or raises the existing
%      singleton*.
%
%      H = MUKADEPAN returns the handle to a new MUKADEPAN or the handle to
%      the existing singleton*.
%
%      MUKADEPAN('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in MUKADEPAN.M with the given input arguments.
%
%      MUKADEPAN('Property','Value',...) creates a new MUKADEPAN or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before MukaDepan_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to MukaDepan_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Copyright 2002-2003 The MathWorks, Inc.

% Edit the above text to modify the response to help MukaDepan

% Last Modified by GUIDE v2.5 20-May-2008 10:30:40

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @MukaDepan_OpeningFcn, ...
                   'gui_OutputFcn',  @MukaDepan_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before MukaDepan is made visible.
function MukaDepan_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to MukaDepan (see VARARGIN)

% Choose default command line output for MukaDepan
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes MukaDepan wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = MukaDepan_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in Load_Data_Tag.
function Load_Data_Tag_Callback(hObject, eventdata, handles)
% hObject    handle to Load_Data_Tag (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
warning('off','all');
Co=0.13;
n=1.1;
%The following variables dimention the bearing used in research at Tech
%rpm = str2double(get(handles.RPM,'String'))
%ID = str2double(get(handles.Inner_Dia,'String'));
%OD = str2double(get(handles.Outer_Dia,'String'));
%no_balls = str2double(get(handles.No_Ball,'String'));
%ball_d = str2double(get(handles.Ball_Dia,'String'));
%alphadeg = str2double(get(handles.Alpha_Deg,'String'));
%dm = str2double(get(handles.Pitch_Dia,'String'));

rpm=1750; %[rev/minute] bearing rotation speed
f=rpm/60; %[rev/minute] bearing rotation speed
ID=0.9843; %[inches] inside diameter
OD=2.0472; %[inches] outside diameter
no_balls=19; %[balls] number of balls in the bearing
ball_d=0.3126; %[inches] ball diameter
alphadeg=13.13; %[degrees]
alpha=alphadeg*(pi/180);%[radians] taper angle
dm=1.537; %[inches] pitch diameter
%determine frequencies of ball pass inner_dia race, ball pass outer_dia race,
%and rollers. Defect is on outer_dia race for this research.
f_bpir = no_balls*f/2*(1+(ball_d/dm)*cos(alpha));
f_bpor = no_balls*f/2*(1-(ball_d/dm)*cos(alpha));
f_r = no_balls*(f*dm)/2*(1-((ball_d/dm)*cos(alpha))^2);
f_c =f/2*(1-(ball_d/dm)*cos(alpha));
%Load data and find pertinent parameters
[filename, pathname,X] = ...
     uigetfile({'*.mat';'*.*'},'File Selector');

filename = fullfile(pathname, filename);
data = load (filename, '-mat');

%rawdata = load ( file );
%Data1 = load([path02 file02 '.mat']);
%nodes_number = nodes(length(nodes));
%load '12feabnormal.mat';
datas = struct2cell(data);
[p q]=size(datas)
if p>=5
[Y1,Y2,Y3,Y4,Y5] = deal(datas{:});
elseif p>=4
    [Y1,Y2,Y3,Y4] = deal(datas{:});
elseif p>=3
    [Y1,Y2,Y3] = deal(datas{:});
else
    [Y1,Y2] = deal(datas{:});
end

vib_datapoints=length(Y1); 
%number of vibration data points
vib=Y1(1:vib_datapoints,1); %pulls out the correct column of data
vib_time=1.0; %[seconds] length of time data was sampled
vib_fs=30000; %[samples/second]sampling frequency
% This is a plot of the raw data

axes(handles.Raw_Tag);
plot(0:1/vib_datapoints:(1-1/vib_datapoints),vib);
set(handles.Raw_Tag,'XMinorTick','on')
%meanvib=mean(vib);
ms=std(vib);
mRMSp=rms(vib);
maxvib=max(vib);
minvib=min(vib);
% mskew=skewness(vib);
% mkurtos=kurtosis(vib);
% mcrestfactor=maxvib/mRMSp;
% mCLF=maxvib/(sum(sqrt(abs(vib)))/vib_datapoints).^2;
mSF=mRMSp/(sum(abs(vib))/vib_datapoints);
% mIF=maxvib/(sum(abs(vib))/vib_datapoints);

title(['raw data'])
xlabel('Time (s)');
ylabel('Acceleration (g)');
% Next step is to find fft/power spectrum
X=fft(vib)/vib_datapoints;
df=vib_fs/vib_datapoints;
%This is a plot of the Power Spectrum (fft(rawdata))

axes(handles.FFT_Tag);
freqvalue=df:df:vib_fs/2-df;
%realplot=freqvalue,abs(X(2:vib_datapoints/2));
plot(freqvalue,abs(X(2:vib_datapoints/2)));
set(handles.FFT_Tag,'XMinorTick','on')
%maxps=max(abs(X(2:vib_datapoints/2)));
title(['Power Spectrum'])
xlabel('Frequency (Hz)');




%Third step of program is to find the envelope spectrum of the data
%This shows the defect location.
%Resonant frequency of the system is around 5500 Hz

Wn_vib=[4000 6000]*2/vib_fs;
cutoff=400;
cutoff_vib=cutoff*2/vib_fs; %cutoff frequency for bandpassed filtration of data
[top,bottom]=butter(5,Wn_vib); %use a butterworth filter for bandpassing
[t,b]=butter(5,cutoff_vib);
xx=filter(top,bottom,vib);
X=fft(vib)/vib_datapoints;
xxx = abs(xx);
xxx=filter(t,b,xxx);
XXX=fft(xxx)/vib_datapoints; %envelope spectrum output

axes(handles.Env_Tag);
plot(df:df:cutoff-df,abs(XXX(2:floor(cutoff/df))));
set(handles.Env_Tag,'XMinorTick','on')

title('Envelope Spectrum w/o ALE');
xlabel('Frequency (Hz)');

maxps=max(abs(X(2:vib_datapoints/2)));
maxen=max(abs(XXX(2:floor(cutoff/df))))
mfreqcentre=sum(freqvalue'.*abs(X(2:vib_datapoints/2))/sum(abs(X(2:vib_datapoints/2))));
mRMSfreq=sqrt(sum(freqvalue'.^2.*abs(X(2:vib_datapoints/2))/sum(abs(X(2:vib_datapoints/2)))));
bezafreq=freqvalue'-mfreqcentre';
%mstdfreq=sqrt(sum(bezafreq.^2.*abs(X(2:vib_datapoints/2))/sum(abs(X(2:vib_datapoints/2)))))

save test m* 

load fnet;
datad=load ('test.mat');
datac=datad;
[R Q] = size (datac);

newdata = struct2cell(datac);
[Ri S T U V W Xi Y Z ]=deal(newdata{:});
P1 = Ri;
P2 = S;                     
P3 = T;
P4 = U;
P5 = V;
P6 = W;
P7 = Xi;
P8 = Y;
P9 = Z;


for i=1:R
    datai(1,i)=P1(i);
    datai(2,i)=P2(i);
    datai(3,i)=P3(i);
    datai(4,i)=P4(i);
    datai(5,i)=P5(i);
    datai(6,i)=P6(i);                    
    datai(7,i)=P7(i);
    datai(8,i)=P8(i);
    datai(9,i)=P9(i);
end
     
datai=datai

 [N M]=size(datai);
 nmax=[0.66911	0.66951	6.6529	-0.21819	2.0535	0.12064	0.01222	8260	8604];
 nmin=[0.06315	0.06433	0.28372	-6.6533	1.2399	0.00999	0.00013	3028.5	4166.2];

% % actual_data = normalise(datai,nmax,nmin);
% %  for i=1:N
% %    nmax(i)=datai(i,N-1);
% %     nmin(i)=datai(i,N-1);
%     for j=1:M
%        if datai(j)>nmax
%           nmax=datai(j)
%         end
%         if datai(j)<nmin
%           nmin=datai(j)
%        end
%     end
% %  end
  % num = data - nmin';
  %dem=nmax - nmin';
   % datae =  num/dem; % no delay
   anu=(datai(:)-nmin(:));
   ana=(nmax(:)-nmin(:));
   datas =anu./ana
    %datad(i,1:M-1)=datai(i,2:M);    % 1 delayed term
    %datad1(i,1:M-2)=datai(i,3:M);    % 2 delayed term

%open('E:\bahan&nota\dataset matlab\thesis\adaptive prognosis\newdata.mat');
%datae=[R S T U V W Xi Y Z ]';
%datae(:)=(datae(:)-min(i))/(max(i)-min(i)); % no delay
%datae={ans.maxps ans.maxvib ans.minvib ans.meanvib ans.ms ans.maxen ans.mcov ans.mmedian ans.mvar'}


bn=sim(fnet,datas)
%datam = getappdata(gcbf, 'metricdata')
%datam.an = an
%setappdata(hObject, 'mydata', datam)
%setappdata(gcbf, 'metricdata', datam)
%handles.my_data = an
%guidata(hObject,handles)

%datam = getappdata(gcbf, 'metricdata')

NV = round(bn)

warning1 = 'Normal';
warning2 = 'Ball damage';
warning3 = 'Inner damage';
warning4 = 'Outer damage';
% warning5 = '0.14 Ball damage';
% warning6 = '0.14 Inner damage';
% warning7 = '0.14 Outer damage';
% warning8 = '0.21 Ball damage';
% warning9 = '0.21 Inner damage';
% warning10 = '0.21 Outer damage';


 if bn >=0
 set(handles.Warn_Tag,'String',warning1)
        
 if bn >= .25
 set(handles.Warn_Tag,'String',warning2)
                 
 if bn >= .5               
 set(handles.Warn_Tag,'String',warning3)
              
 if bn >= .75          
 set(handles.Warn_Tag,'String',warning4)
             
%  if NV >= 5
%  set(handles.Warn,'String',warning5)
%           
%  if NV >= 6         
%  set(handles.Warn,'String',warning6)
%          
%  if NV >= 7         
%  set(handles.Warn,'String',warning7)
%          
%  if NV >= 8
%  set(handles.Warn,'String',warning8)
%        
%  if NV >= 9
%  set(handles.Warn,'String',warning9)
%  
%  if NV >= 10
%  set(handles.Warn,'String',warning10)

  
 end
 end
 end
 end
%  end
%  end
%  end
%  end
%  end
%  end



% --- Executes on button press in Reset_Tag.
function Reset_Tag_Callback(hObject, eventdata, handles)
% hObject    handle to Reset_Tag (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

initialize_gui(gcbf, handles);




function initialize_gui(fig_handle, handles)
%set(handles.vibration,'HandleVisibility','off')
%set(handles.PowerSpectrum,'HandleVisibility','off')
%set(handles.Envelope,'HandleVisibility','off')
set(handles.Warn,'String',0);



function Warn_Tag_Callback(hObject, eventdata, handles)
% hObject    handle to Warn_Tag (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Warn_Tag as text
%        str2double(get(hObject,'String')) returns contents of Warn_Tag as a double


% --- Executes during object creation, after setting all properties.
function Warn_Tag_CreateFcn(hObject, eventdata, handles)
% hObject    handle to Warn_Tag (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -