第四章:时域分析——时域统计特征与波形分析实战

各位工程师朋友,大家好。今天我们来聊聊时域分析。说实话,很多刚入行的朋友一上来就喜欢玩频谱、搞包络,觉得时域太简单。但我个人的经验是:时域分析是故障诊断的第一道防线,也是最不容易骗人的一道防线。你想想看,信号从传感器出来,最原始的样子就是时域波形,这里面藏着的信息,往往比经过各种变换后的结果更直接。

4.1 时域统计特征——这些数字在说什么?

我们先从最基础的几个统计量说起。这些指标看似简单,但每个都有它的脾气。

4.1.1 均值(Mean)

均值就是信号的平均值。对于振动信号来说,均值反映的是信号的直流分量。正常情况下,加速度传感器的均值应该接近0。如果均值明显偏离0,说明传感器可能有零漂,或者信号调理电路出了问题。

我的经验:有一次在现场,我看到一个通道的均值一直有0.5V的偏置,排查了半天,结果是传感器安装底座没清理干净,有个小铁屑垫在下面。所以,均值异常时,先别急着怀疑轴承,检查一下传感器安装。

4.1.2 方差与标准差(Variance & Standard Deviation)

方差描述的是信号偏离均值的程度。标准差是方差的平方根,物理意义更直观——它代表了振动的能量大小。轴承出现早期故障时,标准差通常会缓慢增大。

4.1.3 峰值(Peak Value)

峰值就是信号的最大绝对值。这个指标对冲击类故障特别敏感。比如轴承内圈出现剥落,每次滚珠滚过缺陷位置,就会产生一个很大的冲击,峰值会瞬间跳变。

注意:峰值容易受偶然干扰影响。我曾经遇到一个案例,峰值突然变大,结果发现是旁边有人在用电焊机打火。所以,单看峰值不够,要结合其他指标一起判断。

4.1.4 峭度(Kurtosis)

峭度是衡量信号分布“尖峭程度”的指标。正常轴承的振动信号接近正态分布,峭度值在3左右。当出现早期故障时,信号中会出现稀疏的大幅值冲击,峭度值会明显大于3。

我个人的习惯是:峭度值超过4就要警惕,超过6基本可以确定有故障了。但要注意,峭度对早期故障敏感,到了故障晚期,冲击变得密集,峭度反而可能下降。所以它更适合做早期预警。

4.2 无量纲指标——摆脱工况影响的利器

为什么要用无量纲指标?说白了,就是让诊断结果不受转速、负载变化的影响。你想想看,同一台风机,空载和满载时振动幅值能差好几倍,但无量纲指标却能保持相对稳定。

指标名称 计算公式 正常范围 故障特征
波形因子 RMS / 整流平均值 1.1 ~ 1.5 冲击故障时增大
峰值因子 峰值 / RMS 3 ~ 5 早期故障时明显增大
脉冲因子 峰值 / 整流平均值 4 ~ 8 对单次冲击敏感
裕度因子 峰值 / 方根幅值 4 ~ 8 磨损类故障时增大
实战建议:我通常把峰值因子和峭度放在一起看。如果两者同时增大,基本可以确认有冲击性故障。如果只有峰值因子增大而峭度正常,那可能是偶然干扰。

4.3 时域波形分析——用眼睛看信号

统计指标是数字,但波形是图像。有时候,看一眼波形比算一堆数字更管用。

4.3.1 正常波形长什么样?

正常轴承的时域波形,看起来就像一团乱麻——随机、平稳、没有明显的周期性冲击。振幅基本稳定,没有突然的大幅波动。

4.3.2 故障波形怎么看?

我总结了一个“三步观察法”:

  1. 看对称性:波形上下是否对称?如果不对称,可能有摩擦或松动。
  2. 看周期性:有没有重复出现的冲击?如果有,计算冲击间隔,可以反推故障频率。
  3. 看调制:振幅有没有忽大忽小的现象?这往往是故障特征频率被转频调制的表现。
避坑指南:我曾经在风电场上犯过一个错误。看到一个波形上有明显的周期性冲击,我直接判断是轴承外圈故障。结果拆下来一看,是叶片上结了一层冰,每次转到最低点就甩一块冰下来。所以,波形分析一定要结合设备结构和运行工况。

4.4 实战:用Python计算时域特征

光说不练假把式。下面我给出一个完整的代码示例,可以直接用在你的数据上。

import numpy as np
import matplotlib.pyplot as plt

def time_domain_features(signal, fs):
    """
    计算时域统计特征
    signal: 振动信号数组
    fs: 采样频率
    """
    # 基本统计量
    mean_val = np.mean(signal)
    std_val = np.std(signal)
    peak_val = np.max(np.abs(signal))
    rms_val = np.sqrt(np.mean(signal**2))
    
    # 峭度
    n = len(signal)
    kurtosis_val = (np.mean((signal - mean_val)**4) / 
                    (np.mean((signal - mean_val)**2)**2))
    
    # 无量纲指标
    crest_factor = peak_val / rms_val  # 峰值因子
    shape_factor = rms_val / np.mean(np.abs(signal))  # 波形因子
    impulse_factor = peak_val / np.mean(np.abs(signal))  # 脉冲因子
    
    return {
        '均值': mean_val,
        '标准差': std_val,
        '峰值': peak_val,
        '有效值': rms_val,
        '峭度': kurtosis_val,
        '峰值因子': crest_factor,
        '波形因子': shape_factor,
        '脉冲因子': impulse_factor
    }

# 使用示例
fs = 25600  # 采样频率
t = np.arange(0, 1, 1/fs)
# 模拟正常信号 + 冲击
normal_signal = np.random.randn(len(t)) * 0.1
impulse = np.zeros_like(t)
impulse[::1000] = 2.0  # 每1000个点加一个冲击
fault_signal = normal_signal + impulse

features = time_domain_features(fault_signal, fs)
for key, value in features.items():
    print(f"{key}: {value:.4f}")

# 绘制时域波形
plt.figure(figsize=(12, 4))
plt.plot(t[:5000], fault_signal[:5000])
plt.title('时域波形(含冲击)')
plt.xlabel('时间 (s)')
plt.ylabel('幅值')
plt.grid(True)
plt.show()

4.5 知识体系总览

下面这张图,是我自己总结的时域分析知识框架。你可以把它当作一张地图,随时回来对照。

时域分析知识体系 统计特征 无量纲指标 波形分析 均值 方差/标准差 峰值 峭度 波形因子 峰值因子 脉冲因子 裕度因子 对称性 周期性 调制现象 冲击间隔 故障诊断应用 诊断结论 图:时域分析知识体系结构图 三个分支相互印证,综合判断故障类型与严重程度

最后说一句:时域分析看似基础,但真正用好的人不多。我见过太多人拿着频谱图分析半天,结果问题在时域波形上一眼就能看出来。所以,别小看这些“简单”的指标,它们是你诊断工具箱里最趁手的家伙


专注资料整理