2024-12-24
Matlab
00

目录

基本模型
控制变量法-Vm 分析
控制变量法-l2 分析
控制变量法-J2 分析
控制变量法-质量m2分析
对公式17的理解
动能与势能公式:
拉格朗日方程导出:
矩阵方程:
使用矩阵表示:
代码里acceleration是什么
背景和公式推导
分解解释
加入PID控制器

基本模型

电机模型:

Vm=iaRa+Ladiadt+EbV_m=i_aR_a+L_a\frac{di_a}{dt}+E_b

反电动势 (emf) EbE_{b} 与角速度 φ˙\dot{\varphi} 相关。

Eb=Kbφ˙E_{b}=K_{b}\dot{\varphi}

因为:La<<RaL_a<<R_a

所以: ia=VmKbφ˙Rai_a=\frac{V_m-K_b \dot{\varphi}}{R_a}

电机转矩 τ\tau 和反电动势 (emf) 有关:

τ=Ktia=KtVmKbφ˙Ra(公式4)\tau=K_t i_a=K_t \frac{V_m-K_b \dot{\varphi}}{R_a} (公式4)

image.png

符号单位定义
θrad摆杆角度
φrad惯性轮角度
J₁kg.m²包括电机定子的摆杆转动惯量
J₂kg.m²包括电机转子的轮子转动惯量
c₁N.m.s/rad摆杆摩擦系数
c₂N.m.s/rad轮子摩擦系数
m₁kg摆杆和定子的质量
m₂kg轮子和转子的质量
l₁m从原点到摆杆重心的长度
l₂m从原点到轮子重心的长度
KbV/(rad/s)反电动势常数
KtN.m/A电机扭矩常数
RaΩ电枢绕组电阻
  • 平动动能 Translational kinetic:
T1=12m1(l1θ˙)2+12m2(l2θ˙)2(公式6)T_1=\frac{1}{2} m_1\left(l_1 \dot{\theta}\right)^2+\frac{1}{2} m_2\left(l_2 \dot{\theta}\right)^2 (公式6)
  • 转动动能 Rotational kinetic:
T2=12J1θ˙2+12J2(θ˙+φ˙)2(公式7)T_2=\frac{1}{2} J_1 \dot{\theta}^2+\frac{1}{2} J_2(\dot{\theta}+\dot{\varphi})^2(公式7)

系统的动能:

T=T1+T2=12(m1l12+m2l22+J1+J2)θ˙2+J2θ˙φ˙+12J2φ˙2(公式8)\begin{aligned} T & =T_1+T_2 \\ & =\frac{1}{2}\left(m_1 l_1^2+m_2 l_2^2+J_1+J_2\right) \dot{\theta}^2+J_2 \dot{\theta} \dot{\varphi}+\frac{1}{2} J_2 \dot{\varphi}^2 \end{aligned} (公式8)

以O点作为势能的基准。因此,势能为:

V=(m1l1+m2l2)gcos(θ)(公式9)V=\left(m_1 l_1+m_2 l_2\right) g \cos (\theta)(公式9)

平面倒立摆的拉格朗日函数为:

L=TV=12(m1l12+m2l22+J1+J2)θ˙2+J2θ˙φ˙+12J2φ˙2(m1l1+m2l2)gcos(θ)(公式10)\begin{aligned} L & =T-V=\frac{1}{2}\left(m_1 l_1^2+m_2 l_2^2+J_1+J_2\right) \dot{\theta}^2 \\ & +J_2 \dot{\theta} \dot{\varphi}+\frac{1}{2} J_2 \dot{\varphi}^2-\left(m_1 l_1+m_2 l_2\right) g \cos (\theta) \end{aligned}(公式10)

耗散能量:

R=12c1θ˙2+12c2φ˙2(公式11)R=\frac{1}{2} c_1 \dot{\theta}^2+\frac{1}{2} c_2 \dot{\varphi}^2(公式11)

从拉格朗日方程得到的关于 θ 的旋转轴上的力矩为,这个公式是最后一个公式需要用的:

ddt(Lθ˙)+Rθ˙Lθ=0(公式12)(m1l12+m2l22+J1+J2)θ¨+J2φ¨+c1θ˙(m1l1+m2l2)gsin(θ)=0(公式13)\begin{gathered} \frac{d}{d t}\left(\frac{\partial L}{\partial \dot{\theta}}\right)+\frac{\partial R}{\partial \dot{\theta}}-\frac{\partial L}{\partial \theta}=0 (公式12)\\ \Leftrightarrow\left(m_1 l_1^2+m_2 l_2^2+J_1+J_2\right) \ddot{\theta}+J_2 \ddot{\varphi}+c_1 \dot{\theta} -\left(m_1 l_1+m_2 l_2\right) g \sin (\theta)=0 (公式13)\end{gathered}

从拉格朗日方程得到的关于 φ 的旋转轴上的力矩为:

ddt(Lφ˙)+Rφ˙Lφ=0(公式14)J2(θ¨+φ¨)+c2φ˙=τ(公式15)\begin{aligned} & \frac{d}{d t}\left(\frac{\partial L}{\partial \dot{\varphi}}\right)+\frac{\partial R}{\partial \dot{\varphi}}-\frac{\partial L}{\partial \varphi}=0 (公式14)\\ & \Leftrightarrow J_2(\ddot{\theta}+\ddot{\varphi})+c_2 \dot{\varphi}=\tau (公式15)\end{aligned}

τ\tau 是电机的扭矩。

因为:

τ=Ktia=KtVmKbφ˙Ra(公式4)\tau=K_t i_a=K_t \frac{V_m-K_b \dot{\varphi}}{R_a}(公式4)

由公式4和公式15可以得到:

J2(θ¨+φ¨)+c2φ˙=KtVmKbφ˙Ra(公式16)J_2(\ddot{\theta}+\ddot{\varphi})+c_2 \dot{\varphi}=K_t \frac{V_m-K_b \dot{\varphi}}{R_a}(公式16)

由公式13和公式16,平面倒立摆的非线性模型为:

[m1l12+m2l22+J1+J2J2J2J2][θ¨φ¨]+[c100KtKbRa+c2][θ˙φ˙]+[(m1l1+m2l2)gsin(θ)0]=[0KtRa]Vm(公式17)\begin{aligned} & {\left[\begin{array}{cc} m_1 l_1^2+m_2 l_2^2+J_1+J_2 & J_2 \\ J_2 & J_2 \end{array}\right]\left[\begin{array}{c} \ddot{\theta} \\ \ddot{\varphi} \end{array}\right]+\left[\begin{array}{cc} c_1 & 0 \\ 0 & \frac{K_t K_b}{R_a}+c_2 \end{array}\right]\left[\begin{array}{c} \dot{\theta} \\ \dot{\varphi} \end{array}\right]} \\ & +\left[\begin{array}{c} -\left(m_1 l_1+m_2 l_2\right) g \sin (\theta) \\ 0 \end{array}\right]=\left[\begin{array}{c} 0 \\ \frac{K_t}{R_a} \end{array}\right] V_m (公式17) \end{aligned}

给IWP的参数:

SymbolValueSymbolValue
J₁0.01186 (kg·m²)l₁0.1053 (m)
J₂0.0005711 (kg·m²)l₂0.14 (m)
c₁0.04 (N·m·s/rad)K_b0.0987 (V/(rad/s))
c₂0.0001 (N·m·s/rad)K_t0.0987 (N·m/A)
m₁0.826 (kg)R_a1.5562 (Ω)
m₂0.583 (kg)
  • 电压输入 VmV_{\mathrm{m}} 是控制变量
  • 四个状态变量分别是 θ,θ˙,φ\theta, \dot{\theta}, \varphiφ˙\dot{\varphi}
  • 输出扭矩 τ\tau 根据方程 (4) 计算

控制变量法-Vm 分析

从Simulink模型中,电压输入 VmV_{\mathrm{m}} 以10V、15V和20V的步进形式施加。电压输入引起了车轮和摆锤的运动,如图8所示。

仿真结果表明:

  • 在图8.a中,车轮的速度在约0.5秒时达到稳态。同时,直流电动机在车轮上产生一个力矩,如图8.b所示,惯性轮以一定的加速度旋转,如图8.c所示。摆锤被力矩驱动并围绕平衡位置摆动。从图8.d可以看出,较高的 VmV_{\mathrm{m}} 使得摆锤角度的振幅更大,这表明在摆锤上生成的力更大。然而,摆锤的振荡频率在所有情况下都是相同的,这意味着 VmV_{\mathrm{m}} 不影响摆锤的振荡频率。
  • 当车轮速度进入稳态时,如图8.b所示,电机无法长时间维持转子力矩。在这个状态下,该力矩将等于摩擦力矩,车轮的加速度为零,摆锤仅受重力影响,并逐渐回到平衡位置 oscillates gradually back to equilibrium position。

image.png

控制变量法-l2 分析

在图 9.a、9.b、9.c 中,所有情形的响应都是相同的,这意味着 l2 对惯性轮运动的响应没有影响。然而,当 l2 改变时,摆的角度是不同的。在给电机相同电压的情况下,较大的 l2 会导致摆角幅度较小,这意味着作用在摆上的总力较小。此外,振荡频率较低且更稳定。

摆的长度会影响作用于摆上的力。选择适合 l2 的电机是有用的。较大的 l2 对摆角响应有负面影响。

image.png

控制变量法-J2 分析

另一个重要的IWP参数是飞轮的惯性矩J2。与l2的情况相同,直流电机将接收到20V的阶跃输入Vm。J2的值在0.0005kg.m²、0.002kg.m²和0.005kg.m²之间变化。其他参数保持与表2中一致。仿真结果显示:

  1. 在图10.a中,飞轮速度的定常时间随着J2的增加而变长,但稳态值在所有情况下都相同。在短时间内,电机扭矩在0秒时相同,但随着J2的增加,其影响时间也变长,如图10.b所示。在图10.c中,飞轮的加速度在0秒时不同:惯性矩较小的飞轮在起始时的加速度较高,但更快趋于零。

  2. 因此,在图10.d中,摆角的振幅在J2较大时也较大,这是因为电机扭矩的影响时间更长。

  3. J2对电机的加速过程有积极影响,因此较大的J2有助于保持摆动的动量,但系统的质量也会增加。

image.png

控制变量法-质量m2分析

最后一个要模拟的参数是飞轮的质量m2。与l2、J2相似,直流电机将接收到20V的阶跃输入Vm,并将m2的值改变为0.5kg、0.8kg和1kg。其他参数保持不变。仿真结果显示:

  1. 从图11.a、11.b、11.c可以看出,所有m2的情况下,飞轮的速度、加速度和电机扭矩相同。因此,飞轮的质量对上述物理参数的响应没有影响。
  2. 从图11.d可以看出,较大的m2使得摆角的振幅较小,这是由于重力的影响。
  3. m2对系统的性能有负面影响。

image.png

对公式17的理解

动能与势能公式:

T=12(m1l12+m2l22+J1+J2)θ˙2+J2θ˙φ˙+12J2φ˙2T = \frac{1}{2}\left(m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2\right) \dot{\theta}^2 + J_2 \dot{\theta} \dot{\varphi} + \frac{1}{2} J_2 \dot{\varphi}^2
V=(m1l1+m2l2)gcos(θ)V = \left(m_1 l_1 + m_2 l_2\right) g \cos(\theta)

拉格朗日方程导出:

(m1l12+m2l22+J1+J2)θ¨+J2φ¨+c1θ˙(m1l1+m2l2)gsin(θ)=0(m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2) \ddot{\theta} + J_2 \ddot{\varphi} + c_1 \dot{\theta} - \left(m_1 l_1 + m_2 l_2\right) g \sin(\theta) = 0
J2(θ¨+φ¨)+c2φ˙=τJ_2(\ddot{\theta} + \ddot{\varphi}) + c_2 \dot{\varphi} = \tau
τ=KtVmKbφ˙Ra\tau = K_t \frac{V_m - K_b \dot{\varphi}}{R_a}

矩阵方程:

[m1l12+m2l22+J1+J2J2J2J2][θ¨φ¨]+[c100KtKbRa+c2][θ˙φ˙]+[(m1l1+m2l2)gsin(θ)0]=[0KtRaVm]\begin{aligned} & \left[\begin{array}{cc} m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2 & J_2 \\ J_2 & J_2 \end{array}\right] \left[\begin{array}{c} \ddot{\theta} \\ \ddot{\varphi} \end{array}\right] + \left[\begin{array}{cc} c_1 & 0 \\ 0 & \frac{K_t K_b}{R_a} + c_2 \end{array}\right] \left[\begin{array}{c} \dot{\theta} \\ \dot{\varphi} \end{array}\right] \\ & + \left[\begin{array}{c} - \left(m_1 l_1 + m_2 l_2\right) g \sin(\theta) \\ 0 \end{array}\right] = \left[\begin{array}{c} 0 \\ \frac{K_t}{R_a} V_m \end{array}\right] \end{aligned}

结合矩阵形式,含有状态方程 θ\thetaφ\varphi 的运动方程可以理解为:

使用矩阵表示:

A[θ¨φ¨]=B[θ˙φ˙]+CA \left[\begin{array}{c} \ddot{\theta} \\ \ddot{\varphi} \end{array}\right] = -B \left[\begin{array}{c} \dot{\theta} \\ \dot{\varphi} \end{array}\right] + C

其中:

A=[m1l12+m2l22+J1+J2J2J2J2]A = \left[\begin{array}{cc} m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2 & J_2 \\ J_2 & J_2 \end{array}\right]
B=[c100KtKbRa+c2]B = \left[\begin{array}{cc} c_1 & 0 \\ 0 & \frac{K_t K_b}{R_a} + c_2 \end{array}\right]
C=[(m1l1+m2l2)gsin(θ)KtRaVm]C = \left[\begin{array}{c} - (m_1 l_1 + m_2 l_2) g \sin(\theta) \\ \frac{K_t}{R_a} V_m \end{array}\right]

τ\tau 代入第二个方程:

J2(θ¨+φ¨)+c2φ˙=KtVmKbφ˙RaJ_2 (\ddot{\theta} + \ddot{\varphi}) + c_2 \dot{\varphi} = K_t \frac{V_m - K_b \dot{\varphi}}{R_a}

将矩阵形式重写:

AX¨=BX˙+CA \ddot{X} = -B \dot{X} + C

代码里acceleration是什么

在 MATLAB 中,A \ b 表示将线性方程组 (A x = b) 解出 (x),即 (x = A^{-1} b)。这个操作称为“左除”运算符,用于求解涉及矩阵的线性方程。

现在详细解释这行代码:

matlab
acceleration = A \ (-B * [theta_dot; phi_dot] + C);

背景和公式推导

我们原来推导的系统方程是:

AX¨=BX˙+CA \ddot{X} = -B \dot{X} + C

其中:

  • X¨\ddot{X} 表示系统的加速度
  • X˙\dot{X} 表示系统的速度
  • AABBCC 是系统的参数矩阵和向量

分解解释

  1. 矩阵定义:

    • (A):
    A=(m1l12+m2l22+J1+J2J2J2J2)A = \begin{pmatrix} m_1 l_1^2 + m_2 l_2^2 + J_1 + J_2 & J_2 \\ J_2 & J_2 \end{pmatrix}
    • (B):
    B=(c100KtKbRa+c2)B = \begin{pmatrix} c_1 & 0 \\ 0 & \frac{K_t K_b}{R_a} + c_2 \end{pmatrix}
    • (C):
    C=((m1l1+m2l2)gsin(θ)KtRaVm)C = \begin{pmatrix} - (m_1 l_1 + m_2 l_2) g \sin(\theta) \\ \frac{K_t}{R_a} V_m \end{pmatrix}
  2. 速度向量 X˙\dot{X}: X˙=(θ˙φ˙)\dot{X} = \begin{pmatrix} \dot{\theta} \\ \dot{\varphi} \end{pmatrix}

  3. 公式运算:

    • 计算 BX˙+C-B \dot{X} + C:
    B(θ˙φ˙)+C=(c100KtKbRa+c2)(θ˙φ˙)+((m1l1+m2l2)gsin(θ)KtRaVm)-B \begin{pmatrix} \dot{\theta} \\ \dot{\varphi} \end{pmatrix} + C = - \begin{pmatrix} c_1 & 0 \\ 0 & \frac{K_t K_b}{R_a} + c_2 \end{pmatrix} \begin{pmatrix} \dot{\theta} \\ \dot{\varphi} \end{pmatrix} + \begin{pmatrix} - (m_1 l_1 + m_2 l_2) g \sin(\theta) \\ \frac{K_t}{R_a} V_m \end{pmatrix}
  4. 线性方程求解:

    • 我们需要解出 X¨\ddot{X}:
    AX¨=BX˙+CA \ddot{X} = -B \dot{X} + C
    • 由此,得到加速度 X¨\ddot{X}:
    X¨=A1(BX˙+C)\ddot{X} = A^{-1} \left( -B \dot{X} + C \right)

在 MATLAB 中,我们使用左除运算符 \ 直接求解这个逆矩阵乘法,因此:

matlab
acceleration = A \ (-B * [theta_dot; phi_dot] + C);

这行代码计算的是系统当前状态下的加速度 θ¨\ddot{\theta}φ¨\ddot{\varphi},它们存储在 acceleration 向量中。

用简单的话来说,这行代码的目的是根据速度 θ˙\dot{\theta}φ˙\dot{\varphi} 以及其他参数,计算系统在当前状态下的角加速度 θ¨\ddot{\theta}φ¨\ddot{\varphi}

加入PID控制器

image.png

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!