1. 悬架系统建模基础

悬架系统建模基础 学习卡片

任务说明

本案例建立1/4车辆悬架的二自由度动力学模型,作为后续MILSIL仿真与代码生成的被控对象基础。模型包含车身质量(簧载质量)与车轮质量(非簧载质量)两个自由度,考虑悬架弹簧刚度、阻尼器阻尼系数以及轮胎刚度,忽略轮胎阻尼。输入为路面位移激励,输出为车身位移、车轮位移及二者加速度。

模型方程

根据牛顿第二定律,二自由度1/4车辆悬架模型运动方程如下:

m_s·ẍ_s + c_s·(ẋ_s − ẋ_u) + k_s·(x_s − x_u) = 0
m_u·ẍ_u + c_s·(ẋ_u − ẋ_s) + k_s·(x_u − x_s) + k_t·(x_u − x_r) = 0

其中:x_s为车身位移,x_u为车轮位移,x_r为路面输入位移;m_s为簧载质量,m_u为非簧载质量,k_s为悬架刚度,c_s为阻尼系数,k_t为轮胎刚度。

状态空间实现

选取状态向量 X = [x_s, ẋ_s, x_u, ẋ_u]ᵀ,路面位移 x_r 为输入,车身位移与车轮位移为输出。状态空间形式为:

Ẋ = A·X + B·x_r
Y  = C·X + D·x_r

矩阵定义如下:

A = [[0, 1, 0, 0],
     [−k_s/m_s, −c_s/m_s, k_s/m_s, c_s/m_s],
     [0, 0, 0, 1],
     [k_s/m_u, c_s/m_u, −(k_s+k_t)/m_u, −c_s/m_u]]

B = [[0], [0], [0], [k_t/m_u]]

C = [[1, 0, 0, 0],
     [0, 0, 1, 0]]

D = [[0], [0]]

Python参考实现

import numpy as np

# 车辆参数(单位:SI)
m_s = 300.0    # 簧载质量 kg
m_u = 40.0     # 非簧载质量 kg
k_s = 18000.0  # 悬架刚度 N/m
c_s = 1200.0   # 阻尼系数 N·s/m
k_t = 200000.0 # 轮胎刚度 N/m

def create_quarter_car_matrices():
    """构建1/4车辆悬架二自由度模型的状态空间矩阵"""
    A = np.array([
        [0, 1, 0, 0],
        [-k_s/m_s, -c_s/m_s, k_s/m_s, c_s/m_s],
        [0, 0, 0, 1],
        [k_s/m_u, c_s/m_u, -(k_s+k_t)/m_u, -c_s/m_u]
    ])
    B = np.array([[0], [0], [0], [k_t/m_u]])
    C = np.array([[1, 0, 0, 0],
                  [0, 0, 1, 0]])
    D = np.array([[0], [0]])
    return A, B, C, D

def simulate_step(A, B, C, D, x, x_r, dt):
    """单步欧拉积分,返回新状态与输出"""
    x_dot = A @ x + B * x_r
    x_new = x + x_dot * dt
    y = C @ x + D * x_r
    return x_new, y

# 初始化
A, B, C, D = create_quarter_car_matrices()
x = np.zeros((4, 1))   # 初始状态
dt = 0.001             # 仿真步长 1ms
t_end = 2.0            # 仿真时长 2s
n_steps = int(t_end / dt)

# 路面输入:0.05m 阶跃(模拟减速带)
x_r = 0.05

# 仿真循环
for i in range(n_steps):
    x, y = simulate_step(A, B, C, D, x, x_r, dt)

# 输出最终状态与输出
print("最终状态 X = [x_s, v_s, x_u, v_u]:")
print(x.flatten())
print("最终输出 Y = [x_s, x_u]:")
print(y.flatten())

模型验证方法

运行上述代码,观察最终状态与输出值。判定标准:

  • 车身位移 x_s 最终收敛至约0.05m(等于路面阶跃输入),稳态误差小于1%;
  • 车轮位移 x_u 同样收敛至约0.05m;
  • 车身速度与车轮速度最终趋近于0。

若满足以上条件,说明模型状态空间矩阵构建正确,动力学方程实现无误,可用于后续MILSIL仿真与代码生成。

1/4车辆悬架二自由度模型结构 m_s (簧载质量) k_s, c_s m_u (非簧载质量) k_t (轮胎刚度) 路面输入 x_r(t) x_s ↑ x_u ↑ 车身位移输出 车轮位移输出 状态向量 X = [x_s, ẋ_s, x_u, ẋ_u]ᵀ 输入:x_r 输出:x_s, x_u 模型参数 m_s = 300 kg m_u = 40 kg k_s = 18000 N/m c_s = 1200 N·s/m k_t = 200000 N/m 阶跃输入:0.05m