声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2178|回复: 3

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

[复制链接]
发表于 2011-4-17 09:55 | 显示全部楼层 |阅读模式

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

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

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

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

测量到的三次较稳定数据,频率为5.1Hz
测量数据.rar (63.99 KB, 下载次数: 3)

实例代码

  1. %随机信号谱分析
  2. clear
  3. clc
  4. close all hidden
  5. %fni=input('随机信号谱分析-输入数据文件名','s');
  6. %fid=fopen(fni,'r')
  7. %分析内容(1=自谱,2=互谱,3=频响函数,4=相干函数)
  8. %fun=fscanf(fid,'%f',1);
  9. %sf=fscanf(fid,'%f',1);     %读入采样频率值
  10. %nfft=fscanf(fid,'%d',1);   %读入FFT长度
  11. %窗函数(1=矩形,2=汉宁,3=海明,4=布莱克曼,5=三角)
  12. %win=fscanf(fid,'%d',1);  
  13. %fno=fscanf(fid,'%d',1);    %读入输出数据文件名
  14. %按行读入数据,第一行激励,第二行响应
  15. %a=fscanf(fid,'%f',[2 inf]);   
  16. %status=fclose(fid);
  17. % fun=3;sf=500;nfft=2048;win=1;fno='out6_1.mat';
  18. fun=4;sf=400;nfft=2048;win=4;fno='out6_1.mat';
  19. load y
  20. a(1,:)=y;a(2,:)=y.*sin(y);
  21. x=a(1,:);
  22. y=a(2,:)-a(1,:);
  23. f=0:sf/nfft:sf/2-sf/nfft;
  24. switch win
  25.     case 1
  26.         w=boxcar(nfft);
  27.     case 2
  28.         w=hanning(nfft);
  29.     case 3
  30.         w=hamming(nfft);
  31.     case 4
  32.         w=blackman(nfft);
  33.     case 5
  34.         w=triang(nfft);
  35.     otherwise
  36.         w=boxcar(nfft);
  37. end
  38. switch fun
  39.     case 1
  40.         z=psd(y,nfft,sf,w,nfft/2);
  41.     case 2
  42.         z=csd(x,y,nfft,sf,w,nfft/2);
  43.     case 3
  44.         z=tfe(x,y,nfft,sf,w,nfft/2);
  45.     case 4
  46.         z=cohere(x,y,nfft,sf,w,nfft/2);
  47.     otherwise
  48.         ;
  49. end
  50. %幅频曲线
  51. nn=1:nfft/4;
  52. subplot(2,1,1);
  53. plot(f(nn),abs(z(nn)));
  54. xlabel('频率(Hz)');
  55. ylabel('幅值');
  56. grid on;
  57. if fun>1&fun<4
  58.     %相频曲线
  59.     subplot(2,1,2);
  60.     plot(f(nn),angle(z(nn)));
  61.     xlabel('频率(Hz)');
  62.     ylabel('相位');
  63.     grid on;
  64. end
  65. fid=fopen(fno,'w');
  66. if fun>1&fun<4
  67.     for k=1:nfft/2
  68.        fprintf(fid,'%f%f\n',f(k),abs(z(k)));%自谱和相干数据
  69.     end
  70. else
  71.     for k=1:nfft/2
  72.        fprintf(fid,'%f%f%f\n',f(k),real(z(k)),imag(z(k)));%互谱和频响函数数据
  73.     end
  74. end
  75. status=fclose(fid);
复制代码
y变量和Out6_1.mat
work.rar (80.46 KB, 下载次数: 2)


回复
分享到:

使用道具 举报

发表于 2011-4-18 07:34 | 显示全部楼层
本帖最后由 hcharlie 于 2011-4-18 07:38 编辑
shajue 发表于 2011-4-17 09:55
将采集的跳动数据进行FFT分析,发现在旋转频率同频的附近频率(约0.5Hz)有较强的信号干扰,但是我的频率分辨率能达到0.17Hz,应当能将该干扰信号分离。

你的主信号与干扰频率差0.5Hz,约差3条谱线,两信号之间相互功率泄漏影响还是很大,不易分离干净的。
如果信号跳动厉害,说明你现在的机器信号随机性厉害,要进行多次谱平均,可以稳定一些。
你要测互谱,相干,都需要测到激励也就是输入信号,没有明确的输入信号是做不了这些事的。
 楼主| 发表于 2011-4-18 20:50 | 显示全部楼层
回复 2 # hcharlie 的帖子

我原来也考虑过进行多次信号平均,得到的结果确实要稳定一些,如进行3次平均。但是这样做的话测量一次得到的最终结果需要的时间太长了,要几十秒才能出一次结果。
而且这种平均不是每次测量都必须要做,有时候测量的时候干扰不大,不用平均,测量一次就能得到稳定的结果。
我现在就是在考虑是否有别的方法来判定是否要做多次测量,并且可以减少测量的时间。(我考虑过用2次测量做比较,但是这样做的话,测量时间还是太长)。
在信号处理的方法中是否有这样的方法呢?
 楼主| 发表于 2011-4-18 20:59 | 显示全部楼层
这是测得比较好的数据,也就是这次测试环境还比较好,但是跳动还是较大。需分析频率为5.1Hz,采样率为712Hz。
20110307.rar (148.75 KB, 下载次数: 2)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-2 13:17 , Processed in 0.108619 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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