机械振动(二)谐波分析与工程应用

📅 发布时间:2026/7/5 0:12:28 👁️ 浏览次数:
机械振动(二)谐波分析与工程应用
1. 从“听声音”到“看频谱”谐波分析到底在做什么如果你修过车或者家里有台老旧的洗衣机你肯定有过这样的经历机器一开起来会发出“嗡嗡嗡”或者“哐当哐当”的声音。有经验的师傅一听可能就会说“轴承有点松了”或者“皮带该换了”。他们是怎么做到的其实他们的大脑就在下意识地做一种“谐波分析”。他们听到的不是一团乱糟糟的噪音而是从中分辨出了特定的、有规律的“音调”这些音调就对应着机器内部某个零件的旋转频率或者故障特征频率。谐波分析就是把这个“听音辨病”的过程从依赖老师傅的经验变成一套精确、可量化、可视化的科学方法。它不再停留在“感觉声音不对劲”的层面而是告诉我们不对劲在哪里具体是哪个频率成分变强了这个频率对应的是哪个零件变化的幅度有多大这套方法的核心武器就是傅里叶变换。你可以把它想象成一个超级厉害的“声音分拣机”或者“频谱眼镜”。我们生活的世界是时域的我们看到振动幅度随着时间上下起伏就像心电图一样。这个波形可能非常复杂混杂了各种因素。而傅里叶变换能带我们进入频域的世界。在频域里横坐标不再是时间而是频率单位是赫兹Hz纵坐标是振幅或能量。原来那个复杂的时域波形被分解成一系列不同频率、不同振幅的简谐波正弦/余弦波的叠加。这些简谐波中频率最低的那个叫做基频通常是机器的主旋转频率。基频的整数倍2倍、3倍、4倍……就叫做倍频或谐波。比如一台电机转速是3000转/分钟换算成频率就是50Hz这就是它的基频。那么100Hz就是它的二次谐波150Hz是三次谐波以此类推。为什么要这么做因为机器里不同的故障会“激发”出不同特征的频率成分。轴承内圈有缺陷可能会在某个特定频率计算与转速和轴承几何参数有关上产生高振幅齿轮断了一个齿会在啮合频率及其倍频上出现异常转子不平衡则主要会强化基频的振幅。在时域波形里这些特征可能被淹没在噪声里根本看不出来。但一旦转换到频域就像把混合颜料分离成纯净的单色光问题一目了然。所以谐波分析不是象牙塔里的数学游戏而是工程师在生产线、在发电厂、在风电场诊断设备健康状况的“听诊器”和“CT机”。接下来我们就拆开这个“CT机”看看它的核心原理和怎么用它来解决实际问题。2. 傅里叶级数拆解周期振动的“万能公式”上一节我们打了个比方说傅里叶变换是个“分拣机”。对于周期性的振动信号比如稳定运行的机器这个分拣过程有一个更基础、更直观的数学工具来描述那就是傅里叶级数。这是谐波分析的基石理解了它频域的概念就落地了。什么叫周期性信号就是波形每隔一个固定的时间T周期就会完全重复自己。稳定运行的电机、泵、风扇产生的振动在理想情况下都是周期信号。傅里叶告诉我们一个非常强大的结论任何一个周期函数无论它看起来多复杂比如方波、三角波、或者实际测到的带有毛刺的振动波形都可以表示成一系列正弦函数和余弦函数之和再加上一个常数项直流分量。这个结论的数学表达式就是傅里叶级数展开f(t) a₀/2 Σ [aₙ * cos(nω₀t) bₙ * sin(nω₀t)]这个求和符号Σ是从 n1 到无穷大。别被这个公式吓到我们一点点拆解f(t)就是我们测到的那个复杂的、随时间变化的振动信号。a₀/2这是直流分量代表信号的平均值在振动分析里通常和静态偏移有关。ω₀这是基波角频率ω₀ 2π / TT是信号的周期。它是最基本的频率成分。n就是谐波次数n1代表基波一次谐波n2代表二次谐波以此类推。aₙ和bₙ这两个是关键它们叫做傅里叶系数。aₙ是第n次谐波余弦项的振幅bₙ是第n次谐波正弦项的振幅。这两个系数的大小直接决定了该频率成分在原始信号中的“贡献”有多大。计算aₙ和bₙ的公式涉及积分这里不展开但你可以理解为它们是通过一套固定的数学“配方”从原始波形f(t)中“提取”出每个频率成分强度的过程。工程师不需要手算传感器采集数据后软件比如MATLAB、Python的NumPy/SciPy库会瞬间完成这些计算。我举个更生活的例子。想象一个乐队在合奏一首曲子。你听到的是混合在一起的整体音乐复杂的时域信号f(t)。傅里叶级数的作用就是让你能分辨出鼓点低频的基频和节奏、贝斯加强基频、吉他可能包含基频的二次、三次谐波产生丰富的音色、小提琴可能演奏更高次的谐波产生尖锐的音色。aₙ和bₙ就相当于每个乐手音量的大小。通过分析这些“音量”频谱你就能知道哪个乐器哪个频率成分出了问题比如吉他弦不准了某个谐波频率偏移了或者鼓皮破了某个频段能量异常增大。在实际工程中我们通常不单独看aₙ和bₙ而是把它们合成一个更直观的量第n次谐波的幅值Aₙ和相位φₙ。关系是Aₙ √(aₙ² bₙ²)φₙ arctan(bₙ / aₙ)。幅值Aₙ就是我们最终在频谱图上看到的那个“柱子”的高度它直接告诉我们这个频率成分的振动有多剧烈。相位φₙ在某些高级诊断中也很重要比如判断转子裂纹的位置。所以傅里叶级数就是那把手术刀把周期性振动这个“整体”精细地解剖成“基频”和一系列“谐波”的零件让我们能逐个检查。对于非周期信号或瞬态冲击比如设备启动、撞击我们会使用更通用的傅里叶变换其思想一脉相承都是把信号从时域映射到频域。有了这个工具我们就可以走进工厂看看它如何大显身手了。3. 旋转机械故障诊断频谱图上的“破案”线索理论说得再多不如看一个实实在在的例子。在工程界谐波分析应用最成熟、最经典的领域莫过于旋转机械的故障诊断。风机、水泵、电机、汽轮机、压缩机……这些构成了工业的动脉。它们的核心特征就是“转”。一旦旋转部件出问题振动信号会最先、最敏感地反映出来。下面我就结合几种典型故障带你像侦探一样在频谱图上寻找“破案”线索。案例一转子不平衡这是最常见的故障。想象一下洗衣机的滚筒如果衣服全堆在一侧脱水时就会剧烈晃动。旋转机械的转子由于材料不均、磨损、结垢等原因质量中心偏离了旋转中心就会产生不平衡。时域特征振动波形近似一个纯净的正弦波。频域特征频谱图这是最典型的特征。频谱图上会出现一个非常突出的峰值其频率等于转子的旋转频率1X即一倍频。谐波成分2X3X的振幅很小几乎可以忽略。振幅大小与转速的平方成正比转速越高振动越剧烈。在实际操作中我们通过监测1X频率的振幅是否超标以及随转速变化的情况就能准确判断不平衡问题。处理办法也直接做动平衡在转子的特定位置增加或减少配重。案例二轴不对中当电机和泵的两个轴连接时如果中心线不重合平行不对中或角度不对中就会产生附加的应力引起振动。时域特征波形仍然周期性较强但不再是纯净正弦波会有一些畸变。频域特征频谱图上旋转频率的二次谐波2X的振幅会显著升高常常与1X的振幅达到同一量级甚至更高。同时可能伴有较高的轴向振动测量方向很重要。对于角度不对中还可能激发更高的倍频如3X、4X。所以当你看到频谱中2X成分异常突出特别是轴向振动也很大时首先要怀疑的就是联轴器对中没做好。案例三滚动轴承故障轴承是旋转机械的“关节”也是最易损的部件之一。轴承的故障频率内圈、外圈、滚动体、保持架可以通过轴承的几何尺寸和转速精确计算出来它们通常不是旋转频率的整数倍而是带有小数。时域特征早期故障可能不明显。发展到一定程度时域波形会出现周期性的冲击脉冲有点像心电图上的“早搏”。频域特征这是谐波分析的“高光”场景。在频谱图上你会在计算出的轴承故障频率处看到明显的峰值。例如外圈缺陷频率BPFO处出现峰值。更关键的是由于冲击会激发系统的固有频率你还会看到在故障频率的倍频2倍、3倍…处出现一系列等间隔的峰值同时在高频段比如几千赫兹出现一个“共振带”。高级的分析方法如包络解调会专门提取这些冲击特征让故障频率在频谱上更清晰。我曾在一个风机上通过频谱发现了一个微小的轴承外圈缺陷频率及时更换避免了整个轴系的损坏。案例四齿轮箱故障齿轮箱是变速和传递动力的关键其振动信号非常复杂包含啮合频率及其谐波。时域特征波形复杂调制现象明显。频域特征健康的齿轮箱频谱上最突出的是齿轮啮合频率齿数×轴转频及其谐波。当齿轮出现磨损、断齿、偏心等故障时频谱会发生变化。例如齿轮磨损会导致啮合频率及其谐波的振幅整体增高且两侧出现边频带间隔为故障齿轮所在轴的转频。断齿则会产生更强烈的周期性冲击在频谱上产生以啮合频率为中心以轴转频为间隔的密集边频带看起来像“栅栏”。分析这些边频带的结构和变化就能定位到具体是哪根轴上的哪个齿轮出了问题。通过这些案例你可以看到谐波分析把复杂的振动“翻译”成了工程师能直接解读的“故障语言”。频谱图就像一张“化学元素分析表”每种故障都有其特定的“特征元素”频率成分。日常监测中我们只需定期采集频谱与基线频谱或历史数据对比观察哪些“特征峰”出现了或长高了就能在故障萌芽期发出预警实现预测性维护从“坏了再修”变为“知坏早修”。4. 超越诊断谐波分析在设计与减振中的妙用故障诊断是谐波分析最广为人知的应用但它的舞台远不止于此。在产品研发、设计优化和主动控制阶段谐波分析同样是不可或缺的工具。它能帮助我们理解振动的根源从而从设计上“防患于未然”或者巧妙地“抵消”振动。应用一产品NVH性能优化NVHNoise, Vibration, Harshness是衡量汽车、家电等消费品品质的关键指标。没人喜欢噪音大、抖动厉害的车或洗衣机。谐波分析在这里是“寻根溯源”的利器。比如汽车在某个车速下方向盘抖动工程师会在方向盘上布置加速度传感器采集振动数据做频谱分析。他们可能会发现抖动的主要频率是发动机二阶惯性力频率对于四缸机是2倍曲轴转频的某个谐波并且这个频率恰好与转向系统的某阶固有频率重合引发了共振。找到了源头解决方案就多了可以调整发动机悬置的刚度来改变激励频率可以在转向柱上增加动力吸振器来吸收特定频率的振动也可以修改结构设计来改变系统的固有频率避开激励频率。整个过程就是通过谐波分析定位问题频率再通过设计干预来“移频”或“吸能”。应用二结构模态分析与参数识别任何结构桥梁、楼板、飞机机翼都有其固有的振动特性即模态包括固有频率、阻尼比和振型。在设计阶段我们需要知道这些参数确保外部激励如风载、车辆通行不会引起共振。实验模态分析EMA就大量依赖谐波分析。具体做法是用激振器给结构施加一个已知的、频率可调的正弦力或一个宽频冲击力同时测量多个点的响应。对激励力和响应信号分别做傅里叶变换得到各自的频谱然后计算频率响应函数FRF。FRF的幅值谱上峰值对应的频率就是结构的固有频率。通过分析这些数据可以识别出结构的模态参数。我参与过一个大型印刷机框架的设计通过模态测试发现其第三阶固有频率与主电机的某个工作转速激励频率很接近。设计团队据此加强了局部筋板将固有频率提高了15%成功避免了量产后的共振风险。应用三主动噪声与振动控制ANC/AVC这是一个更“科幻”的应用原理却基于谐波分析。ANC耳机大家可能听说过它能产生一个与外界噪音频率相同、振幅相等但相位相反相差180度的声波两者叠加后相互抵消实现降噪。这个“复制反相噪音”的过程核心就是实时谐波分析。系统通过麦克风采集噪音快速进行傅里叶分析识别出主要噪音成分的频率和振幅然后生成对应的“反相声波”由扬声器发出。在振动控制上也是如此比如精密光学平台、航天器精密载荷的隔振。通过传感器监测振动控制器实时分析出振动的主频成分驱动作动器产生一个抵消力。这里面的技术核心是自适应滤波算法但它离不开对振动信号频谱的快速、准确分析。没有谐波分析这个“耳朵”和“眼睛”主动控制就是盲人摸象。从这些应用可以看出谐波分析不仅用于“治病”更用于“保健”和“强身”。它让我们从被动地响应振动问题转向主动地理解、预测和设计振动特性。无论是让汽车更安静让桥梁更安全还是让显微镜下的实验不受干扰背后都有这套频域分析方法的功劳。5. 动手实践用Python快速实现振动信号谐波分析读到这里你可能觉得谐波分析原理深奥、应用高端。别担心现在我们就用Python来亲手实现一个简单的振动信号分析让你直观感受从时域到频域的转换过程。我保证即使你编程基础不强跟着步骤也能做出来。我们将使用最经典的NumPy和Matplotlib库以及专门用于信号处理的SciPy。首先我们模拟一个故障轴承的振动信号。假设一台电机的转速是1800转/分钟RPM换算成旋转频率f_r 1800 / 60 30 Hz。它的轴承有一个外圈缺陷理论故障频率是f_bpfo 3.1 * f_r 93 Hz3.1是轴承的几何参数倍频简称BPFI。这个缺陷会产生周期性的冲击。import numpy as np import matplotlib.pyplot as plt from scipy.fft import fft, fftfreq # 1. 设置信号参数 fs 2000 # 采样频率2000 Hz根据采样定理能分析的最高频率是1000Hz T 2 # 信号总时长2秒 N fs * T # 总采样点数 t np.linspace(0, T, N, endpointFalse) # 时间轴 # 2. 构造模拟的振动信号 f_rot 30 # 旋转频率 30 Hz f_bpfo 93 # 轴承外圈故障频率 93 Hz # 信号组成1. 较强的旋转频率成分模拟轻微不平衡2. 较弱的轴承故障频率冲击3. 随机噪声 signal (1.0 * np.sin(2 * np.pi * f_rot * t) # 1X 转频 0.3 * np.sin(2 * np.pi * f_bpfo * t) # 轴承故障频率 0.5 * np.random.randn(N)) # 高斯白噪声模拟背景干扰 # 3. 绘制时域波形图 plt.figure(figsize(12, 8)) plt.subplot(2, 1, 1) plt.plot(t[:int(fs*0.1)], signal[:int(fs*0.1)]) # 只画前0.1秒看得清楚 plt.xlabel(时间 [秒]) plt.ylabel(振幅) plt.title(模拟振动信号 (时域) - 前0.1秒) plt.grid(True) # 4. 进行快速傅里叶变换(FFT)得到频域信息 yf fft(signal) # 计算FFT得到复数结果 xf fftfreq(N, 1/fs)[:N//2] # 计算对应的频率轴只取正频率部分 magnitude 2.0/N * np.abs(yf[0:N//2]) # 计算振幅谱取绝对值并归一化 # 5. 绘制频谱图振幅谱 plt.subplot(2, 1, 2) plt.plot(xf, magnitude) plt.xlabel(频率 [Hz]) plt.ylabel(振幅) plt.title(模拟振动信号的频谱图 (频域)) plt.xlim(0, 200) # 只看0-200Hz范围关键频率都在这里 plt.grid(True) # 6. 标记出我们关心的频率点 plt.axvline(xf_rot, colorr, linestyle--, alpha0.7, labelf旋转频率 {f_rot} Hz) plt.axvline(xf_bpfo, colorg, linestyle--, alpha0.7, labelf轴承故障频率 {f_bpfo} Hz) plt.legend() plt.tight_layout() plt.show() # 7. 找出频谱中的前几个峰值及其频率 indices np.argsort(magnitude)[-5:] # 找到振幅最大的5个点的索引 print(频谱中振幅最大的几个频率成分) for idx in indices: if xf[idx] 1: # 忽略接近0Hz的直流分量 print(f 频率: {xf[idx]:.1f} Hz, 振幅: {magnitude[idx]:.4f})运行这段代码你会得到两张图。第一张是时域波形前0.1秒内你能看到一个大致的正弦波30Hz的转频但上面叠加了很多毛刺和噪声轴承故障的93Hz成分完全看不出来。第二张是频谱图奇迹发生了在横坐标频率轴上30Hz和93Hz处出现了清晰的峰值就像两座凸起的山峰。尽管我们在信号里加入了很强的随机噪声但在频域里我们关心的特征频率依然被清晰地分离和识别了出来。这就是谐波分析的威力——在嘈杂中提取规律。在实际工作中信号处理会更复杂比如会用到加窗函数减少频谱泄漏、平均技术提高信噪比、包络分析提取冲击特征等。但这个简单的例子已经揭示了最核心的流程采集数据 - FFT变换 - 观察频谱 - 识别特征峰。很多专业的振动分析软件底层做的就是这些事情只是包装得更友好算法更鲁棒。自己动手试一次你对“时域”和“频域”的理解会深刻得多。下次再看到频谱图你就能自信地说“看这个峰是转频那个小峰是轴承的故障频率设备可能有点早期问题了。”