精华内容
下载资源
问答
  • 2021-04-22 12:46:57

    倒立摆PID控制附MATLAB仿真

    摘 要

    倒立摆系统是一个典型的快速、多变量、非线性、不稳定系统,对倒立摆的控制研究无论在理论上和方法上都有深远的意义。

    本论文以实验室原有的直线一级倒立摆实验装置为平台,重点研究其PID控制方法,设计出相应的PID控制器,并将控制过程在MATLAB上加以仿真。

    本文主要研究内容是:首先概述自动控制的发展和倒立摆系统研究的现状;介绍倒立摆系统硬件组成,对单级倒立摆模型进行建模,并分析其稳定性;研究倒立摆系统的几种控制策略,分别设计了相应的控制器,以MATLAB为基础,做了大量的仿真研究,比较了各种控制方法的效果;借助固高科技MATLAB实时控制软件实验平台;利用设计的控制方法对单级倒立摆系统进行实时控制,通过在线调整参数和突加干扰等,研究其实时性和抗千扰等性能;对本论文进行总结,对下一步研究作一些展望。

    关键词:一级倒立摆,PID,MATLAB仿真

    目 录

    第1章 自动控制概述1

    1.1 自动控制概念1

    1.1.1 开环控制1

    1.1.2 闭环控制2

    1.2 自动控制系统的分类2

    1.2.1 恒值系统、随动系统和程序控制系统2

    1.2.2 随机系统与自动调整系统3

    1.2.3 线性系统和非线性系统3

    1.2.4 连续系统与离散系统3

    1.2.5 单输入单输出系统和多输入多输出系统3

    1.2.6 集中参数系统和分布参数系统4

    1.3 对控制系统的性能要求4

    1.4 典型环节5

    1.4.1 比例环节5

    1.4.2 积分环节5

    1.4.3 微分环节6

    1.4.4 惯性环节6

    1.4.5 时滞环节7

    第2章 MATLAB仿真软件的应用9

    2.1 MATLAB的基本介绍9

    2.2 MATLAB的仿真9

    2.3 控制系统的动态仿真10

    2.4 小结12

    第3章 直线一级倒立摆系统及其数学模型13

    3.1 系统组成13

    3.1.1 倒立摆的组成14

    3.1.2 电控箱14

    3.1.3 其它部件图14

    3.1.4 倒立摆特性15

    3.2 模型的建立15

    3.2.1 微分方程的推导16

    3.2.2 传递函数17

    3.2.3 状态空间结构方程18

    3.2.4 实际系统模型20

    3.2.5 采用MATLAB语句形式进行仿真21

    第4章 PID控制理论23

    4.1 PID控制概述23

    4.2 PID的控制规律24

    4.3 数字PID控制25

    4.3.1 位置式PID控制算法26

    4.3.2 增量式PID控制算法27

    4.4 常用的PID控制系统27

    4.4.1 串级PID控制27

    4.4.2 纯滞后系统的大林控制算法28

    4.4.3纯滞后系统的Smith控制算法29

    4.4.4 PID控制原理的特点31

    4.4.5 PID参数的调整31

    4.4.6 PID控制回路的运行32

    第5章 直线一级倒立摆的PID控制器设计与调节34

    5.1 PID控制器的设计34

    5.2 PID控制器设计MATLAB仿真36

    结 论41

    致 谢42

    参考文献43

    第1章 自动控制概述

    1.1 自动控制概念

    在现代科学技术的许多领域中,自动控制技术得到了广泛的应用,自动控制技术最显著的特征就是通过对各类机器,各种物理参量、工业生产过程等的控制直接造福于社会。

    所谓自动控制,就是指在无人直接参与的情况下,利用控制装置操纵受控对象,使受控对象的被控量等于给定值或按给定信号变化规律去变化。

    为达到某一目的,由相互制约的各个部分,按一定的规律组织成的,具有一定功能的整体,称为系统,它一般由控制装置(控制器)和被控对象所组成。

    自动控制有两种最基本的形式,即开环控制和闭环控制[1]。

    1.1.1 开环控制

    控制装置与受控对象之间只有顺向作用而无反向联系时,称为开环控制。其特点是:系统结构和控制过程均很简单。开环控制的示意框图如图1.1所示

    图1.1开环控制系统

    开环控制是一种简单的无反馈控制方式,在开环控制系统中只存在控制器对被控量对象的单方向控制作用,不存在被控制量(输出量)对被控量的反向作用,系统的精度取决于组成系统的元器件的精度和特性调整的精确度。开环系统对外扰及内部参量变化的影响缺乏抑制能力,但开环系统内构简单,比较容易设计和调整,可用于输出量与输入量关系为已知,内外扰动对系统影响不大,并且控制精度要求不高的场合。

    在开环控制系统中,对于每一个输入参考量,就有一个与之相对应的工作状态和输出量,系统的精度取决于元、器件的精度和特性调整的精度,当系统的内扰和外扰影响不大并且控制精度要求不高时,可采用开环控制方式。

    1.1.2 闭环控制

    控制装置与受控对象之间,不但有顺向作用,而且还有反向联系,即有被控量对控制过程的影响。

    闭环控制的特点是:在控制器和被控

    更多相关内容
  • .m文件调用simulink实现倒立摆稳摆。每步仿真0.005s,每次仿真一步,每个循环调用一次simulink。 PID参数粗略调试,收敛效果一般,仅供参考。 主程序为PID_IP.m运行完毕后画出控制过程曲线
  • pid控制倒立摆

    2014-05-10 15:51:07
    pid控制倒立摆,进行simulink仿真,编程毕业设计最后总得到输出结果
  • 自平衡机器人,带有两个超声波接近传感器和nRF24通信+遥控器。 硬件组件: Arduino Nano R3× 2 SparkFun收发器突破 - nRF24L01 +× 1 ...它是倒立摆,由PID控制。 它可以用Arduino遥控器控制。 实物图:
  • 基于ADAMS和MATLAB的双回路PID控制倒立摆联合仿真.pdf
  • 智能控制例程,MATLAB倒立摆控制程序
  • 基于控制倒立摆平衡性的目的,通过系统分析倒立摆的各个组成部分,进行数学建模并设计了模糊控制器、LQR控制器和PID控制器。最后通过MATLAB对一级倒立摆的三种模型进行仿真分析,结果显示三种控制器均可很好地控制一...
  • 基于PID一阶倒立摆控制与仿真
  • 基于LQR和PID倒立摆小车控制,希望有需要的人能用到
  • 利用PID对系统进行控制,PID控制主要计算其中的反馈系数,反馈系数利用place()进行求解,利用p进行极点配置,计算反馈系数K,进行控制系统的仿真
  • matlab有关二级倒立摆PID控制-shuang_pd.mdl 直线二级倒立摆是一个单输入三输出的系统.为了使倒立摆稳定竖立,必须对小车的位置、摆杆1的偏角、摆杆2的偏角这3个输出同时进行闭环控制.若采用PID控制器,则因为一...
  • 使用模糊PID对simscape所建立的直线二阶倒立摆进行实时控制,使用环境为matlab2019b,压缩包内有两个文件,一个是simulink的模型,另外一个是使用模糊工具箱建立的模糊规则
  • 一级倒立摆基于LMI的状态反馈H无穷仿真
  • 二阶倒立摆控制算法,三种方法,simulink实现
  • 基于模糊控制理论的倒立摆系统设计,MATLAB版本。...以PID控制和状态反馈控制为代表的经典控制理论是以频率响应法和根轨迹法为基础建立的。经典控制理论主要研究时频域系统的运动特性、系统运动的稳定性等。
  • 这是自行设计的基于模糊控制倒立摆系统,利用模糊控制器调节PID的三个参数,从而达到更优越的控制性能。
  • PID控制算法+倒立摆控制应用

    万次阅读 多人点赞 2017-08-14 22:06:42
    PID控制算法 倒立摆 STM32

    一、位式控制算法

    传统的控制算法采用位式控制算法:

    这里写图片描述

    特点

    1. 位式控制算法输出信号只有H\L两种状态
    2. 算法输出信号OUT的依据:
    二位式:
    Pv < Sv -->H
    pV >=Sv -->L
    1. 只考察控制对象当前的状态值

    位式控制算法算法的缺点在于只考察控制对象当前传感器传回来的值与目标值之间有无偏差,并且只有两种状态导致无法精确控制在目标值上。

    二、 PID控制算法

    因为位式控制算法的缺陷,产生了在其之上改良的PID算法:
    这里写图片描述

    算法分析

    1. 开机以来,传感器采样点的数据序列

    X1,X2,X3 ······ ,Xk-2,Xk-1,Xk

    2. 分析采样点的数据序列:可以挖掘3方面的信息

    2.1 比例控制

    基本思想: 只关心现在有无偏差

     Ek = Sv - Xk
    EK>0; 当前控制未达标
    Ek=0; 当前控制达标
    Ek<0; 当前控制超标
    
    POUT = Kp * Ek --------- 比例控制(输出信号大小与目前的误差值成比例)

    比例控制有缺陷,当Ek=0时,便不控制,但周围环境会使系统有变化,控制不会很精准,可以加上一个常数 POUT=kp*Ek+OUT1

    2.2 积分控制

    基本思想: 根据历史状态来输出信号

    把每一个采样点与目标值进行比较,得到历史偏差序列:
    E1,E2,E3 ······ Ek-2,Ek-1,Ek
    Sk = E1+E2+E3+······Ek-2+Ek-1+Ek(每一项都可正可负,不会无限大)
    Sk>0; 所有偏差之和为正,控制总体偏低,未达标 (输出信号应该加强)
    Sk=0;
    Sk<0; 所有偏差之和为负,控制总体偏高,超标 (输出信号减弱)
    
    IOUT = Ki * Sk ---------  积分控制

    积分控制,当历史数据为0,认为现在没有问题,不控制,陷入失控,可以加上一个常数 IOUT = Ki*Sk+OUT2

    2.3 微分控制

    基本思想: 只关心偏差有没有变化趋势

    最近两次的偏差相减
    Dk = Ek -Ek-1 (得到两次变化的偏差之差)
    Dk>0; 这一次的偏差值大于上一次,越来越偏离我们的目标,偏差有增大趋势
    Dk=0; 前一次采样和后一次采样之间的变化没有产生变化
    Dk<0;
    
    DOUT = Kd * Dk ----------微分控制

    同理,等于0时前一次采样和后一次采样之间的变化没有产生变化,为了在变化率没有改变的情况下系统不至于失控 DOUT = Kd*Dk+OUT3

    三、倒立摆角度环与位置环

    1. 角度环

    1.1 算法设计

    通过STM32用adc采集角位移传感器(WDD35D-4导电塑料电位器)的值,由之前学到的PID控制算法理论可以得出,通过控制电机的转动与PWM的值来使倒立摆达到我们所希望的角度。

    根据所需要的系统要求,只需要让其达到所期望的角度,历史的差值对其影响并不大,所以只需要PD调节即可完成所需。

    算法代码如下:

    int balance(float Angle)//倾角PD控制
    {
        float Bias;//倾角偏差
        static float Last_Bias,D_Bias;//PID相关变量
        int balance;//PWM返回值
        Bias=Angle-ZHONGZHI;//求出平衡的角度中值,ZHONGZHI即数直起来的ad值
        D_Bias=Bias-Last_Bias;//求出偏差的微分
        balance=KP*Bias-D_Bias*KD;//计算倾角PD控制的电机PWM
        Last_Bias=Bias;//保持上一次偏差
        return balance;
    }
    

    1.2 参数整定

    KP:逐渐增大KP的值,直到出现反向或者低频抖动的情况

    KD:微分控制,控制偏差的变化趋势,实际中便是用来抑制转动惯量(即转动过猛)

    2. 位置环

    单纯进行角度环的控制,会稳定一段时间,但是最终会朝一个方向运动下去,因此还必须加上位置环的控制

    位置环就是尽可能的让转动的轴不要移动,同样采用PD控制,代码如下:

    int Position(int Encoder)
    {  
       static float Position_PWM,Last_Position,Position_Bias,Position_Differential;
         static float Position_Least;
        Position_Least =Encoder-Position_Zero;             //===
        Position_Bias *=0.8;           
        Position_Bias += Position_Least*0.2;                 //===一阶低通滤波器  
          Position_Differential=Position_Bias-Last_Position;
          Last_Position=Position_Bias;
            Position_PWM=Position_Bias*Position_KP+Position_Differential*Position_KD; //===速度控制 
          return Position_PWM;
    }

    低通滤波的作用是降低位置控制对角度控制的影响,毕竟角度控制是主要的,而位置控制是会对角度控制造成影响,尽可能消除这一影响

    展开全文
  • 1 建立一个倒立摆系统 我们使用【Simscape】用Simscape实现三维物理仿真(三)——创建一个滑块单摆系统中现成的模型开始下一步。 一个稳定闭环系统必须满足“能控”和“能观”,因此我们下一步需要添加执行器和...

    仿真文件下载:https://download.csdn.net/download/ReadAir/12232591


     1 建立一个倒立摆系统

    我们使用【Simscape】用Simscape实现三维物理仿真(三)——创建一个滑块单摆系统中现成的模型开始下一步。

    一个稳定闭环系统必须满足“能控”和“能观” ,因此我们下一步需要添加执行器传感器,我们首先设计一下整个闭环系统的控制框图:

    2 为系统添加传感器

    (1)双击编辑 旋转关节

    (2)在属性中找到传感器(Sensing),在其子栏目中勾选位置(即角度)和速度(即角速度),然后Apply

    (3) 可以看到这个模块多了两个输出q(角度)、w(角速度):

     3 添加控制器

    控制器实质是控制滑块Y轴向的受力(Y轴是滑块的自由轴)

    (1)双击编辑 三轴平动关节(注意,在上一篇博文中,我们已经用一种方法锁死了X和Z轴的平动。)

    (2)在属性中找到驱动(Actuation),将受力(Force)选为“由输入提供(Provided bu input)”,运动(Motion)选为“自动计算(Automatically computed”,然后点击Apply

    (3)可以看到模块多了一个Y轴受力输入: 

    4 添加噪声

    怎么评判一个控制系统的鲁棒性?最直观的办法就是看系统受到干扰后的性能,为此我们需要添加一点噪声。

    (1)在之前的旋转关节中找到驱动,添加一个扭矩(Torque)输入:

    (2)从Simulink库拖出一个脉冲发生器和一个信号转换器:

    • 脉冲发生器 (Simulink -> Sourses):
    • 信号转换器 (Simscape -> Utilities): 

    (3)如图连接接入旋转关节 :

     (4)双击设置脉冲发生器参数:

    • 脉冲幅度:5
    • 周期:5
    • 脉冲宽度:5%
    • 脉冲延时:1

     5 添加PID控制律

    • 首先,我们目前的仿真是一个完全理想的环境,不存在机械死区和摩擦力(尽管你可以自己添加),因此积分部分我们可以不用,所以我要展示的严格来说是个PD控制器。
    • 其次,由于误差等于输入(给定)减去输出,而输入恒为零,因此误差就是负的输入。
    • 此外,误差的微分即角速度,我们这里可以用传感器直接读出。即可省去微分的计算过程。

    了解这些后,我们开始着手于搭建控制器:

    (1)从Simulink库中拖出两个增益模块(Gain),以及对应的两种信号转换器,并按图示连接:

    (2)添加一个加模块(Add),按图示连接:、

    (3)现在按照我们的控制框图完成全部连接,取Kp=200,Kd=1,如图所示连接:

    6 大功告成,仿真看效果! 

    这显然不是最优的参数,但是可以明显看到控制器在避免摆杆的倾倒,由于我们仅仅实现了摆杆角度的闭环,因此如果控制器一旦饱和(滑块触边)就失去了控制作用,摆杆也自然无法继续保持倒立。下一章,我们来讲讲双闭环:同时实现摆杆角度的闭环和滑块的位置闭环。


    我是ReadAir,如果这篇教程能帮到你,请在右上角为我点个赞,谢谢!(求关注)

    展开全文
  • 基于模糊控制PID结合的简单倒立摆系统MATLAB仿真

    千次阅读 多人点赞 2020-02-28 09:56:21
    1 倒立摆小车模型搭建 2倒立摆传递函数模型实现 3 控制系统仿真设计 3.1 仿真模型 3.2 控制系统搭建过程 3.2.1 PID控制器设计 3.2.2 模糊PID控制器设计 1 倒立摆小车模型搭建 倒立摆小车模型参考了《MATLAB...

    目录

     

    1 倒立摆小车模型搭建

    2倒立摆传递函数模型实现

    3 控制系统仿真设计

    3.1 仿真模型

    3.2 控制系统搭建过程

    3.2.1 PID控制器设计

    3.2.2 模糊PID控制器设计


    1 倒立摆小车模型搭建

    倒立摆小车模型参考了《MATLAB建模与仿真》一书中的P342,主要参数为M=0.98kg、m=0.4kg、b=0.15N/(m.s)、I=0.005kg.m2、l=0.4m、g=9.8N/kg.其具体含义如图1-1所示。

                1-1倒立摆小车模型

    通过模型看到,当摆杆夹角远远小于1弧度时,可以进行近似处理,从而令cosθ=-1sinθ=-φdt2=0

    可得微分方程如图1-2所示。

    1.2倒立摆小车微分方程

    然后可以建立起以摆杆角度为输出量,给予小车的推力为输入量的传递函数模型,如图1-3所示

    1-3倒立摆小车传递函数模型

    2倒立摆传递函数模型实现

    我采用的是MATLAB R2017b,通过脚本文件编写了GetPendulum函数,输入小车质量,摆杆质量和摆杆长度即可得到倒立摆的传递函数。具体的代码如图2-1所示,调用过程如图2-2所示。

    2-1 GetPendulum函数代码

     

    2-2 GetPendulum函数调用

    3 控制系统仿真设计

    3.1 仿真模型

    基于模糊调参的PID倒立摆控制系统仿真模型如图3-1所示,其中红色框部分为模糊控制和可调参数的PID控制,蓝框部分为单一的PID控制,通过一个阶跃信号产生扰动,可以在二种控制方案之间进行对比实验,这里的模糊控制器选用带Ruleviewer功能的模块,可以在仿真时看到控制规律。同时也方便后面对规则进行调试更改。

    3-1 基于模糊调参的PID倒立摆控制系统

    3.2 控制系统搭建过程

    3.2.1 PID控制器设计

    3-2 PID控制器参数
    3-2 PID控制下的输出响应

    3.2.2 模糊PID控制器设计

    3-3 新建模糊控制规则

    在命令行输入fuzzy即可打开模糊控制器的规则设置界面,如图3-3所示,我们可以在这里创建输入变量,输出变量和规则库。我选择的是第一个,Mamdani类型,然后可以开始控制器的设计。

    3-4 控制器基本设置

    如图3-4所示,为控制器的基本设置,输入变量有两个,一个是摆杆角度,一个是角度的变化率,输出变量为三个,分别对应PID的三个参数,左侧可以看到去模糊化的方法为重心法。中间就是我们的规则库。点击可以进入详细的配置界面,各变量具体设置如下图所示:

    3-5 输入变量基本设置

    如图3-5所示,左侧为角度变量的取值范围和隶属度函数,右侧为角度对应时间的变化率,这里我的范围规定都是-5到5之间,隶属度函数是三角形,实际使用时要根据输入量的具体情况,串入一个Gain模块,设置我们的比例因子,使输入范围在设置值之间。  

    3-6 输出变量基本设置

    输出变量的设置如图3-6所示,同样采用三角形隶属度函数,P的范围设置为110-120,I的范围设置为115-125,D的范围设置为80-90,通过不同的输入值,可以相应选择不同的PID参数。点击图3-4中间的模块可以进入规则库编辑界面,如图3-7所示,可见,当角度和角度变化率都在mf2这个位置时,PID三个参数输出为mf2,按照这样的方式,建立起完整的规则库。

    3-7 规则库的基本设置

     

    3-8 建好的规则库

    4 仿真结果与分析

    4-1 模糊控制状态实时预览

    如图4-1所示,可以在仿真过程中实时预览输入输出量,很直观的看到隶属度函数是如何对整个模糊空间进行切割的,又是如何根据重心法得出精确解的。

    如图4-2所示,为阶跃输出响应曲线,其中红色表示PID控制曲线,黑色表示模糊控制和PID结合的控制曲线,通过图可以看到,PID有很大的超调量,但趋于稳定的速度更快,模糊控制曲线更为平缓,且比PID控制更接近稳定值。

    当采用随机信号发生器作为干扰的激励源时,其响应曲线如图4-3所示,可以看到,传统的PID控制器基本已经失效了,完全随着激励而变化,但黑色线代表的模糊控制器,还可以保持住一定的稳定性。所以,通过实现可以知道,模糊控制PID更适用于环境参数容易变化的场合。

     

    4-2 阶跃响应和随机信号响应

     

     

    展开全文
  • 一级倒立摆PID控制

    2015-04-25 20:54:30
    基于BP神经网络的一级倒立摆PID控制,经检验控制效果理想
  • Simple Inverted Pendulum with LQR,PID SimMechanics
  • 以下多套系统源码: 1、MATLAB 二级倒立摆 三级倒立摆(在MATLAB下...5、倒立摆源码(倒立摆源码程序,注释很详细,是学习倒立摆原理,PID算法很好的参考资料。代码书写规范,注释详细。) 6、二级倒立摆神经网络控制 7
  • 一级倒立摆_GUI界面操作显示倒立摆动画,控制器控制输出,可配置PID控制_极点配置_线性二次型配置,matlab2021a
  • 二阶倒立摆控制算法,三种方法,simulink实现
  • 1 章 倒立摆系统介绍...............................................................3.1.5 直线一级倒立摆 PID 控制实验......................................................................................72
  • 二级倒立摆_simulink.zip

    2020-09-08 13:53:52
    可以运行,二级倒立摆的建模、线性化S函数的PID控制以及非线性化S函数的PID控制, (1) 根据牛顿运动定律或者拉格朗日方程,建立直线型二级倒立摆的非线性运动模型,给出系统运动的状态方程。 (2) 对非线性运动模型...
  • 基于一阶倒立摆系统的模糊神经网络PID控制

    千次阅读 多人点赞 2020-01-14 15:11:52
    基于一阶倒立摆系统的模糊神经网络PID控制 1.1 研究背景 模糊系统、神经网络和遗传算法被认为是21世纪人工智能最具发展前途的三个重要领域。它们构成了所谓的“智能计算”。随着科学技术的飞速发展,现代工业控制...
  • 基于一级倒立摆PID与LQR控制算法对比分析 基于一级倒立摆PID与LQR控制算法对比分析
  • 基于MATLAB的倒立摆模糊自适应PID控制研究
  • 倒立摆PID控制及MATLAB仿真.doc

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 628
精华内容 251
关键字:

pid控制倒立摆