shajue 发表于 2011-4-17 09:55

振动加速度信号的激励、响应与相干函数

本帖最后由 shajue 于 2011-4-17 09:59 编辑

    用加速度传感器在一大型旋转部件上测量振动值,需要分析的振动部分是与旋转频率同频的振动,需要计算振动的幅值和相位。在用采样率768Hz,采集点数为4608点进行一次采集,然后进行DFT分析,求得振动的幅值和相位。如此,进行多次测量,发现每一次测量的幅值和相位跳动很大,一致性不好;该设备在别的旋转部件上进行过大量验证,验证结果稳定。
      将采集的跳动数据进行FFT分析,发现在旋转频率同频的附近频率(约0.5Hz)有较强的信号干扰,但是我的频率分辨率能达到0.17Hz,应当能将该干扰信号分离。
      最近在看到《Matlab在振动信号处理中的应用》的第6.1中看到相干函数的分析。考虑是否采用判断信号的相干函数值的方法(如阀值设置为0.95)来确定此次测量结果是否能满足要求。用于解决测量结果跳动大的问题。
      但在这个MATLAB事例中,有一点不明白,就是“激励”是怎样得来的,在实例中是直接给出的数据。
      要是采用求相干函数的方法,怎样更改代码求得。

测量到的三次较稳定数据,频率为5.1Hz


实例代码

%随机信号谱分析
clear
clc
close all hidden
%fni=input('随机信号谱分析-输入数据文件名','s');
%fid=fopen(fni,'r')
%分析内容(1=自谱,2=互谱,3=频响函数,4=相干函数)
%fun=fscanf(fid,'%f',1);
%sf=fscanf(fid,'%f',1);   %读入采样频率值
%nfft=fscanf(fid,'%d',1);   %读入FFT长度
%窗函数(1=矩形,2=汉宁,3=海明,4=布莱克曼,5=三角)
%win=fscanf(fid,'%d',1);
%fno=fscanf(fid,'%d',1);    %读入输出数据文件名
%按行读入数据,第一行激励,第二行响应
%a=fscanf(fid,'%f',);   
%status=fclose(fid);
% fun=3;sf=500;nfft=2048;win=1;fno='out6_1.mat';
fun=4;sf=400;nfft=2048;win=4;fno='out6_1.mat';
load y
a(1,:)=y;a(2,:)=y.*sin(y);
x=a(1,:);
y=a(2,:)-a(1,:);
f=0:sf/nfft:sf/2-sf/nfft;
switch win
    case 1
      w=boxcar(nfft);
    case 2
      w=hanning(nfft);
    case 3
      w=hamming(nfft);
    case 4
      w=blackman(nfft);
    case 5
      w=triang(nfft);
    otherwise
      w=boxcar(nfft);
end
switch fun
    case 1
      z=psd(y,nfft,sf,w,nfft/2);
    case 2
      z=csd(x,y,nfft,sf,w,nfft/2);
    case 3
      z=tfe(x,y,nfft,sf,w,nfft/2);
    case 4
      z=cohere(x,y,nfft,sf,w,nfft/2);
    otherwise
      ;
end
%幅频曲线
nn=1:nfft/4;
subplot(2,1,1);
plot(f(nn),abs(z(nn)));
xlabel('频率(Hz)');
ylabel('幅值');
grid on;
if fun>1&fun<4
    %相频曲线
    subplot(2,1,2);
    plot(f(nn),angle(z(nn)));
    xlabel('频率(Hz)');
    ylabel('相位');
    grid on;
end
fid=fopen(fno,'w');
if fun>1&fun<4
    for k=1:nfft/2
       fprintf(fid,'%f%f\n',f(k),abs(z(k)));%自谱和相干数据
    end
else
    for k=1:nfft/2
       fprintf(fid,'%f%f%f\n',f(k),real(z(k)),imag(z(k)));%互谱和频响函数数据
    end
end
status=fclose(fid);y变量和Out6_1.mat



hcharlie 发表于 2011-4-18 07:34

本帖最后由 hcharlie 于 2011-4-18 07:38 编辑

shajue 发表于 2011-4-17 09:55 static/image/common/back.gif
将采集的跳动数据进行FFT分析,发现在旋转频率同频的附近频率(约0.5Hz)有较强的信号干扰,但是我的频率分辨率能达到0.17Hz,应当能将该干扰信号分离。
你的主信号与干扰频率差0.5Hz,约差3条谱线,两信号之间相互功率泄漏影响还是很大,不易分离干净的。
如果信号跳动厉害,说明你现在的机器信号随机性厉害,要进行多次谱平均,可以稳定一些。
你要测互谱,相干,都需要测到激励也就是输入信号,没有明确的输入信号是做不了这些事的。

shajue 发表于 2011-4-18 20:50

回复 2 # hcharlie 的帖子

我原来也考虑过进行多次信号平均,得到的结果确实要稳定一些,如进行3次平均。但是这样做的话测量一次得到的最终结果需要的时间太长了,要几十秒才能出一次结果。
而且这种平均不是每次测量都必须要做,有时候测量的时候干扰不大,不用平均,测量一次就能得到稳定的结果。
我现在就是在考虑是否有别的方法来判定是否要做多次测量,并且可以减少测量的时间。(我考虑过用2次测量做比较,但是这样做的话,测量时间还是太长)。
在信号处理的方法中是否有这样的方法呢?

shajue 发表于 2011-4-18 20:59

这是测得比较好的数据,也就是这次测试环境还比较好,但是跳动还是较大。需分析频率为5.1Hz,采样率为712Hz。

页: [1]
查看完整版本: 振动加速度信号的激励、响应与相干函数