第四节:时域分析——峰值、峰峰值、均值、均方根值、波形因子、峰值因子
各位同学,咱们今天聊聊时域分析。说白了,就是直接看振动信号随时间怎么变化的。这就像医生听诊,不搞那些花里胡哨的频谱变换,就听原始声音。
我个人习惯,拿到一组振动数据,第一件事就是算几个最基本的时域指标。为什么?因为这些数字能快速告诉我:这台设备现在到底“闹”得有多凶。
4.1 峰值与峰峰值
峰值,就是信号的最大绝对值。你想想看,一个振动波形,最高点到零线的距离,就是峰值。
计算公式:
峰值 = max(|x(t)|)
单位:m/s² 或 mm/s 或 μm
我在项目里遇到过一台离心风机,峰值突然从5 m/s²飙到18 m/s²。当时我就判断,大概率是叶片出了问题。拆开一看,果然有一片叶轮根部出现了裂纹。峰值对这类瞬时冲击特别敏感。
峰峰值,就是信号最大值减去最小值。说白了,就是波峰到波谷的“总高度”。
计算公式:
峰峰值 = max(x(t)) - min(x(t))
峰峰值在旋转机械里用得特别多。比如轴振动,我们通常看峰峰值,因为它反映了轴心轨迹的“摆动幅度”。
我的经验: 峰值适合检测冲击,峰峰值适合评估整体振动烈度。两者结合看,效果更好。
4.2 均值与均方根值
均值,就是信号的平均水平。对于振动信号,均值通常接近零。为什么?因为振动是围绕平衡位置来回摆动的。
计算公式:
均值 = (1/N) * Σ x(t)
不过要注意,如果均值明显偏离零,说明传感器可能发生了零漂,或者设备有单向的力在作用。我曾经遇到过一台风机,均值一直有0.3 m/s²的偏移,查了半天发现是安装底座松动导致的。
均方根值,这才是咱们最常用的指标。它反映了信号的能量大小,也就是振动的“有效值”。
计算公式:
均方根值 = sqrt( (1/N) * Σ x(t)² )
均方根值在ISO标准里是评判设备状态的核心依据。比如ISO 10816标准,就是根据均方根值来划分A、B、C、D四个区域的。
| 指标 | 物理意义 | 适用场景 |
|---|---|---|
| 峰值 | 最大冲击 | 齿轮、轴承故障 |
| 峰峰值 | 摆动幅度 | 轴振动、不平衡 |
| 均值 | 直流分量 | 传感器校验、松动 |
| 均方根值 | 振动能量 | 整体状态评估 |
4.3 波形因子与峰值因子
这两个指标是“比值”,用来描述波形的形状特征。
波形因子,是均方根值与整流平均值的比值。
计算公式:
波形因子 = 均方根值 / 整流平均值
对于标准正弦波,波形因子是1.11。如果波形因子偏离这个值,说明波形发生了畸变。嗯,这里要注意,波形因子对早期故障不太敏感,它更多是作为一个辅助参考。
峰值因子,这个就厉害了。它是峰值与均方根值的比值。
计算公式:
峰值因子 = 峰值 / 均方根值
峰值因子对冲击性故障特别敏感。正常轴承的峰值因子一般在3-5之间。如果突然升到8以上,那就要警惕了——很可能出现了点蚀或剥落。
避坑指南: 我曾经遇到过一台风机,峰值因子从4.2升到了7.8,我判断轴承有故障。结果拆下来一看,轴承完好无损。后来发现是联轴器对中不良导致的周期性冲击。所以峰值因子高,不一定就是轴承问题,还要结合频谱分析来确认。
4.4 知识体系结构图
下面这张图,把咱们今天讲的几个指标串起来了。你一看就明白它们之间的关系。
4.5 Python代码实战
光说不练假把式。咱们用Python把这些指标算一遍。你跟着敲一遍,印象会更深。
import numpy as np
import matplotlib.pyplot as plt
# 生成模拟振动信号(含冲击成分)
fs = 1000 # 采样频率
t = np.arange(0, 1, 1/fs)
# 正常振动 + 冲击
x = 2 * np.sin(2 * np.pi * 50 * t) + 0.5 * np.random.randn(len(t))
# 在0.3秒和0.7秒处加入冲击
x[300:310] += 8
x[700:710] += 10
# 计算时域指标
peak = np.max(np.abs(x))
peak_to_peak = np.max(x) - np.min(x)
mean_val = np.mean(x)
rms_val = np.sqrt(np.mean(x**2))
# 整流平均值
rectified_mean = np.mean(np.abs(x))
# 波形因子
form_factor = rms_val / rectified_mean
# 峰值因子
crest_factor = peak / rms_val
print(f"峰值: {peak:.3f}")
print(f"峰峰值: {peak_to_peak:.3f}")
print(f"均值: {mean_val:.3f}")
print(f"均方根值: {rms_val:.3f}")
print(f"波形因子: {form_factor:.3f}")
print(f"峰值因子: {crest_factor:.3f}")
# 可视化
plt.figure(figsize=(10, 4))
plt.plot(t, x, 'b-', linewidth=0.8)
plt.axhline(y=peak, color='r', linestyle='--', label=f'峰值={peak:.2f}')
plt.axhline(y=-peak, color='r', linestyle='--')
plt.axhline(y=rms_val, color='g', linestyle='--', label=f'均方根值={rms_val:.2f}')
plt.axhline(y=-rms_val, color='g', linestyle='--')
plt.xlabel('时间 (s)')
plt.ylabel('幅值')
plt.title('振动信号时域波形')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
运行结果解读: 你会发现峰值因子明显偏大(正常正弦波是1.414,这里会到3以上),说明信号里含有冲击成分。这就是峰值因子在故障诊断中的价值所在。
4.6 实际应用中的注意事项
最后,我总结几条实战经验,你记好了:
- 峰值因子不是万能的: 它只对冲击敏感,对磨损类故障(比如均匀磨损)反应迟钝。
- 均方根值要结合趋势看: 单次测量意义不大,连续监测的趋势才有价值。
- 波形因子适合做“体检”: 如果波形因子长期稳定在1.2左右,突然变成1.5,那肯定有问题。
- 别忘了传感器类型: 加速度传感器测峰值,速度传感器测均方根值,位移传感器测峰峰值。用错了,数据就没意义了。
我曾经踩过的坑: 有一次我只看均方根值,发现数值在正常范围内,就判断设备没问题。结果第二天设备就停机了。后来复盘发现,峰值因子早就报警了,只是我没看。所以现在我的习惯是:六个指标一起看,互相印证,才能下结论。
好了,时域分析就讲到这里。这些指标虽然基础,但用好了,能解决80%的现场问题。记住:简单的东西,做到极致,就是绝招。
公众号:蓝海资料掘金营,微信deep3321