阶次分析MatLab实现(附完整代码)
1.背景在实际工业生产设备工作时旋转机械很可能不会以恒定转速持续运行或者存在比较大的转速波动电机升降速或者调速过程中转速也会处于时刻变化的动态状态。在实际工况中转速通常会发生变化。标准的频域分析如FFT在处理非稳态条件下转速变化时会失去精确性。而阶次分析通过基于转速进行重采样能够保持频率与转速的同步因此可以消除转速变化对频谱分析的影响提供更准确的故障信息。2.基本原理阶次分析Order Analysis是一种用于分析旋转机械中周期性振动信号的频谱分析技术特别适用于变速机械如发动机、涡轮机、压缩机、变速箱等中的信号处理。这种方法可以识别和量化与转速相关的振动现象通过分析机械的旋转运动将其产生的振动信号分解为多个不同阶次harmonic orders对应的频率成分。以下是阶次分析的基本原理1.振动信号的获取阶次分析的第一步是通过传感器如加速度计或速度计获取机械设备的振动信号。同时还需要记录与旋转运动相关的转速信号通常通过转速传感器获取因为阶次分析依赖于转速变化。2.信号预处理在分析之前获取的振动信号可能需要进行一些预处理操作例如去噪、滤波或同步采样以确保信号的质量和分析的精度。3.转速与频率的关系阶次分析的核心思想是将信号中的频率与设备的旋转速度联系起来。旋转机械的振动信号中通常包含与转速成比例的周期性分量这些分量被称为“阶次”order。每个阶次的频率是转速的整数倍。4.阶次的定义阶次是旋转机械振动频谱中与转速成整数倍关系的特征频率。第1阶次表示与转速等同的频率第2阶次表示两倍转速的频率依此类推。通过阶次分析能够发现与机械部件相关的特定谐波harmonics问题。5.同步重采样在阶次分析中常用的方法是将时间域的振动信号重新采样到旋转角度域。这种重采样是为了消除由于转速变化引起的频率失真。通过基于角度的重采样可以将原本非平稳的振动信号转换为准平稳信号便于后续分析。6.阶次谱分析通过傅里叶变换将振动信号从时间域转换到频率域后得到的频谱不仅包含与转速相关的频率成分还可能包含一些与设备缺陷相关的阶次分量。阶次分析可以生成阶次谱order spectrum展示不同阶次的幅值和相位。3.基本方法等角度采样的实现是阶次跟踪分析的主要难题有两种方法实现等角度采样转速脉冲触发采样和等时重采样。转速脉冲触发采样是通过严格的转速脉冲触发采样。在要分析的发动机上固定转速盘发动机每旋转一定角度转速表从固定盘获取上脉冲信号同时触发振动采样。此种方法能实现严格的同步触发但实际操作存在困难。根据奈奎斯特定律信号的采样频率必须是分析频率的两倍以上。假设我们要进行32阶的阶次谱则至少需要64个以上的触发信号。对较小的转速盘进行64等份再保证转速测量比较难实现。等时重采样有两个采样过程。第一个过程是等时间间隔采样过程对原始的噪声或振动信号和转速脉冲信号分两路以恒定的采样率进行等时间间隔采样得到同步采样信号。等时采样时采样率一般比较高。第二个过程是插值重采样过程根据转速脉冲序列计算等角度采样发生的时刻序列在等角度采样时刻附近的时间区间内对同步采样的原始噪声信号进行插值重采样从而得到阶次分析所需的角度域稳态信号。通过插值法可减少转速触发但插值不能保证严格的转速同步对测量精度存在影响。4.等角度插值重采样4.1 Matlab代码%%加载复合故障升速轴承数据集dataload(C-A-2.mat);%%定义采样频率和时间向量% fs:采样频率% x:振动信号% speed:转速信号% t:时间fs200000;xdata.Channel_1(7:fs*10);speeddata.Channel_2(7:fs*10);t(0:length(x)-1)/fs;%%计算转速rpmtachorpm(speed,fs,FitPoints,50,PulsesPerRev,1024);rpmrpm/60;%%角度域重采样% fs_rate:采样率fs_r200;[theta,x_theta]angle_resample(x,fs,rpm,fs_r);%%画图figuresubplot(4,1,1)plot(t,x)xlim([t(1)t(end)])xlabel(时间/s)title(振动信号)subplot(4,1,2)plot(theta,x_theta)xlim([theta(1)theta(end)])xlabel(角度/r)title(角域重采样)subplot(4,1,3)plot(t,rpm)xlim([t(1)t(end)])xlabel(时间/s)ylabel(Hz)title(转速)%%阶次谱分析x_hhthilbert(x_theta);[P1,f]get_fft(abs(x_hht),fs_r);subplot(4,1,4)plot(f,P1)xlim([020])xlabel(阶次)title(包络谱值)图示结果如下4.2 代码解读这段MATLAB代码主要针对轴承振动信号进行处理分析信号的频率特征以及与转速的关系。以下是每个部分的详细解读1. 加载数据和定义参数dataload(C-A-2.mat);fs200000;xdata.Channel_1(7:fs*10);speeddata.Channel_2(7:fs*10);t(0:length(x)-1)/fs;dataload(C-A-2.mat);加载一个包含振动和转速信号的MAT文件。fs 200000;采样频率设定为200,000 Hz。x data.Channel_1(7:fs*10);从信号的第7个点开始截取10秒的振动信号。speed data.Channel_2(7:fs*10);同样截取10秒的转速信号。t (0:length(x)-1) / fs;计算出对应的时间向量。2. 计算转速rpmtachorpm(speed,fs,FitPoints,50,PulsesPerRev,1024);rpmrpm/60;tachorpm函数计算转速单位为rpmPulsesPerRev设置为1024即每转一圈有1024个脉冲。转速信号根据指定的采样点进行拟合。结果rpm是以分钟为单位的转速被除以60后转化为每秒的转速rps。3. 角度域重采样fs_r200;[theta,x_theta]angle_resample(x,fs,rpm,fs_r);fs_r 200;设定角度重采样的采样率为200。调用angle_resample函数根据信号的瞬时转速rpm对振动信号进行角度域重采样返回角度向量theta和重采样后的振动信号x_theta。4. 画图部分subplot(4,1,1)plot(t,x)xlabel(时间/s)title(振动信号)subplot(4,1,2)plot(theta,x_theta)xlabel(角度/r)title(角域重采样)subplot(4,1,3)plot(t,rpm)xlabel(时间/s)ylabel(Hz)title(转速)第一幅图绘制时间域内的振动信号x。第二幅图绘制角度域重采样后的振动信号x_theta。第三幅图绘制随时间变化的转速信号rpm。5. 阶次谱分析x_hhthilbert(x_theta);[P1,f]get_fft(abs(x_hht),fs_r);subplot(4,1,4)plot(f,P1)xlabel(阶次)title(包络谱值)x_hht hilbert(x_theta);对重采样后的信号进行Hilbert变换获取信号的包络。get_fft(abs(x_hht), fs_r);对信号包络进行FFT分析获取包络谱和对应的频率f。绘制阶次谱xlim([0 20])限制频率范围为0到20阶。6. FFT分析函数function[YL1,f]get_fft(X,Fs)Llength(X);Yfft(X);YL2abs(Y/L);YL1YL2(1:floor(L/2)1);YL1(1)0;YL1(2:end-1)2*YL1(2:end-1);fFs*(0:floor(L/2))/L;end这个函数get_fft计算信号X的快速傅里叶变换FFT并返回频率分量f和对应的幅值谱YL1。7. 等角度重采样函数angle_resamplefunction[theta,x_theta]angle_resample(x,fs_t,fr,fs_theta)N0:length(x)-1;t1/fs_t*N;theta_tcumtrapz(t,fr);theta0:1/fs_theta:trapz(t,fr);x_thetainterp1(theta_t,x,theta);endangle_resample是等角度重采样的实现主要根据瞬时转速信号对振动信号进行角度域重采样。其中theta_t是累积分布的角度向量通过cumtrapz求解瞬时角度。theta为固定采样率下的角度向量x_theta为重采样后的振动信号。5.小结以上内容与代码基本都是从论文、博客、ChatGPT中获取总结而来由于振动分析领域本身就是比较专业性的很多知识内容比较闭源除了一些基础图谱的实现可以很轻松找到外更专业些的东西基本上都会耗费更大的精力搜集尤其是行外人稳定转速下的振动分析方法已经比较大众化甚至深度学习更多的论文也集中于此但实际生产过程中变转速过程的研究意义更为重要阶次分析方法脱颖而出本文主要针对此问题进行了简单分享本文主要展示MatLab实现代码后续针对Python进行代码复现

相关新闻

最新新闻

日新闻

周新闻

月新闻