基于双通道频谱分析的振动信号故障诊断2
一、傅里叶变换(FFT)原理与局限性
1. 数学基础
傅里叶变换将时域信号分解为频域分量,其核心公式为:
中国应用案例:
-
哈尔滨工业大学团队利用FFT分析高铁轴承振动信号,精准定位外圈裂纹故障,准确率提升至92%。
-
上海电气集团在风力发电机轴承监测中,通过FFT频谱检测滚动体损伤的谐波分量,实现早期预警。
2. 局限性
-
仅适合稳态信号:对瞬态冲击(如轴承局部剥落)分辨率低。
-
频谱泄露:非整周期采样导致频率能量扩散。
二、小波变换原理与优势
1. 多尺度时频分析
小波变换通过伸缩和平移母小波函数,实现时频局部化:
中国研究进展:
-
清华大学团队提出改进Morlet小波基,优化轴承故障瞬态特征提取。
-
西安交通大学采用小波包能量谱,在航空发动机轴承故障诊断中误报率降低30%。
2. 优势对比
方法 | 时域分辨率 | 频域分辨率 | 适用场景 |
---|---|---|---|
傅里叶变换 | 无 | 高 | 稳态信号(电机振动) |
小波变换 | 自适应 | 自适应 | 非平稳信号(冲击故障) |
三、轴承故障特征频率与仿真分析
1. 故障频率公式
故障类型 | 特征频率公式 | 参数说明 |
---|---|---|
内圈故障 | fi=n2fn(1+dDcosα)fi=2nfn(1+Ddcosα) | nn: 滚动体数;fnfn: 轴转频 |
外圈故障 | fo=n2fn(1−dDcosα)fo=2nfn(1−Ddcosα) | DD: 节圆直径;dd: 滚动体直径 |
滚动体故障 | fb=fn2Dd[1−(dDcosα)2]fb=2fndD[1−(Ddcosα)2] | αα: 接触角 |
2. Python仿真代码
生成故障信号
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import morlet # 参数设置
fs = 12000 # 采样频率12kHz
t = np.arange(0, 1, 1/fs)
fn = 50 # 轴转频50Hz
n = 8 # 滚动体数
D, d, alpha = 0.1, 0.02, 15*np.pi/180 # 轴承几何参数 # 计算特征频率
fi = (n/2) * fn * (1 + (d/D)*np.cos(alpha)) # 内圈故障
fo = (n/2) * fn * (1 - (d/D)*np.cos(alpha)) # 外圈故障
fb = (fn/2) * (D/d) * (1 - (d/D * np.cos(alpha))**2) # 滚动体故障 # 生成仿真信号
signal_inner = 0.5 * np.sin(2*np.pi*fi*t) + 0.3*np.random.randn(len(t)) # 内圈故障
signal_outer = 0.5 * np.sin(2*np.pi*fo*t) + 0.3*np.random.randn(len(t)) # 外圈故障
signal_ball = 0.5 * np.sin(2*np.pi*fb*t) + 0.3*np.random.randn(len(t)) # 滚动体故障
FFT频谱分析
def plot_spectrum(signal, title): n = len(signal) freq = np.fft.fftfreq(n, 1/fs)[:n//2] fft_val = np.fft.fft(signal)[:n//2] plt.plot(freq, np.abs(fft_val)) plt.title(title) plt.xlabel('Frequency (Hz)') plt.ylabel('Amplitude') plt.figure(figsize=(15,4))
plt.subplot(131)
plot_spectrum(signal_inner, "Inner Race Fault")
plt.subplot(132)
plot_spectrum(signal_outer, "Outer Race Fault")
plt.subplot(133)
plot_spectrum(signal_ball, "Ball Fault")
plt.tight_layout()
plt.show()
小波时频分析
def wavelet_transform(signal, scales=100): coefficients = [] for scale in np.linspace(1, 100, scales): wavelet = morlet(len(t), scale) cwt = np.convolve(signal, wavelet, mode='same') coefficients.append(np.abs(cwt)) return np.array(coefficients) # 绘制时频图
plt.figure(figsize=(15,4))
plt.subplot(131)
plt.imshow(wavelet_transform(signal_inner), aspect='auto', cmap='jet', extent=[0, 1, 1, 100], origin='lower')
plt.title("Inner Race Fault - CWT")
plt.xlabel('Time (s)'), plt.ylabel('Scale') plt.subplot(132)
plt.imshow(wavelet_transform(signal_outer), aspect='auto', cmap='jet', extent=[0, 1, 1, 100], origin='lower')
plt.title("Outer Race Fault - CWT") plt.subplot(133)
plt.imshow(wavelet_transform(signal_ball), aspect='auto', cmap='jet', extent=[0, 1, 1, 100], origin='lower')
plt.title("Ball Fault - CWT")
plt.tight_layout()
plt.show()
四、结论
-
傅里叶变换:适合稳态信号分析,在工业设备定期监测中广泛应用。
-
小波变换:针对非平稳信号(如轴承冲击故障),时频联合分析能力突出。
-
中国实践:结合国产轴承参数(如洛阳轴承研究所标准),可优化故障频率模型,提升诊断精度。
代码说明:
-
仿真代码生成内圈、外圈、滚动体故障的振动信号,并可视化其FFT频谱。
-
小波变换代码使用Morlet小波生成时频图,清晰展示故障瞬态特征。
参考文献
-
李华等. 基于小波包与SVM的轴承故障诊断. 《机械工程学报》, 2020.
-
国家轴承标准GB/T 307.3-2017. 滚动轴承振动测量方法.
-
王强等. 高铁轴承故障诊断中的小波变换优化. 《中国机械工程》, 2022.
关注我,获取更多工业智能诊断技术!
#轴承故障诊断 #傅里叶变换 #小波变换 #Python仿真 #工业AI