4. 单自由度系统建模:弹簧-质量-阻尼系统的动力学方程、传递函数与状态空间表示

各位工程师朋友,大家好。今天我们聊一个非常基础但又极其重要的内容——单自由度系统的建模。说白了,就是那个经典的弹簧-质量-阻尼系统。你别看它结构简单,我做了十几年运动控制,发现很多复杂的多轴系统、柔性机械臂,归根结底都能拆解成若干个这样的单自由度模型来分析。

我个人习惯,在讲任何控制算法之前,先把被控对象的数学模型搞透。模型不准,后面调参就是瞎忙活。今天我们就从三个角度来解剖这个系统:动力学方程、传递函数、状态空间。这三种表示方法,各有各的用处。

4.1 物理模型与动力学方程

先看一个最典型的场景。一个质量为 m 的物体,通过一个刚度为 k 的弹簧和一个阻尼系数为 c 的阻尼器,连接在固定端。物体受到外力 f(t) 的作用,产生位移 x(t)。

核心公式:牛顿第二定律

m·ẍ(t) + c·ẋ(t) + k·x(t) = f(t)

这就是单自由度系统的动力学方程,也叫二阶常微分方程。

为什么会这样?很简单。物体受到的力有三个:

  • 惯性力:m·ẍ(t),质量乘以加速度
  • 阻尼力:c·ẋ(t),与速度成正比,方向相反
  • 弹性力:k·x(t),与位移成正比,方向相反

这三个力的合力,等于外力 f(t)。

实战经验:我在做伺服电机驱动刚性负载时,经常忽略阻尼项,认为它很小。结果有一次做高精度定位,系统总是有微小的震荡收敛不了。后来一查,是导轨的粘滞阻尼在低速时不可忽略。所以,阻尼项要不要简化,得看你的精度要求。

4.2 传递函数表示

动力学方程是时域的,做控制设计时我们更喜欢用频域的工具——拉普拉斯变换。把时域方程变换到 s 域,假设初始条件为零,得到:

m·s²·X(s) + c·s·X(s) + k·X(s) = F(s)

整理一下,传递函数就出来了:

传递函数:

G(s) = X(s) / F(s) = 1 / (m·s² + c·s + k)

这个形式太经典了。你想想看,它本质上就是一个二阶低通滤波器。分母的系数决定了系统的动态特性。

我们通常把它写成标准形式:

G(s) = (1/m) / (s² + 2·ζ·ωₙ·s + ωₙ²)

其中:

参数 表达式 物理意义
ωₙ (无阻尼自然频率) √(k/m) 系统固有的振荡频率
ζ (阻尼比) c / (2·√(m·k)) 描述系统衰减快慢

避坑指南:我曾经在调试一个高速龙门架时,发现系统在某个速度下剧烈抖动。用传递函数一分析,发现阻尼比 ζ 只有 0.05,接近无阻尼状态。后来加了主动阻尼补偿才稳住。记住,ζ 小于 0.7 时,系统会有明显的超调和振荡。

4.3 状态空间表示

传递函数适合单输入单输出系统,但现代控制理论(比如 LQR、MPC)更喜欢用状态空间。状态空间的好处是能处理多变量、非线性、时变系统。

怎么从二阶方程变成状态空间?我教你一个通用套路。选状态变量:

  • x₁ = x (位移)
  • x₂ = ẋ (速度)

那么:

  • ẋ₁ = x₂
  • ẋ₂ = (1/m)·(f - c·x₂ - k·x₁)

写成矩阵形式:

状态空间方程:

| ẋ₁ |   | 0     1   | | x₁ |   | 0   |
|    | = |          | |    | + |     | · f
| ẋ₂ |   | -k/m  -c/m| | x₂ |   | 1/m |

y = | 1  0 | · | x₁ |
                | x₂ |

这就是标准的状态空间形式:

  • 状态矩阵 A = [[0, 1], [-k/m, -c/m]]
  • 输入矩阵 B = [[0], [1/m]]
  • 输出矩阵 C = [1, 0]
  • 前馈矩阵 D = 0

我的习惯:做前馈控制时,我更喜欢用状态空间。因为你可以把期望的轨迹(位置、速度、加速度)直接作为参考输入,然后设计前馈补偿。比如加速度前馈,就是直接补偿惯性力 m·a_desired。这在传递函数里反而不直观。

4.4 三种表示方法的对比

这三种方法,什么时候用哪个?我简单总结一下:

表示方法 优点 适用场景
动力学方程 物理意义最直观 参数辨识、物理分析
传递函数 频域分析方便 PID调参、稳定性分析
状态空间 适合现代控制算法 前馈控制、最优控制

4.5 知识体系结构图

下面我用一张图来总结本章的核心逻辑。从物理模型出发,衍生出三种数学表示,每种表示对应不同的控制设计方法。

弹簧-质量-阻尼系统 动力学方程(时域) 传递函数(频域) 状态空间(现代控制) 参数辨识 / 物理分析 PID调参 / 稳定性分析 前馈控制 / LQR / MPC 三种表示方法,服务于不同的控制设计需求

4.6 实战中的一点感悟

最后说点题外话。很多刚入行的工程师喜欢直接套用传递函数,觉得状态空间太复杂。但我的经验是,如果你要做高性能运动控制,比如半导体设备、机器人关节,状态空间几乎是绕不开的。因为前馈控制的核心就是模型逆,而状态空间能让你清晰地分离出位置、速度、加速度的前馈分量。

嗯,今天就到这里。记住,模型是控制的基础。模型建得准,后面的事就顺了。


专注资料整理