声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 7009|回复: 25

[综合] 求助:轴承外圈故障包络谱分析(带数据)

  [复制链接]
发表于 2010-12-24 17:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
刚刚编的轴承外圈故障包络分析,转速为1730,轴承外圈的故障的特征频率为103Hz,进行了取出趋势项,小波去噪,想得到
带有故障频率特征的细节包络谱,得到的分析结果却不理想。请高手帮忙分析一下。圣诞快乐 !!数据在附件里
clc;
clear;
close all;
sampleFreq   = 12000;%采样频率
sampleLength = 2048;%采样点数
t=0:1/sampleFreq:(sampleLength-1)/sampleFreq;
Data1 = load('D:\MATLAB7\work\outer1.txt');
%==========================================================================
%直接进行FFT变换
%==========================================================================
for n=1:sampleLength
   if abs(Data1(n))>10;
    Data(n)=0;
else Data(n)=Data1(n);
   end
end
fft_result = abs(fft(Data)) * 2 / sampleLength;
%画图的坐标变换
time_plot_s = 0:1/sampleFreq:(sampleLength-1) / sampleFreq;
fft_plot_Hz = sampleFreq*(1:sampleLength/2)/sampleLength;
figure;
%==========================================================================
%预处理:去除趋势项
%==========================================================================
m=1;
data=Data';
a=polyfit(t,Data,m);
y=Data-polyval(a,t);
%==========================================================================
%预处理:小波降噪
%==========================================================================
[c,l]=wavedec(y,3,'sym3');
[thr,sorh,keepapp]=ddencmp('den','wv',y);
Data=wdencmp('gbl',y,'sym3',3,thr,sorh,keepapp);
%==========================================================================
%预处理:自相关
%==========================================================================
%  Lag=12000;
% [c,lags]=xcorr(y,Lag,'unbiased');
%  Data=c(1:Lag);

%==========================================================================
%共振解调法
%==========================================================================
%db10小波进行4层分解
%一维小波分解
[c,l] = wavedec(Data,4,'db4');
%重构第1-4层细节系数
d4 = wrcoef('d',c,l,'db4',4);
d3 = wrcoef('d',c,l,'db4',3);
d2 = wrcoef('d',c,l,'db4',2);
d1 = wrcoef('d',c,l,'db4',1);
envelop_hil = hilbert(Data);
envelop_abs = abs(envelop_hil);  
%fft变换
envelop_fft = abs(fft(envelop_abs))*2 /sampleLength;
%==========================================================================
%d1的包络
%==========================================================================
figure(2)
envelop_hil = hilbert(d1);
envelop_abs = abs(envelop_hil);  
%fft变换
envelop_fft = abs(fft(envelop_abs))*2 /sampleLength;
subplot(221)
plot(fft_plot_Hz,envelop_fft(2:1025));
title('d1包络波形');
ylabel('振幅/m/s^2');
xlabel('时间/s');
grid on;
%==========================================================================
%d2的包络
%==========================================================================
envelop_hil = hilbert(d2);
envelop_abs = abs(envelop_hil);  
%fft变换
envelop_fft = abs(fft(envelop_abs))*2 /sampleLength;
subplot(222)
plot(fft_plot_Hz,envelop_fft(2:1025));
title('d2包络波形');
ylabel('振幅/m/s^2');
xlabel('时间/s');
grid on;
%==========================================================================
%d3的包络
%==========================================================================
envelop_hil = hilbert(d3);
envelop_abs = abs(envelop_hil);  
%fft变换
envelop_fft = abs(fft(envelop_abs))*2 /sampleLength;
subplot(223)
plot(fft_plot_Hz,envelop_fft(2:1025));
title('d3包络波形');
ylabel('振幅/m/s^2');
xlabel('时间/s');
grid on;
%==========================================================================
%d4的包络
%==========================================================================
envelop_hil = hilbert(d4);
envelop_abs = abs(envelop_hil);  
%fft变换
envelop_fft = abs(fft(envelop_abs))*2 /sampleLength;
subplot(224)
plot(fft_plot_Hz,envelop_fft(2:1025));
title('d4包络波形');
ylabel('振幅/m/s^2');
xlabel('时间/s');
grid on;

outer1.txt

20.35 KB, 下载次数: 219

数据

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2010-12-28 10:20 | 显示全部楼层
回复 1 # dongyun.wang 的帖子

你这个用的也是国外网站的数据吧?
 楼主| 发表于 2010-12-28 11:19 | 显示全部楼层
是的 数据是没问题的 不知道编程错在哪里
我作出的图大,没办法传上来。
发表于 2010-12-28 13:39 | 显示全部楼层
数据有用,能否给个出处!!!!!!!
 楼主| 发表于 2010-12-30 08:11 | 显示全部楼层
是美国Case Western Reserve Univisity的轴承数据,很早以前下的数据,具体网址不记得了了,得上网搜一下
发表于 2011-1-4 14:48 | 显示全部楼层
应该设法把图贴出来,这样大家看着也直观一些,你觉得哪里不对也应该说明,别人看程序也能有针对性。
 楼主| 发表于 2011-1-4 15:34 | 显示全部楼层
回复 6 # duguzi 的帖子

F:\QQ.BMP
我的理想的d1的包络谱中有103赫兹及其倍频应该很明显地显示出来。
但是我的图中没有显示
发表于 2011-1-4 15:58 | 显示全部楼层
本帖最后由 duguzi 于 2011-1-4 16:00 编辑

数据是有问题的,采样频率12000,采样点数2048,频率分辨率为12000/2048=5.8Hz,过于粗略,你要寻找103Hz,d1包络谱中有99.6Hz,近似相等,差别不到一个频率分辨率,可以认为是同一频率。
另我用自己的试验台振动信号处理了一下,该程序没有大问题,按你的处理过程,最终结果和直接Hilbert包络解调几乎一致。不要怀疑自己的算法了。

留个邮箱,可以把我的数据给你
 楼主| 发表于 2011-1-5 11:05 | 显示全部楼层
发表于 2011-1-12 23:29 | 显示全部楼层
你好,楼主。谢谢你的帖子,我从你的程序中学到了很多东西。问一个和你题目不相关的问题。
为什么你作频谱图时要从第2个点开始做图?
plot(fft_plot_Hz,envelop_fft(2:1025));
 楼主| 发表于 2011-1-13 07:57 | 显示全部楼层
因为第一个点的值太高了,以至于后面的值都看不清了,你可以试一试,所以把第一个点去掉了
发表于 2011-1-13 13:31 | 显示全部楼层
回复 10 # kiefer0107 的帖子

主要是因为原始信号经过Hilbert变换再取绝对值后,即原始程序中的
envelop_hil = hilbert(d4);
envelop_abs = abs(envelop_hil);  
此时envelop_abs变量中全是大于等于0的数字,即该变量中包含有一较大的直流分量,
再进行fft变换,包络谱中在0Hz便有一较大的值,以至于其他有效非0Hz的频率成分被0Hz的
直流分量压制,在包络谱中显得比较小了,难以分辨,故作者从第二个值开始绘制。
其实在fft变换之前将envelop_abs先减掉均值,再进行fft即可。
即原始程序中可稍微修改一句:
%fft变换
envelop_fft = abs(fft(envelop_abs-mean(envelop_abs)))*2 /sampleLength;
发表于 2011-5-6 14:43 | 显示全部楼层
,支持数据,如果有声发射数据就好了
发表于 2011-7-7 16:05 | 显示全部楼层
这几天看到大家的分析 学习了很多东西 谢谢大家的分析
发表于 2012-3-28 10:35 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-20 21:51 , Processed in 0.064042 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表