2. 动力学建模基础:单自由度系统、多自由度系统、状态空间方程推导
做主动隔振,第一步就是建模。说白了,你得知道被控对象长什么样,它怎么动,力怎么传。我见过不少工程师一上来就调PID参数,结果系统抖得像筛子——原因很简单,模型没搞对。
这一章我们就把动力学建模这件事讲透。从最简单的单自由度开始,逐步过渡到多自由度,最后统一到状态空间方程。嗯,这部分是后面所有控制器设计的地基,地基不稳,楼盖得再高也得塌。
2.1 单自由度系统:隔振的起点
单自由度系统(SDOF)是最基本的振动模型。你想想看,一个质量块、一根弹簧、一个阻尼器,串联在一起,就是它了。
核心方程:
牛顿第二定律告诉我们:m·ẍ + c·ẋ + k·x = F(t)
其中:
- m — 质量 (kg)
- c — 阻尼系数 (N·s/m)
- k — 弹簧刚度 (N/m)
- F(t) — 外部激励 (N)
这个方程看着简单,但信息量很大。它描述了系统在任意时刻的受力平衡。惯性力、阻尼力、弹性力,加上外力,总和为零。
我在做精密光学平台隔振时,就遇到过这种情况。平台本身重达2吨,但允许的振动幅度只有微米级。当时我们用的就是单自由度模型来估算隔振器的刚度和阻尼比。你猜怎么着?模型预测的共振频率和实测只差了3%。
2.1.1 固有频率与阻尼比
从上面的方程,我们可以引出两个关键参数:
| 参数 | 符号 | 公式 | 物理意义 |
|---|---|---|---|
| 固有频率 | ωn | √(k/m) | 系统自由振动的角频率 |
| 阻尼比 | ζ | c / (2√(mk)) | 阻尼程度的无量纲指标 |
我的经验:主动隔振系统的阻尼比通常设计在0.3~0.7之间。太小了,共振峰压不住;太大了,高频隔振性能会下降。我曾经在一个项目中把阻尼比调到0.8,结果高频振动反而放大了——这就是过阻尼的代价。
2.1.2 传递函数与隔振率
对单自由度系统做拉普拉斯变换,得到传递函数:
G(s) = X(s) / F(s) = 1 / (m·s² + c·s + k)
隔振率(Transmissibility)定义为输出振幅与输入振幅之比:
T(ω) = |X(ω) / U(ω)| = √[(1 + (2ζ·r)²) / ((1 - r²)² + (2ζ·r)²)]
其中 r = ω/ωn 是频率比。
这里有个关键点:当 r > √2 时,隔振率才小于1,系统才开始隔振。换句话说,激励频率必须大于固有频率的1.414倍,隔振才有效。这个结论我反复验证过,错不了。
2.2 多自由度系统:现实世界的常态
单自由度系统是理想情况。实际工程中,一个隔振平台有六个自由度——三个平动、三个转动。你不可能只用一条弹簧就搞定所有方向的振动。
多自由度系统(MDOF)的方程写成矩阵形式:
M·ẍ + C·ẋ + K·x = F(t)
其中:
- M — 质量矩阵 (n×n)
- C — 阻尼矩阵 (n×n)
- K — 刚度矩阵 (n×n)
- x — 位移向量 (n×1)
- F — 力向量 (n×1)
看着是不是比单自由度复杂多了?别怕,核心思想是一样的——每个自由度都满足牛顿第二定律,只不过现在要同时解一组方程。
注意:多自由度系统的矩阵M、C、K通常不是对角阵。这意味着各个自由度之间存在耦合。比如,你在x方向施加一个力,系统可能在y方向也有响应。这就是所谓的“交叉耦合”。我在做六自由度平台时,交叉耦合是最头疼的问题之一。
2.2.1 模态分析:解耦的艺术
多自由度系统之所以难处理,就是因为耦合。但有一个技巧——模态分析。通过求解特征值问题:
(K - ω²·M) · φ = 0
我们可以得到系统的固有频率ωi和模态振型φi。然后,用模态坐标变换,把耦合的物理方程变成一组独立的单自由度方程。
这个过程,说白了就是把一个复杂问题拆成几个简单问题。我当年做汽车发动机悬置设计时,就是用模态分析把六自由度系统解耦成六个独立的模态,每个模态单独设计隔振器,效果立竿见影。
2.3 状态空间方程:控制工程师的语言
传递函数适合单输入单输出系统。但主动隔振系统通常是多输入多输出的——多个传感器、多个作动器。这时候,状态空间方程是更好的选择。
状态空间方程的标准形式:
ẋ = A·x + B·u
y = C·x + D·u
其中:
- x — 状态向量 (包含位移和速度)
- u — 输入向量 (控制力)
- y — 输出向量 (传感器测量值)
- A — 系统矩阵
- B — 输入矩阵
- C — 输出矩阵
- D — 前馈矩阵 (通常为零)
2.3.1 从二阶方程到状态空间
怎么把二阶的动力学方程变成一阶的状态空间?很简单,定义状态变量:
x₁ = x (位移)
x₂ = ẋ (速度)
那么:
ẋ₁ = x₂
ẋ₂ = (1/m) · (F - c·x₂ - k·x₁)
写成矩阵形式:
[ẋ₁] [ 0 1 ] [x₁] [ 0 ]
[ẋ₂] = [-k/m -c/m] [x₂] + [1/m] · F
y = [1 0] · [x₁]
[x₂]
你看,一个二阶系统变成了两个一阶方程。这就是状态空间的精髓——用一阶微分方程组描述任意阶系统。
我的建议:在实际项目中,我习惯用MATLAB的ss()函数直接从传递函数或质量-刚度-阻尼矩阵生成状态空间模型。但理解背后的推导过程很重要,否则你没法判断仿真结果是否合理。
2.4 知识体系总览
下面这张图总结了本章的核心逻辑:
2.5 建模流程总结
在实际项目中,我一般按以下步骤建立隔振系统的动力学模型:
- 确定自由度 — 系统有几个独立运动方向?平动?转动?
- 建立物理模型 — 画出质量块、弹簧、阻尼器的连接关系
- 列写运动方程 — 对每个自由度应用牛顿第二定律
- 整理成矩阵形式 — 得到M、C、K矩阵
- 转换到状态空间 — 定义状态变量,写出A、B、C、D矩阵
- 验证模型 — 用仿真或实验数据校核模型精度
避坑提醒:我曾经在一个项目中忽略了阻尼矩阵的非对角元素,结果仿真结果和实测差了20%。后来才发现,系统的结构阻尼导致了明显的交叉耦合。所以,建模时别偷懒,该测的参数一定要测,该算的耦合一定要算。
好了,这一章的内容就到这里。动力学建模是主动隔振设计的根基,花时间把模型搞准了,后面的控制器设计才能事半功倍。记住,模型越接近真实系统,你的控制效果就越可靠。