1. 频谱分析入门:什么是频谱分析?为什么做故障诊断离不开它?时域与频域的核心区别

大家好,我是老张。在设备诊断这行摸爬滚打了十几年,今天咱们来聊聊频谱分析。

说实话,我刚入行那会儿,也觉得频谱分析挺玄乎的。屏幕上那些花花绿绿的谱线,看着就头疼。但后来我发现,这东西其实就是个翻译器——把设备说的“方言”翻译成我们能听懂的话。

1.1 什么是频谱分析?

先问大家一个问题:你听到一首歌,能听出里面有哪些乐器吗?

频谱分析干的事,跟这个差不多。它把一个复杂的信号,拆解成不同频率的成分。说白了,就是告诉你:这个信号里,哪些频率在“说话”,每个频率说了多大声。

举个例子。我测一台电机的振动信号,时域波形看起来乱糟糟的,像一团乱麻。但一转到频谱上,嘿,50Hz处有个大尖峰,100Hz处也有个矮一点的。这就告诉我:电机可能在转频50Hz处有故障,100Hz可能是谐波。

核心定义:频谱分析是将时域信号通过傅里叶变换,转换到频域进行分析的技术。它揭示了信号中不同频率成分的幅值、相位信息。

1.2 为什么故障诊断离不开频谱分析?

我遇到过不少新手,拿着时域波形看了半天,愣是看不出问题。为什么?因为故障特征在时域里藏得太深了。

你想想看,一个轴承故障,它的冲击信号可能只有几毫秒,被淹没在正常的振动信号里。时域上看,就是波形稍微“毛糙”了一点。但转到频谱上,故障特征频率会以谱峰的形式清晰地跳出来。

我个人习惯,拿到数据第一件事就是看频谱。原因有三:

  • 故障特征频率化:每种故障都有自己独特的频率“指纹”。比如齿轮啮合频率、轴承故障频率,在频谱上一目了然。
  • 趋势变化可量化:某个频率的幅值从0.1mm/s涨到0.5mm/s,这就是故障在恶化的信号。时域里很难这么精确。
  • 多故障可分离:一台设备可能同时存在不平衡、不对中、松动。时域里它们混在一起,频谱里却能分得清清楚楚。

我的经验:曾经有一台风机,时域波形看着还行,但频谱里出现了明显的边频带。我判断是齿轮磨损,拆开一看,果然。要是只看时域,这故障至少还要运行两周才会被发现。

1.3 时域与频域的核心区别

这个问题,我经常被问到。咱们打个比方:

时域就像看一个人的日常行为记录——他几点起床、几点吃饭、几点睡觉。你能看到他的生活规律,但很难一眼看出他有没有生病。

频域就像给这个人做体检——测心率、量血压、查血常规。每个指标对应一个“频率”,异常值直接告诉你哪里有问题。

对比维度 时域 频域
横轴含义 时间(秒、毫秒) 频率(Hz、kHz)
纵轴含义 幅值(位移、速度、加速度) 幅值密度(或幅值)
直观程度 直观,但信息混杂 抽象,但特征清晰
故障识别 难(需丰富经验) 易(有明确频率对应)
典型应用 冲击检测、波形观察 故障诊断、模态分析

嗯,这里要注意:时域和频域不是谁替代谁的关系。它们是互补的。我一般先看频谱锁定故障频率,再回时域确认冲击特征。两下印证,诊断才靠谱。

1.4 频谱分析的核心逻辑

为了让大家更直观地理解,我画了一张图。这张图展示了从时域到频域的转换逻辑,以及频谱分析在故障诊断中的位置。

频谱分析核心逻辑图 时域信号 振动/声音/电流波形 横轴:时间 傅里叶变换 频域信号 频谱图 横轴:频率 特征提取 故障诊断 识别/定位 严重程度 关键步骤说明: 1. 采集:通过传感器获取设备的时域信号(振动、声音、电流等) 2. 变换:使用FFT(快速傅里叶变换)将时域信号转换为频域信号 3. 分析:在频谱中寻找与故障对应的特征频率及其谐波、边频带 4. 诊断:结合设备参数(转速、轴承型号等)计算理论故障频率,对比实测值 5. 决策:根据幅值大小、趋势变化,判断故障严重程度和维修时机 核心公式:X(f) = ∫ x(t)·e^(-j2πft) dt

避坑指南:我曾经犯过一个低级错误——采样频率设得太低,导致高频故障特征被“混叠”到了低频区。结果我对着一个假频率分析了大半天。记住:采样频率至少是最高分析频率的2.56倍,这是铁律。

1.5 一个简单的频谱分析示例

光说不练假把式。咱们看一段简单的Python代码,演示如何从时域信号得到频谱:

import numpy as np
import matplotlib.pyplot as plt

# 生成一个模拟信号:50Hz主频 + 120Hz谐波 + 噪声
fs = 1000  # 采样频率 1000Hz
t = np.arange(0, 1, 1/fs)  # 1秒时长

# 信号:幅值1的50Hz + 幅值0.5的120Hz + 随机噪声
x = 1.0 * np.sin(2*np.pi*50*t) + 0.5 * np.sin(2*np.pi*120*t) + 0.2*np.random.randn(len(t))

# 做FFT变换
X = np.fft.fft(x)
freq = np.fft.fftfreq(len(x), 1/fs)

# 只取正频率部分
n = len(x)//2
X_mag = np.abs(X[:n]) * 2 / n
freq_pos = freq[:n]

# 打印结果
print("频谱中主要频率成分:")
for i in range(len(freq_pos)):
    if X_mag[i] > 0.1:  # 只显示幅值大于0.1的频率
        print(f"频率: {freq_pos[i]:.1f} Hz, 幅值: {X_mag[i]:.3f}")

运行这段代码,你会看到输出:

频谱中主要频率成分:
频率: 50.0 Hz, 幅值: 0.998
频率: 120.0 Hz, 幅值: 0.497

看到了吗?50Hz和120Hz的幅值,跟咱们设定的几乎一模一样。这就是频谱分析的威力——把隐藏的频率成分,清清楚楚地摆在你面前。

小技巧:实际诊断中,我习惯在频谱图上标注出设备的各个特征频率。比如转频、叶片通过频率、齿轮啮合频率。这样一眼就能看出哪个频率异常,效率高很多。

好了,这一章的内容就到这里。频谱分析是故障诊断的“眼睛”,没有它,你就像在黑暗中摸索。下一章咱们聊聊频谱分析的具体参数设置——分辨率、采样频率、窗函数这些,都是实战中绕不开的坑。


公众号:蓝海资料掘金营,微信deep3321