如何用微分方程描述1/4车辆悬架并推导其状态空间矩阵?
嘿,我明白你纠结的点——双自由度系统的微分方程确实容易让人一开始摸不清头绪,尤其是当你习惯了单自由度的情况之后。让我一步步帮你理清楚:
第一步:明确物理模型与变量定义
首先咱们先把变量定义清楚,避免混淆:
- ( m_1 ):车身质量(簧上质量),位移为 ( x_1 )(向上为正方向)
- ( m_2 ):车轮质量(簧下质量),位移为 ( x_2 )(向上为正方向)
- ( w ):路面输入位移(向上为正,也就是路面凸起的高度)
- ( k_1 ):悬架弹簧刚度
- ( k_2 ):轮胎刚度
- ( c_1 ):减振器阻尼系数
- ( u ):主动控制力(如果是主动悬架的话,被动悬架时 ( u=0 ),作用在车身与车轮之间)
第二步:用牛顿第二定律列微分方程
这是双自由度系统,所以需要分别对两个质量做受力分析:
对车身质量 ( m_1 )
它受到三个力:悬架弹簧的弹力、减振器的阻尼力、主动控制力。根据牛顿第二定律 ( F = ma ):
[ m_1 \ddot{x}_1 = k_1(x_2 - x_1) + c_1(\dot{x}_2 - \dot{x}_1) + u ]
整理成标准形式:
[ m_1 \ddot{x}_1 + c_1 \dot{x}_1 - c_1 \dot{x}_2 + k_1 x_1 - k_1 x_2 = u ]
对车轮质量 ( m_2 )
它受到四个力:悬架弹簧的反作用力、减振器的反作用力、轮胎弹簧的弹力、主动控制力的反作用力。同样用牛顿第二定律:
[ m_2 \ddot{x}_2 = -k_1(x_2 - x_1) - c_1(\dot{x}_2 - \dot{x}_1) + k_2(w - x_2) - u ]
整理成标准形式:
[ m_2 \ddot{x}_2 - c_1 \dot{x}_1 + c_1 \dot{x}_2 - k_1 x_1 + (k_1 + k_2)x_2 = k_2 w - u ]
你之前觉得有“无关的 ( x_1 ) 或 ( x_2 ) 项”,其实这是系统耦合的正常表现——车身和车轮的运动是相互影响的,所以两个方程里必然会同时出现两个位移/速度变量,这不是错误哦。
第三步:推导状态空间矩阵(ABCD矩阵)
题目指定状态向量为 ( \boldsymbol{x} = \begin{bmatrix} x_1 & \dot{x}_1 & x_2 & \dot{x}2 \end{bmatrix}^T ),输入为 ( \boldsymbol{u}{\text{input}} = \begin{bmatrix} w & u \end{bmatrix}^T )。我们需要把二阶微分方程转化为一阶状态方程组:
定义状态变量
直接对应题目要求:
- ( x_1 = x_1 )(车身位移)
- ( x_2 = \dot{x}_1 )(车身速度)
- ( x_3 = x_2 )(车轮位移)
- ( x_4 = \dot{x}_2 )(车轮速度)
写出状态变量的导数
根据定义和之前的微分方程,逐个推导:
- ( \dot{x}_1 = x_2 )
- ( \dot{x}_2 = \ddot{x}_1 = \frac{1}{m_1} \left( -k_1 x_1 - c_1 x_2 + k_1 x_3 + c_1 x_4 + u \right) )
- ( \dot{x}_3 = x_4 )
- ( \dot{x}_4 = \ddot{x}_2 = \frac{1}{m_2} \left( k_1 x_1 + c_1 x_2 - (k_1 + k_2)x_3 - c_1 x_4 + k_2 w - u \right) )
整理为矩阵形式 ( \dot{\boldsymbol{x}} = \boldsymbol{A}\boldsymbol{x} + \boldsymbol{B}\boldsymbol{u}_{\text{input}} )
A矩阵(4×4):
[
\boldsymbol{A} = \begin{bmatrix}
0 & 1 & 0 & 0 \
-\frac{k_1}{m_1} & -\frac{c_1}{m_1} & \frac{k_1}{m_1} & \frac{c_1}{m_1} \
0 & 0 & 0 & 1 \
\frac{k_1}{m_2} & \frac{c_1}{m_2} & -\frac{k_1 + k_2}{m_2} & -\frac{c_1}{m_2}
\end{bmatrix}
]
B矩阵(4×2,对应两个输入w和u):
[
\boldsymbol{B} = \begin{bmatrix}
0 & 0 \
0 & \frac{1}{m_1} \
0 & 0 \
\frac{k_2}{m_2} & -\frac{1}{m_2}
\end{bmatrix}
]
C和D矩阵
C和D取决于你需要的输出变量(比如车身加速度、悬架动行程、车轮动载荷等)。举个例子,如果输出是车身位移 ( x_1 ) 和车轮位移 ( x_2 ),那么:
[
\boldsymbol{C} = \begin{bmatrix}
1 & 0 & 0 & 0 \
0 & 0 & 1 & 0
\end{bmatrix}, \quad
\boldsymbol{D} = \begin{bmatrix}
0 & 0 \
0 & 0
\end{bmatrix}
]
最后再解答你的几个困惑
- 关于“用哪个x做速度和加速度”:因为这是双自由度系统,每个质量都有自己的位移、速度、加速度,所以状态向量里必须同时包含两者的位移和速度,这样才能完整描述系统的运动状态。
- 关于多输入的问题:B矩阵的每一列对应一个输入,所以两个输入就对应B矩阵的两列,完全符合状态空间的定义。
备注:内容来源于stack exchange,提问作者Dimitris02




