The "Three High" papers are reproduced perfectly! Weak fault diagnosis of wind turbine bearings based on the PSO-VMD-MCKD method realizes early weak fault diagnosis, and the MATLAB code implements...

Disclaimer: Resale and reselling of the author's original code is prohibited, and violators will be prosecuted!

The idea for this issue's article comes from a three-high paper in the Journal of Vibration Testing and Diagnosis. Click the link to jump. https://mp.weixin.qq.com/s/hmmDj5IwpaozeL4F0iI-2g

4a3f1b0f0383a4e6425367c0979f6d5d.png

The abstract of the article is as follows:

Aiming at the nonlinear and non-stationary characteristics of weak fault signals of wind turbine rolling bearings and the characteristics of being easily masked by strong background noise, a variational modal decomposition (VMD) and maximum correlation kurtosis deconvolution are proposed. (maximum correlated kurtosis deconvolution, referred to as MCKD) weak fault diagnosis method of rolling bearings. In order to realize the adaptive selection of parameters of VMD and MCKD, the particle swarm optimization algorithm (particle swarm optimization, referred to as PSO) was used to optimize the parameters of the two algorithms. First, PSO is used to optimize α and K in the VMD algorithm, and then the optimal modal components are selected based on the results of VMD decomposition of weak fault signals; secondly, PSO is used to optimize L and T in the MCKD algorithm, and then based on the MCKD algorithm to strengthen The fault impact component in the optimal component signal; finally, the weak fault characteristics of the bearing are extracted through the envelope spectrum. Both simulations and experiments show that this method can adaptively enhance the impact component in weak bearing faults and effectively extract the characteristics of weak bearing faults that are overwhelmed by strong noise.

Xiaotao published an article before: Improved Sparrow Algorithm Optimized Maximum Correlation Kurtosis Deconvolution (SCSSA-MCKD) . This article used simulated simulation signals, and at that time there was no VMD first as in the paper. optimization.

This article will use the bearing outer ring failure 130.mat of Western Reserve University as an example to perfectly reproduce the main methods of this paper! First look at the code directory: all codes are .m files, not encrypted .p files!

3932909036f63ec407333c88c658573b.png

Before introducing the steps and procedures, here is a knowledge supplement about the data from Western Reserve University.

Select the data 130.mat for analysis and processing:

5cc11d2445df433c143eab23db0494ef.jpeg

adb2400ec0440ba4ba1f9d81f5d675ef.jpeg

The theoretical fault characteristic frequency at this time is calculated to be approximately:

3a57e319920d625c75f91064d27bca5c.png

It can be seen that the theoretical fault frequency of 130.mat is 107.3050Hz. All the next work is to identify the fault frequency when the noise submerges the 130.mat data.

Next, we will talk about the steps for taking screenshots of the code directory:

Step One: Bearing Data Analysis

The first step is to analyze Western Reserve University 130.mat. You can also analyze other data. Since it is necessary to simulate the weak fault signal of the bearing that is masked by noise, it is necessary to first add Gaussian white noise data to the original 130.mat data. This is also done in the original paper.

Run the Signal_Analysis.m file and you can get the same three pictures as Figure 10(a), Figure 10(b), and Figure 10(c) in the paper. And a signal.mat file with Gaussian white noise added will be saved. The second step is to optimize the VMD parameters for this signal.mat file.

641f5c327d63ea53be7c2c32b7041595.png

38fcfb61035967b178080ed6b8dc88a1.png

be751122726e3157498f3b129d342ee5.png

It can be seen that for the bearing signal with Gaussian noise added, almost no impact component can be observed in the time domain waveform, and there is no pattern to follow in the spectrum diagram. Further envelope demodulation of the signal found no prominent frequency components.

Step 2: Use particle swarm algorithm to optimize VMD, and the envelope spectrum peak factor is the fitness function

Use particle swarm algorithm to optimize VMD parameters and find the best IMF component: Copy the signal.mat obtained in the first step to the folder of the second step, use the VMD method to decompose the signal.mat signal obtained in the first step, and calculate The envelope spectrum peak factor of each IMF component is decomposed. The IMF component with the largest envelope spectrum peak factor is the best IMF component;

Running PSOmain.m, you can get Figure 11(a), Figure 11(b) in the paper, and a curve chart of the best parameters of PSO optimization VMD. And the best IMF component will be saved to obtain the best_imf.mat file, which will be operated on in the third step. The results of the second step of running the code are as follows:

6c1a0779ba363a9e7fde43f2f2f1be09.png

2c7d5fcab74048461e87adbefb736e5a.png

e774ce745b8d38674a5ac4d26ee39d47.png

The final optimal VMD parameter result is:

4b51394896aa40cadf27d57efa907545.png

From the envelope spectrum of the optimal IMF component, it is observed that there is an obvious prominent spectral line at 108Hz, and its amplitude is larger than other spectral lines. However, because its frequency doubling is not obviously prominent enough, 108Hz cannot be determined as the bearing failure frequency. To avoid misdiagnosis, further analysis should be done.

Step 3: Use particle swarm algorithm to optimize MCKD, and the envelope spectrum peak factor is the fitness function

The particle swarm algorithm is used to optimize the three parameters of maximum correlation kurtosis deconvolution (MCKD) to obtain an enhanced IMF component. In the original literature, only the two parameters [L, T] of MCKD were optimized. The author made improvements here and optimized the three parameters [L, T, M] to ensure that the best MCKD parameters are found.

Copy the best_imf.mat obtained in the second step to the folder of the third step, run the main.m file, and you will get Figure 12(a), Figure 12(b) in the paper, and the optimization of a PSO optimized MCKD curve.

ab9b2d4b44b6ebc1f3e2f0d830938e9b.png

88e82a95e009422239eb2b3ad3ebd9eb.png

05366b614341f1d20db8a615c10373c0.png

The processing process is as follows:

d240def192db9a53981d13bb906f2f46.png

The best parameters obtained are [L, T, M] = [532,111,6] respectively;

It can be seen that compared with the IMF component envelope spectrum before optimization, it has been significantly enhanced. In the deconvolved envelope spectrum, the fault characteristic frequency fi and its spectral lines of 2-9 times the frequency are clearly visible, indicating that the characteristic frequency is accurately extracted. All are multiples of the theoretical failure frequency of 130.mat.

For students who can seriously see this, the author would like to mention here that it is a good method for water thesis. You can replace the VMD method in this article with other data decomposition methods , or you can change the particle swarm algorithm to another algorithm. You can also find a replacement method for MCKD. This paper just came up with it!

Partial code sharing

%% 
clear
clc  
close all
fobj=@mckdcost;       %包络谱峰值因子
%% 选取数据
load best_imf.mat  %注意这里替换为自己的数据即可,数据形式为n行*1列,列数必须为1。
data = best_imf;
%% 设置参数
lb = [100 85 1];    %mckd下限
ub = [1000 142 7];  %mckd上限
dim = 3;            % 优化变量数目
Max_iter=30;       % 最大迭代数目
SearchAgents_no=10;       %种群规模
fs = 12000;   %采样频率
%% 调用PSO函数
[fMin , bestX, Convergence_curve ] = PSO(SearchAgents_no,Max_iter,lb,ub,dim,fobj,data,fs);
%% 画适应度函数曲线图,并输出最佳参数
figure
plot(-Convergence_curve,'Color',[0.9 0.5 0.1],'Marker','>','LineStyle','--','linewidth',1);


title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
legend('PSO优化MCKD')
display(['The best solution obtained by PSO is : ', num2str(fix(bestX))]);  %输出最佳位置
display(['The best optimal value of the objective funciton found by PSO is : ', num2str(-fMin)]);  %输出最佳适应度值


%% 将最佳的MCKD参数回带,求出结果


filterSize = fix(bestX(1));
termIter = 30;
T = fix(bestX(2));
M = fix(bestX(3));
plotMode = 0;
%--------------- Run actual mckd code:数据进行mckd分解---------------------------
[y_final,~,~] = mckd(data,filterSize,termIter,T,M,plotMode);


%% 绘制MCKD处理后的时域波形
fs=12000;%采样频率
Ts=1/fs;%采样周期
L=4000;%采样点数,稍微多点即可,不用全部取完
t=(0:L-1)*Ts;%时间序列
figure;
plot(t,y_final); %故障信号
ylabel('幅值','fontsize',12);
xlabel('t/s','fontsize',12);
xlim([0 t(end)])
title('MCKD处理后的时域波形')
set(gcf,'unit','centimeters','position',[10 16 15 5])

Each code has detailed comments, and all pictures mentioned in the article can be run! Just follow the steps in the article and run them one by one.

05 code acquisition

   To get the complete code, click on the card below to reply to the keyword in the background, which is not case-sensitive:

tgdm829

Guess you like

Origin blog.csdn.net/woaipythonmeme/article/details/133110593