旋转设备故障诊断:轴承、齿轮箱、电机三类问题怎么分层建模

旋转机械的故障诊断是预测性维护里最"经典"的活------也是最容易让新手翻车的活。

2024年那会儿,我带团队给一家煤化工企业做旋转设备在线监测。第一版方案贪大求全,想用一套LSTM搞定所有设备。结果上线一个月,效果惨不忍睹------离心泵的轴承故障完全识别不出来。

后来复盘才发现问题在哪:旋转设备里轴承、齿轮箱、电机的故障机理完全不同,强行用一套模型建模,等于逼一个中医同时看心脏病、骨科和妇科。

后来我们老老实实做分层建模,按"部件---故障机理---信号特征---模型"四步走,效果直接拉满。今天把这套思路分享出来。

轴承故障:包络分析是基本功

轴承是旋转设备里最容易出问题的部件------我经手的项目里,超过60%的故障都是轴承相关。

轴承故障的信号特征非常明确:内圈、外圈、滚动体、保持架四个部件各有一个"通过频率",叫BPFO(外圈)、BPFI(内圈)、BSF(滚动体)、FTF(保持架)。比如某6205-2RS轴承,转速1480rpm,外圈故障频率大约是95Hz左右,内圈在155Hz左右。

光看时域和FFT是看不出这些频率的,因为它们被振动噪声淹没了。真正管用的是包络谱分析------先带通滤波(中心频率是共振频率),再做Hilbert变换提取包络,最后FFT。

python 复制代码
import numpy as np
from scipy.signal import butter as bfilter, hilbert
from scipy.fft import rfft, rfftfreq

def envelope_spectrum(signal, fs, fc, bw):
    """
    带通滤波 + Hilbert 包络 + FFT
    fc: 中心频率,bw: 带宽
    """
    # 带通滤波
    low = max(0.001, (fc - bw/2) / (fs/2))
    high = min(0.999, (fc + bw/2) / (fs/2))
    b, a = bfilter(4, [low, high], btype='band')
    filtered = bfilter(b, a, signal)

    # Hilbert 取包络
    analytic = hilbert(filtered)
    envelope = np.abs(analytic)

    # 去直流
    envelope = envelope - np.mean(envelope)

    # FFT
    freqs = rfftfreq(len(envelope), d=1/fs)
    amp = np.abs(rfft(envelope))
    return freqs, amp

# 实战:某电机轴承共振频率约 1800Hz,带宽 ±500Hz
freqs, amp = envelope_spectrum(vib_signal, fs=25600, fc=1800, bw=1000)

# 找包络谱里的峰值,如果BPFI=155Hz处明显 → 内圈故障

踩坑提醒:fc(共振频率)怎么选?一般用小锤敲击法测出轴承座的共振频率,或者用加速度传感器自带的TEDS数据估算。我们踩过最狠的坑------把fc选成了电机供电频率(50Hz),结果包络出来全是供电谐波,压根看不到轴承故障。

轴承故障的建模,我个人偏好两阶段法:先用包络谱做"是否故障"的二分类判别(特征就是包络谱峰值处的BPFO/BPFI幅值比),再用XGBoost或LightGBM做"故障严重度"分级(轻度/中度/重度)。

齿轮箱故障:边频带是关键

齿轮箱比轴承复杂得多------有啮合频率GMF,还有故障引发的边频带。

举个真实例子:某1.5MW风电齿轮箱,输入转速1480rpm,齿轮齿数比5.13,啮合频率GMF ≈ 1480/60 × 齿数 = 大约1156Hz。如果有一个齿轮有局部缺陷(比如断齿),啮合频率两侧会出现间隔为转频的边频带。

诊断齿轮故障的关键就是:找到啮合频率,看它两侧有没有规则间隔的边频带。 边频带的间隔和形态,能告诉你缺陷在哪个齿轮上、严重到什么程度。

齿轮箱故障建模比轴承难,原因有三:

  1. 多级齿轮叠加:一个齿轮箱通常有2-4级齿轮,频谱叠加严重。
  2. 变工况:风电齿轮箱转速随风速变化,频谱会"漂移",必须用阶次分析(order analysis)代替FFT。
  3. 复合故障:轴承和齿轮可能同时出问题,特征互相干扰。

所以齿轮箱故障,我倾向于用阶次域的CNN。把时序信号先做阶次重采样(把频率域映射到阶次域),再用一维CNN提取特征。PyTorch 2.1搭起来很简单,我们实测在CWRU齿轮箱数据集上准确率能到93%。

电机故障:别忘了定子电流分析

电机故障往往被忽视,但其实占比不小------绝缘老化、定子绕组匝间短路、转子断条、轴承(电机里也有轴承)。

电机故障有个独门武器:定子电流分析(MCSA)。电机定子电流里藏着大量转子状态信息,而且不用装振动传感器,直接从电控柜里取电流互感器信号就行。

转子断条的特征是:在供电频率(50Hz)两侧出现 ±2s × f1 的边频带(s是转差率,f1是供电频率)。这种特征在振动信号里几乎没有,在电流信号里却异常明显。

python 复制代码
# MCSA 简单示例:从三相电流中找转子断条特征
# 假设电流采样率 10kHz,电机极对数 p=2,供电频率 50Hz
slip = 0.03  # 转差率,从转速估算
f1 = 50
fault_freq = (1 - 2 * slip) * f1  # 47Hz附近

# 步骤:对电流做FFT,看 50±3Hz 范围内有没有峰值
# 如果左右边频对称且明显 → 转子断条

电机故障建模我一般分两类:定子类(匝间短路等)用电流频谱特征,转子类(断条等)用MCSA+振动融合。不要图省事只采集电流------温度和振动一起采,特征维度立刻丰富起来。

一个反对意见:分层建模就一定好吗?

分层建模有个潜在风险:模型边界难以划分。真实设备里,一个故障可能跨多个部件。比如轴承保持架断裂,可能连带齿轮箱异响,最后电机也异常。这种"链式故障"用分层建模处理起来很麻烦。

我们的解法是**"分层+兜底"**:分层模型给出初步诊断,再用一个总览模型(meta-learner)综合多个子模型的输出。效果不错,但复杂度上来了。

如果你团队人手有限、或者设备数量不大,别硬上分层------直接用一个大模型(比如LSTM)吃所有信号也未必不行。我们2024年那次翻车,本质原因是数据质量差(很多传感器没标定),不是分层建模本身的问题。

写在最后

旋转设备故障诊断这件事,做久了会有一种感觉:它不像AI,更像中医的"望闻问切"------每种故障都有它的"脉象",关键是识别和积累经验。

说点得罪人的话:很多同行上来就堆深度学习模型,效果不好就换更大的模型。但在我经手的项目里,特征工程的功夫到位了,XGBoost不输LSTM。先看懂频谱、看懂包络、看懂边频带,再谈深度学习。

如果你刚开始做旋转设备故障诊断,建议先把"BPFO/BPFI/GMF"几个基本频率搞清楚,再上手建模。别急,往下看------这套分层建模思路不需要一开始就有全套数据,从轴承故障的包络分析开始,一点一点扩到齿轮箱和电机,是最稳的路径。

一点碎碎念:旋转设备诊断最大的坑,是现场工况太复杂------负载波动、温度漂移、润滑状态变化都会影响信号。我们现在的做法是建一个"工况自适应"模块,根据转速、负载自动调整判别阈值。这块展开讲又是另一个大坑了,下次再聊。

相关推荐
zxsz_com_cn6 天前
预测性维护项目从0到1:立项、POC到规模化推广
项目管理·工业4.0·poc·预测性维护·规模化
zxsz_com_cn13 天前
预测性维护中的时序数据存储方案:TDengine vs InfluxDB
时序数据库·工业4.0·influxdb·tdengine·预测性维护
zxsz_com_cn13 天前
深度学习在剩余寿命预测(RUL)中的应用综述
深度学习·工业4.0·预测性维护·剩余寿命·rul
zxsz_com_cn21 天前
轨道交通预测性维护:走行部与弓网系统监测,从青岛动车检修厂的现场说起
工业4.0·预测性维护·轨道交通·行业应用·弓网·走行部
byte轻骑兵23 天前
告别手工调参!TimechoAI时序大模型实战:打通TimechoDB存储到智能时序分析全链路
时序数据库·预测性维护·timechodb·工业大数据·时序大模型·timechoai
zxsz_com_cn1 个月前
数字孪生+预测性维护:1+1>2的组合拳
数字孪生·工业4.0·仿真·预测性维护·虚拟调试
zxsz_com_cn1 个月前
石化行业预测性维护实战:泵和压缩机的状态监测
工业4.0·预测性维护·石化··压缩机
zxsz_com_cn2 个月前
为什么你的预测模型上线就翻车?聊聊模型漂移和在线学习
工业4.0·预测性维护·在线学习·模型监控·模型漂移
刘琦沛在进步2 个月前
螺纹紧固件,键,销,轴承的基本认识
·轴承·工程图学·标准件·螺纹紧固件·