免責事項:作者のオリジナルコードの転売・転売は禁止されており、違反者は処罰されます!
この号の記事のアイデアは、Journal of Vibration Testing and Diagnosis に掲載されたスリーハイの論文から来ています。リンクをクリックするとジャンプします。https://mp.weixin.qq.com/s/hmmDj5IwpaozeL4F0iI-2g
記事の要約は次のとおりです。
風力タービン転がり軸受の弱い故障信号の非線形・非定常特性と、強い背景雑音によってマスクされやすい特性を目的として、変分モード分解 (VMD) と最大相関尖度デコンボリューションを提案します。 、MCKDと呼ばれる)転がり軸受の弱い故障診断方法。VMDとMCKDのパラメータの適応的選択を実現するために、粒子群最適化アルゴリズム(PSOと呼ばれる粒子群最適化)を使用して、2つのアルゴリズムのパラメータを最適化しました。まず、PSO を使用して VMD アルゴリズムで α と K を最適化し、次に弱い故障信号の VMD 分解の結果に基づいて最適なモード成分を選択します。次に、PSO を使用して MCKD アルゴリズムで L と T を最適化します。次に、MCKD アルゴリズムに基づいて、最適コンポーネント信号内の故障衝撃成分を強化し、最後に、包絡線スペクトルを通じてベアリングの弱い故障特性を抽出します。シミュレーションと実験の両方から、この方法が弱い軸受故障の衝撃成分を適応的に強化し、強いノイズに圧倒される弱い軸受故障の特性を効果的に抽出できることが示されています。
Xiaotao は以前に記事を公開しました:改善された Sparrow アルゴリズムの最適化された最大相関尖度デコンボリューション (SCSSA-MCKD) . この記事ではシミュレートされたシミュレーション信号が使用されており、当時は論文にあるような VMD ファーストはありませんでした。
この記事では、ウェスタン リザーブ大学のベアリング外輪破損 130.mat を例として使用し、この論文の主な方法を完全に再現します。まずコード ディレクトリを見てください。すべてのコードは .m ファイルであり、暗号化された .p ファイルではありません。
手順と手順を紹介する前に、ウェスタン リザーブ大学のデータに関する知識の補足をここに示します。
分析と処理のためにデータ 130.mat を選択します。
このときの理論上の故障特性周波数はおよそ次のように計算されます。
130.mat の理論上の故障周波数は 107.3050Hz であることがわかります。次の作業は、ノイズが 130.mat データに沈むときの障害周波数を特定することだけです。
次に、コード ディレクトリのスクリーンショットを撮る手順について説明します。
ステップ 1: ベアリング データ分析
最初のステップは Western Reserve University 130.mat を分析することです。他のデータを分析することもできます。ノイズでマスキングされた軸受の微弱な故障信号をシミュレートする必要があるため、最初に元の 130.mat データにガウス ホワイト ノイズ データを追加する必要があります (これは元の論文でも行われています)。
Signal_Analysis.m ファイルを実行すると、論文の図 10(a)、図 10(b)、図 10(c) と同じ 3 つの図が得られます。ガウス ホワイト ノイズが追加された signal.mat ファイルが保存されます。2 番目のステップは、この signal.mat ファイルの VMD パラメーターを最適化することです。
ガウス ノイズが追加された方位信号の場合、時間領域波形には衝撃成分がほとんど観察されず、スペクトル図には従うべきパターンが存在しないことがわかります。さらに信号を包絡線復調したところ、目立った周波数成分は見つかりませんでした。
ステップ 2: 粒子群アルゴリズムを使用して VMD を最適化し、包絡線スペクトルのピーク係数が適合度関数になります
粒子群アルゴリズムを使用して VMD パラメーターを最適化し、最適な IMF コンポーネントを見つけます。最初のステップで取得した signal.mat を 2 番目のステップのフォルダーにコピーし、VMD メソッドを使用して最初のステップで取得した signal.mat 信号を分解します。各 IMF コンポーネントのエンベロープ スペクトル ピーク ファクターが分解され、最大のエンベロープ スペクトル ピーク ファクターを持つ IMF コンポーネントが最良の IMF コンポーネントになります。
PSOmain.m を実行すると、論文の図 11(a)、図 11(b)、および PSO 最適化 VMD の最適なパラメーターの曲線図を取得できます。そして、最適な IMF コンポーネントが保存され、best_imf.mat ファイルが取得されます。このファイルは、3 番目のステップで操作されます。コードを実行する 2 番目のステップの結果は次のとおりです。
最終的な最適な VMD パラメーターの結果は次のとおりです。
最適な IMF 成分の包絡線スペクトルから、108Hz に明らかに顕著なスペクトル線があり、その振幅が他のスペクトル線に比べて大きいことが観察されますが、その周波数 2 倍化が十分に顕著ではないため、108Hz を決定することはできません。ベアリングの故障頻度として。誤診を避けるために、さらに分析を行う必要があります。
ステップ 3: 粒子群アルゴリズムを使用して MCKD を最適化し、包絡線スペクトルのピーク係数が適合度関数になります。
粒子群アルゴリズムを使用して、最大相関尖度デコンボリューション (MCKD) の 3 つのパラメーターを最適化し、強化された IMF コンポーネントを取得します。元の文献では、MCKD の 2 つのパラメーター [L、T] のみが最適化されていましたが、著者はここで改良を加え、最適な MCKD パラメーターが見つかるように 3 つのパラメーター [L、T、M] を最適化しました。
2 番目のステップで取得した best_imf.mat を 3 番目のステップのフォルダーにコピーし、main.mファイルを実行すると、論文の図 12(a)、図 12(b) と PSO の最適化が得られます。最適化された MCKD 曲線。
処理プロセスは次のとおりです。
得られた最良のパラメータはそれぞれ [L, T, M] = [532,111,6] です。
最適化前の IMF 成分包絡線スペクトルと比較して、大幅に向上していることがわかります。デコンボリューションされた包絡線スペクトルでは、故障の特徴的な周波数 fi とその周波数の 2 ~ 9 倍のスペクトル線がはっきりと見え、特徴的な周波数が正確に抽出されたことがわかります。すべては理論上の故障頻度 130.mat の倍数です。
これを真剣に理解できる学生のために、著者は、これが水の論文に適した方法であることをここで言及したいと思います。この記事の VMD 方法を他のデータ分解方法に置き換えることも、粒子群アルゴリズムを別の方法に変更することもできます。 MCKD の代替方法も見つけることができます。この論文はちょうどそれを思いついたところです。
部分的なコード共有
%%
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])
各コードには詳細なコメントがあり、記事内で言及されているすべての画像を実行できます。記事の手順に従って、1 つずつ実行してください。
05 コード取得
完全なコードを取得するには、下のカードをクリックして、バックグラウンドでキーワードに応答します。大文字と小文字は区別されません。
tgdm829