☰
非下采样小波包精细滤波:轴承故障诊断与包络解调实战
2026/10/15 7:02:08 网站建设 项目流程

做故障诊断这几年,我发现自己和同行最常讨论的问题,不是“用哪个模型”,而是“信号到底该怎么滤”。轴承故障诊断尤其如此,早期故障的能量弱、背景噪声强,特征频率经常被埋在一堆杂波里。直到我把非下采样小波包精细滤波这套思路真正用起来,很多以前“看不出毛病”的数据才终于有了明确结论。这篇文章就围绕这套方法的技术特征展开,不堆公式,只讲清楚它解决了什么、怎么落地、又有哪些现场才踩得到的坑。

先说明一下:轴承故障诊断的核心不是“测到振动”,而是“从振动里认出故障”。传感器贴上轴承座之后,采集到的是一大段包含冲击、调制、齿轮啮合、随机噪声的混合信号。故障轴承的周期性冲击会激起结构共振,这个共振频带往往很高,直接看FFT频谱反而找不到规律。非下采样小波包精细滤波做的事,就是把信号拆成很多个窄频带,再从这些频带里挑出最“像”故障冲击的那一段,解调之后得到干净的包络谱。适合的人群也很明确:机械健康监测工程师、设备维护人员、做信号处理算法研究的同学,只要你跟振动数据打过交道,这篇文章应该用得上。

1. 轴承故障特征为什么总被“滤”丢:先弄清楚信号里有什么

1.1 现场采到的远不止“故障信号”本身

很多人第一次看轴承振动数据会愣一下:FFT频谱上乱七八糟,根本没有教科书里那种干干净净的谱线。这不是传感器装错了,而是现场信号本来就是这个样子。一个正常的机组振动信号里,至少包含这么几类成分:

  • 转轴转动带来的低频分量,比如转频以及它的2倍频、3倍频;
  • 齿轮啮合频率及其谐波,如果轴承安装在齿轮箱附近,这部分能量通常很强;
  • 滚动体在滚道上的随机滑动、润滑状态变化产生的宽带噪声;
  • 轴承故障激起的冲击成分,它表现为周期性撞击,但能量往往集中在结构共振频带,而不是我们习惯看的中低频段。

我做过一个现场案例,驱动端轴承外圈有点蚀时,直接在原始频谱里看,故障特征频率附近根本没有明显的尖峰,反而是一堆类似“平顶山”的宽带隆起。这种情况下如果直接硬调包络谱,得到的谱线也是浑的。

1.2 为什么直接FFT和普通包络分析会“看不见”故障

轴承故障冲击从激励到被传感器拾取,中间隔了一道“共振放大”。故障点每次接触都会激发轴承座、端盖等结构的高频固有振动,这个固有频率通常在几千赫兹甚至更高。传感器捕捉到的是高频衰减振荡,它的幅度被故障冲击率周期性调制。我们要找的故障特征频率,其实就是这个调制频率。

问题在于,直接对原始信号做FFT时,高频共振成分在频谱上表现为能量连续分布的大包络,包络内部没有离散谱线。你既看不到特征频率,也看不到它旁边任何可识别的间隔,因为特征频率是包络上的“调幅频率”,不是频谱里的“谱峰”。这就是为什么许多新手先做FFT,发现没有谱线就匆匆判断“轴承没问题”——实际上是方法用错了。

1.3 传统带通滤波器最早遇上的三个麻烦

既然要做包络解调,就必须先选一个频带让冲击通过、把无关噪声挡在外面。传统思路是带通滤波器,但现场用起来有三个很实际的问题:

  • 中心频率不知道。故障激起的共振频带不是固定的,不同轴承、不同安装位置、不同负载下,共振峰可能落在完全不同的频段。拿一台设备去调好的参数,换一台就不灵。
  • 带宽不好定。带宽太宽会把齿轮啮合谐波和宽带噪声一起放进来,包络谱变得一团糟;带宽太窄又会切掉冲击能量的一部分,导致解调幅度偏小。
  • 滤波器边缘效应。带通滤波的过渡带和振铃效应在处理瞬态冲击时会制造出额外毛刺,这些毛刺最后都会变成包络谱上的虚假谱线。

这些痛点直接推动了更精细的滤波方法进入故障诊断,也正是非下采样小波包这类工具能派上用场的起点。

2. 非下采样小波包到底改了什么,才配叫“精细滤波”

2.1 普通小波包的问题:下采样省了存储,也丢了稳定性

小波包变换可以理解成一个可调可拆的滤波器组。普通小波包在每一层做完低通/高通滤波之后,会做一次隔点下采样,也就是只保留一半采样点,目的是控制数据量。这个操作在信号压缩、去除高斯噪声方面挺好用,但对于“分析故障冲击”这件事,它有两个明显副作用。

第一个副作用是平移敏感性。把输入信号整体挪动几个采样点,下采样后的系数分布可能完全不同,这对需要精确定位冲击时刻和稳定提取包络谱的场景很不友好。第二个副作用是高频段的频带错位风险。由于下采样本身就相当于抽取,如果前级滤波器的阻带衰减不够,某些高频成分发生频谱混叠,会“折叠”到相邻的频带里。你用普通小波包做完细分的频带,看到的可能是混叠之后的结果,不是原始信号的真实成分。

2.2 非下采样小波包的技术特征:等长系数与平移不变

非下采样小波包在分解时把下采样步骤去掉,每一层的逼近分量和细节分量都保持和原始信号一样长的长度。代价是信息冗余变大,但换来三个很实在的特性:

  • 平移不变性:信号整体时移时,各子带的系数也会对应平移,不会出现系数全局重排的现象。这个性质对分析周期性冲击非常关键,因为冲击可能出现在帧内任意位置。
  • 频带划分更规则:每一层分解都把频带等分成2倍数量的子带。以25600Hz采样率为例,第5层每个子带宽度是400Hz,第6层是200Hz,能做到很细的频率切片,而不需要预先知道共振带的中心频率。
  • 无抽取带来的抗混叠:因为少了隔点采样这一步,高频子带不会因为抽取产生频率折叠。包络解调之后得到的就是真实频带里的调制信息,不会出现“频带对折”后伪造出的假峰。

从“精细滤波”的角度看,非下采样小波包本质上是一个冗余的、等宽的、平移不变的滤波器组,它允许你把信号任意切薄,然后放心地做希尔伯特解调。

2.3 和几种常见方案放在一起比较

处理方式频带划分精度平移不变性频带混叠风险计算开销适用场景
固定带通滤波依赖人工指定几乎无低低共振频带已知的成熟设备
普通小波包等宽,较细差中等,高频易折叠中离线分析、压缩场景
EMD/集合经验模态分解自适应,但模态混叠难控一般中高复杂非平稳信号探索
非下采样小波包等宽,可自由切到很细强低高微弱故障特征识别、共振频带未知场景

从表里能看出一条经验:如果现场已经知道故障大概共振在哪个频段,固定带通滤波完全够用;但如果面对的是“未知设备、未知故障、信噪比低”的诊断任务,非下采样小波包的冗余性反而变成了稳定性,这是它最大的价值。

2.4 为什么这套结构对“包络解调”格外友好

包络解调的本质是先滤波、再取包络、最后看包络频谱。如果滤波输出里混入高频毛刺或者相邻频带的泄漏能量,取完包络之后,这些干扰也会以复杂的调制形式出现在包络谱里。非下采样小波包的子带划分干净、且每个子带频率范围严格等宽,这让后级的包络谱呈现出来的谱线间隔非常规律,特征频率的基频、二倍频、三倍频一列排开,肉眼判断都容易很多。

我在实践中还发现一个细节:把非下采样小波包分解后选出的窄带信号做包络,得到的包络波形通常比直接带通滤波出来的“光滑”,冲击尖峰更陡、底部更平。这意味着后续算峰值、算峭度、算特征幅值都更稳定,不容易因为滤波器的毛刺产生误触发。

3. 精细滤波的落地操作:层数、小波基和特征频带怎么选

3.1 第一步:分解层数到底取多少

分解层数直接决定子带宽度。假设采样率是 fs,分解到第 j 层,每个子带的理论宽度是 fs / 2^(j+1)。举几个常用数字:

  • fs=25600Hz,j=4时每个子带800Hz;
  • j=5时每个子带400Hz;
  • j=6时每个子带200Hz。

层数太少,子带太宽,噪声和无关分量混进来太多,等于退了回去;层数太多,子带窄到把同一个冲击共振频带劈成好几块,能量被分散,反而看不出完整包络。我的经验是:先做4到5层,把谱峭度/包络谐波比比较高的两三个子带圈出来,再对圈出的局部范围加密分解,看看结果是否稳定。现场如果发现窄带包络谱的谱线出现“分叉”或者主峰忽高忽低,往往就是分得过细了。

3.2 第二步:小波基怎么选才不容易翻车

非下采样小波包和普通小波包一样,需要选小波基。不同小波基的频率局部化能力和时域支撑长度差别很大。正交小波里,我身边做故障诊断的同行用得最多的是db6、db8以及sym5这类,它们消失矩适中,频带局部化能力足够,波形形状也和轴承冲击衰减振荡有一定相似度。

没必要一开始就追求复杂的小波基。你可以准备一小段已知有外圈故障的样本,分别用几个候选小波基做非下采样小波包分解,选同一个子带重构,再比较包络谱特征频率处的峰值大小。哪个小波基让故障特征峰最突出、背景底噪最干净,就用哪个。我实际试过,db6和sym5在多数轴承信号上差别不大,真正重要的是别用Haar这种频率区分能力太弱的基函数。

3.3 第三步:特征频带怎么找,而不是“能量最大就是最好”

把全频带全部展开之后,常见误区是直接挑能量最大的子带。实际上,轴承故障激起的共振频带可能不是能量最强的,因为负载转动、齿轮啮合这些正常分量能量往往更高。更可靠的做法是看“冲击性指标”,比如每个子带包络的峭度,或者包络谱中故障特征频率处的谱峰与周围噪底的比值。

工程里我基本上这么走:先跑一遍全频带分解,计算每个子带系数的平方包络峭度,挑峭度最高的前面两三个频带作为候选;再针对这些候选频带做重构和包络谱分析,看哪个频带的包络谱在故障特征频率处出现清晰的等间隔谱线。谱峭度在这里起的作用是“粗筛”,非下采样小波包负责“细滤”,两者搭配在现场验证稳定性很好。

3.4 示意代码:把过程串起来

下面是一段教学性质的流程示意,换成自己熟悉的工具库实现即可:

# 示意伪代码:非下采样小波包精细滤波流程 signal = load_vibration_frame() # 读取一帧振动信号,例如1秒数据 # 1. 非下采样小波包分解,得到各层各节点系数 coeffs = undecimated_wavelet_packet_decompose( signal, wavelet='db6', # 常用小波基 max_level=5 # 初步定为5层,子带宽度=fs/32 ) # 2. 计算每个叶节点系数的包络峭度,挑选候选频带 candidate_nodes = select_nodes_by_kurtosis(coeffs, top_k=3) # 3. 重构选定频带的时域信号 filtered_signal = reconstruct_from_nodes(coeffs, candidate_nodes[0]) # 4. 希尔伯特变换取包络 envelope = abs(hilbert_transform(filtered_signal)) # 5. 对包络做FFT,得到包络谱 envelope_spectrum = fft(envelope)

这段流程最关键的环节是第2步“选带”,它决定了后续所有结果。你把“选带”从人工指定换成基于峭度/谱峰突出度的自动规则之后,整套流程就能半自动化运行了。

4. 从包络谱到故障判定:谱线在哪个频率才算“有事”

4.1 先把故障特征频率算清楚

拿到包络谱之前,必须先把被检轴承的几何参数和转速代入公式,算出理论故障特征频率。设滚动体数量为 n、转频为 fr(Hz)、节径为 D、滚动体直径为 d、接触角为 α,常用公式如下:

  • 外圈故障频率 BPFO = n × fr / 2 × (1 - d/D × cos α)
  • 内圈故障频率 BPFI = n × fr / 2 × (1 + d/D × cos α)
  • 滚动体故障频率 BSF = D × fr / (2 × d) × (1 - (d/D × cos α)^2)
  • 保持架故障频率 FTF = fr / 2 × (1 - d/D × cos α)

我举个虚拟参数当例子:某深沟球轴承,滚动体数量9,节径90mm,滚动体直径15mm,接触角按0度处理,转速1475r/min。转频约24.58Hz,算出来外圈故障频率约92.2Hz,内圈约129.1Hz,滚动体约71.7Hz,保持架约10.2Hz。现场对谱线时,不是只看基频,还要看二倍频、三倍频是否以相同间隔出现,倍数关系对上的越多,判断越可靠。

4.2 滤波前后的包络谱到底差多少

没有做精细滤波时,全频带直接包络得到的包络谱是怎样的?往往是一条斜向下的大底噪曲线,起伏不定,偶尔冒出几个峰,但这些峰很难跟理论特征频率对上。做非下采样小波包精细滤波后,情况就明确多了:特征频率基频处的谱线凸起,周围噪声底明显下降,且二倍频三倍频清晰可见。

我在某设备的实测数据里看到过很典型的对比:宽频带包络谱在92Hz附近的噪声底幅值大概只有峰的1/3不到,而窄带精细滤波后那个峰高出周围噪底一个数量级以上。这种“先从平地里拔出一座峰”的变化过程,就是精细滤波最直观的价值。

4.3 用边带结构区分外圈、内圈和滚动体故障

除了看基频和高次谐波,还要会看“边带结构”。这是判断故障部位的重要依据:

  • 外圈故障:包络谱在BPFO及其谐波处突出,边带相对较弱。
  • 内圈故障:特征频率旁边会出现以转频fr为间隔的调制边带,也就是BPFI±m×fr,因为内圈故障随轴旋转,进入承载区的位置不断变化。
  • 滚动体故障:调制关系更复杂,谱线上除了BSF,还会出现以保持架频率FTF为间隔的边带,而且滚动体本身存在滑动,BSF谱线通常会有一个小范围的频率晃动。

这块经验非常重要,只看单一谱峰容易误判。比如轴和轴承之间发生松动时,有时也能在频谱里看到转频边带,但要和真正的内圈故障区分开,就得靠“特征频率是否精确落在理论计算的谱线上”以及“故障发生时幅值随负载的变化趋势”来综合判断。

5. 这套方法在实际项目里的效果、边界与调试经验

5.1 收获最大的场景:低速重载、强背景噪声

我个人体会,非下采样小波包精细滤波在两类场景收益最大。一类是低速重载设备,比如风电齿轮箱、大型回转窑、造纸机等,转频低、特征频率低,而齿轮啮合频率往往又高又强,低频故障特征几乎被压死,必须把频带切到很细才能捞出来。另一类是早期故障阶段,点蚀刚刚出现时冲击幅值非常小,直接听诊都听不出异常,但精细滤波后用包络谱能看到清晰的特征峰。这两类情况,宽频带解调和普通小波包都容易漏判,非下采样后的细粉能力给足了空间。

5.2 场景边界:强变转速和剧烈瞬态不能硬套

这套方法也有明显不擅长的场景。最典型的是转速剧烈变化的情况,比如大型设备的启停过程或者突发变载。非下采样小波包是固定频带的划分方式,转速一变,故障特征频率跟着漂移,固定频带里的能量会被“拉散”,包络谱变得模糊。这时候必须配合阶次跟踪、转速同步重采样等手段先做转速归一化,不能用它单打独斗。另外,如果故障信号本身已经被传感器安装方式严重衰减,比如隔着很厚的橡胶垫,那么换传感器位置比换什么滤波方法都更有效。

5.3 计算开销不能当“免费午餐”

非下采样小波包的冗余性是把双刃剑。第6层完全展开时,所有节点的系数总长度大约是原始信号的63倍。对离线分析这一帧数据,哪怕采样率25.6kHz、长度1秒,也就是几十万到上百万个系数,普通工控机跑完没问题。但如果你要做多通道实时在线监测,几十台设备、每个通道每秒都在算,这个开销就会变成压力。

现场落地时我的建议是两条路:要么限制分解层数,只展开3到4层并配合谱峭度粗筛;要么只在特定时间窗口跑精细流程,比如机组负荷稳定、工况平稳时每10分钟算一次。永远不要指望用最高层数的全树分解去应付所有监测通道。

5.4 关于参数自适应,我的做法和一点体感

这几年大家都在做参数自适应选带,也就是让程序自己决定用哪个子带来解调。我在自己工作流里试过不少方案,最后留下来的是“谱峭度粗筛+非下采样小波包细选”的组合。先用谱峭度把共振区间缩到两三个候选带,再用非下采样小波包在这几个候选带附近加密分解,比较包络谱的峰度指标,挑最优的出来。这套组合在多种轴承故障数据上都很稳,也省掉了反复试参数的麻烦。

调参时还有个很实用的小经验:每次改完层数或者小波基,不要只盯着特征频率峰看,顺手把包络谱里的最高噪声峰也记下来。故障特征峰和最高噪声峰的差距,才是衡量“滤波质量”最直接的数字。差距越大,说明你选的这个频带越干净,后面就算换台设备,这个参数也大概率能沿用。

另外提一句题外话,如果你是刚接触这套方法,先从故障特征比较明显的公开数据练手,跑通全流程再去碰现场弱故障数据。见到第一张干净的包络谱时,那种“谱线一根根立起来”的感觉,比任何表格数值都更能帮你理解非下采样小波包的价值。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询