?About the author: A Matlab simulation developer who loves scientific research. He cultivates his mind and improves his technology simultaneously.
For code acquisition, paper reproduction and scientific research simulation cooperation, please send a private message.
Personal homepage: Matlab Research Studio
Personal credo: Investigate things to gain knowledge.
For more complete Matlab code and simulation customization content, click
Intelligent optimization algorithm Neural network prediction Radar communication Wireless sensor Power system
Signal processing Image processing Path planning Cellular automaton Drone
Content introduction
Rolling bearings are one of the common key components in industrial equipment, and their normal operation is crucial to the reliability and performance of the equipment. However, due to the harsh working environment and wear and tear of long-term operation, rolling bearings are often prone to various failures. Therefore, timely and accurate fault diagnosis is crucial to the normal operation and maintenance of equipment.
In order to achieve fault diagnosis of rolling bearings, researchers have proposed many different methods and technologies. Among them, feature extraction algorithm is a commonly used method, which can extract feature information related to faults from vibration signals collected by sensors. This article will introduce the process of a feature extraction algorithm for rolling bearing fault diagnosis.
First, we need to collect the vibration signal of the rolling bearing. Normally, we use an acceleration sensor to convert vibration signals into electrical signals, which are recorded and stored through a data acquisition system.
Next, we need to preprocess the collected vibration signals. The purpose of preprocessing is to remove noise and interference from the signal to improve the accuracy of subsequent feature extraction. Commonly used preprocessing methods include filtering, noise reduction, and detrending.
After the preprocessing is completed, we can start feature extraction. The purpose of feature extraction is to extract fault-related feature information from vibration signals for subsequent fault diagnosis and classification. Common features include time domain features, frequency domain features, wavelet packet features, etc. Selecting appropriate features is critical to the accuracy and reliability of fault diagnosis.
After feature extraction is completed, we can use machine learning or pattern recognition algorithms for fault diagnosis and classification. Common algorithms include support vector machines, neural networks, and decision trees. These algorithms can accurately identify and classify rolling bearing fault types based on the extracted feature information.
Finally, we can display the fault diagnosis results in a visual way. Through charts and reports, we can clearly understand the fault type, extent and location of rolling bearings, thereby guiding subsequent maintenance and repair work.
To sum up, the rolling bearing fault diagnosis feature extraction algorithm process includes vibration signal collection, preprocessing, feature extraction, fault diagnosis and result display. Through this process, we can achieve accurate diagnosis of rolling bearing faults and provide strong support for the normal operation and maintenance of equipment.
Rolling bearing fault diagnosis is a complex and important field with broad application prospects. Future research can further explore more efficient and accurate feature extraction algorithms and fault diagnosis technologies to improve the reliability and performance of rolling bearings and make greater contributions to the development of industrial equipment.
Part of the code
?</code><code>%% Preliminary data processing of rolling bearing fault diagnosis</code><code>%======================== ================================================== %</code><code>%% Data import processing G3015</code><code>%============================== Bearing fault diagnosis data processing============================%</code><code>%%Import data</code><code>% fg=fopen('G3015.txt','r'); %Open the data file in reading mode</code><code>?</code><code>G302m=sum(G302j)/20000; % G302m is the mean value, G302j is the result after zero-mean processing, the same below</code><code>G302f=sum((G302j-G302m).^2); %G302f is the variance</code><code>G302rms=sqrt (sum(G302j.^2)/20000); %G302rms root mean square value</code><code>G302peak=(max(G302j)-min(G302j))/2; %G302peak is the peak value</code><code>G302c= G302peak/G302rms; %G302c is the crest factor</code><code>G302k=sum(G302j.^4)/((G302rms.^4)*20000); %G302k is the kurtosis coefficient</code><code>G302s=(G302rms*20000)/sum(abs(G302j)); %G302s is the waveform factor</code><code>G302cl=G302peak/(sum(sqrt(abs(G302j)))/20000) .^2; %G302cl margin factor</code><code>G302i=(G302peak*20000)/sum(abs(G302j)); %G302i pulse factor</code><code>?</code><code>G303m=sum(G303j)/20000; %G303m is the mean value, G303j is the result after zero averaging processing, the same below</code><code>G303f=sum((G303j-G303m).^2); %G303f is Variance</code><code>G303rms=sqrt(sum(G303j.^2)/20000); %G303rms root mean square value</code><code>G303peak=(max(G303j)-min(G303j))/ 2; %G303peak is the peak value</code><code>G303c= G303peak/G303rms; %G303c is the peak factor</code><code>G303k=sum(G303j.^4)/((G303rms.^4)*20000 ); %G303k is the kurtosis coefficient</code><code>G303s=(G303rms*20000)/sum(abs(G303j)); %G303s is the waveform factor</code><code>G303cl=G303peak/(sum( sqrt(abs(G303j)))/20000).^2; %G303cl margin factor</code><code>G303i=(G303peak*20000)/sum(abs(G303j)); %G303i pulse factor</code><code>?</code><code>G304m=sum(G304j)/20000; %G304m is the mean value, G304j is the result after zero-meaning processing, the same below</code><code>G304f=sum((G304j -G304m).^2); %G304f is the variance</code><code>G304rms=sqrt(sum(G304j.^2)/20000); %G304rms root mean square value</code><code>G304peak=( max(G304j)-min(G304j))/2; %G304peak is the peak value</code><code>G304c= G304peak/G304rms; %G304c is the peak factor</code><code>G304k=sum(G304j.^4 )/((G304rms.^4)*20000); %G304k is the kurtosis coefficient</code><code>G304s=(G304rms*20000)/sum(abs(G304j)); %G304s is the waveform factor</code><code>G304cl=G304peak/(sum(sqrt(abs(G304j)))/20000).^2; %G304cl margin factor</code><code>G304i=(G304peak*20000)/sum(abs( G304j)); %G304i pulse factor</code><code>?</code><code>G305m=sum(G305j)/20000; %G305m is the mean value, G305j is the result after zero averaging processing, the same below</code><code>G305f=sum((G305j-G305m).^2); %G305f is the variance</code><code>G305rms=sqrt(sum(G305j.^2)/20000); %G305rms root mean square Value</code><code>G305peak=(max(G305j)-min(G305j))/2; %G305peak is the peak value</code><code>G305c= G305peak/G305rms; %G305c is the peak factor</code> <code>G305k=sum(G305j.^4)/((G305rms.^4)*20000); %G305k is the kurtosis coefficient</code><code>G305s=(G305rms*20000)/sum(abs(G305j )); %G305s is the waveform factor</code><code>G305cl=G305peak/(sum(sqrt(abs(G305j)))/20000).^2; %G305cl margin factor</code><code>G305i =(G305peak*20000)/sum(abs(G305j)); %G305i pulse factor</code><code>?</code><code>G306m=sum(G306j)/20000; %G306m is the mean value, G306j is The result after zero-mean processing, the same below</code><code>G306f=sum((G306j-G306m).^2); %G306f is the variance</code><code>G306rms=sqrt(sum(G306j.^ 2)/20000); %G306rms root mean square value</code><code>G306peak=(max(G306j)-min(G306j))/2; %G306peak is the peak value</code><code>G306c= G306peak/ G306rms; %G306c is the crest factor</code><code>G306k=sum(G306j.^4)/((G306rms.^4)*20000); %G306k is the kurtosis coefficient</code><code>G306s= (G306rms*20000)/sum(abs(G306j)); %G306s is the waveform factor</code><code>G306cl=G306peak/(sum(sqrt(abs(G306j)))/20000).^2; %G306cl Margin factor</code><code>G306i=(G306peak*20000)/sum(abs(G306j)); %G306i pulse factor</code><code>?</code><code>G307m=sum(G307j )/20000; %G307m is the mean value, G307j is the result after zero-mean processing, the same below</code><code>G307f=sum((G307j-G307m).^2); %G307f is the variance</code><code>G307rms=sqrt(sum(G307j.^2)/20000); %G307rms root mean square value</code><code>G307peak=(max(G307j)-min(G307j))/2; %G307peak is the peak value </code><code>G307c= G307peak/G307rms; %G307c is the peak factor</code><code>G307k=sum(G307j.^4)/((G307rms.^4)*20000); %G307k is the peak factor Degree coefficient</code><code>G307s=(G307rms*20000)/sum(abs(G307j)); %G307s is the waveform factor</code><code>G307cl=G307peak/(sum(sqrt(abs(G307j)) ))/20000).^2; %G307cl margin factor</code><code>G307i=(G307peak*20000)/sum(abs(G307j)); %G307i pulse factor</code><code>?</code><code>G308m=sum(G308j)/20000; %G308m is the mean value, G308j is the result after zero averaging processing, the same below</code><code>G308f=sum((G308j-G308m).^2 ); %G308f is the variance</code><code>G308rms=sqrt(sum(G308j.^2)/20000); %G308rms root mean square value</code><code>G308peak=(max(G308j)-min (G308j))/2; %G308peak is the peak value</code><code>G308c= G308peak/G308rms; %G308c is the peak factor</code><code>G308k=sum(G308j.^4)/((G308rms. ^4)*20000); %G308k is the kurtosis coefficient</code><code>G308s=(G308rms*20000)/sum(abs(G308j)); %G308s is the waveform factor</code><code>G308cl= G308peak/(sum(sqrt(abs(G308j)))/20000).^2; %G308cl margin factor</code><code>G308i=(G308peak*20000)/sum(abs(G308j)); %G308i Impulse factor</code><code>?</code><code>G309m=sum(G309j)/20000; %G309m is the mean value, G309j is the result after zero-meaning processing, the same below</code><code>G309f =sum((G309j-G309m).^2); %G309f is the variance</code><code>G309rms=sqrt(sum(G309j.^2)/20000); %G309rms root mean square value</code><code>G309peak=(max(G309j)-min(G309j))/2; %G309peak is the peak value</code><code>G309c= G309peak/G309rms; %G309c is the peak factor</code><code>G309k=sum (G309j.^4)/((G309rms.^4)*20000); %G309k is the kurtosis coefficient</code><code>G309s=(G309rms*20000)/sum(abs(G309j)); %G309s is Waveform factor</code><code>G309cl=G309peak/(sum(sqrt(abs(G309j)))/20000).^2; %G309cl margin factor</code><code>G309i=(G309peak*20000) /sum(abs(G309j)); %G309i pulse factor</code><code>?</code><code>G3010m=sum(G3010j)/20000; %G3010m is the mean value, G3010j is the result after zero averaging processing , the same below</code><code>G3010f=sum((G3010j-G3010m).^2); %G3010f is the variance</code><code>G3010rms=sqrt(sum(G3010j.^2)/20000); %G3010rms root mean square value</code><code>G3010peak=(max(G3010j)-min(G3010j))/2; %G3010peak is the peak value</code><code>G3010c= G3010peak/G3010rms; %G3010c is the peak value Factor</code><code>G3010k=sum(G3010j.^4)/((G3010rms.^4)*20000); %G3010k is the kurtosis coefficient</code><code>G3010s=(G3010rms*20000)/ sum(abs(G3010j)); %G3010s is the waveform factor</code><code>G3010cl=G3010peak/(sum(sqrt(abs(G3010j)))/20000).^2; %G3010cl margin factor</code><code>G3010i=(G3010peak*20000)/sum(abs(G3010j)); %G3010i pulse factor</code><code>?</code><code>%% Bearing Z3015 processing</code><code>%====================Data is imported and zero-mean processed======================== =========%</code><code>%==============Read directly================ =====================================%</code><code>Z3015=textread(' Z3015.txt','%f'); %Read data to generate matrix</code><code>Z301=Z3015(1:1:20000); %Get the first 20000 elements of the array, that is, the first set of data, sampling The number of points is 20000</code><code>Z301j=Z301-mean(Z301); %zero mean processing, %Z301j=Z301-sum(Z301)/20000</code><code>?</code><code> Z302=Z3015(20001:1:40000); </code><code>Z302j=Z302-mean(Z302); %zero mean processing</code><code>?</code><code>Z303=Z3015( 40001:1:60000); </code><code>Z303j=Z303-mean(Z303); %zero mean processing</code><code>?</code><code>Z304=Z3015(60001:1: 80000); </code><code>Z304j=Z304-mean(Z304); %zero mean processing</code><code>?</code><code>?
Operation results
References
[1] Zhao Peng. Research on rolling bearing fault diagnosis system based on virtual instrument[D]. Hebei Engineering University[2023-11-02].DOI:CNKI:CDMD:2.1017.010710.
[2] Wang Liang. Research on rolling bearing fault diagnosis system based on DSP [D]. Dalian University of Technology, 2008. DOI: 10.7666/d.y1418840.