3. 传递函数与伯德图:如何用传递函数描述伺服系统,伯德图的绘制与解读

各位工程师朋友,大家好。今天我们聊一个绕不开的话题——传递函数和伯德图。

说实话,我刚入行那会儿,觉得这东西就是纯理论。课本上画得花里胡哨,什么极点、零点、幅频、相频,看得我头大。直到有一次,我在调试一台高速贴片机时,电机在某个转速下疯狂啸叫,怎么调PID都没用。老工程师过来看了一眼,说:“你测个伯德图看看。” 测完一看,好家伙,机械谐振峰就在那里摆着。从那以后,我再也不敢小看这张图了。

今天我就把这块内容掰开揉碎了讲。你只要跟着我的思路走,保证能搞明白。

3.1 传递函数:伺服系统的“数学身份证”

传递函数是什么?说白了,它就是系统输入和输出之间的数学关系。你给系统一个电压信号,它转起来多快、响应多猛,全写在这个函数里。

对于伺服系统,我们最关心的是从速度指令实际速度的传递关系。一个典型的简化模型长这样:

G(s) = K / (J * s + B)

这里:

  • K:电机转矩常数(单位:Nm/A)
  • J:转动惯量(单位:kg·m²)
  • B:粘性阻尼系数(单位:Nm·s/rad)
  • s:拉普拉斯算子

嗯,这里要注意。这个模型是理想化的。实际系统中,还有电流环、速度环、位置环的延迟,以及机械连接件的弹性形变。所以实际传递函数会复杂得多。

核心要点:传递函数的分母(特征方程)决定了系统的稳定性。分母的根(极点)如果在复平面左半平面,系统就稳定;如果在右半平面,系统就发散。

我在项目中遇到过一台龙门铣床,双轴同步时总是抖动。一测传递函数,发现其中一个轴的极点刚好在虚轴附近。这就是典型的临界稳定状态。后来加了个陷波滤波器,把那个极点往左推了推,问题就解决了。

3.2 伯德图:一张图看懂系统“脾气”

传递函数是数学表达式,但工程师更喜欢看图。伯德图就是把传递函数的频率响应画出来。它包含两张子图:

  • 幅频特性图:横轴是频率(对数坐标),纵轴是增益(dB)
  • 相频特性图:横轴是频率(对数坐标),纵轴是相位(度)

为什么要用对数坐标?因为伺服系统的频率范围太宽了。从几赫兹到几千赫兹,线性坐标根本画不下。对数坐标能把低频和高频的细节都展示清楚。

3.3 伯德图的绘制:手算 vs 工具

现在大家都用MATLAB或Python画伯德图。但我建议你至少手算一次,理解背后的物理意义。

举个例子。假设一个简单的二阶系统:

G(s) = ωn² / (s² + 2ζωn s + ωn²)

其中ωn是自然频率,ζ是阻尼比。

手算步骤:

  1. 将s替换为jω(j是虚数单位,ω是角频率)
  2. 计算幅值:|G(jω)| = 20 * log10(幅值)
  3. 计算相位:∠G(jω) = arctan(虚部/实部)
  4. 取几个关键频率点:ω = 0.1ωn, ωn, 10ωn
  5. 描点连线

我的小技巧:手算时重点关注三个点——低频渐近线、转折频率(ωn处)、高频渐近线。这三个点画准了,整条曲线就八九不离十了。

当然,实际工作中我都是用Python的control库来画。几行代码就搞定:

import control as ct
import matplotlib.pyplot as plt

# 定义传递函数
num = [100]  # 分子系数
den = [1, 10, 100]  # 分母系数
sys = ct.TransferFunction(num, den)

# 绘制伯德图
ct.bode_plot(sys, dB=True, Hz=True)
plt.show()

3.4 伯德图解读:一眼看出问题在哪

画图不是目的,读懂图才是。我总结了一套“三步读图法”:

步骤 看什么 说明什么问题
第一步 低频增益 增益高 → 稳态精度好;增益低 → 可能有静差
第二步 穿越频率(0dB线) 穿越频率高 → 响应快;穿越频率低 → 响应慢
第三步 谐振峰 有尖峰 → 存在机械谐振;峰越高 → 振荡越严重

你想想看,如果幅频曲线上在某个频率处突然冒出一个尖峰,那意味着什么?意味着系统在这个频率下会剧烈振荡。这就是我们常说的机械谐振

避坑指南:我曾经在调试一台五轴加工中心时,伯德图上显示在800Hz处有一个小谐振峰。我当时觉得峰不高,就没管。结果一跑高速程序,刀具直接崩了。后来才知道,那个小峰是联轴器松动引起的。所以,任何谐振峰都不能忽视,哪怕它看起来很小。

3.5 知识体系:传递函数与伯德图的核心逻辑

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

传递函数与伯德图知识体系 伺服系统频率特性 传递函数 G(s) 伯德图 极点 → 稳定性判断 零点 → 响应特性 阻尼比 ζ → 振荡程度 幅频曲线 → 增益变化 相频曲线 → 相位滞后 谐振峰 → 机械共振点 核心:传递函数是数学描述,伯德图是可视化工具,两者结合才能精准控振

3.6 实战案例:从伯德图到谐振抑制

讲个真实案例。去年我帮一家客户调试包装机,机器在运行到每分钟300包时,噪音突然变大,产品定位也不准了。

我做的第一件事就是测伯德图。结果如下:

  • 低频段(10Hz以下):增益正常,约40dB
  • 中频段(50Hz附近):出现一个+8dB的谐振峰
  • 高频段(200Hz以上):增益快速下降

看到这个+8dB的峰,我心里就有数了。这是典型的机械谐振,频率在50Hz左右。原因可能是皮带轮偏心或者联轴器磨损。

解决方案:

  1. 软件层面:在速度环中加一个50Hz的陷波滤波器,把那个峰削掉
  2. 硬件层面:检查机械连接件,更换磨损的联轴器

做完这两步,再测伯德图,谐振峰从+8dB降到了+2dB以内。机器跑起来安静多了,定位精度也恢复了。

经验之谈:伯德图上的谐振峰,如果高度超过+6dB,就必须处理。+3dB到+6dB之间,可以观察,但别掉以轻心。低于+3dB,一般问题不大。

3.7 常见误区与避坑

最后,我总结几个新手容易踩的坑:

  • 误区一:只看幅频,不看相频。相位裕度不够,系统一样会振荡。我见过有人把增益调得很低,幅频曲线很平,但相位裕度只有10度,结果系统还是抖。
  • 误区二:忽略高频段。高频段虽然增益低,但相位滞后严重。如果高频噪声进入系统,可能会引发意想不到的振荡。
  • 误区三:把伯德图当万能药。伯德图只能反映线性系统的特性。如果系统有死区、饱和等非线性因素,伯德图会失真。这时候需要结合时域分析。

嗯,今天就讲到这里。传递函数和伯德图是伺服系统调试的“眼睛”。你把这双眼睛练亮了,以后遇到什么振动问题,都能一眼看穿。


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