
简介本资源是一份面向机械工程、结构动力学及设备可靠性工程师的振动分析核心公式速查文档聚焦故障诊断、试验设计与数据解读中的关键计算需求。全文系统梳理15个高频实用公式覆盖激振力推导F(m₀m₁m₂)A、加速度/速度/位移三参数换算含ω2πf角频率关联、平滑交越点频率计算加速度-速度/速度-位移/加速度-位移三类、线性与对数扫频时长及速率控制含倍频程n与扫描速率R关系以及随机振动中PSD积分求均方根值grms、峰峰值位移估算Xp-p1067·√(wo/fo)等硬核内容。资源为单文件Word文档.doc体积精简仅103KB便于嵌入报告、快速查阅或教学引用。目前已有236人学习下载适合从事振动台试验、设备健康监测、NVH分析及可靠性验证的工程技术人员作为随身公式手册使用。1. 振动分析中常用的计算公式不是查表背诵而是理解每个符号在真实传感器数据里怎么跳动你手头有一台加速度传感器采样率 25.6 kHz测得一段轴承座振动信号时域波形毛刺多、周期性弱FFT 频谱上 320 Hz 附近有个鼓包但信噪比不到 6 dB——这时候翻《振动分析中常用的计算公式.doc》第 7 行的“位移-速度-加速度换算关系”却卡在“ω 是角频率”这句上ω 到底该取实测主频还是理论转速对应频率还是 FFT 峰值处插值结果这份文档真正价值从来不是当字典查而是帮工程师在原始时序数据、物理量纲、诊断逻辑三者之间快速建桥。它覆盖旋转机械故障初筛如不平衡、不对中、滚动轴承缺陷、结构模态粗估、隔振设计校核等高频场景适合刚接手振动监测系统的现场工程师、做设备健康评估的算法支持人员以及需要把仿真结果和实测对齐的结构动力学初学者。别被“公式”二字吓住——所有推导都可逆向验证所有参数都有实测锚点关键是你得知道哪个公式此刻正在你的 Python 脚本里悄悄决定报警阈值。2. 从时域信号出发位移、速度、加速度三者的微分/积分关系与工程化实现振动传感器输出的原始数据99% 是加速度单位 m/s²但故障特征可能藏在位移μm或速度mm/s频带里。直接套用理论微分/积分公式会因噪声放大而翻车必须结合工程约束重写。2.1 为什么不能直接对加速度信号求二重积分得位移理论公式$$ x(t) \iint a(t),dt^2 $$看似简单但实测加速度信号含低频漂移如温度致零点偏移、工频干扰50 Hz 及其谐波、量化噪声。直接积分后0.1 Hz 的漂移经两次积分会放大成 ~100× 的趋势项完全淹没真实位移。某导师曾用某国产数采仪测电机振动未去趋势直接积分位移曲线像心电图一样缓慢爬升误判为严重松动。提示所有积分运算前必须先做高通滤波 趋势消除。截止频率选 2–5 Hz取决于最低关注故障频率非简单减均值——均值消除只对纯直流有效对缓变漂移无效。2.2 工程可用的加速度→速度→位移转换链我们用scipy.signal构建抗噪链以采样率fs25600、加速度信号accnumpy array为例import numpy as np from scipy import signal def acc_to_vel(acc, fs, highpass_hz3.0): 加速度转速度带高通滤波的数值积分 # 设计巴特沃斯高通滤波器2阶避免相位失真 sos signal.butter(2, highpass_hz, hp, fsfs, outputsos) acc_filtered signal.sosfilt(sos, acc) # 梯形法积分vel[i] vel[i-1] (acc_filtered[i] acc_filtered[i-1]) * dt / 2 dt 1.0 / fs vel np.cumsum((acc_filtered[:-1] acc_filtered[1:]) * dt / 2) vel np.insert(vel, 0, 0.0) # 补零保证长度一致 return vel def vel_to_displ(vel, fs, highpass_hz3.0): 速度转位移同理高通积分 sos signal.butter(2, highpass_hz, hp, fsfs, outputsos) vel_filtered signal.sosfilt(sos, vel) dt 1.0 / fs displ np.cumsum((vel_filtered[:-1] vel_filtered[1:]) * dt / 2) displ np.insert(displ, 0, 0.0) return displ # 使用示例 vel acc_to_vel(acc, fs25600, highpass_hz3.0) displ vel_to_displ(vel, fs25600, highpass_hz3.0)参数说明highpass_hz3.0这是经验值。若关注 10 Hz 以上故障如滚动体缺陷可设 5 Hz若需保留 1–2 Hz 的轴向窜动则必须 ≤2 Hz此时需额外做基线校正。sossecond-order sections比butter(..., outputba)更稳定避免高阶滤波器系数溢出。积分用梯形法而非矩形法精度提升一阶对高频成分更友好。验证方法对已知正弦加速度信号a(t)A·cos(ωt)理论速度应为v(t)A/ω·sin(ωt)。代入代码检查np.max(np.abs(vel - A/omega*np.sin(omega*t))) 1e-3*A是否成立。3. 频域核心公式落地FFT 幅值、功率谱密度、包络谱的物理量纲与缩放规则时域转换只是起点振动诊断真正发力在频域。但 FFT 输出的“幅值”到底代表什么为什么同一段数据用 MATLABpwelch和 Pythonscipy.signal.welch算出的 PSD 数值差 10 倍根源全在公式背后的量纲缩放。3.1 加速度信号 FFT 幅值的正确解读对 N 点实信号accnp.fft.rfft(acc)输出复数数组X其幅值|X[k]|不是物理加速度幅值需按以下步骤还原def acc_fft_physical(acc, fs): N len(acc) X np.fft.rfft(acc) freqs np.fft.rfftfreq(N, 1/fs) # 1. 单边谱缩放除以 N 得真实幅值单位 m/s² # 注意rfft 默认输出单边谱含 DC 和 Nyquist需乘 2 除 N amp_physical np.abs(X) * 2 / N amp_physical[0] / 2 # DC 分量不乘 2 if N % 2 0: amp_physical[-1] / 2 # Nyquist 分量不乘 2 return freqs, amp_physical freqs, amp acc_fft_physical(acc, fs25600)关键点*2/N是核心缩放因子。不除 N幅值随采样点数线性增长不乘 2单边谱丢失一半能量。amp_physical[k]单位是 m/s²表示该频率点对应正弦分量的峰值加速度不是 RMS。若需 RMS再除 √2。若传感器灵敏度为 100 mV/g需先将电压信号转为 m/s²acc voltage * 9.81 * 10因 1 g 9.81 m/s²100 mV/g → 1 V 对应 10 g。3.2 功率谱密度PSD的工程计算为什么welch参数不能乱设PSD 单位是 (m/s²)²/Hz反映单位频带内的功率。scipy.signal.welch的nperseg每段点数和noverlap重叠点数直接影响分辨率与方差from scipy.signal import welch f_psd, psd welch( acc, fsfs, nperseg4096, # 关键决定频率分辨率 Δf fs/nperseg 6.25 Hz noverlap2048, # 50% 重叠提升统计稳定性 windowhann, # 汉宁窗抑制频谱泄漏 scalingdensity # 必须设为 density 才得 PSD非 spectrum )参数选择逻辑nperseg4096平衡分辨率Δf6.25 Hz与频谱平滑度。若关注 100 Hz 内故障如轴承外圈缺陷Δf 5 Hz 更佳可设nperseg8192Δf3.125 Hz但需保证信号时长 ≥0.3 s。scalingdensity这是 PSD 的定义要求。若误用spectrum输出单位变成 (m/s²)²完全错误。windowhann比矩形窗泄漏小 30 dB对非整周期截断信号至关重要。3.3 包络谱Envelope Spectrum解调轴承故障的钥匙公式滚动轴承缺陷频率BPFO/BPFI/BSF/FTF常被载波淹没在高频噪声中。包络谱通过 Hilbert 变换提取幅值包络再对其 FFT$$ \text{Envelope}(t) \left| \mathcal{H}{a(t)} \right|, \quad \text{ES}(f) \left| \text{FFT}{\text{Envelope}(t)} \right| $$from scipy.signal import hilbert def bearing_envelope_spectrum(acc, fs, band_low3000, band_high8000, nperseg4096): # 1. 带通滤波聚焦缺陷敏感频带如 3–8 kHz sos_bp signal.butter(4, [band_low, band_high], bandpass, fsfs, outputsos) acc_bp signal.sosfilt(sos_bp, acc) # 2. Hilbert 变换取包络 analytic hilbert(acc_bp) envelope np.abs(analytic) # 3. 包络信号的 FFT注意此处用物理幅值缩放 f_env, amp_env acc_fft_physical(envelope, fs) return f_env, amp_env f_env, amp_env bearing_envelope_spectrum(acc, fs25600)为什么带通滤波中心频段必须人工设定因为轴承几何参数节径、滚子数、接触角决定理论缺陷频率但实际安装间隙、润滑状态会使载波频带偏移。某模拟项目 X 中理论 BPFO245 Hz但实测载波集中在 5.2 kHz若滤波设 2–4 kHz 就漏掉全部特征。4. 振动烈度与故障判据公式ISO 10816 和 GB/T 2298 的工程折中有了频谱下一步是判断“是否超标”。ISO 10816-3工业机器和 GB/T 2298机械振动术语给出速度有效值RMS判据但直接套用会误报——因为标准基于稳态、无冲击的理想工况。4.1 速度有效值RMS的正确计算路径不能对原始加速度直接 RMS必须先转速度再求 RMSdef velocity_rms_from_acc(acc, fs): # 步骤1加速度→速度高通滤波积分 vel acc_to_vel(acc, fs, highpass_hz1.0) # 低频截止放宽至 1 Hz # 步骤2速度信号 RMS注意是速度的 RMS不是加速度的 vel_rms np.sqrt(np.mean(vel**2)) # 单位 mm/s若 acc 单位 m/s²则 vel 单位 m/s需 *1000 return vel_rms * 1000 # 转为 mm/s匹配 ISO 标准单位 vel_rms_mm_s velocity_rms_from_acc(acc, fs25600)ISO 10816-3 典型阈值mm/s RMS机器类型10–1000 Hz 速度 RMSmm/s小型刚性机器≤2.8良好大型刚性机器≤4.5良好有柔性基础机器≤7.1良好注意此 RMS 必须在机器额定转速下、稳定运行 30 秒以上采集。某公司产线电机在启停瞬间 RMS 达 12 mm/s但稳态仅 3.2 mm/s按瞬时值误停机。4.2 冲击性故障的补充判据峭度Kurtosis与脉冲因子Impulse Factor对于早期轴承剥落、齿轮点蚀等冲击故障RMS 不敏感。此时用无量纲指标峭度Kurtosis:$$ K \frac{1}{N}\sum_{i1}^{N} \left( \frac{x_i - \bar{x}}{\sigma_x} \right)^4 $$正常轴承信号 K≈3K6 预示冲击K10 强烈冲击。但注意传感器过载、电气干扰也会抬高 K 值。脉冲因子Impulse Factor:$$ IF \frac{\max(|x_i|)}{\text{RMS}(x)} $$正常值 1–23.5 需警惕。def vibration_impulse_metrics(acc): acc_abs np.abs(acc) peak np.max(acc_abs) rms np.sqrt(np.mean(acc**2)) kurtosis pd.Series(acc).kurtosis() # 或用 scipy.stats.kurtosis impulse_factor peak / rms return kurtosis, impulse_factor k, ifac vibration_impulse_metrics(acc)血泪经验某次现场发现 K8.2但检查发现是传感器电缆接触不良导致周期性尖峰非机械故障。因此K 和 IF 必须与时域波形、包络谱联合看——若尖峰在时域随机分布且包络谱无周期性大概率是电气问题。5. 避坑指南振动公式应用中 5 个高频翻车点与现场排查口诀振动分析不是数学考试公式套错一步诊断结论全盘作废。以下是某跨平台系统部署中踩过的 5 个真实坑按“现象→原因→解决”列明每条都配可执行命令或检查点。5.1 现象FFT 频谱在 0 Hz 处出现巨大尖峰掩盖所有低频特征原因加速度信号含显著直流偏置传感器零点漂移或数采仪 offset未做高通滤波直接 FFT。解决用scipy.signal.detrend(acc, typelinear)去线性趋势更可靠acc_centered acc - np.mean(acc[0:1000])取前 1000 点基线终极方案硬件端启用传感器 IEPE 恒流源的 AC 耦合模式。5.2 现象包络谱上出现等间隔杂散峰间隔恰为采样率的整数分之一如 25.6 kHz / 100 256 Hz原因Hilbert 变换对带通滤波后的信号要求严格——若滤波器相位非线性解析信号产生虚假调制。解决改用scipy.signal.firwin设计线性相位 FIR 带通滤波器非 butter或直接用scipy.signal.hilbert前先signal.resample(acc, len(acc)*2)过采样降低混叠风险。5.3 现象同一台电机上午测 RMS3.1 mm/s下午测 RMS5.8 mm/s但轴承温度、电流均正常原因数采仪输入量程切换错误。上午用 10 V 量程对应 ±100 g下午误切为 1 V 量程±10 g导致信号削波RMS 虚高。解决检查数采仪配置cat /sys/devices/.../rangeLinux 下或读取设备寄存器时域波形观察削波时波形顶部/底部变平np.sum(acc 0.9*np.max(acc)) 10即告警。5.4 现象理论不平衡故障频率1× RPM在频谱上找不到但 2×、3× RPM 明显原因转速测量不准。编码器信号受油污干扰或磁性传感器安装间隙过大导致 RPM 计算偏差 5%。解决不依赖编码器用频谱峰值搜索f_peak freqs[np.argmax(psd[10:200])]限 10–200 Hz用scipy.signal.find_peaks(psd, distance50)找基频及谐波验证是否满足f2/f1 ≈ 2.0。5.5 现象更换同型号传感器后相同工况下速度 RMS 值相差 30%原因传感器灵敏度公差典型 ±5%叠加数采仪增益误差±2%累积误差达 ±7%但用户未做标定。解决每支传感器出厂标定证书必须录入系统现场用振动校准仪如 BK 4294做单点标定acc_cal voltage_measured * sensitivity_certified在软件中设置通道增益补偿acc_corrected acc_raw * (sensitivity_nominal / sensitivity_actual)。6. 进阶技巧用公式反推传感器选型与采样参数——让诊断逻辑驱动硬件配置很多工程师把振动分析当成“软件事后处理”其实公式本身就在告诉你硬件该怎么配。比如要可靠捕获滚动体缺陷BSF先看它的理论频率范围再倒推采样率与带宽。6.1 从故障频率反推最低采样率奈奎斯特不是终点是起点轴承 BSF 公式$$ \text{BSF} \frac{N_b}{2} f_r \left(1 - \frac{d}{D}\cos\alpha \right) $$其中 $N_b$ 为滚子数$f_r$ 为转速Hz$d$ 为滚子直径$D$ 为节径$\alpha$ 为接触角。某模拟项目 X 中电机转速 2980 rpm$f_r49.7$ Hz$N_b11$$d/D0.2$$\alpha0^\circ$算得 BSF ≈ 273 Hz。但BSF 不是载波频率实际缺陷冲击激发的是 3–8 kHz 高频共振。要捕获其包络需满足采样率 $f_s$必须 ≥ 2 × 载波上限如 8 kHz → $f_s≥16$ kHz但为留余量选 25.6 kHz常见工业数采仪档位抗混叠滤波器截止频率设为 $f_s/2.56 10$ kHz确保 8 kHz 以上噪声被压制FFT 分辨率若需区分 BSF273 Hz与邻近的 2×BSF546 Hz要求 Δf 100 Hz → $N f_s / \Delta f 25600/100 256$ 点实际取 4096 点Δf6.25 Hz。6.2 用 RMS 公式预估传感器量程避免削波与信噪比双输假设目标检测最小故障对应速度 RMS0.5 mm/s载波频带 5 kHzQ 值品质因数约 10则加速度 RMS 为$$ a_{\text{rms}} 2\pi f \cdot v_{\text{rms}} \cdot Q 2\pi \times 5000 \times 0.0005 \times 10 \approx 157 , \text{m/s}^2 \approx 16 , g $$因此传感器量程至少选 ±20 g留 25% 余量灵敏度选 100 mV/g输出电压 2 V适配多数数采仪 10 V 量程。6.3 一个硬核验证技巧用白噪声注入测试整个链路的量纲保真度生成已知 PSD 的白噪声单位 (m/s²)²/Hz走完整流程白噪声 → 加速度信号acc_whiteacc_white→ 速度 → 位移对速度信号求 RMS应严格等于理论值sqrt(PSD * bandwidth)。# 生成白噪声PSD 1e-6 (m/s²)²/Hz带宽 10 kHz np.random.seed(42) n_points 2**16 fs 25600 psd_target 1e-6 acc_white np.random.normal(0, np.sqrt(psd_target * fs), n_points) # 走完整流程 vel_white acc_to_vel(acc_white, fs, highpass_hz1.0) vel_rms_calc np.sqrt(np.mean(vel_white**2)) * 1000 # mm/s # 理论值sqrt(PSD * BW) * 1000 sqrt(1e-6 * 10000) * 1000 ≈ 100 mm/s print(f实测速度 RMS: {vel_rms_calc:.1f} mm/s) # 应在 95–105 mm/s 间若偏差 10%说明积分链或滤波器存在系统性增益误差需校准。这个测试我坚持在每次新部署数采系统时做它比任何说明书都可靠——毕竟公式不会说谎但人会忽略量纲。希望帮到你。本文还有配套的精品资源点击获取