Mass-Spring-Damper Simulation in MATLAB
Jun. 19, 2023
Introduction
MATLAB的示例 [1] 介绍了如何使用Simulink以及Simulink Simscape库构建一个简单的质量-弹簧-阻尼(Mass-Spring-Damper)系统:
这是一个很经典的系统,在很多的场景中都有应用,例如博客 [2] 中构建的电磁铁。
质量-弹簧-阻尼系统的所对应的方程为:
\[F=m\dfrac{\mathrm{d}x^2}{\mathrm{d}t^2}+b\dfrac{\mathrm{d}x}{\mathrm{d}t}+kx\label{eq1}\]在这个模型中,弹簧的初始值为$x_0=1\ \mathrm{m}$,质量块速度的仿真结果如下图所示:
该示例没有输出质量块的位置波形,我们可以观察一下位置波形信号:
可以看到,最终质量块会稳定在$x=0$处。
Discussions
在很早以前学习这个模型时,觉得很简单,并且最终质量块的速度稳定为零,就没有深究,没有输出模型的位置信号,以为实际模型是和Simscape模型是类似的,是垂直摆放的:
但是在实际应用时遇到了一些问题,再回过头看到模型的位置波形时就很疑惑:为什么一个有重力的小球会停在弹簧形变量为$0$的位置呢?
于是又想了一下,觉得这个示例的模型应该对应方程$\eqref{eq1}$左端项为零的情况,即:
\[0=m\dfrac{\mathrm{d}x^2}{\mathrm{d}t^2}+b\dfrac{\mathrm{d}x}{\mathrm{d}t}+kx\]其对应的实际模型应该为:
是水平摆放在地面上,并且地面是绝对光滑的,没有摩擦力。
如果想要对上述垂直摆放的情形进行建模,则对应的系统方程为:
\[m\mathrm{g}=m\dfrac{\mathrm{d}x^2}{\mathrm{d}t^2}+b\dfrac{\mathrm{d}x}{\mathrm{d}t}+kx\]对应的Simulink模型以及质量块的位置波形为:
最终质量块大致稳定在$-0.08828$处。考虑到该模型的参数:
- 质量
m
,值为3.6
; - 弹簧弹性系数
k
,值为400
;
可以验证此时模型的正确性。
References
[1] Mass-Spring-Damper in Simulink and Simscape - MathWorks.
[2] Simulate Solenoid in MATLAB Simulink - What a starry night~.