“三高”论文完美复现!基于EEMD奇异值熵的滚动轴承故障诊断方法,MATLAB代码实现...

声明:对于作者的原创代码,禁止转售倒卖,违者必究!

本期文章思路来自《振动测试与诊断期刊》的一篇三高论文,点击链接可跳转。“三高”论文推荐||基于EEMD奇异值熵的滚动轴承故障诊断方法,目前该论文在知网统计被引次数为58次。

569aa82a6f5fdda068675071bee29817.png

文章摘要如下:

为充分利用振动信号进行故障辨识,提出一种基于集合经验模态分解(ensemble empirical mode decomposition,简称EEMD)奇异值熵判据的滚动轴承故障诊断方法。首先,对滚动轴承的振动信号进行EEMD分解获得若干个本征模态函数(intrinsic mode function,简称IMF),并根据一种IMF分量故障信息含量的评价指标(即峭度、均方差和欧氏距离)选出能够表征原始信号状态的分量进行信号重构;其次,利用奇异值分解技术对重构信号进行处理,结合信息熵算法求取其奇异值熵;最后,利用奇异值熵的大小判断滚动轴承的故障类别。用美国西储大学滚动轴承振动信号对所述方法进行验证的结果表明,相比传统的EMD奇异值熵故障诊断方法,本方法能够清晰的划分出滚动轴承不同工作状态的类别特征区间,而且具有更高的故障诊断精度。

流程如下:

da00c4c908e69769b1e99743c91627b6.png

本期文章将采用MATLAB代码,严格还原论文提到的所有仿真结果!对该论文的主要方法进行完美复现先看代码目录:所有代码均为.m文件,不是那种加密的.p文件!

0f0632cefe95299301ea8fa30b8e0d7d.png

接下来针对上面截图讲解每一步骤:

第一步:绘制时域波形图--对应论文图2

扫描二维码关注公众号,回复: 16998543 查看本文章

论文中选用的数据为西储大学轴承故障数据集中的1797转速下的四种状态数据,分别为正常、内圈故障、滚动体故障、外圈故障。分别对应97、105、118和130.mat。

首先绘制每种状态的时域波形图,运行第一步的plotfigure.m文件得到如下图片:

b6bc91021b31a58938c322fe1b1f79aa.png

5bcc59de0dacb93f608e47f01f05ae30.png

07965af92916d2b3a7bbf2a1419b9e9e.png

dcc86dacf09123e2a2e8aac84f799191.png


第二步:EEMD分解+3个指标绘制--对应论文图3、4

这里文章中以滚动体故障118.mat为例,进行说明。EEMD分解图:

3ef8336d692d36795d016faad7ffc3db.jpeg

论文为选出能反映故障信息的真实IMF分量,提取有效的故障特征,提出了一种基于峭度、均方差和欧氏距离的真伪IMF分量评价方法。

IMF分量的峭度图:

f5f68e1ef9fedc8cfe9c5f836636ac44.png

IMF分量均方差图:

0f9feed94fa9ceea484f5ad01a9841f6.png

IMF分量欧式距离图:

6a027a52e9a20f61fdc7ac20c1f526c0.png

滚动体故障信号EEMD分解的各IMF分量的三个评价指标情况如以上三张图所示。从图中可以发现:12个IMF分量中的前3个分量的峭度、均方差均大于其他分量;各IMF分量与原信号之间的欧氏距离中,从第3个IMF分量开始趋于水平。由三个评价方法性质可知,图中前3个IMF分量包含丰富的故障信息,可表征滚动轴承的工况状态,为下一步提取初始特征矩阵奇异值熵的可靠性提供了保障。因此选择前三个IMF分量进行信号重构和后面的奇异值熵计算。

第三步:数据处理+信号重构

第二步已经说明了可以采用前三个IMF分量表征轴承状态。论文中对每种状态选用了20组数据,但是文中并没有说每组数据采用多少个样本点。

这里小淘还是按照以往的文章,为每个状态选取了2048个采样点。

一共是4个状态,每个状态有20组样本,每个样本的数据量大小为:1×2048。然后对20*4*2048这个数据一组一组地进行EEMD分解。

因为文章后面还要和EMD分解进行对比,因此第三步这里还进行了EMD分解。

运行shujuchuli_1797.m文件,可以得到cg.mat和emd_cg.mat两个文件,其中cg.mat是EEMD分解得到的数据,emd_cg.mat是EMD分解得到的数据。

第四步:奇异值熵诊断--对应论文图5

将第三步得到的cg.mat和emd_cg.mat两个数据复制到第四步中,运行SVDMAIN.m可以直接对两个数据的所有状态样本进行奇异值分解,并求取奇异值熵和绘图。结果如下:

774076ec5ff8d9143338f9ff8c250cef.png

d9c776863ffe6e3350120f4fe695545e.png

从图中可看出:由于EMD分解自身存在的不足,导致不同信号分解后所得含有故障信息的奇异值熵差异较小,使得滚动轴承4种状态的奇异值熵区间模糊,难以区分出故障类别;而在EEMD的分解中,可以看出滚动轴承不同故障类别之间奇异值熵的显著差异,与传统EMD奇异值熵方法相比,EEMD奇异值的方法能更清晰区分出故障类别。

滚动轴承的4种状态各属于一个区间范围,而且类别区间无交集如表1所示。这一结果表明,EEMD奇异值熵这一判据,可以准确地区分出滚动轴承的故障类别。

注意!能够认真看到这里的同学,不妨也可以将此文中的EEMD方法换成其他数据分解的方法进行尝试,也可以将本文的奇异值熵替换为其他分解方法的熵,或许这也是个水论文不错的办法哦!

部分代码分享

clc
clear
close all
fs=12000;%采样频率
Ts=1/fs;%采样周期
L=2048;%采样点数
t=(0:L-1)*Ts;%时间序列
STA=1; %采样起始位置


load 97.mat
X = X097_DE_time(1:L)'; %这里可以选取DE(驱动端加速度)、FE(风扇端加速度)、BA(基座加速度),直接更改变量名,挑选一种即可。
figure
plot(t,X); %故障信号
ylabel('a/(mm.s-2)','fontsize',10,'fontname','宋体');
title('正常时域波形图')
set(gcf,'unit','centimeters','position',[10 2 15 4])


load 105.mat
X = X105_DE_time(1:L)'; %这里可以选取DE(驱动端加速度)、FE(风扇端加速度)、BA(基座加速度),直接更改变量名,挑选一种即可。
figure
plot(t,X); %故障信号
ylabel('a/(mm.s-2)','fontsize',10,'fontname','宋体');
title('内圈故障时域波形图')
set(gcf,'unit','centimeters','position',[10 4 15 4])


load 118.mat
X = X118_DE_time(1:L)'; %这里可以选取DE(驱动端加速度)、FE(风扇端加速度)、BA(基座加速度),直接更改变量名,挑选一种即可。
figure
plot(t,X); %故障信号
ylabel('a/(mm.s-2)','fontsize',10,'fontname','宋体');
title('滚动体故障时域波形图')
set(gcf,'unit','centimeters','position',[10 6 15 4])


load 130.mat
X = X130_DE_time(1:L)'; %这里可以选取DE(驱动端加速度)、FE(风扇端加速度)、BA(基座加速度),直接更改变量名,挑选一种即可。
figure
plot(t,X); %故障信号
ylabel('a/(mm.s-2)','fontsize',10,'fontname','宋体');
title('外圈故障时域波形图')
set(gcf,'unit','centimeters','position',[10 8 15 4])

每个代码都有详细的注释,文中提到的所有图片均可运行出来!大家按照文中步骤一一运行即可。

05代码获取

   完整代码获取方式:点击下方阅读原文,或者后台回复关键词,不区分大小写:

tgdm830

猜你喜欢

转载自blog.csdn.net/woaipythonmeme/article/details/133328577