轴承作为工业设备中最常见的旋转部件之一,其运行状态直接影响整个机械系统的可靠性。根据行业统计,约40%-50%的旋转机械故障源于轴承失效。传统的轴承故障诊断方法主要依赖振动信号分析和专家经验判断,存在以下几个关键问题:
特征提取依赖人工经验:传统方法需要工程师手动提取时域特征(如峰值、峭度)和频域特征(如FFT谱分析),不仅效率低下,而且难以捕捉复杂工况下的微弱故障特征。
浅层模型泛化能力有限:常用的支持向量机(SVM)、随机森林等浅层学习算法对特征工程的依赖性高,在面对不同设备、不同工况时表现不稳定。
时序信息利用不足:轴承振动信号本质上是非平稳时间序列,传统方法往往忽视信号中的长期依赖关系,导致早期故障预警能力不足。
西储大学(CWRU)轴承数据集作为行业公认的基准数据,提供了标准化的实验环境和丰富的故障类型,包括内圈、外圈、滚动体故障以及不同损伤尺寸(0.007-0.021英寸),为算法验证提供了可靠基础。
VMD作为一种自适应信号分解方法,相比传统的EMD(经验模态分解)具有更严格的数学基础和更好的抗模态混叠能力。其核心优化方程为:
code复制min{uk},{ωk}{∑k‖∂t[(δ(t)+jπt)*uk(t)]e-jωkt‖22}
s.t. ∑kuk = f
其中uk是第k个模态函数,ωk是中心频率。在实际应用中,我们采用改进的麻雀优化算法(SSA)来自动确定两个关键参数:
实践发现,对于12kHz采样的轴承信号,K=5-8时能有效分离故障特征,同时避免过分解。每个IMF分量需要通过峭度-相关系数双重筛选,保留峭度>3且相关系数>0.2的分量。
针对振动信号的特点,我们设计了一个多尺度1D-CNN架构:
python复制# 示例CNN结构(Matlab实现)
layers = [
sequenceInputLayer(1) # 单通道振动信号输入
% 第一卷积块
convolution1dLayer(64, 16, 'Padding', 'same')
batchNormalizationLayer()
reluLayer()
maxPooling1dLayer(2, 'Stride', 2)
% 多尺度Inception模块
inceptionModule1d(32, [16 32], 'MaxPooling', true)
% 注意力机制
squeezeExcitationLayer(64)
fullyConnectedLayer(128)
softmaxLayer()
classificationLayer()
];
关键设计要点:
code复制w = σ(MLP(AvgPool(F)))
F' = w ⊗ F
双向LSTM通过正向和反向两个方向的时序处理,全面捕捉故障特征的演化规律。其门控机制计算如下:
code复制遗忘门:ft = σ(Wf·[ht-1, xt] + bf)
输入门:it = σ(Wi·[ht-1, xt] + bi)
候选记忆:C̃t = tanh(WC·[ht-1, xt] + bC)
记忆更新:Ct = ft*Ct-1 + it*C̃t
输出门:ot = σ(Wo·[ht-1, xt] + bo)
输出:ht = ot*tanh(Ct)
在Matlab中的实现关键参数:
matlab复制numHiddenUnits = 128; % 隐藏层神经元数
maxEpochs = 100; % 训练轮次
miniBatchSize = 64; % 批大小
biLSTMLayer = bilstmLayer(numHiddenUnits, ...
'OutputMode', 'sequence', ...
'InputWeightsInitializer', 'glorot');
我们采用驱动端加速度计数据,具体配置如下表:
| 参数 | 设置值 | 说明 |
|---|---|---|
| 采样频率 | 12 kHz | 保留0-6 kHz有效频段 |
| 故障类型 | 内圈/外圈/滚动体/正常 | 每种故障3种损伤尺寸 |
| 负载条件 | 0/1/2/3 hp | 对应转速1720-1797 RPM |
| 数据划分 | 7:2:1 | 训练集:验证集:测试集比例 |
数据预处理流程:
训练参数:
硬件配置:
模型在四种工况下的分类准确率:
| 模型类型 | 0 hp | 1 hp | 2 hp | 3 hp | 平均 |
|---|---|---|---|---|---|
| CNN-LSTM | 97.2% | 96.8% | 97.5% | 96.3% | 96.95% |
| CNN-BiLSTM | 98.1% | 97.9% | 98.4% | 97.6% | 98.00% |
| VMD-CNN-LSTM | 99.2% | 98.7% | 99.0% | 98.5% | 98.85% |
| VMD-CNN-BiLSTM | 99.8% | 99.5% | 99.6% | 99.3% | 99.55% |
噪声鲁棒性测试(添加高斯白噪声):
| 信噪比(dB) | VMD-CNN-BiLSTM | 传统SVM |
|---|---|---|
| 10 | 99.1% | 85.3% |
| 5 | 98.3% | 72.6% |
| 0 | 96.7% | 58.1% |
| -5 | 93.2% | 42.5% |
模态数K的选择:
matlab复制for K=3:10
[u, ~] = vmd(signal, 'NumIMFs', K);
entropy(K-2) = mean(calcEnvelopeEntropy(u));
end
optimalK = find(entropy==min(entropy)) + 2;
惩罚因子α的影响:
梯度爆炸:
'GradientThreshold', 1过拟合:
序列长度选择:
隐藏单元数量:
matlab复制units = [64 128 256];
for i = 1:length(units)
net = trainBiLSTM(units(i));
acc(i) = evaluate(net);
end
实时诊断系统部署:
故障严重度评估:
code复制HI = 1 - ∑(wi * pi) # wi为故障类型权重,pi为预测概率
维护决策支持: