2. 弹簧-质量-阻尼系统的多领域仿真

弹簧-质量-阻尼系统的多领域仿真 学习卡片

系统构成与建模思路

弹簧-质量-阻尼平移系统是二阶机械动力学最典型的载体。本例把质量块 m、弹簧 k、阻尼器 c 三个物理元件分别建模,再通过“力平衡”这一物理连接关系组装成完整系统。多领域仿真的价值在于:机械平移域中的力、速度、位移与电气域中的电压、电流、转矩可以共用同一套求解框架,后续案例只需替换或增加域元件即可。

取质量块位移 x 向右为正,弹簧和阻尼器一端固定于墙、另一端连接质量块。外力 F(t) 作用于质量块。根据牛顿第二定律,质量块受力平衡关系为:

m·x''(t) + c·x'(t) + k·x(t) = F(t)

其中 m·x'' 为惯性力,c·x' 为阻尼力,k·x 为弹簧恢复力。系统无阻尼固有频率 ωn = √(k/m),阻尼比 ζ = c / (2√(km))。本例取 m = 1 kg、k = 100 N/m,则 ωn = 10 rad/s;通过改变 c 使 ζ 分别取 0.1、0.3、0.7、1.0,观察阶跃力 F = 10 N 下的位移响应。

弹簧-质量-阻尼系统:物理模型与多领域连接 物理模型(平移机械域) 固定墙 k = 100 N/m c(可变) m 1 kg F(t) 阶跃 10 N x(t) 向右为正 多领域连接关系 质量元件 m 惯性:F = m·a 弹簧元件 k 储能:F = k·x 阻尼元件 c 耗能:F = c·v 力源 F(t) 阶跃输入 力平衡 ΣF = 0 参数扫描:阻尼比 ζ 对阶跃响应超调量的影响 固定参数 m = 1 kg, k = 100 N/m ωn = 10 rad/s, F = 10 N ζ = 0.1 c = 2 N·s/m 超调 ≈ 73% ζ = 0.3 c = 6 N·s/m 超调 ≈ 37% ζ = 0.7 c = 14 N·s/m 超调 ≈ 4.6%

多领域仿真实现

在支持多领域统一建模的仿真环境中,平移机械域通常提供质量、弹簧、阻尼、力源等标准元件。建模时把三个元件的一端连接到固定参考点(墙),另一端连接到同一个质量块节点,力源施加于质量块。求解器自动根据连接关系组装方程并积分。下面给出一个不依赖特定商业软件的 Python 数值实现,用于验证建模逻辑并生成响应曲线。

import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt

# 系统参数
m = 1.0        # 质量 kg
k = 100.0      # 弹簧刚度 N/m
F_step = 10.0  # 阶跃力 N

# 阻尼比扫描
zeta_list = [0.1, 0.3, 0.7, 1.0]
wn = np.sqrt(k / m)  # 10 rad/s

def system(t, y, c):
    x, v = y
    dxdt = v
    dvdt = (F_step - c * v - k * x) / m
    return [dxdt, dvdt]

t_span = (0, 3.0)
t_eval = np.linspace(0, 3.0, 3000)

plt.figure(figsize=(9, 5))
for zeta in zeta_list:
    c = 2 * zeta * np.sqrt(k * m)
    sol = solve_ivp(system, t_span, [0, 0], args=(c,),
                    t_eval=t_eval, rtol=1e-8, atol=1e-10)
    plt.plot(sol.t, sol.y[0], label=f'ζ={zeta}, c={c:.1f} N·s/m')

plt.axhline(F_step / k, color='gray', linestyle='--', linewidth=1,
            label='稳态位移 0.1 m')
plt.xlabel('时间 t (s)')
plt.ylabel('位移 x (m)')
plt.title('不同阻尼比下的阶跃位移响应')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

运行后应观察到:ζ = 0.1 时振荡剧烈、超调约 73%;ζ = 0.3 时超调约 37%;ζ = 0.7 时超调约 4.6%,接近临界阻尼;ζ = 1.0 时无超调,缓慢趋近稳态值 F/k = 0.1 m。所有曲线最终都收敛到同一稳态位移,说明阻尼只影响动态过程,不改变静态平衡位置。

若仿真环境提供“参数扫描”或“批处理”功能,可直接把 c 设为扫描变量,一次性生成多条响应曲线,避免手动重复运行。判断超调量时,读取响应峰值与稳态值之差再除以稳态值即可。

结果判读与验证要点

  • 稳态验证:所有阻尼比下位移最终应趋于 F/k = 0.1 m,若偏离说明力平衡或单位有误。
  • 超调趋势:阻尼比越小,超调越大、振荡次数越多;ζ ≥ 1 后不再出现超调。
  • 固有频率验证:对 ζ = 0.1 的曲线测量相邻峰值时间间隔,应接近 2π/ωd,其中 ωd = ωn√(1-ζ²)。
  • 能量视角:弹簧势能与动能周期性交换,阻尼器持续耗散能量,因此振幅逐渐衰减。
数值求解时若步长过大或容差过松,小阻尼比下的振荡峰值可能被低估。建议对 ζ = 0.1 的工况使用更小的相对容差(如 1e-8)并加密输出点,确保峰值捕捉准确。