资讯动态

齿轮动力学MATLAB仿真:短时傅里叶变换(STFT)识别早期故障

发布时间:2026/10/20 1:16:41 来源:尧图企业网站定制
简介一份围绕齿轮动力学建模与短时傅里叶变换STFT分析的MATLAB源码资源面向机械工程、故障诊断领域的研究人员及课程学习者。资源基于齿轮几何参数、啮合特性等影响因素借助振动信号处理解决齿面磨损、裂纹、不对中等故障的识别与诊断问题。压缩包共3个文件主体为2个.m脚本和1个.asv自动保存文件整体仅5KB内容精炼便于直接阅读和修改。脚本涵盖齿轮振动信号加窗、局部频谱提取与可视化流程可配合Signal Processing Toolbox中的spectrogram函数运行.asv文件则保留编辑备份便于对照学习。目前已有3139人学习下载适合作为科研预研、课堂演示或入门练习也可作为后续引入小波变换、多尺度分析等方法的衔接示例对理解非稳态信号时频特性具有直接帮助实用价值较强。1. 齿轮动力学为什么振动信号不能只靠一次傅里叶变换齿轮振动信号最反直觉的一点是用普通 FFT 做频谱分析反而最容易漏掉关键故障证据。健康齿轮的振动由啮合频率主导信号相对平稳可一旦齿面出现早期裂纹、点蚀或局部磨损每一次经过损伤位置的啮合都会产生瞬态冲击。这种冲击是“几毫秒内突然发生、随后归于平静”的事件普通 FFT 把整段信号压缩成一张平均频谱等于把所有时间信息抹平——你能看到能量谱被抬高却不知道异常成分在什么时刻、以什么节奏冒出来。齿轮动力学要回答的是“齿轮在什么负载和转速下、以什么频率、在哪个时间点产生异常振动”这恰好是短时傅里叶变换STFT的用武之地。这份 MATLAB 源码把两件事串在了一条链上用齿轮动力学模型生成振动信号再用 STFT 把频率成分随时间的变化摊开来看。搞懂这条链再拿频谱图做诊断时就能分清哪些是真实故障哪些是分析手段造成的假象。2. 模型骨架啮合刚度时变如何成为振动的激励源齿轮动力学模型不是上来就列微分方程它首先回答一个工程问题齿轮的振动到底从哪来。很多刚入门的人以为振动来自转子的不平衡或者轴承的间隙但对啮合齿轮对而言最主要的激励源是啮合刚度的时变——这是理解整套仿真代码的钥匙。2.1 单自由度扭转模型理解齿轮动力学的最小画布一对直齿轮传动可以压缩成一个等效扭转系统主动轮和从动轮的转动惯量分别折算到啮合线上中间由一对时变啮合弹簧和阻尼器连接。用相对啮合位移 x 做坐标动力学方程写成m_e x c x k_m(t) x F_d F_e(t)参数含义如下表符号含义在齿轮诊断里扮演的角色m_e等效质量由两个齿轮转动惯量和啮合线折算而来决定系统固有频率共振区齿根动应力最大c啮合阻尼主要来自油膜和材料内摩擦阻尼越大冲击响应衰减越快k_m(t)单齿对啮合刚度合并后的综合啮合刚度随啮合位置周期变化是激励源本身F_d平均负载力矩折算的啮合力决定稳态载荷水平不产生波动F_e(t)齿形误差、基节误差引起的位移激励故障越严重该项越接近窄脉冲把一对齿轮的问题折到啮合线上之后轮齿的弯曲、接触变形就统一成一个时变弹簧刚度。这个简化的单自由度模型是 chilundonglixue.m 这类脚本的起点——它不追求把每个轮齿的应力云图算出来而是先抓住“刚度波动 → 振动响应”这条因果链。2.2 单双齿交替啮合刚度曲线里的冲击是怎么来的渐开线直齿轮的啮合过程不是一对齿从头啮到尾而是单齿啮合和双齿啮合交替出现。重合度在 1 到 2 之间时一个啮合周期内必有一段两对齿同时受力、一段只有一对齿受力。两对齿同时啮合时总刚度接近两对轮齿的刚度之和曲线抬升只剩一对齿承担载荷时刚度陡然下降。于是 k_m(t) 的波动频率恰好等于啮合频率而波动幅度由重合度、齿数、载荷和轮体结构共同决定。这个时变刚度到了方程里就是一个参数激励项。刚度波动的幅度越大、变化越陡系统在每个啮合周期内受一次“瞬时抽打”振动响应里就同时出现了啮合频率及其高次谐波。如果齿面出现磨损或裂纹局部刚度与理想渐开线出现偏差k_m(t) 不再是光滑的周期函数而是叠加了窄脉冲的准周期函数——冲击强度和故障严重程度直接挂钩。这就是为什么齿轮箱诊断普遍从啮合频率及其边带入手而不是只看转频。2.3 从参数到振动信号chilundonglixue.m 的模型骨架源码主脚本 chidundonglixue.m 的常见实现思路是先写参数表再用解析刚度函数近似实际啮合刚度接着积分出位移响应并求二阶导得到加速度最后把数据交给信号分析模块。下面是一段结构示意% chilundonglixue.m —— 齿轮动力学仿真主脚本结构示意 clear; clc; close all; % 1) 齿轮基本参数 z1 23; % 主动轮齿数 z2 69; % 从动轮齿数 n1 1500; % 主动轮转速rpm n2 n1 * z1 / z2; % 从动轮转速rpm fm z1 * n1 / 60; % 啮合频率 齿数 x 转频 575 Hz % 2) 模拟时变啮合刚度平均刚度 1e8 N/m波动幅度 25% fs 20000; % 采样率20 kHz 对应每啮合周期约 35 个点 t (0: 1/fs : 2.0); % 2 秒仿真时长 km 1.0e8 * (1 0.25 * sin(2*pi*fm*t)); % 3) 用刚度序列激励一个单自由度系统数值积分得到位移再微分得加速度 % 这里省略积分器细节dx 和 acc 是积分得到的结构参数 acc 0.5 * sin(2*pi*fm*t) ... 0.2 * sin(2*pi*2*fm*t) ... % 二次谐波来自刚度波形的非正弦畸变 0.1 * randn(size(t)); % 背景噪声模拟测量环境的底噪注意代码里的几个设定采样率 fs 取 20 kHz远大于两倍最高分析频率目的是防止后面做 STFT 时出现混叠刚度波动幅度取 25%是工程里直齿轮刚度波动范围的一个典型值加速度信号保留二次谐波是因为纯粹的简谐刚度波动不会产生高次谐波而真实啮合刚度因单双齿交替存在凸台其波形本身就含丰富的高次成分。这个主脚本目录里往往还带一个以 MD5 串命名的 .m 文件通常是把刚度计算或数值积分单独抽出来的子函数方便多个脚本共用。跑完这段模型你得到的不是一张频谱而是一段时间序列。把它直接送进fft也可以看但只能看到整段信号的平均能量看不到故障冲击发生的时刻——这正是下一章要解剖的信号结构。3. 信号解剖啮合频率、谐波与边带里藏着哪些故障线索模型生成振动信号之后诊断工作才开始。齿轮振动的频率结构不像轴承那样孤立明显它是一组以啮合频率为基线的“家族谱系”基频、谐波、边带和随机噪声叠在一起。理解这套谱系需要知道每个成分为什么存在以及它们在故障后如何变脸。3.1 啮合频率与它的谐波先听懂健康齿轮的“心跳”啮合频率由齿数和转速唯一确定f_m z_1 × n_1 / 60 z_2 × n_2 / 60对于 23 齿、1500 rpm 的主动轮啮合频率是 575 Hz。健康齿轮的振动加速度频谱上575 Hz 处一定有个主峰之后在 1150 Hz、1725 Hz 处还有逐渐衰减的谐波峰。谐波存在的机制很直接啮合刚度波形不是正弦而是近似梯形波傅里叶级数展开后自然包含 2 倍、3 倍分量。所以即使齿轮完全健康谐波也在不能一看到高频成分就叫故障。真正有意义的是谐波幅值相对基频的比例。刚度畸变严重、负载突变时高次谐波比重上升齿面均匀磨损通常抬高高阶谐波转子不平衡的主要表现是一倍转频分量升高对啮合频率谐波的影响相对弱。分析这类信号时常见做法是把前 5 阶啮合谐波的幅值做成柱状图观察哪一阶异常抬高——这一步用普通 FFT 就能做但只到这里远远不够。3.2 边带调制故障信息如何搭上啮合频率的便车齿轮故障更微妙的指纹是边带。所谓边带就是啮合频率主峰两侧各间隔一个转频出现的小峰群。以主动轮为例边带出现在 f_m ± k·f_r1其中 f_r1 n1/60 25 Hz。故障齿轮每转一圈轮齿进入啮合时的载荷状态就被调变一次相当于用转频信号对啮合频率信号做了幅度调制频谱上便出现以转频为间距、成对出现的边带。这里有一个诊断经验值得熟记载荷波动类故障比如齿面点蚀、齿轮偏心主要产生幅值调制边带对称、高度相近转速波动类故障比如齿轮轴扭振产生频率调制边带不对称、间距等于调制频率。边带越靠近主峰说明调制频率越低往往对应轴频的整倍数边带扩散成宽带雾状谱峰则意味着冲击类故障。3.3 从平稳到瞬态为什么早期故障非要时频分析不可普通 FFT 的致命短板在早期裂纹面前暴露得最明显。假设从动轮某个齿根部出现裂纹每次该齿进入啮合时产生一次冲击。这个冲击的周期是从动轮转频对应的周期而不是啮合周期——它在一个啮合周期里只出现一次其余齿的啮合仍然近乎正常。整段信号里冲击次数少、持续时间短FFT 会把脉冲能量分散到整个频带上幅值被压得很低淹没在噪声里。更关键的是时间信息。负载变化、转速变化、故障逐步扩展都会让信号的频率结构随时间漂移。一段 10 秒的齿轮加速过程里啮合频率从 300 Hz 升到 800 Hz普通 FFT 只能给出一个“所有频率都增强”的模糊平均。STFT 通过加窗把信号切成小段假定每一段内信号近似平稳逐段做 FFT再把结果按时间轴拼起来就能在二维图上看到频率成分如何随时间移动。这个假设正是整套时频分析成立的前提。4. STFT 机制加窗切段如何把非平稳信号拆成准平稳STFT 的数学形式并不复杂X(m, k) Σ x[n] · w[n − mR] · e^{−j2πkn/N}其中 w 是窗函数R 是帧移m 是帧号。理解这个公式的关键不在傅里叶变换本身而在窗函数那一项——它决定了你能从信号里读到什么以及读不到什么。4.1 加窗的本质用窗函数换取一段“准平稳”不平稳信号无法直接分析那就把它截短。加窗就是把原始振动序列与一个有限长度窗函数相乘窗口外的信号被衰减到近乎为零窗口内的信号被保留下来做 FFT。每一次移动窗函数的位置就得到一个新片段于是整段非平稳信号被切成一串互相重叠的“准平稳”短片。之所以要重叠是因为加窗后片段边缘的信息权重被压低两个相邻窗口交界处容易产生割裂感。常见的做法是让窗口重叠 50% 到 75%也就是帧移 R 为窗长的一半到四分之一。重叠越多时间轴越平滑代价是计算量上升、相邻帧高度相关。4.2 窗长与窗型时间分辨率和频率分辨率的拔河窗长选择是 STFT 里最核心的权衡也是最多人凭感觉拍板的参数。窗长 N 决定了两项分辨率Δf fs / N时间分辨率 Δt 约为 N / fs 乘以一个系数窗越长频率分辨率越好能把间距小的边带分开窗越短时间分辨率越好能捕捉短促的冲击和频率的瞬时变化。两者乘积受不确定性原理约束鱼与熊掌不可兼得。对齿轮信号一个可复用的经验是先确定目标边带间距——若转频 f_r 25 Hz而你想分辨 f_m ± 25 Hz 这对边带频率分辨率至少需要优于 25 Hz对应的窗长就要超过 fs / Δf 20000 / 25 800 点取 1024 点窗口是一个合理起点。窗型的作用被很多人低估。汉明窗和汉宁窗的主瓣较宽但旁瓣衰减快适合分析齿轮这类宽带噪声背景下的谐波信号矩形窗旁瓣高容易把频谱泄漏扩散到整个频带掩盖弱小的边带。摘要里提到的哈特莱窗在工程信号处理中并不常见很多资料其实是把哈特莱变换与窗函数混淆了STFT 实际最常用的还是汉明窗和汉宁窗处理瞬态冲击时可以换用凯泽窗调整旁瓣衰减。4.3 spectrogram 参数怎么定以齿轮振动为例的实操映射MATLAB 的 Signal Processing Toolbox 把 STFT 做成spectrogram函数一份可用调用长这样[s, f, t, p] spectrogram(acc, hamming(1024), 512, 2048, fs, yaxis); % acc —— 第2章模型生成的加速度信号列向量 % window —— 汉明窗长度1024对应频率分辨率约19.5 Hz % noverlap—— 重叠512点即窗口移动50%时间轴平滑 % nfft —— 2048点FFT超过窗长的部分补零细化频点显示 % fs —— 采样率20000 Hz控制f轴刻度和归一化 % s,f,t —— 短时谱矩阵、频率轴、时间轴 % p —— 功率谱密度做瀑布图或热力图时用p这个参数组合的含义可以拆成三句话1024 点窗在 20 kHz 采样率下对应约 51 毫秒的观察窗口时间上能分辨出 25 Hz 转频冲击的节奏50% 重叠保证相邻帧之间不会出现断层2048 点 FFT 只是把频率轴画得更细不能突破 Δf ≈ 19.5 Hz 的真实分辨率如果边带间距小于 20 Hz调高 nfft 也没用必须加长窗口。输出矩阵 s 的行数等于频率点数列数等于时间帧数。把它转成对数功率谱画成瀑布图或热力图立刻能看到啮合频率随转速漂移的轨迹以及某个时间段突然出现的带宽状能量块——那往往就是故障冲击发生的时间窗。spectrogram拿到的是一张时频图但要读懂它还得小心下面这些坑。5. 避坑指南用 STFT 分析齿轮振动时最常见的翻车点时频图不是画出来就能看参数选错时它只是把噪声画得更好看。下面五条踩坑记录来自实际分析中的血泪经验。5.1 窗长拍脑袋谱图要么抹平要么失真现象同一段齿轮振动信号有人用 512 点窗画出横条纹模糊一片有人用 4096 点窗画出频率清晰但时间轴出现断续的亮点两个人争数据是不是有问题。原因建模时没先算转频和啮合频率。512 点窗只有 25 毫秒持续时间频率分辨率接近 40 Hz两个相距 25 Hz 的边带被溶成一个峰4096 点窗频率分辨率做到 5 Hz但窗口跨越 0.2 秒转速微波动都会被平均进窗内时间定位能力大幅下降。解决先算转频 f_r 和啮合频率 f_m确定要分辨的边带间距按 Δf 需要优于边带间距的 1/3 到 1/2 来选窗长再确认窗口覆盖的时间至少要包含数个啮合周期否则窗内信号不够代表性。两个约束取交集再定 nfft 和 noverlap。5.2 采样率不足啮合频率被折叠加戏现象时频图上某个频率处出现本不存在的强谱线且位置随转速变化时跳跃移动。原因采样率低于最高分析频率的 2 倍高频成分折叠进低频区和真实低频分量叠加混淆。齿轮加速度信号的高次谐波往往延伸到 10 倍啮合频率以上只按 2 倍啮合频率定采样率必然翻车。解决先确定要关心的谐波阶数。若想分析到 5 阶啮合谐波最高频率是 5 × f_m采样率至少取它的 2.5 倍留余量。对 575 Hz 的啮合频率20 kHz 采样率相当于每啮合周期采 35 个点这个密度对绝大多数齿轮箱诊断足够。5.3 不设重叠时变特征被切成了“短视频”现象时频图在时间方向上出现明显的方块感能量块像一格一格跳瞬时冲击的起止时刻根本看不准。原因noverlap 默认值太小或设为 0帧移 R 等于窗长相邻窗口毫不相干时间轴上等于每隔一个窗长才采样一次冲击事件容易被卡在两个窗口中间漏掉。解决novertap 至少取窗长的一半冲击类分析建议取 75%。代价是帧数增加但时间轴分辨率显著改善对定位故障齿出现的时刻至关重要。5.4 转速波动被误读成边带故障现象时频图上健康齿轮显示出一条随时间缓慢弯曲的宽带被新手判定为“边带异常、存在调制”。换成恒转速数据后同样的齿轮谱图完全正常。原因升速或降速过程中啮合频率本身在连续变化STFT 逐帧计算时每帧里的频率都在移动等于做了频率调制谱线自然展宽并产生类似调制边带的结构。这不是故障是工况。解决处理变转速信号前先测转速。简单做法是把数据按转速等分成小段每段用中心频率归一化画图严格做法是做阶次跟踪把振动信号重采样到转角的均匀轴上让啮合频率变成恒定阶次再做 STFT 就没有频率漂移问题。5.5 只看幅值谱漏掉早期裂纹的瞬态冲击现象STFT 幅值热力图整片均匀看不出异常但同一时刻的原信号在时域上分明存在重复性脉冲。原因STFT 的窗口长度被调得过大瞬态冲击能量在一个长窗内被平均分配到整个频率轴幅值被摊薄加上用线性尺度显示时弱冲击淹没在啮合基频的强能量下。解决先用短窗比如 128 点到 256 点做一版粗扫找冲击出现的疑似时间窗再切出该段信号做包络分析或自相关分析确认重复周期。另一个更顺手的办法是看对数谱或功率谱密度图弱冲击在低幅值的动态范围里更容易显形。6. 设计取舍固定窗长的 STFT 之后何时该投奔小波STFT 的局限在原理上就注定了窗长一旦选定整个时频平面上所有频率段使用同一个时间和频率分辨率。齿轮信号恰恰是“低频段需要高频率分辨率、高频段需要高时间分辨率”的典型低频边带之间可能只差几赫兹而高频谐波附近可能躲着一次只有几毫秒的裂纹冲击。固定窗长的 STFT 只能在两者里选一个照顾这是时频分析里最让人难受的妥协。小波变换的出发点就是拆掉这个固定窗。它用一族可伸缩的基函数替代固定窗函数尺度参数据控制了基函数的宽度大尺度对应长窗、小尺度对应短窗于是低频段自动获得窄带宽、高频段自动获得短时间窗分辨率随频率自适应变化。对齿轮振动这种同时含谐波和瞬态冲击的信号小波往往能同时保住边带细节和冲击定位代价是计算更重、参数解释不如 STFT 直观处理恒定转速工况时信息冗余明显。我一般建议一套自己的判断流程先问信号是不是恒定转速不是就做阶次跟踪后再谈时频图再问目标是识别调制边带还是瞬态冲击前者用长窗 STFT 画窄带瀑布图后者直接上短窗 STFT 加包络谱两种手段都效果不佳、又确实存在宽频瞬态冲击时才切换到小波或经验模态分解。这套流程在这份资源的模型脚本上跑一遍基本就能建立对时频分析的判断力。从那以后我每次处理齿轮振动数据都强制先算转频和啮合频率再定窗长和采样率最后才画图——顺序反了图越好看越容易得出错误结论。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑