资讯详情

资讯详情

MATLAB轴承故障特征频率计算与包络谱对齐实战

简介这份资源面向机械工程、设备维护与信号处理方向的学习者和研究人员围绕凯斯西储大学轴承数据提供轴承故障特征频率计算的MATLAB实现帮助读者从振动信号中识别滚动体、内圈、外圈等故障对应的特征频率解决故障诊断中理论公式与代码落地脱节的问题。压缩包共3个文件包含1个m脚本和2个png图片整体约91KB脚本用于特征频率计算与频谱分析图片则给出深沟球轴承结构及计算截图便于对照理解参数含义。目前已有4135人学习下载说明其在轴承故障诊断入门与课程实践中具有一定参考价值。读者可借助代码复现基本旋转频率、滚动体通过频率等计算流程结合步骤分析讲解掌握数据预处理、频谱绘制与故障判断思路适合作为机械故障诊断、信号处理课程设计或课题研究的实操素材。1. 轴承故障特征频率为什么你的包络谱总是对不上号做过旋转机械诊断的人多半有过这种经历拿一段凯斯西储大学CWRU的驱动端加速度数据FFT 一看转频及其倍频清清楚楚可一旦想找内圈、外圈的故障特征频率谱线要么淹没在噪声里要么算出来的位置和理论值差了一截。问题往往不在数据而在“特征频率到底怎么算、算出来之后怎么在谱上认”。这个标题指向的正是这件事用 MATLAB 把轴承的几何参数转成理论故障频率再把它和实测包络谱对齐。它解决的是“知道有故障但说不清是哪个部件、哪一阶”的问题适合手里有振动数据、想从频谱里读出物理含义的设备诊断工程师和做状态监测的学生。核心不是写多复杂的代码而是把几何—频率—谱线这条链路走通让每一次峰值都能落到具体部件上。2. 从几何参数到特征频率四个公式和它们的物理含义2.1 轴承特征频率的推导逻辑滚动轴承的故障特征频率来自滚动体与滚道的相对运动。设节径为 $D$滚动体直径为 $d$接触角为 $\alpha$滚动体个数为 $Z$轴转频为 $f_r$。外圈固定、内圈随轴旋转时四个最常用的频率是外圈故障频率 BPFO$\frac{Z}{2} f_r \left(1 - \frac{d}{D}\cos\alpha\right)$内圈故障频率 BPFI$\frac{Z}{2} f_r \left(1 \frac{d}{D}\cos\alpha\right)$滚动体故障频率 BSF$\frac{D}{2d} f_r \left[1 - \left(\frac{d}{D}\cos\alpha\right)^2\right]$保持架频率 FTF$\frac{1}{2} f_r \left(1 - \frac{d}{D}\cos\alpha\right)$这几个式子不是背下来的而是从“滚动体经过一个缺陷点的时间间隔”推出来的。外圈有缺陷时每个滚动体经过缺陷都会产生一次冲击所以频率是滚动体公转频率乘以个数内圈有缺陷时缺陷随内圈转动冲击频率还要叠加内圈自身的旋转。理解这一点后面看谱线时才知道为什么 BPFI 附近常出现转频边带而 BPFO 的边带通常不明显。2.2 用 MATLAB 把公式写成可复用函数直接在主脚本里写死数字换一个轴承就要改一遍容易出错。我一般会写一个独立函数把几何参数和转频作为输入返回四个频率。下面这段代码可以直接存成bearing_freq.mfunction [BPFO, BPFI, BSF, FTF] bearing_freq(D, d, Z, alpha_deg, fr) % D 节径 (mm) % d 滚动体直径 (mm) % Z 滚动体个数 % alpha_deg 接触角 (度) % fr 轴转频 (Hz) alpha deg2rad(alpha_deg); % 角度转弧度 ratio (d / D) * cos(alpha); % 中间量反复用到 BPFO (Z / 2) * fr * (1 - ratio); BPFI (Z / 2) * fr * (1 ratio); BSF (D / (2 * d)) * fr * (1 - ratio^2); FTF 0.5 * fr * (1 - ratio); end逻辑说明ratio是四个公式共有的无量纲量单独提出来既减少重复计算也方便检查是否超过 1。接触角用角度输入更符合工程习惯函数内部转弧度。参数说明节径和滚动体直径单位要一致用毫米即可因为比值无量纲转频由转速除以 60 得到例如 1750 rpm 对应约 29.17 Hz。如果轴承资料给的是接触角弧度把deg2rad去掉即可。2.3 一个可复现的算例与结果核对以某型深沟球轴承为例节径 39.04 mm滚动体直径 7.94 mm滚动体个数 9接触角 0 度轴转频 29.17 Hz。调用上面的函数D 39.04; d 7.94; Z 9; alpha 0; fr 1750 / 60; [BPFO, BPFI, BSF, FTF] bearing_freq(D, d, Z, alpha, fr); fprintf(BPFO%.2f Hz\nBPFI%.2f Hz\nBSF%.2f Hz\nFTF%.2f Hz\n, ... BPFO, BPFI, BSF, FTF);运行后大致得到 BPFO 约 104.6 HzBPFI 约 157.9 HzBSF 约 68.9 HzFTF 约 11.6 Hz。这几个数字要记下来后面做包络谱时就是拿它们去对峰。注意 BSF 的公式里有一个平方项当 $d/D$ 较大时结果对参数很敏感所以滚动体直径的测量误差会明显影响 BSF 的定位这也是实际诊断中 BSF 最难对上的原因之一。3. 用 MATLAB 做包络谱把故障频率从噪声里捞出来3.1 为什么直接 FFT 不够要先做包络轴承故障产生的冲击是高频衰减振荡直接对原始信号做 FFT能量集中在几千赫兹的共振频带故障特征频率本身反而很弱。包络分析的思路是先带通滤波保留共振频带再取包络最后对包络做低通或直接 FFT这样故障频率就搬到低频段容易识别。常见做法是 Hilbert 变换取包络也可以用平方解调。我一般先用谱峭度或经验选一个带通范围再进包络。3.2 完整包络谱脚本与参数设置下面这段脚本假设你已经把 CWRU 的驱动端数据读成变量x采样率fs已知常见为 12000 Hz 或 48000 Hz。代码里带通范围需要根据你的数据调整这里给一个示例值fs 12000; % 采样率按实际数据改 x x - mean(x); % 去直流 bp [2000 4000]; % 带通范围围绕共振频带选 % 带通滤波 [b, a] butter(4, bp / (fs / 2), bandpass); xf filtfilt(b, a, x); % 零相位滤波避免相位失真 % Hilbert 包络 env abs(hilbert(xf)); env env - mean(env); % 去直流否则零频会很高 % 包络谱 N length(env); Y abs(fft(env)) / N; f (0:N-1) * (fs / N); half 1:floor(N/2); plot(f(half), Y(half)); xlabel(频率 (Hz)); ylabel(幅值); xlim([0 500]); % 故障频率一般在低频段 grid on;逻辑说明filtfilt做双向滤波相位不失真对包络提取很关键hilbert返回解析信号取模得到包络去均值是为了压掉零频分量否则谱图第一个点会盖住一切。参数说明带通范围bp不能拍脑袋可以先对原始信号做 FFT 看共振峰在哪再把范围卡在峰两侧滤波器阶数 4 是折中太高会振铃太低阻带衰减不够。xlim先看 0 到 500 Hz因为常见轴承故障频率都在这个区间确认有峰后再放大。3.3 把理论频率叠到包络谱上做比对算出 BPFO、BPFI 之后最直观的验证方式是在包络谱上画竖线。下面几行接在上面的脚本后面hold on; for k 1:5 xline(k * BPFO, r--); % 外圈及其谐波 xline(k * BPFI, b--); % 内圈及其谐波 end legend(包络谱, BPFO 谐波, BPFI 谐波); hold off;如果外圈故障你会看到 BPFO 及其 2 倍、3 倍处有峰内圈故障则在 BPFI 两侧出现间隔为转频的边带。这一步是“认谱”的核心理论值只是参考实际峰值可能因为滑移偏几个百分点允许 1% 到 2% 的偏差。若偏差超过 5%先检查转频是否算错再检查轴承型号参数是否对得上。4. 避坑与排查五个让特征频率对不上的常见原因4.1 转频算错后面全错现象所有特征频率整体偏移比例大致相同。原因把转速 rpm 直接当 Hz 用或者用了电机同步转速而不是实际转速。解决转频 实测转速 / 60没有转速计时可从谱图上的转频峰反推确认后再代入公式。4.2 带通范围选在噪声区现象包络谱一片模糊看不到明显峰值。原因带通范围没有覆盖共振频带或者范围太宽把噪声也放进来。解决先看原始信号 FFT找能量最高的共振峰把带通卡在峰两侧约 ±500 Hz如果共振峰不明显用谱峭度图辅助选带。4.3 滤波器相位失真导致包络变形现象包络谱出现很多不明谐波和理论频率对不上。原因用了filter而不是filtfilt相位延迟让包络形状改变。解决包络提取前一律用零相位滤波filtfilt是标配。4.4 轴承几何参数抄错或单位不统一现象BPFI 和 BPFO 的比值异常比如内圈频率反而比外圈低。原因节径和滚动体直径一个用毫米一个用英寸或者滚动体个数抄错。解决所有长度单位统一接触角确认是度还是弧度算完先检查 BPFI 是否大于 BPFO正常情况内圈频率更高。4.5 滑移导致峰值偏移误判为无故障现象理论频率处没有峰但附近几十赫兹有峰。原因滚动体存在滑移实际冲击间隔比理论值略长频率偏低。解决在理论值 ±2% 范围内搜索峰值不要死盯一个点如果偏移稳定可反推实际滑移率但不必强行修正公式。5. 进阶技巧用包络谱的谐波结构区分内外圈故障5.1 看边带而不是只看主峰外圈故障时冲击位置相对传感器固定包络谱上 BPFO 及其谐波干净利落边带很少。内圈故障时缺陷随内圈转动与传感器距离周期性变化BPFI 两侧会出现间隔为转频的边带。这个差别比主峰幅值更可靠。实操中我会把包络谱在 BPFI 附近放大看有没有BPFI ± fr的峰有就是内圈没有再看 BPFO。5.2 用倒谱做二次确认倒谱能把谐波族压缩成一根线适合确认故障频率的基频。下面这段代码接在包络谱之后cep real(ifft(log(abs(fft(env)) eps))); q (0:N-1) / fs; plot(q(1:floor(N/2)), cep(1:floor(N/2))); xlabel(倒频率 (s)); ylabel(幅值); xlim([0 0.1]); grid on;逻辑说明log前加eps防止零值取对数出错倒谱横轴是时间故障频率的倒数处会出现峰。参数说明xlim取 0 到 0.1 秒对应 10 Hz 以上频率覆盖常见故障频率。如果倒谱在 1/BPFO 处有峰基本可以确认外圈。5.3 一个我常犯的错误早期我总想把所有峰值都解释成故障频率结果把转频谐波、齿轮啮合频率也硬套进去越看越乱。后来养成习惯先确认转频和它的谐波把它们从候选列表里划掉再在剩下的峰里找 BPFO、BPFI。这个顺序能省掉大量返工。另外CWRU 数据里不同负载和转速对应不同文件用之前一定核对转速别拿 1730 rpm 的参数去算 1750 rpm 的数据。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →