4. 振动信号时域统计特征提取
时域统计特征的计算与基线判读
时域统计特征直接从采样点序列计算,不需要FFT,适合在线快速评估。对一段长度为 N 的振动信号 x[i](单位 mm/s 或 g),本节使用四个核心指标:
- 均方根值 RMS:反映振动能量总量,
RMS = sqrt( (1/N) * Σ x[i]² ),是判断整体振动烈度的首选指标。 - 峰值 Peak:
max(|x[i]|),对冲击敏感,用于捕捉瞬时大幅值。 - 峰值因子 Crest = Peak / RMS:无量纲,正常轴承约 3~4,出现早期局部损伤时冲击使峰值上升而RMS变化不大,Crest 会明显增大。
- 峭度 Kurtosis:
K = (1/N) * Σ (x[i]-μ)⁴ / σ⁴,正态信号约为 3,冲击成分使其迅速上升,是轴承早期故障的敏感指标。
判读逻辑:RMS 判断“振得有多厉害”,Crest 与峭度判断“振得有多尖”。两者结合可区分“整体劣化”与“局部冲击”。
计算实现与验证
以下 Python 代码对一段模拟的实测振动信号完成上述四个指标的计算,并与基线值对比输出判读结果。信号由正常分量与周期性冲击分量叠加而成,用于演示峭度与峰值因子对冲击的敏感性。
import numpy as np
# ---- 1. 构造教学示例信号(模拟实测振动) ----
fs = 10000 # 采样频率 Hz
N = 8192 # 采样点数
t = np.arange(N) / fs
# 正常分量:转频 25 Hz + 2 倍频,幅值 1.5 mm/s
normal = 1.5 * np.sin(2*np.pi*25*t) + 0.6 * np.sin(2*np.pi*50*t)
# 冲击分量:每 0.1 s 一个衰减冲击(模拟轴承局部损伤)
impact = np.zeros(N)
for k in range(0, N, int(0.1*fs)):
idx = np.arange(k, min(k+80, N))
impact[idx] += 3.0 * np.exp(-0.08*(idx-k)) * np.sin(2*np.pi*3000*(idx-k)/fs)
x = normal + impact + 0.2*np.random.randn(N) # 叠加少量噪声
# ---- 2. 时域统计特征计算 ----
rms = np.sqrt(np.mean(x**2))
peak = np.max(np.abs(x))
crest = peak / rms
mu = np.mean(x)
sigma = np.std(x)
kurt = np.mean((x - mu)**4) / (sigma**4)
print(f"RMS = {rms:.3f} mm/s")
print(f"Peak = {peak:.3f} mm/s")
print(f"Crest = {crest:.3f}")
print(f"Kurtosis = {kurt:.3f}")
# ---- 3. 与基线对比判读 ----
baseline = {"RMS": 2.10, "Crest": 3.20, "Kurtosis": 3.00}
current = {"RMS": rms, "Crest": crest, "Kurtosis": kurt}
for key in baseline:
dev = (current[key] - baseline[key]) / baseline[key] * 100
print(f"{key:8s} 基线={baseline[key]:.2f} 当前={current[key]:.2f} 偏差={dev:+.1f}%")
# 判读规则
if rms > baseline["RMS"]*1.5 or kurt > 5.0:
status = "报警:安排检修"
elif rms > baseline["RMS"]*1.2 or crest > baseline["Crest"]*1.3:
status = "注意:加密监测"
else:
status = "正常"
print("状态判读:", status)
上述信号为教学构造的示例数据,输出数值会因随机噪声种子不同而略有波动。实际使用时,基线值应来自设备健康状态下的多次测量统计,而非单次采样。
结果判读要点
| 指标 | 正常范围 | 异常趋势 | 典型原因 |
|---|---|---|---|
| RMS | 接近基线 ±20% | 持续上升 | 不平衡、松动、整体磨损 |
| Crest | 3 ~ 4 | 明显增大 | 局部冲击、早期点蚀 |
| Kurtosis | 约 3 | > 5 且持续 | 轴承/齿轮局部损伤 |
当 RMS 变化不大但 Crest 和峭度同时上升时,应优先怀疑局部损伤而非整体劣化;反之,RMS 大幅上升而峭度接近 3,则更可能是不平衡或松动等分布性故障。本例的示例数据中 RMS 仅上升约 12%,但峭度升至 5.6,属于典型的“局部冲击”特征。