4. 趋势分析基础:趋势图的绘制、时域指标与预警线设定

各位同行,大家好。今天我们来聊聊趋势分析。说实话,很多搞振动的新手容易犯一个毛病——拿到数据就急着做FFT、看频谱。但我个人习惯是,先看趋势图。为什么?因为趋势图能告诉你设备状态在时间轴上的变化,这是频谱图给不了的全局感。

我记得刚入行那会儿,跟着老师傅去现场测一台风机。他看了一眼趋势图就说:“这台机子撑不过三个月。”我当时半信半疑,结果两个月零二十天,轴承果然烧了。从那以后,我对趋势分析就格外重视。

4.1 趋势图——设备状态的“心电图”

趋势图,说白了就是把振动数据按时间顺序画出来。横轴是时间,纵轴是振动值。就这么简单?嗯,但简单的东西往往最有用。

你想想看,一台风机从健康到故障,振动值不会突然飙升(除非是突发性故障)。大多数情况下,它会慢慢爬升。趋势图就是捕捉这种“慢慢爬升”的最佳工具。

核心观点:趋势图的价值不在于单点数值,而在于变化速率和变化模式。

我在项目中遇到过一台离心风机,振动值一直在4.5mm/s左右,看起来挺正常。但趋势图显示,这个值在三个月内从3.2mm/s涨到了4.5mm/s,斜率明显在增大。我建议客户安排检修,拆开一看,轴承保持架已经裂了。

绘制趋势图,我一般用Python的Matplotlib库。下面给个简单的示例:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 模拟振动数据(每天采集一次,共90天)
dates = pd.date_range('2024-01-01', periods=90, freq='D')
vibration = 3.2 + 0.015 * np.arange(90) + np.random.normal(0, 0.2, 90)

plt.figure(figsize=(12, 5))
plt.plot(dates, vibration, 'b-', linewidth=1.5, label='振动速度 (mm/s)')
plt.xlabel('日期')
plt.ylabel('振动速度 (mm/s)')
plt.title('风机轴承振动趋势图')
plt.grid(True, alpha=0.3)
plt.legend()
plt.tight_layout()
plt.show()

这段代码生成的就是最基础的时域趋势图。实际工作中,我还会叠加报警线、预警线,后面会讲到。

4.2 时域指标——三个核心参数

趋势图上画什么?不是随便画个原始波形就完事了。我们需要提取有意义的时域指标。常用的有三个:峰值、有效值、峭度。

指标 物理含义 适用场景 我的经验值
峰值 (Peak) 振动波形的最大幅值 冲击类故障(如轴承点蚀) 峰值突然翻倍,大概率有冲击
有效值 (RMS) 振动能量的统计平均值 磨损类故障、整体状态评估 RMS缓慢上升,典型磨损特征
峭度 (Kurtosis) 波形分布的陡峭程度 早期故障检测 峭度>4,要警惕;>8,基本确认故障

峰值,就是波形里最大的那个值。我习惯用峰值来捕捉突发性冲击。比如轴承滚道出现点蚀,每次滚珠滚过缺陷位置,就会产生一个冲击,峰值会明显升高。

有效值,也叫RMS。这个指标反映的是振动的“能量大小”。一台正常运转的风机,RMS值通常比较稳定。如果RMS值持续上升,说明设备在慢慢恶化。我曾经监测过一台引风机,RMS值从2.8mm/s涨到4.2mm/s用了半年,最后发现是叶轮积灰导致的不平衡。

峭度,这个指标有点意思。它衡量的是波形分布的“尖峰程度”。正态分布的峭度是3。如果峭度大于3,说明波形里有更多的冲击成分。我在做轴承早期故障诊断时,峭度往往比峰值更敏感。有时候峰值还没明显变化,峭度已经先报警了。

我的小技巧:把峰值、有效值、峭度画在同一张趋势图上,用不同颜色区分。这样一眼就能看出设备状态的变化模式。比如峰值涨、有效值没涨,说明有冲击但能量不大;两者都涨,说明问题在恶化。

4.3 趋势预警线——给设备画条“红线”

趋势图有了,指标也有了,接下来就是设定预警线。预警线不是随便画的,得有依据。

我一般分三步走:

  1. 收集历史数据——至少要有设备正常运行3个月以上的数据
  2. 计算基线值——取正常运行期间数据的平均值作为基线
  3. 设定阈值——基线值 × 安全系数

安全系数怎么定?我个人的经验:

  • 对于关键设备(如主风机),安全系数取1.5~2.0
  • 对于一般设备,安全系数取2.0~3.0
  • 如果设备本身振动就偏大,建议用统计方法(如均值+3σ)
注意:预警线不是一成不变的。设备经过大修或更换部件后,基线值会变,预警线也要相应调整。我曾经吃过这个亏——一台风机换了轴承后,振动值降了一半,但我忘了更新预警线,结果新轴承出现早期磨损时,振动值还没碰到旧预警线,差点酿成大祸。

下面是一个带预警线的趋势图绘制代码:

import matplotlib.pyplot as plt
import numpy as np

# 模拟数据
days = np.arange(1, 91)
vibration = 3.2 + 0.02 * days + np.random.normal(0, 0.3, 90)

# 计算基线(取前30天)
baseline = np.mean(vibration[:30])
warning_line = baseline * 2.0  # 预警线
alarm_line = baseline * 2.5    # 报警线

plt.figure(figsize=(12, 6))
plt.plot(days, vibration, 'b-', label='振动值', linewidth=1.5)
plt.axhline(y=warning_line, color='orange', linestyle='--', 
            linewidth=2, label=f'预警线 ({warning_line:.2f} mm/s)')
plt.axhline(y=alarm_line, color='red', linestyle='--', 
            linewidth=2, label=f'报警线 ({alarm_line:.2f} mm/s)')
plt.axhline(y=baseline, color='green', linestyle=':', 
            linewidth=1.5, label=f'基线 ({baseline:.2f} mm/s)')

plt.xlabel('运行天数')
plt.ylabel('振动速度 (mm/s)')
plt.title('风机振动趋势与预警线')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

这段代码画出了三条线:基线(绿色虚线)、预警线(橙色虚线)、报警线(红色虚线)。当振动值突破预警线时,我会安排检查;突破报警线时,必须停机处理。

4.4 知识体系总览

为了让大家更直观地理解本章的知识结构,我画了一张图:

趋势分析知识体系 趋势分析基础 趋势图绘制 • 横轴:时间 • 纵轴:振动值 • 关注变化速率 时域指标 • 峰值:冲击类故障 • 有效值:磨损类故障 • 峭度:早期故障检测 预警线设定 • 收集历史数据 • 计算基线值 • 设定安全系数 核心:趋势图 + 时域指标 + 预警线 = 设备状态评估 应用:风机寿命预测、维修决策

这张图把本章的核心内容串起来了。趋势图是基础,时域指标是工具,预警线是标准,三者结合才能做好设备状态评估。

避坑指南:我曾经犯过一个错误——只盯着有效值看,忽略了峰值和峭度。结果一台风机有效值一直很平稳,但峰值已经悄悄涨了50%。拆开一看,轴承外圈出现了裂纹。所以我的建议是:三个指标要综合看,别偏科。

好了,关于趋势分析的基础内容就讲到这里。记住一句话:趋势图是设备状态的“心电图”,时域指标是“诊断参数”,预警线是“生死线”。把这三点吃透了,你就能从振动数据里读出设备的“健康状况”。

专注资料整理