资讯动态

随机共振与粒子群优化:滚动轴承早期故障诊断新思路

发布时间:2026/10/22 5:19:23 来源:尧图企业网站定制
做滚动轴承故障诊断的同行恐怕都经历过这种时刻现场采回来的振动数据波形很“干净”频谱放大几倍之后在噪声底板上隐约有一座小凸起包络谱算了一整轮勉强能看到一个峰幅度和旁边的干扰峰差不多根本不敢下判断。结果轴承拆下来一看滚道上已经有初期点蚀。早期故障就是这样信号藏在噪声下面常规去噪手段又常常把微弱的冲击成分当成噪声一起滤掉。我这次想认真聊的是另一条思路——用随机共振放大微弱周期信号再用粒子群算法自动匹配共振参数形成一套“从采集到判读”可复现的轴承早期故障诊断链路。这篇文章适合正在做设备状态监测、预测性维护尤其是被低信噪比故障信号折磨过的工程师。1. 随机共振的核心价值为什么传统降噪思路救不了早期轴承故障1.1 传统滤波降噪思路的局限早期轴承故障产生的振动信号本质上是一串微弱的周期性冲击叠加在宽频噪声里而且冲击幅值小到和噪声均方根基本同量级。传统诊断流程通常是“先降噪、再解调、再找特征频率”比如低通滤波、小波阈值、谱减法。这些方法的共同点是把噪声当作敌人拼命压制。问题在于当信号信噪比低到一定程度时冲击成分和噪声在频域上混叠在一起任何线性滤波都会在压低噪声的同时削弱冲击。小波阈值法更麻烦阈值设高了把故障冲击一并抹掉阈值设低了噪声还在属于两头为难。还有一个现场常见坑利用多次同步平均来提升信噪比需要数据长度足够长、转速足够稳定但实际设备经常处于变载变速状态平均次数一多反而把信号磨平了。所以早期故障诊断真正要解决的不是“把噪声滤多干净”而是“在噪声存在的前提下把周期特征尽量凸显出来”。1.2 随机共振的“借力打力”原理随机共振是一种完全反直觉的信号处理方法。传统思路是滤掉噪声它却反着来——在合适的系统参数下噪声能量会向周期信号转移让原本淹没在噪声里的微弱谱线明显抬升。工程里最常用的是双稳态系统用朗之万方程描述[ \frac{dx}{dt} -\frac{dU(x)}{dx} s(t) n(t) ]其中势函数为[ U(x) -\frac{a}{2}x^2 \frac{b}{4}x^4 ]这个系统有两个稳定点中间隔着一个势垒势垒高度是 a²/(4b)。输入是微弱周期信号 s(t) 加上噪声 n(t)。如果我没法用一个特别贴切的比喻这就像一个人坐在秋千上微弱的风根本推不动秋千但旁边有人随机地偶尔推一把反而能借着这股劲把秋千荡起来。噪声在这里扮演的就是那个“随机推一把的人”。要让随机共振真正发挥作用需要满足一个匹配条件噪声强度、信号周期、势垒高度这几者要大体协调。工程上叫Kramers跃迁速率说白了就是系统在两个稳态之间翻转的速率要和被检测信号的周期接近。只有到这个状态微弱周期信号才会在输出频谱里形成明显的线谱。1.3 参数敏感性是随机共振落地的最大障碍随机共振的原理并不复杂复杂的是参数怎么定。系统参数 a、b 直接决定势阱形状噪声强度 D 来自现场采集信号信号频率和幅值又随工况变化。这些量凑在一起一个不匹配输出信噪比就哗啦一下掉下来甚至比原始信号还差。早期做这个方向的人很多是靠经验一点点试参数先固定 a1、b1看输出不对再调 b再改步长反反复复。如果只处理一两段数据还能忍要批量处理几十个测点手调参数完全不现实。所以真正的工程化落地必须把参数寻优这件事交给算法自动完成。这也正是粒子群优化算法在这个场景里存在的理由。2. 整体诊断链路与粒子群参数寻优方案设计2.1 从原始振动到故障指标的完整处理链路这套方法不是单纯“把数据喂给随机共振就行”前面和后面都有关键环节。我实际搭起来的处理链路大致是下面这样采集振动加速度信号 → 转频同步 → 带通滤波截取共振带 → 希尔伯特包络解调 → 归一化与变尺度处理 → 粒子群优化随机共振参数 → 对输出做谱分析 → 对照故障特征频率判读每个环节有明确的目的。带通滤波是为了跳出低频干扰专门提取轴承故障冲击激起的结构共振频带包络解调是把高频冲击调制成低频包络信号方便后续做随机共振归一化是为了让输入幅值和噪声强度处在同一合理量级否则粒子群算法搜索参数时很容易迷路变尺度处理则是把包络信号的时间轴拉伸让故障特征频率落入双稳系统比较灵敏的低频段。这种链路设计里带通滤波和包络解调不是可有可无的。直接拿原始振动信号做随机共振效果通常很差因为高频共振成分和小参数随机共振系统不匹配。先解调成包络信号故障特征频率就从几千赫兹降到了几赫兹到几百赫兹这才能体现随机共振的优势。2.2 为什么选粒子群算法而不是网格搜索或遗传算法参数寻优本质上是一个三维连续优化问题变量就是 a、b 和变尺度倍率 R顶多加一个噪声强度相关的处理系数。网格搜索在这个问题上效率太低如果每个维度取50个点组合起来是12.5万次随机共振计算现场等不起。遗传算法能做但编码、交叉、变异操作相对繁琐调参成本高。粒子群算法的优势是朴素直接每个粒子代表一组候选参数在解空间里飞通过个体历史最优和群体历史最优不断更新速度几行代码就能实现而且对连续变量优化很友好。它不依赖梯度信息随机共振的输出适应度函数是个非光滑、非凸的函数梯度法根本没法处理粒子群这种基于群体智能的搜索方式正好匹配。在我这套方案里粒子编码非常简单[ X [a, b, R] ]a 是双稳系统的线性恢复力系数b 是非线性系数R 是变尺度倍率。搜索范围按经验设定a 在 0.01 到 3 之间b 在 0.01 到 10 之间R 的取值取决于原始采样率比如 12800 赫兹采样时可以从 16 到 128 起步。这个范围不是拍脑袋定的太小会把最优解关在门外太大则会让搜索空间过于稀疏粒子很容易长时间找不到方向。2.3 适应度函数设计让优化目标贴近诊断结论粒子群算法要靠适应度函数来评判参数好坏这一步直接决定最终效果。我见过不少人直接把输出信号的信噪比当适应度结果诊断效果很差因为真实故障信号里“信号功率”到底怎么定义本身就是糊涂账。我的做法是围绕诊断结论来设计适应度函数根据轴承型号和转速先算出某个候选故障特征频率 fc然后在随机共振输出信号的包络谱里取 fc 附近一个频率窗口内的最大谱峰幅值 A_peak再取这个窗口之外邻近频带的平均幅值 A_base适应度就定义为两者之比[ F \frac{A_{peak}}{A_{base}} ]粒子群算法要做的就是最大化这个比值。这样做的好处是目标函数直接对应“故障特征频率相对噪声突出多少”和现场工程师关心的指标完全一致。实际操作中还有另一种更简单的替代方案直接取包络谱全频带最大峰值除以全频带均值。但在真实设备上这个做法很容易被转频干扰、齿轮啮合频率干扰骗走所以只要算得出候选故障特征频率我更建议用窗口比值。适应度方式计算复杂度抗干扰能力适用场景全局峰/全局均值低较弱转频易抢占峰位陌生设备快速初筛候选频率窗口峰/邻域均值中强定向查故障已具备轴承参数和转速的常规巡检3. 从数据采集到谱线判读完整实操流程与参数设置3.1 数据准备转频、故障特征频率估算与候选频带拿到数据的第一步不是直接跑随机共振而是先算清楚“我要找的故障特征频率大概是多少”。滚动轴承的故障特征频率不是随便定的它由转速、滚子个数、接触角等共同决定。工程上常用的近似公式如下外圈故障频率[ BPFO \frac{n \cdot f_r}{2} (1 - \frac{d}{D} \cos\alpha) ]内圈故障频率[ BPFI \frac{n \cdot f_r}{2} (1 \frac{d}{D} \cos\alpha) ]滚动体故障频率[ BSF \frac{D \cdot f_r}{2d} [1 - (\frac{d}{D}\cos\alpha)^2] ]其中 n 是滚子个数fr 是转速频率d 是滚子直径D 是节圆直径α 是接触角。现场没有详细的轴承尺寸时也可以按经验系数近似计算比如常见深沟球轴承的外圈故障特征频率大约是 3 到 5 倍的转频内圈大约是 5 到 7 倍。我做过的一个典型案例是某工业现场离心泵驱动端轴承转速 29.8 赫兹滚子数 8初步估算外圈故障频率在 89 赫兹附近。采集加速度信号时采样率定在 12800 赫兹采样时长 16 秒这样可以覆盖足够多的故障周期。数据采集时一定要同步记录转速后面算特征频率全靠这个转速都记不准的话后面的谱峰再漂亮也是空中楼阁。3.2 三步预处理带通滤波、包络解调、归一化处理链路里最影响成败的通常不是随机共振本身而是它的前序预处理这块我用固定套路。第一步是带通滤波。轴承故障冲击会激起轴承座或端盖的高频共振把这个共振频带找出来很关键。先对原始信号做一次快速傅里叶变换看高频段哪个位置有明显“鼓包”那就是共振带。我以前在处理某组数据时共振带大致出现在 2800 到 3400 赫兹于是用带通滤波器把这段截出来这样可以把低频振动、工频干扰和部分随机噪声挡在外面。第二步是希尔伯特包络解调。对带通滤波后的信号做希尔伯特变换取模得到包络波形。这一步的目的是把高频冲击调制成低频的冲击包络序列。做完这一步故障特征频率就从数千赫兹的共振区域还原到几十到几百赫兹的低频范围内。第三步是归一化。把包络信号减去均值再除以标准差让信号幅值大致落在 -2 到 2 之间。这一步容易被人忽略但非常重要。随机共振系统对输入幅值敏感信号太大太小都会让势阱匹配失败。我在第一次跑通整个流程时跳过归一化结果粒子群算法迭代了八十多轮适应度值始终上不去后来检查才发现是输入信号幅值差了好几个数量级。3.3 粒子群寻优过程与关键参数设置预处理完成后数据就可以交给粒子群优化随机共振模块了。整个寻优过程的伪代码如下初始化种群每个粒子包含参数 [a, b, R] 评估每个粒子 用当前参数对归一化包络信号执行随机共振求解 对输出信号做FFT得到包络谱 计算候选故障频率处的适应度F 更新个体历史最优pbest和全局最优gbest 循环 更新粒子速度 v w*v c1*r1*(pbest-x) c2*r2*(gbest-x) 更新粒子位置 x x v 边界约束处理越界则拉回边界并反转速度分量 重新评估所有粒子 检查终止条件达到最大迭代次数或者gbest连续10代无提升粒子群参数我的习惯设置如下参数推荐值说明种群规模40三维问题40个粒子足够再大会增加计算量最大迭代次数80或按连续无提升次数提前终止惯性权重 w0.9 线性递减至 0.4前期全局搜索后期局部精细寻优加速常数 c11.5控制向个体历史最优趋近加速常数 c21.5控制向群体历史最优趋近速度上限边界范围的 20%防止粒子飞得太远或反复振荡这里有个细节需要注意惯性权重线性递减是很有效的工程手段。一开始让粒子飞得快、搜索范围大慢慢降速收敛到局部精细搜索。如果从头到尾都用同一个权重常见的问题就是前期陷入局部最优后面怎么都跳不出来。每轮迭代都要对每个粒子执行一次随机共振数值求解再算一次快速傅里叶变换所以计算量是线性累加的。我测试下来40个粒子、80次迭代在工控机上处理一段 8192 点的包络信号大概需要一两分钟现场巡检可以接受。如果数据长度更长可以把数据截短到包含 20 到 30 个故障周期的长度既保证谱分辨率又控制计算时间。随机共振数值求解用的是四阶龙格-库塔法时间步长设为 0.001 秒。这个步长不是固定的需要根据变尺度后的等效频率调整基本原则是每个信号周期至少要包含 20 个以上积分步否则数值误差会淹没随机共振效果。3.4 包络谱分析与故障判读粒子群算法迭代结束后用全局最优参数对原始包络信号再做一次随机共振计算得到最终输出信号对这个信号做快速傅里叶变换就得到可以判读的包络谱。在刚才提到的那组实测数据里处理前的原始包络谱在外圈故障频率 89 赫兹附近只有一个很矮的峰旁边噪声起伏非常大很难确认。用最优参数跑完随机共振后输出谱中 89 赫兹处出现了一个明显的主峰还伴随出现了两倍频、三倍频的谐波峰底噪被明显压低。这种“基频谐波”的谱线结构是轴承故障一个很有辨识度的标志。判读时要有耐心。不要只看一个候选频率最好把外圈、内圈、滚动体、保持架这几个特征频率都算出来一起对照。如果只在外圈频率处出峰外圈故障嫌疑最大如果内圈频率和转频一并出现边带内圈故障概率就高。我一般会在程序里同时计算四个候选频率的适应度比值谁高就先查谁。4. 踩坑实录信噪比恶化、早熟收敛与倍频干扰的排查清单4.1 随机共振输出反而变差先检查这三处我见过最多的失败情况就是跑完粒子群优化后输出信噪比比原始信号还差。出现这种问题不要急着怀疑算法先从三个环节排查。第一个环节是归一化。输入包络信号如果没有先减均值、再归一化信号直流分量会直接把随机共振系统推向某一个稳态整个输出几乎变成一条直线。这个必须排查。第二个环节是带通滤波。如果滤波中心频率选偏了包络信号里真正的故障调制信息很少后面做再多优化都是徒劳。我的习惯是先做一次原始包络谱找到共振峰集中的频带再回头设置带通滤波范围避免盲目选带。第三个环节是候选特征频率算错了。转频取值错误、轴承参数不准都会让适应度函数的窗口对准错误的位置粒子群寻优自然找不到正确方向。现场遇到输出异常我通常第一件事是重新核对转速和特征频率计算。4.2 粒子群早熟收敛目标函数太平坦是主因粒子群算法本身不是万能的早熟收敛的问题很常见。表现就是迭代不到二十代适应度就卡住不再提升所有粒子挤在解空间一个角落里。造成这个问题最常见的原因是目标函数存在大范围平坦区。比如候选频率窗口设置得太宽很多参数组合在适应度上相差不大群体缺乏指引很快就挤在一起。解决办法是把频率窗口收紧一般取候选频率的正负 0.5 倍故障特征带宽即可让目标函数有更明显的梯度。另一个有效手段是采用“两轮寻优”策略。第一轮用宽边界、粗算精度快速锁定最优解所在区域第二轮把边界收缩到第一轮最优解的附近用高精度再做一次寻优。实测下来总时间反而更少而且结果稳定很多。还可以在初始化时用对数均匀分布替代均匀分布让粒子在参数空间的分布更合理。4.3 输出谱出现大量倍频基频反而看不清随机共振系统本身有很强的非线性输出信号出现谐波是正常现象。但如果谐波分量强到盖过基频就需要处理一下。最常见的原因是信号幅值超出随机共振的小信号适用范围。输入信号太大系统在两个稳态之间翻转时会产生大量高次谐波。解决办法是把输入信号再缩小一些比如除以标准差后再乘一个 0.5 到 1 的系数让系统工作在更线性的区间。另外当设备转速有轻微波动时故障特征频率不是固定不变的谱峰会变宽甚至漂移。这种情况下适应度函数的窗口不能收得太窄要适当放宽。更彻底的解决办法是引入阶次跟踪把时间域信号变换到角度域让故障特征在阶次域里保持稳定这部分在后面扩展方向里再细说。4.4 单测点计算量过大怎么办粒子群优化加随机共振最大的工程障碍就是计算时间。40个粒子、80次迭代、每轮做一次数值积分串行计算在普通电脑上可能需要好几分钟。如果现场有几十个测点要批量分析这个速度不够用。我有几个实用经验。第一是单段数据长度不要贪长包含 20 到 30 个故障周期就够数据越长计算量越大但谱峰未必更清晰。第二是分两级寻优先粗后精迭代次数可以降到原来的一半。第三是用并行计算粒子群算法天然适合并行每个粒子的评估互不依赖把评估函数写成并行版本耗时能成倍下降。更进一步的思路是在设备状态基本稳定的情况下不必每次都做全量寻优。可以离线把典型工况下的最优参数存成一张系数表在线运行时直接查表使用参数只做一次随机共振计算和谱分析。这样单测点处理时间可以压缩到几秒以内勉强能满足在线巡检的要求。5. 落地体会与可扩展想法5.1 我实际用下来的几条建议这套方法最合适的切入点是“先跑通单故障类型再做多故障扩展”。我当初第一次完整跑通就是用一组外圈故障的现场数据做验证链路里每个环节的坑都踩了一遍。外圈故障的特征频率相对稳定信号也比较规律最适合作为验证对象。等外圈流程稳定了再去试内圈、滚动体故障这样一步一步来排查问题的范围会清晰很多。还有一条经验是在线报警阈值不能直接套用离线分析的结果。离线分析可以把适应度阈值定在一个理论值附近但现场设备转速波动、负载变化都会影响基线。我的做法是先在设备健康状态下采集几组数据算出适应度基线再结合轴承型号设定两级阈值第一级提示关注第二级建议检修。阈值需要积累数据慢慢修正不要一上来就希望它很准。5.2 变转速工况与进一步扩展的方向这套方法目前比较适合转速相对稳定的设备比如风机、泵、电机这类。遇到明显变转速工况我会先做角度域重采样把信号变换为等角度间隔序列再做随机共振。在这个域里故障特征不再是频率而是阶次数值是恒定的粒子群寻优的问题就变成了一个更稳定的阶次谱增强问题。另外如果怀疑同时存在多种故障不太建议用多目标适应度函数一次查完我发现那样容易互相干扰。更稳妥的做法是轮流切换候选故障频率每次只查一种最后把多次结果综合起来判断。多花一点时间但结果解释起来清晰可靠。如果有一天要把这套算法嵌入便携式仪器或边缘设备关键不是优化粒子群而是把参数寻优离线化。在线端只保留随机共振求解和包络谱计算输入是离线生成的系数表。通过这种方式既能保留随机共振对微弱信号的处理能力又能把计算负载压到很小。这种“离线寻优、在线查表”的架构是我比较推荐的低成本落地路径。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑