单级倒立摆数学模型_倒立摆系统建模

单级倒立摆数学模型_倒立摆系统建模首先建立单摆的动力学模型,使用simulink搭建控制框图。然后将极点配置状态反馈和串级PD反馈应用于系统的摆杆竖直倒立稳定和平移支座位移稳定进行控制并对比了两种方法的优劣。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

把很久以前的草稿整理一下搬到博客上


1.动力学模型

        如图1所示,单级倒立摆由系统由水平导轨,平移支座和摆杆构成。平移支座与摆杆无阻尼铰接(摆杆可自由摆动)。平移支座可以在导轨上受控平移。摆杆的质量是m,质心到铰链轴心的距离是l,过质心的z轴方向的转动惯量是I_z

单级倒立摆数学模型_倒立摆系统建模
图1 单级倒立摆结构简图

        根据拉格朗日力学对系统进行动力学建模。首先,根据系统的自由度确定描述系统运动的广义坐标。系统的自由度是2。因此,广义坐标可以取平移支座的水平位移x_c和摆杆的摆角θ。 系统拉格朗日方程(以下x_c不再带角标)为

\left\{\begin{matrix} \frac{\mathrm{d} }{\mathrm{d} t}\! \! \left ( \frac{\partial L}{\partial \dot{x}} \right )-\frac{\partial L}{\partial x}=F_x \\ \\ \frac{\mathrm{d} }{\mathrm{d} t}\! \! \left ( \frac{\partial L}{\partial \dot{\theta}} \right )-\frac{\partial L}{\partial \theta}=0 \end{matrix}\right.                                                      (1)

其中L=T-V,是拉格朗日函数。F_x是平移支座的驱动力。

动能:

T=\frac{1}{2}m\overrightarrow{\! v}\! \! \cdot\! \overrightarrow{\! v}+\frac{1}{2}I_z\dot{\theta}^2                                                  (2)

\overrightarrow{\! v}=\begin{bmatrix} \dot{x}\! -\! l\dot{\theta} \sin\theta\\ l\dot{\theta} \cos\theta \end{bmatrix}                                                          (3)

重力势能:

           V=mg\sin\theta                                                            (4)

       这里研究位移控制,即输入量是位移x,而不是驱动力矩F_x。因此,只对方程组(1)中的第二个展开。得到动力学方程

\left ( ml^2+I_z \right )\ddot{\theta}+mgl\cos\theta=ml\ddot{x}\sin\theta                                     (5)

       动力学模型(被控系统)Simulink框图见图2,初始摆角是5\pi/12。控制系统框图如图3所示,支座的初始位移是0.1m 。

单级倒立摆数学模型_倒立摆系统建模
图2 动力学模型

单级倒立摆数学模型_倒立摆系统建模
图3 控制系统

2.控制器设计

2.1 摆杆倒立控制

       倒立摆控制的首要任务是摆杆的稳定倒立。方程(5)是个非线性微分方程,为了能用线性系统理论对它进行分析,需要先进行线性化。从方程(5)的形式可以看出,使用反馈线性化方法比较合适。令

\ddot{x}=\frac{u}{\sin\theta}+g\cot\theta                                                        (6)

于是得到线性的动力学方程

\left ( ml^2+I_z \right )\ddot{\theta}=u                                                          (7)

摆杆的相对竖直位置的偏差e_\theta\! =\! \pi/2\! -\! \theta, 于是有状态方程

\begin{bmatrix} \dot{e_\theta}\\ \ddot{e_\theta} \end{bmatrix} =\frac{ml}{ml^2+I_z}\begin{bmatrix} 0 & 1\\ 0 & 0 \end{bmatrix} \begin{bmatrix} e_\theta\\ \dot{e_\theta} \end{bmatrix}+\begin{bmatrix} 0\\1 \end{bmatrix}u                                     (8)

引入状态反馈

u=k_1e_\theta+k_2\dot{e_\theta}                                                       (9)

得到

\begin{bmatrix} \dot{e_\theta}\\ \ddot{e_\theta} \end{bmatrix} =\frac{ml}{ml^2+I_z}\begin{bmatrix} 0 & 1\\ -k_1 & -k_2 \end{bmatrix} \begin{bmatrix} e_\theta\\ \dot{e_\theta} \end{bmatrix}                                    (10)

当方程(10)中k_1k_2都大于零时状态向量\begin{bmatrix} e_\theta &\! \! \! \dot{e_\theta} \end{bmatrix}^T即可收敛,例如k1=2,k2=3,仿真结果见4。

单级倒立摆数学模型_倒立摆系统建模
图4 摆杆倾角反馈下的输出曲线

2.2 支撑点位置控制

       从图4可见,当摆杆倒立稳定后,平移支座的水平位移一直在以恒定速率朝一个方向变化。这显然没有达到控制要求。因此,在系统的状态变量中再添加上平移支座的位移和速率。将摆杆角度偏差e_\theta\! =\! \pi/2\! -\! \theta 代入方程(5),再在e_\theta\! =\! 0处线性化

 \ddot{e}_\theta\approx \frac{g}{ml^2+I_z}e_\theta-\frac{1}{ml^2+I_z}\ddot{x}                                       (11)

于是有状态方程

\begin{bmatrix} \dot{e}_\theta\\ \ddot{e}_\theta\\\dot{x}\\ \ddot{x} \end{bmatrix} =\begin{bmatrix} 0 &1 &0 &0 \\ \frac{g}{ml^2+I_z}& 0& 0& 0\\ 0 & 0 & 0 &1 \\ 0 & 0 & 0 & 0 \end{bmatrix} \begin{bmatrix} e_\theta\\ \dot{e}_\theta\\x\\ \dot{x} \end{bmatrix} +\begin{bmatrix} 0\\ -\frac{1}{ml^2+I_z}\\ 0\\ 1 \end{bmatrix} \ddot{x}                    (12)

系统完全可控,可以任意配置极点,取状态反馈

\ddot{x}=K\begin{bmatrix} x & \dot{x} & \theta & \dot{\theta} \end{bmatrix}^T                                             (13)

将极点配置在[-3 -2 -9 -6]处,解得K=[212 68 50 47 ]。MATLAB求解代码见附录,输出结果见图5。

单级倒立摆数学模型_倒立摆系统建模
图5 极点配置状态反馈输出曲线

4.串级PD控制

        PD参数整定的基本思路是先确定控制的首要任务,优先确定与之相关的参数。在这里首要任务是摆杆的稳定倒立,因此先对把杆角度偏差的PD响应参数Kp和Kd进行整定。在整定这两个参数时,在摆杆稳定的前提下,应尽可能取较大的Kp和Kd。摆杆倒立的PD参数整定好后,再进行平移支座的位移稳定PD参数整定。在这里根据控制任务的重要性,摆杆倒立稳定控制优先于平移支座的位移稳定控制。虽然支座位移是控制输入,但是根据任务优先顺序,支座平移稳定只属于间接的控制任务。由于支座位移稳定属于间接任务,于是在位移控制中:欲使支座往右移,得先使摆杆向右倾,支座就得先向左加速。这就是位移控制的参数正负号的确定思路。由于在摆杆角度偏差较大时,角度偏差PD反馈主导控制器输出;角度偏差较小时,支座水平位移PD反馈起才起作用。因此其增益参数Kp和Kd的值应比角度偏差反馈的PD参数小得多。位移PD反馈的增益参数整定顺序是先Kd后Kp,且Kd要大于Kp。这与偏角反馈的正好相反,例如[120 70 30 40],输出结果见图6。

单级倒立摆数学模型_倒立摆系统建模
图6 串级PD控制输出曲线

5.总结 

        在以上的分析中,状态反馈的和串级PD控制的本质是等效的,都是根据四个被测变量做反馈控制。状态反馈的极点配置需要提前知道动力学模型的参数,而串级PD反馈是通过实验来整定增益参数的。根据图5和图6的曲线来看,使用极点配置状态反馈的曲线比串级PD控制的更加光滑。这有利于防止电机损坏,所以在实践中可以将两种方法结合起来使用,各取所长。        

附录:

syms theta a g
a=1;g=9.8;    %a=ml^2+Iz
A=[0 1 0 0;0 0 0 0;0 0 0 1;0 0 g/a 0];  %状态矩阵
b=[0;1;0;-1/a];       %输出矩阵
Q=[b A*b A*A*b A*A*A*b];     %能控性判别矩阵
s=[-3-0i -2+0i -9-0i -6+0i]; %期望极点
S=diag(s);                  
Ke=poly(S);                  %期望特征多项式
Ka=poly(double(subs(A)));    %被控对象特征多项式
K_=[Ka(5)-Ke(5) Ka(4)-Ke(4) Ka(3)-Ke(3) Ka(2)-Ke(2)];
Tc=[A*A*A*b A*A*b A*b b]*[Ka(1) 0 0 0;Ka(2) Ka(1) 0 0;Ka(3) Ka(2) Ka(1) 0;Ka(4) Ka(3) Ka(2) Ka(1)];
K=double(subs(K_/Tc))
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171029.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手机一键装windows系统_git could not create work tree

    手机一键装windows系统_git could not create work treeGit简介Git是目前世界上最先进的分布式版本控制系统。可以简单理解为一种管理的工具,通过git可以将github上的代码拉到本地或者把电脑里的代码push到github。Windows环境下Git的下载与安装地址:https://git-scm.com/download这里选择64位的下载完成后,双击即可进入安装界面选择自己想要安装的位置,默认C盘,这里选择了D盘一些组件:(这里选择在桌面上创建git的图标Additionalicons–OntheDesktop,其他的默认即

    2022年8月25日
    5
  • 为了写论文给 Linux “投毒”, Linux 内核维护者封杀明尼苏达大学「建议收藏」

    为了写论文给 Linux “投毒”, Linux 内核维护者封杀明尼苏达大学「建议收藏」Linux内核稳定分支的维护者GregKroah-Hartman决定禁止美国明尼苏达大学向主线Linux内核提交补丁,因为他们故意提交有安全影响的可疑代码,他们以“如果向开源计划提交代码的方式注入漏洞,开源社区将如何处理”进行了专门研究,并且还发布了一篇论文:《OntheFeasibilityofStealthilyIntroducingVulnerabilitiesinOpen-SourceSoftwareviaHypocriteCommits》论文地址:https://

    2022年7月23日
    16
  • matlab的插值方法[通俗易懂]

    matlab的插值方法[通俗易懂]1.Lagrange插值插值是在已知数据之间寻找估计值的过程。在信号处理和图像处理中,插值极其常用。类型很多:比如多项式插值,一、二、三维插值,样条插值等。方法介绍:对给定的n个插值点x1,x2,⋯,xnx1,x2,⋯,xn{x_1},{x_2},\cdots,{x_n}及对应的函数值y1,y2,⋯,yny1,y2,⋯,yn{y_1},{y_2},\cdots,{y_n}…

    2022年5月4日
    286
  • 数组中键key相等时,后面的值覆盖前面的值

    数组中键key相等时,后面的值覆盖前面的值

    2021年11月4日
    38
  • 安装gcc5.4版本[通俗易懂]

    安装gcc5.4版本[通俗易懂]安装gcc5.4版本:https://blog.csdn.net/xie1xiao1jun/article/details/54378079?utm_source=blogxgwz9

    2022年5月26日
    39
  • 电商平台微服务架构演进

    电商平台微服务架构演进一初始架构引入nacos后的基础架构图。二加入Ribbon后的架构引入多个微服务,每个微服务通过Ribbon进行相互调用。三引入Feign后的架构Feign底层还是会调用Ribbon进行负载均衡。四引入sentinel1解决问题实现服务降级、限流、熔断。2官网introduction3配置a限流和降级配置页面b限流配置c降级配置五引入seata1解决问题解决分布式事…

    2022年6月23日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号