
旋转机械的故障诊断是预测性维护里最经典的活——也是最容易让新手翻车的活。2024年那会儿我带团队给一家煤化工企业做旋转设备在线监测。第一版方案贪大求全想用一套LSTM搞定所有设备。结果上线一个月效果惨不忍睹——离心泵的轴承故障完全识别不出来。后来复盘才发现问题在哪旋转设备里轴承、齿轮箱、电机的故障机理完全不同强行用一套模型建模等于逼一个中医同时看心脏病、骨科和妇科。后来我们老老实实做分层建模按部件—故障机理—信号特征—模型四步走效果直接拉满。今天把这套思路分享出来。轴承故障包络分析是基本功轴承是旋转设备里最容易出问题的部件——我经手的项目里超过60%的故障都是轴承相关。轴承故障的信号特征非常明确内圈、外圈、滚动体、保持架四个部件各有一个通过频率叫BPFO外圈、BPFI内圈、BSF滚动体、FTF保持架。比如某6205-2RS轴承转速1480rpm外圈故障频率大约是95Hz左右内圈在155Hz左右。光看时域和FFT是看不出这些频率的因为它们被振动噪声淹没了。真正管用的是包络谱分析——先带通滤波中心频率是共振频率再做Hilbert变换提取包络最后FFT。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], btypeband) filtered bfilter(b, a, signal) # Hilbert 取包络 analytic hilbert(filtered) envelope np.abs(analytic) # 去直流 envelope envelope - np.mean(envelope) # FFT freqs rfftfreq(len(envelope), d1/fs) amp np.abs(rfft(envelope)) return freqs, amp # 实战某电机轴承共振频率约 1800Hz带宽 ±500Hz freqs, amp envelope_spectrum(vib_signal, fs25600, fc1800, bw1000) # 找包络谱里的峰值如果BPFI155Hz处明显 → 内圈故障踩坑提醒fc共振频率怎么选一般用小锤敲击法测出轴承座的共振频率或者用加速度传感器自带的TEDS数据估算。我们踩过最狠的坑——把fc选成了电机供电频率50Hz结果包络出来全是供电谐波压根看不到轴承故障。轴承故障的建模我个人偏好两阶段法先用包络谱做是否故障的二分类判别特征就是包络谱峰值处的BPFO/BPFI幅值比再用XGBoost或LightGBM做故障严重度分级轻度/中度/重度。齿轮箱故障边频带是关键齿轮箱比轴承复杂得多——有啮合频率GMF还有故障引发的边频带。举个真实例子某1.5MW风电齿轮箱输入转速1480rpm齿轮齿数比5.13啮合频率GMF ≈ 1480/60 × 齿数 大约1156Hz。如果有一个齿轮有局部缺陷比如断齿啮合频率两侧会出现间隔为转频的边频带。诊断齿轮故障的关键就是找到啮合频率看它两侧有没有规则间隔的边频带。边频带的间隔和形态能告诉你缺陷在哪个齿轮上、严重到什么程度。齿轮箱故障建模比轴承难原因有三多级齿轮叠加一个齿轮箱通常有2-4级齿轮频谱叠加严重。变工况风电齿轮箱转速随风速变化频谱会漂移必须用阶次分析order analysis代替FFT。复合故障轴承和齿轮可能同时出问题特征互相干扰。所以齿轮箱故障我倾向于用阶次域的CNN。把时序信号先做阶次重采样把频率域映射到阶次域再用一维CNN提取特征。PyTorch 2.1搭起来很简单我们实测在CWRU齿轮箱数据集上准确率能到93%。电机故障别忘了定子电流分析电机故障往往被忽视但其实占比不小——绝缘老化、定子绕组匝间短路、转子断条、轴承电机里也有轴承。电机故障有个独门武器定子电流分析MCSA。电机定子电流里藏着大量转子状态信息而且不用装振动传感器直接从电控柜里取电流互感器信号就行。转子断条的特征是在供电频率50Hz两侧出现 ±2s × f1 的边频带s是转差率f1是供电频率。这种特征在振动信号里几乎没有在电流信号里却异常明显。# MCSA 简单示例从三相电流中找转子断条特征 # 假设电流采样率 10kHz电机极对数 p2供电频率 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几个基本频率搞清楚再上手建模。别急往下看——这套分层建模思路不需要一开始就有全套数据从轴承故障的包络分析开始一点一点扩到齿轮箱和电机是最稳的路径。一点碎碎念旋转设备诊断最大的坑是现场工况太复杂——负载波动、温度漂移、润滑状态变化都会影响信号。我们现在的做法是建一个工况自适应模块根据转速、负载自动调整判别阈值。这块展开讲又是另一个大坑了下次再聊。