4. 频域特征提取:FFT原理、频谱分析、边频带与故障频率识别
好,咱们进入第四章。这一章可以说是齿轮箱故障诊断的“硬核”部分——频域分析。
说实话,我刚开始做故障诊断那会儿,时域信号看得眼花缭乱,根本看不出个所以然。后来师傅跟我说:“别盯着时域看了,转到频域去,故障特征全在那里面。” 嗯,从那以后,我就彻底爱上了频谱分析。
4.1 FFT原理:从时域到频域的“翻译官”
FFT,全称是快速傅里叶变换。说白了,它就是一个工具,能把咱们采集到的时间波形信号,翻译成频率成分。
你想想看,一个齿轮箱运转时,振动信号是各种频率叠加在一起的。有啮合频率、有转频、有故障频率……它们混在一起,时域上就是一团乱麻。FFT就是那把梳子,把这些频率一根根梳出来。
核心思想:任何复杂的周期信号,都可以分解成一系列不同频率、不同幅值的正弦波之和。
我在项目中遇到过一件事:有一次现场采集的数据,时域波形看起来很正常,峰值也不大。但一做完FFT,发现某个频率分量异常突出。后来拆开齿轮箱一看,齿面已经出现严重点蚀了。所以,别被时域的“平静”骗了。
4.1.1 FFT的几个关键参数
做FFT之前,有几个参数你得心里有数。我习惯先确认这三样:
- 采样频率(Fs):决定了你能分析的最高频率。根据奈奎斯特定理,最高分析频率 = Fs / 2。
- 采样点数(N):决定了频率分辨率。Δf = Fs / N。点数越多,分辨率越高,但计算量也越大。
- 频率分辨率(Δf):这是最容易被忽略的。分辨率不够,两个相近的频率就分不开。
我的经验:做齿轮箱诊断时,我一般把采样点数设为1024或2048的倍数。这样FFT计算效率最高,而且频率分辨率也够用。
4.2 频谱分析:读懂振动信号的“心电图”
做完FFT,我们就得到了频谱图。横轴是频率,纵轴是幅值。怎么看这张图?我总结了三个步骤:
- 找主频:看看哪个频率的幅值最高。正常情况下,应该是啮合频率及其谐波。
- 看边频:主频旁边有没有“小兄弟”?这些小频率就是边频带,是故障的“信号弹”。
- 查谐波:有没有出现不该有的谐波?比如2倍频、3倍频异常突出。
我曾经诊断过一台减速机,频谱图上2倍啮合频率的幅值比1倍还高。我当时就觉得不对劲,拆开一看,齿轮的安装平行度超差了。所以,谐波结构的变化,往往能告诉你故障的类型。
4.2.1 频谱分析的常见误区
注意:不要只看幅值大小!频率的位置和分布同样重要。有时候故障频率的幅值很小,但它出现在不该出现的位置,那就是问题。
举个例子:齿轮的啮合频率是500Hz,正常时只有500Hz和1000Hz有峰值。如果突然在500Hz旁边出现了495Hz和505Hz,哪怕幅值很小,也说明齿轮可能存在磨损或偏心。
4.3 边频带与故障频率识别:揪出故障的“指纹”
边频带,是齿轮箱故障诊断中最具价值的信息之一。它就像人的指纹,每种故障都有自己独特的边频模式。
为什么会形成边频带?简单说,就是故障信号对正常啮合信号进行了“调制”。比如齿轮有局部缺陷,每转一圈就会冲击一次,这个冲击频率(转频)就会调制到啮合频率上,形成边频。
4.3.1 常见故障的边频特征
| 故障类型 | 边频特征 | 典型频率间隔 |
|---|---|---|
| 齿轮局部断齿 | 啮合频率两侧出现等间距边频 | 故障齿轮的转频 |
| 齿轮均匀磨损 | 啮合频率幅值升高,边频不明显 | 无明显边频 |
| 齿轮偏心 | 啮合频率两侧出现边频,且幅值不对称 | 转频 |
| 轴承故障 | 高频段出现调制边频带 | 轴承故障特征频率 |
我记得有一次,一个学生拿数据给我看,说频谱上全是边频,不知道是什么故障。我让他算一下边频的间隔,结果是25Hz。再一查电机的转频,正好是25Hz。嗯,问题就出在电机侧的联轴器上。
4.3.2 故障频率的计算
要识别故障,你得先知道“正常”的频率是多少。齿轮箱的故障频率计算公式如下:
- 啮合频率:f_m = Z × f_r (Z为齿数,f_r为转频)
- 齿轮局部故障频率:f_d = f_r (每转冲击一次)
- 轴承内圈故障频率:f_i = (N/2) × f_r × (1 + d/D × cosα)
- 轴承外圈故障频率:f_o = (N/2) × f_r × (1 - d/D × cosα)
避坑指南:我曾经犯过一个错误——直接用理论公式算出来的频率去对频谱。结果怎么都对不上。后来才发现,实际转速和额定转速有偏差。所以,一定要用实际测量的转频去算,别偷懒。
4.4 本章知识体系
为了让你更直观地理解本章的知识结构,我画了一张图。你可以把它当作一个“导航图”,随时回来对照。
这张图把本章的核心内容串起来了。从FFT原理出发,到频谱分析的三个步骤,再到边频带的具体故障模式。你可以在实际诊断时,拿着这张图一步步对照。
4.5 实战代码:用Python做FFT频谱分析
光说不练假把式。下面我给出一段Python代码,你可以直接拿去用。这是我常用的一个模板。
import numpy as np
import matplotlib.pyplot as plt
# 生成模拟信号:啮合频率500Hz + 边频495Hz和505Hz
fs = 2000 # 采样频率
t = np.arange(0, 1, 1/fs) # 时间序列
# 正常信号
signal_normal = np.sin(2 * np.pi * 500 * t)
# 故障信号:加入边频
signal_fault = (1 + 0.3 * np.cos(2 * np.pi * 5 * t)) * np.sin(2 * np.pi * 500 * t)
# FFT
N = len(t)
fft_normal = np.fft.fft(signal_normal)
fft_fault = np.fft.fft(signal_fault)
freq = np.fft.fftfreq(N, 1/fs)
# 只取正频率部分
half_N = N // 2
freq = freq[:half_N]
amp_normal = np.abs(fft_normal[:half_N]) * 2 / N
amp_fault = np.abs(fft_fault[:half_N]) * 2 / N
# 绘图
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(freq, amp_normal)
plt.title('正常信号频谱')
plt.xlabel('频率 (Hz)')
plt.ylabel('幅值')
plt.xlim(0, 1000)
plt.subplot(2, 1, 2)
plt.plot(freq, amp_fault)
plt.title('故障信号频谱(含边频)')
plt.xlabel('频率 (Hz)')
plt.ylabel('幅值')
plt.xlim(0, 1000)
plt.tight_layout()
plt.show()
提示:运行这段代码,你会看到故障信号的频谱图上,500Hz主频两侧出现了495Hz和505Hz的边频。这就是齿轮局部故障的典型特征。你可以试着改变边频的间隔,看看不同故障模式的区别。
好了,这一章的内容就到这里。频域分析是齿轮箱故障诊断的核心技能,需要多练、多看、多总结。记住,频谱图上的每一个峰值,都在告诉你齿轮箱的“健康状况”。
公众号:蓝海资料掘金营,微信deep3321