基于FFT的频域故障诊断

基于FFT的频域故障诊断:3个工业典型实例+模拟数据验证

一、核心基础:FFT与三大频域特征的诊断原理

1.1 核心逻辑

工业设备的故障会改变其固有动力学特性,在时域信号中表现为周期性冲击、幅值/频率调制,而快速傅里叶变换(FFT) 能将时域信号从时间维度转换到频率维度,分解出信号中不同频率的正弦分量,精准定位故障对应的特征频率。故障诊断的核心依据是:设备正常运行时,频谱能量集中在固有频率(旋转频率、啮合频率、电网基频等);故障发生时,对应故障特征频率处的幅值/能量会显著跃升,同时伴随特征倍频、边频带的出现

1.2 三大核心频域特征定义与诊断价值

特征名称 核心原理 诊断价值 适用场景
功率谱(PSD) 基于FFT计算信号功率随频率的分布,反映不同频率成分的能量大小 直观呈现各频率的能量占比,识别固有频率幅值变化、谐波、边频带 平稳性故障(不平衡、不对中、电机转子断条、齿轮均匀磨损)
包络谱 先通过希尔伯特变换提取时域信号的包络(解调幅值调制信号),再对包络做FFT得到的频谱 解调出被高频共振载波掩盖的低频故障冲击信号,是早期冲击故障诊断的金标准 轴承滚道点蚀/剥落、齿轮断齿等强调制型冲击故障
谱峭度(SK) 计算不同频率频带内信号的峭度值,反映该频带信号的非高斯冲击特性 定位故障冲击激发的共振频带,过滤噪声,大幅提升低信噪比下早期故障的识别率 强噪声环境下的微弱故障、早期故障诊断

1.3 通用标准化诊断流程

  1. 基于设备几何/电气参数,计算理论故障特征频率
  2. 采集设备正常/故障工况的时域信号,满足奈奎斯特采样定理(采样频率≥2倍最高关注频率);
  3. 对时域信号做预处理(去直流、去趋势、滤波),通过FFT转换至频域,提取目标频域特征;
  4. 对比正常与故障状态下,故障特征频率处的幅值/能量变化,结合倍频、边频带特征,完成故障判定与定位。

实例1:滚动轴承外圈点蚀故障诊断(包络谱核心应用)

1.1 场景说明

滚动轴承是旋转机械的核心易损件,外圈滚道点蚀是最常见的早期故障。

  • 故障机理:滚动体滚过外圈点蚀位置时,会产生周期性的瞬态冲击,该冲击会激发轴承-传感器系统的高频固有共振,形成**「高频共振为载波,低频故障冲击为调制信号」的调幅信号**。直接做FFT的功率谱只能看到高频共振峰,低频故障特征频率会被完全掩盖,必须通过包络解调才能提取。
  • 理论故障特征频率计算(工业通用公式):
    外圈故障特征频率 fo=Zfr2(1−dDcos⁡α)f_o = \frac{Z f_r}{2} \left(1 - \frac{d}{D} \cos\alpha \right)fo=2Zfr(1−Ddcosα)
    式中:Z=9Z=9Z=9(滚动体数量),fr=30 Hzf_r=30\ \text{Hz}fr=30 Hz(轴旋转频率,对应1800转/分),d=8 mmd=8\ \text{mm}d=8 mm(滚动体直径),D=40 mmD=40\ \text{mm}D=40 mm(轴承节圆直径),α=0\alpha=0α=0(接触角)。
    计算得:fo=108 Hzf_o=108\ \text{Hz}fo=108 Hz,故障发生时,包络谱中108Hz及其2倍、3倍频处会出现显著峰值。

1.2 模拟数据生成(Python)

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import hilbert, welch, spectral_kurtosis, butter, filtfilt

# 采样参数(满足奈奎斯特定理)
Fs = 20000  # 采样频率20kHz
T = 1       # 采样时长1s
N = int(Fs * T)
t = np.linspace(0, T, N, endpoint=False)

# 设备参数
fr = 30     # 轴旋转频率30Hz
fo = 108    # 外圈故障特征频率108Hz
res_freq = 3000  # 轴承固有共振频率3kHz

# 1. 正常轴承信号:旋转频率谐波+高斯白噪声
x_normal = 0.1 * np.sin(2 * np.pi * fr * t) + 0.05 * np.sin(2 * np.pi * 2*fr * t)
x_normal += np.random.normal(0, 0.03, N)

# 2. 外圈点蚀故障信号:高频共振载波+故障频率调制+噪声
# 生成周期性故障冲击调制信号
modulate_signal = 1 + 0.8 * np.exp(-1000 * (t % (1/fo))) * np.sin(2 * np.pi * fo * (t % (1/fo)))
# 高频共振载波被故障冲击调制
carrier_signal = modulate_signal * np.sin(2 * np.pi * res_freq * t)
# 故障信号=载波+正常信号+噪声
x_fault = carrier_signal + x_normal + np.random.normal(0, 0.05, N)

1.3 频域特征提取与结果分析

处理步骤(工业标准共振解调流程)
  1. 计算信号的谱峭度,定位峭度峰值对应的3kHz共振频带;
  2. 对该频带做带通滤波,过滤无关噪声;
  3. 对滤波后的信号做希尔伯特变换,取模得到信号包络;
  4. 对包络去直流后做FFT,得到包络谱。
核心结果对比
信号类型 功率谱核心特征 包络谱核心特征
正常信号 仅30Hz、60Hz旋转频率处有小幅峰值,3kHz共振频带无明显峰值 全频段无显著峰值,108Hz处幅值接近0
故障信号 3kHz共振频带出现大幅峰值,108Hz低频处无可见峰值 108Hz(基频)、216Hz(2倍频)、324Hz(3倍频)处出现极高幅值峰值,远超噪声水平

1.4 诊断逻辑

  1. 故障判定:故障信号的包络谱中,理论故障特征频率108Hz及其倍频处出现显著峰值,正常信号无该特征,直接判定轴承外圈存在故障;
  2. 早期故障识别:即使故障冲击幅值极低、被强噪声掩盖,包络解调仍能精准提取故障特征频率,实现早期故障预警;
  3. 抗干扰验证:只有周期性故障才会出现基频+倍频的组合峰值,可排除随机噪声、工况波动的干扰,避免误报。

实例2:齿轮箱齿面均匀磨损与轮齿断齿故障诊断(功率谱+谱峭度应用)

2.1 场景说明

齿轮箱是工业传动系统的核心,齿面均匀磨损、轮齿断齿是两类典型故障,二者的频域特征差异显著,可通过功率谱+谱峭度精准区分。

  • 故障机理:
    1. 正常齿轮:频谱能量集中在啮合频率 fz=Z⋅frf_z=Z \cdot f_rfz=Z⋅fr 及其倍频,无明显边频带;
    2. 均匀磨损:齿面全齿宽磨损导致啮合刚度整体下降,啮合频率及其倍频的幅值显著上升,无明显边频带;
    3. 轮齿断齿:断齿位置每转啮合一次,产生周期性冲击,对啮合频率形成幅值调制,频谱中会出现以啮合频率为中心、旋转频率为间隔的边频带,是断齿故障的核心标志。
  • 理论特征频率计算:
    小齿轮齿数 Z=20Z=20Z=20,转速900转/分,旋转频率 fr=15 Hzf_r=15\ \text{Hz}fr=15 Hz,啮合频率 fz=20×15=300 Hzf_z=20 \times 15=300\ \text{Hz}fz=20×15=300 Hz,断齿故障的边频带为 fz±n⋅frf_z \pm n \cdot f_rfz±n⋅fr(n=1,2,3...n=1,2,3...n=1,2,3...),即285Hz、315Hz、270Hz、330Hz等。

2.2 模拟数据生成(Python)

python 复制代码
# 采样参数
Fs = 10000  # 采样频率10kHz
T = 1
N = int(Fs * T)
t = np.linspace(0, T, N, endpoint=False)

# 齿轮参数
fr = 15     # 旋转频率15Hz
fz = 300    # 啮合频率300Hz

# 1. 正常齿轮信号:啮合频率及其倍频+高斯噪声
x_normal = 0.3 * np.sin(2 * np.pi * fz * t) + 0.15 * np.sin(2 * np.pi * 2*fz * t) + 0.05 * np.sin(2 * np.pi * 3*fz * t)
x_normal += np.random.normal(0, 0.04, N)

# 2. 均匀磨损故障信号:啮合频率倍频幅值整体大幅上升,无调制
x_wear = 0.8 * np.sin(2 * np.pi * fz * t) + 0.5 * np.sin(2 * np.pi * 2*fz * t) + 0.2 * np.sin(2 * np.pi * 3*fz * t)
x_wear += np.random.normal(0, 0.06, N)

# 3. 轮齿断齿故障信号:啮合频率被旋转频率调制,产生边频带
# 调制信号(每转一次冲击)
modulate_signal = 1 + 0.6 * np.sin(2 * np.pi * fr * t)
# 被调制的啮合频率谐波
x_break = modulate_signal * (0.4 * np.sin(2 * np.pi * fz * t) + 0.2 * np.sin(2 * np.pi * 2*fz * t))
x_break += x_normal + np.random.normal(0, 0.05, N)

2.3 频域特征提取与结果分析

处理步骤
  1. 对三类信号做FFT,通过Welch法计算功率谱,提取频率-幅值特征;
  2. 计算谱峭度,定位断齿故障冲击对应的共振频带,带通滤波后再次计算功率谱,提升边频带信噪比。
核心结果对比
信号类型 功率谱核心特征 谱峭度辅助诊断结果
正常信号 300Hz、600Hz、900Hz啮合频率处有稳定小幅峰值,无明显边频带 全频段峭度值接近3,无显著峰值,信号无冲击特性
均匀磨损信号 300Hz、600Hz、900Hz啮合频率幅值较正常状态上升2-5倍,无明显边频带 全频段峭度值仍接近3,无冲击特性,仅整体能量上升
断齿故障信号 300Hz、600Hz啮合频率幅值上升,且出现285Hz、315Hz、270Hz、330Hz等边频带,强噪声下边频带易被淹没 2500Hz共振频带峭度值飙升至12,滤波后功率谱的边频带清晰可见,断齿特征显著

2.4 诊断逻辑

  1. 正常/异常区分:磨损与断齿信号的啮合频率幅值均显著超出正常阈值,判定为异常状态;
  2. 故障类型精准区分
    • 均匀磨损:仅啮合频率幅值上升,无明显边频带,谱峭度无异常,判定为平稳性均匀磨损故障
    • 轮齿断齿:啮合频率幅值上升,且伴随旋转频率间隔的边频带,谱峭度显著升高,判定为冲击性断齿故障
  3. 强噪声适配:谱峭度可精准定位故障冲击的共振频带,过滤噪声后大幅提升边频带的识别率,实现早期断齿故障的精准诊断。

实例3:三相异步电机转子断条故障诊断(功率谱边频分析)

3.1 场景说明

转子断条是三相异步电机最常见的电气故障,占电机故障总量的30%以上,采用电机电流信号分析法(MCSA),通过FFT功率谱的边频带分析可实现无损、精准诊断。

  • 故障机理:正常电机转子磁场对称,定子电流频谱仅以电网基频50Hz为核心;转子断条会导致转子磁场不对称,产生转差频率的反向旋转磁场,在定子电流中形成频率调制,频谱中会出现以基频为中心、2倍转差频率为间隔的边频带。
  • 理论故障特征频率计算:
    电网基频 fs=50 Hzf_s=50\ \text{Hz}fs=50 Hz,4极电机同步转速 n1=1500 转/分n_1=1500\ \text{转/分}n1=1500 转/分,额定转速 n=1470 转/分n=1470\ \text{转/分}n=1470 转/分,转差率 s=n1−nn1=0.02s=\frac{n_1-n}{n_1}=0.02s=n1n1−n=0.02。
    故障边频特征频率 fb=fs⋅(1±2ks)f_b = f_s \cdot (1 \pm 2ks)fb=fs⋅(1±2ks)(k=1,2,3...k=1,2,3...k=1,2,3...),计算得核心边频为 48 Hz48\ \text{Hz}48 Hz 和 52 Hz52\ \text{Hz}52 Hz,故障发生时,这两个频率处会出现显著峰值。

3.2 模拟数据生成(Python)

python 复制代码
# 采样参数
Fs = 1000   # 电流信号采样频率1kHz(满足50Hz基频的采样要求)
T = 2       # 采样时长2s,提升频率分辨率,避免边频带与基频混叠
N = int(Fs * T)
t = np.linspace(0, T, N, endpoint=False)

# 电机参数
fs = 50     # 电网基频50Hz
s = 0.02    # 转差率0.02
fb1 = fs * (1 - 2*s)  # 48Hz
fb2 = fs * (1 + 2*s)  # 52Hz

# 1. 正常电机定子电流信号:50Hz基频+少量3/5次谐波+高斯噪声
x_normal = 5 * np.sin(2 * np.pi * fs * t) + 0.2 * np.sin(2 * np.pi * 3*fs * t) + 0.1 * np.sin(2 * np.pi * 5*fs * t)
x_normal += np.random.normal(0, 0.05, N)

# 2. 转子断条故障电流信号:基频叠加故障边频分量+谐波+噪声
x_fault = 5 * np.sin(2 * np.pi * fs * t) + 0.4 * np.sin(2 * np.pi * fb1 * t) + 0.4 * np.sin(2 * np.pi * fb2 * t)
x_fault += 0.25 * np.sin(2 * np.pi * 3*fs * t) + 0.15 * np.sin(2 * np.pi * 5*fs * t)
x_fault += np.random.normal(0, 0.06, N)

3.3 频域特征提取与结果分析

处理步骤
  1. 对电流信号去直流、加汉宁窗(减少频谱泄漏);
  2. 通过FFT计算功率谱,频率分辨率 Fres=Fs/N=0.5 HzF_{res}=Fs/N=0.5\ \text{Hz}Fres=Fs/N=0.5 Hz,可清晰分辨48Hz、50Hz、52Hz三个频率分量;
  3. 对比正常与故障信号在48Hz、52Hz处的幅值变化。
核心结果对比
信号类型 功率谱核心特征 关键幅值对比
正常信号 50Hz基频处有极高幅值峰值,3/5次谐波有小幅峰值,48Hz、52Hz处幅值接近噪声水平 50Hz基频幅值5.0,48Hz/52Hz幅值<0.05,边频与基频幅值比<1%
断条故障信号 50Hz基频峰值稳定,48Hz、52Hz处出现显著的边频峰值,伴随96Hz、104Hz等高次边频 50Hz基频幅值5.0,48Hz/52Hz幅值>0.4,边频与基频幅值比>8%,远超正常阈值

3.4 诊断逻辑

  1. 故障判定:故障信号的功率谱中,理论故障边频48Hz、52Hz处出现显著峰值,边频与基频幅值比远超工业通用阈值(2%),直接判定电机转子存在断条故障;
  2. 故障严重程度评估:边频与基频的幅值比越大,说明断条数量越多、故障越严重,可通过该比值量化故障等级;
  3. 工业适配性:该方法无需拆机,仅通过采集电机定子电流即可实现无损诊断,广泛应用于风机、水泵、压缩机等电机的在线监测与离线巡检。

二、核心总结与工业应用注意事项

1. 三大频域特征的适用场景选型

故障类型 首选频域特征 辅助特征
轴承冲击故障、齿轮断齿 包络谱 谱峭度
不平衡、不对中、齿轮均匀磨损 功率谱 谱峭度
电机电气故障(转子断条、气隙偏心) 功率谱(边频分析) 包络谱
强噪声下早期微弱故障 谱峭度+包络谱 功率谱

2. 工业应用关键注意事项

  1. 采样参数合规:采样频率必须满足奈奎斯特定理,建议为最高关注频率的2.56~4倍;采样时长足够长,保证频率分辨率能区分相邻的边频带,避免频谱混叠与泄漏;
  2. 窗函数选择:FFT前建议加汉宁窗、汉明窗,减少频谱泄漏;冲击信号可加矩形窗,保留峰值特征;
  3. 多特征交叉验证:单一频率峰值易受噪声干扰,需结合基频+倍频+边频带的组合特征验证,提升诊断准确率;
  4. 工况适配:变工况场景下,需对转速、负载做归一化处理,避免工况波动导致的频率偏移与幅值变化误判。
相关推荐
宇擎智脑科技2 小时前
OpenClaw:开源多渠道AI个人助手的技术架构与实践分析
人工智能·智能体
石去皿2 小时前
数据结构与算法面试核心考点精要
java·算法·面试
码农小韩2 小时前
AIAgent应用开发——DeepSeek分析(一)
人工智能·python·深度学习·agent·强化学习
今儿敲了吗2 小时前
18| 差分数组
c++·笔记·学习·算法
【赫兹威客】浩哥2 小时前
半导体芯片缺陷检测数据集分享及多版本YOLO模型训练验证
人工智能·计算机视觉·目标跟踪
硅基流动2 小时前
硅基流动 × Open Course:更懂你的个性化智能学伴
人工智能
Bear on Toilet2 小时前
BFS_FloodFill_46 . 腐烂的橘子问题
数据结构·c++·算法·leetcode·宽度优先
大模型玩家七七2 小时前
关系记忆不是越完整越好:chunk size 的隐性代价
java·前端·数据库·人工智能·深度学习·算法·oracle
Elastic 中国社区官方博客2 小时前
Elasticsearch:使用 Workflow 查询天气,发送消息到 Slack
大数据·运维·人工智能·elasticsearch·搜索引擎·ai