(完整版)一级直线倒立摆matlab程序
基于MATLAB的直线一级倒立摆的PID控制研究

基于MATLAB的直线一级倒立摆的PID控制研究一、内容概述本文旨在研究基于MATLAB的直线一级倒立摆的PID控制策略。
倒立摆系统作为控制理论中的重要实验对象,具有非线性、不稳定性以及快速运动等特点,对于控制系统的设计与实现提出了较高要求。
PID控制作为一种经典的控制方法,在倒立摆系统中具有广泛的应用价值。
本文利用MATLAB软件平台,对直线一级倒立摆的PID控制进行深入研究和探讨。
文章对直线一级倒立摆系统的基本原理进行介绍,包括其物理模型、运动方程以及稳定性分析等方面。
在此基础上,详细阐述了PID 控制器的基本原理、参数整定方法及其在倒立摆系统中的应用。
通过对比不同PID参数下的控制效果,分析了PID控制器在倒立摆系统中的性能特点。
文章重点介绍了基于MATLAB的直线一级倒立摆PID控制系统的设计与实现过程。
利用MATLAB的Simulink仿真工具,搭建了直线一级倒立摆的仿真模型,并设计了PID控制器进行仿真实验。
通过不断调整PID控制器的参数,观察系统的动态响应和稳态性能,得到了较优的控制参数。
文章还讨论了在实际应用中可能遇到的挑战与问题,并提出了相应的解决方案。
针对倒立摆系统的非线性特性,可以采用模糊PID控制或神经网络PID控制等智能控制方法进行改进;针对干扰和噪声的影响,可以采用滤波技术或鲁棒控制策略来提高系统的抗干扰能力。
文章总结了基于MATLAB的直线一级倒立摆PID控制研究的主要成果和贡献,并展望了未来研究方向和应用前景。
通过本文的研究,不仅加深了对倒立摆系统和PID控制方法的理解,也为实际工程应用提供了有益的参考和借鉴。
1. 直线一级倒立摆系统的介绍直线一级倒立摆系统,作为一个复杂且典型的非线性不稳定系统,历来被视为控制理论教学及实验的理想平台。
它不仅能够有效地反映出控制中的多种问题,如非线性、鲁棒性、镇定等,还因其在多个领域中的实际应用价值而备受关注。
直线一级倒立摆系统主要由小车、摆杆等部件构成,它们之间通过自由连接形成一个整体。
(完整)倒立摆MATLAB建模

Matlab程序设计上交作业要求:1)纸质文档:设计分析报告一份(包括系统建模、系统分析、系统设计思路、程序及其执行结果).2)Matlab程序:按班级统一上交后备查。
题目一:考虑如图所示的倒立摆系统.图中,倒立摆安装在一个小车上。
这里仅考虑倒立摆在图面内运动的二维问题.图倒立摆系统假定倒立摆系统的参数如下。
摆杆的质量:m=0.1g摆杆的长度:2l=1m小车的质量:M=1kg重力加速度:g=10/s2摆杆惯量:I=0.003kgm2摆杆的质量在摆杆的中心.设计一个控制系统,使得当给定任意初始条件(由干扰引起)时,最大超调量%≤10%,调节时间ts ≤4s ,使摆返回至垂直位置,并使小车返回至参考位置(x=0)。
要求:1、建立倒立摆系统的数学模型2、分析系统的性能指标—-能控性、能观性、稳定性3、设计状态反馈阵,使闭环极点能够达到期望的极点,这里所说的期望的极点确定是把系统设计成具有两个主导极点,两个非主导极点,这样就可以用二阶系统的分析方法进行参数的确定4、用MATLAB 进行程序设计,得到设计后系统的脉冲响应、阶跃响应,绘出相应状态变量的时间响应图。
题目二:根据自身的课题情况,任意选择一个被控对象,按照上题所示步骤进行分析和设计,并给出仿真程序及其执行结果。
题目一:考虑如图所示的倒立摆系统.图中,倒立摆安装在一个小车上。
这里仅考虑倒立摆在图面内运动的二维问题.图倒立摆系统假定倒立摆系统的参数如下。
摆杆的质量:m=0.1g摆杆的长度:2l=1m小车的质量:M=1kg重力加速度:g=10/s2摆杆惯量:I=0。
003kgm2摆杆的质量在摆杆的中心。
设计一个控制系统,使得当给定任意初始条件(由干扰引起)时,最大超调量%≤10%,调节时间ts ≤4s ,使摆返回至垂直位置,并使小车返回至参考位置(x=0)。
要求:1、建立倒立摆系统的数学模型2、分析系统的性能指标—-能控性、能观性、稳定性3、设计状态反馈阵,使闭环极点能够达到期望的极点,这里所说的期望的极点确定是把系统设计成具有两个主导极点,两个非主导极点,这样就可以用二阶系统的分析方法进行参数的确定4、用MATLAB 进行程序设计,得到设计后系统的脉冲响应、阶跃响应,绘出相应状态变量的时间响应图.设计分析报告1 系统建模在忽略了空气阻力和各种摩擦之后,可将直线一级倒立摆系统抽象成小车和匀质杆组成的系统。
基于matlab的一级倒立摆系统仿真研究

第一章绪论1.1倒立摆系统的简介1.1.1倒立摆系统的研究背景及意义倒立摆系统的最初分析研究开始于二十世纪五十年代,是一个比较复杂的不稳定、多变量、带有非线性和强耦合特性的高阶机械系统,它的稳定控制是控制理论应用的一个典型范例[1]。
倒立摆系统存在严重的不确定性,一方面是系统的参数的不确定性,一方面是系统的受到不确定因素的干扰。
通过对它的研究不仅可以解决控制中的理论问题,还将控制理论涉及的相关主要学科:机械、力学、数学、电学和计算机等综合应用。
在多种控制理论与方法的研究和应用中,特别是在工程中,存在一种可行性的实验问题,将其理论和方法得到有效的验证,倒立摆系统可以此提供一个从控制理论通过实践的桥梁。
近些年来,国内外不少专家、学者一直将它视为典型的研究对象,提出了很多控制方案,对倒立摆系统的稳定性和镇定问题进行了大量研究,都在试图寻找不同的控制方法实现对倒立摆的控制,以便检查或说明该方法的严重非线性和绝对不稳定系统的控制能力,其控制方法在军工、航天、机械人领域和一般工业过程中都有着广泛的用途,如精密仪器的加工、机器人行走过程中的平衡控制、火箭发射中的垂直度控制、导弹拦截控制、航空对接控制、卫星飞行中的姿态控制等方面均涉及到倒置问题。
因此,从控制这个角度上讲,对倒立摆的研究在理论和方法论上均有着深远意义。
倒立摆系统是一个典型的自不稳定系统,其中摆作为一个典型的振动和运动问题,可以抽象为许多问题来研究。
随着非线性科学的发展,以前的采用线性化方法来描述非线性的性质,固然无可非议,但这种方法是很有局限性,非线性的一些本质特征往往不是用线性的方法所能体现的。
非线性是造成混乱、无序或混沌的核心因素,造成混乱、无序或混沌并不意味着需要复杂的原因,简单的非线性就会产生非常的混乱、无序或混沌。
在倒立摆系统中含有极其丰富和复杂的动力学行为,如分叉、分形和混沌动力学,这方面的问题也值得去探讨和研究。
无论哪种类型的倒立摆系统都具有如下特性[2]:(1)非线性倒立摆是一个典型的非线性复杂系统。
基于Matlab的一级倒立摆模型的仿真

基于Matlab的一级倒立摆模型的仿真一.倒立摆模型的研究意义倒立摆控制系统是一个复杂的、不稳定的、非线性系统,是进行控制理论教学及开展各种控制实验的理想的实验平台。
对倒立摆系统的研究能有效的反应控制中的典型问题:如非线性问题、鲁莽性问题、镇定问题等。
通过对倒立摆的控制,用来检测新的控制方法是否有较强的处理非线性和不稳定性问题的能力。
二.倒立摆模型的数学建模质量为m的小球固结于长度为L的细杆上(细杆质量不计),细杆和质量为M的小车铰链相接分析过程如下:如图所示,设细杆摆沿顺时针方向转东伟正方向,水平向右为水平方向上的正方向。
当细杆白顺时针想要运动时水平方向施加的里应该是水平相应。
对方程组进行拉普拉斯变化,得到摆杆角度和小车位移的传递函数:摆杆角度和小车加速度之间的传递函数:摆杆角度和小车加速度之间的传递函数:位移X对外力F的传递函数:三.在Matlab中输入得到的反馈矩阵:采用MATLAB/Simulink构造单级倒立摆状态反馈控制系统的仿真模型,如下图所示。
首先,在M A T L A B的Command Window中输入各个矩阵的值,并且在模型中的积分器中设置非零初值(这里我们设置为[0 0 0.1 0]。
然后运行仿真程序。
得到的仿真曲线从仿真结果可以看出,可以将倒立摆的杆子与竖直方向的偏角控制在θ=0(即小球和杆子被控制保持在竖直倒立状态),另外说明下黄线代表位移,紫线代表角度。
四.总结由实验中可知,倒立摆系统是一个非线性的较复杂的不稳定系统,故要满足故要满足稳定性要求,就得对系统进行线性化近似和稳定控制。
当然我们调节出来的只是一个理想模型,在实际中会更加复杂,稳定性也会更难获得。
在这次实验中掌握了倒立摆仿真的整个过程,熟悉了MATLAB仿真软件Simulingk的使用,也对系统有了更好的理解。
一阶倒立摆控制系统设计matlab

一阶倒立摆控制系统设计matlab一、控制系统简介控制系统是指通过对某些物理系统或过程的改变以获取期望输出或行为的一种系统。
其中涉及到了对系统的建模、分析以及控制方法的选择和设计等多方面的问题。
控制系统可以通过标准的数学和物理模型来描述,并可以通过物理或者仿真实验进行验证。
本文将围绕一阶倒立摆控制系统设计和仿真展开。
主要内容包括:1.一阶倒立摆系统简介2.系统建模3.系统分析4.设计控制器5.仿真实验及结果分析一阶倒立摆(controlled inverted pendulum)是一种比较常见的控制系统模型。
它的系统模型简单,有利于系统学习和掌握。
一般而言,一阶倒立摆系统是由一个竖直的支杆和一个质量为$m$的小球组成的。
假设球只能在竖直方向上运动,当球从垂直平衡位置偏离时,支杆会向相反的方向采取动作,使得小球可以回到平衡位置附近。
为了控制一阶倒立摆系统,我们首先需要对其进行建模。
由于系统并不是非常复杂,所以建模过程相对简单。
假设支杆长度为$l$,支杆底端到小球的距离为$h$,支杆与竖直方向的夹角为$\theta$,小球的质量为$m$,地球重力为$g$,该系统的拉格朗日方程可以表示为:$L =\frac{1}{2}m\dot{h}^{2}+\frac{1}{2}ml^{2}\dot{\theta}^{2}-mgh\cos{\theta}-\frac{1}{2}I\dot{\theta}^{2}$$I$表示支杆的惯性矩,它可以通过支杆的质量、长度以及截面积等参数计算得出。
$h$和$\theta$分别表示小球和支杆的位置。
我们可以通过拉格朗日方程可以得出系统的动力学方程:$b$表示摩擦系数,$f_{c}$表示对支杆的控制力。
由于一阶倒立摆会发生不稳定的倾斜运动,即未受到外部控制时会继续倾斜。
我们需要对系统加上控制力,使得系统保持在稳定的位置上。
在进行控制器设计之前,我们需要对系统进行分析,以便更好地了解系统在不同条件下的特性表现。
模糊控制一级倒立摆matlab实现

模糊控制一级倒立摆MATLAB实现课程:现代仿真技术及应用专业:控制理论与控制工程学号:姓名:模糊控制一级倒立摆MATLAB实现摘要:一级倒立摆是一个典型的非线性,强耦合,多变量的不稳定系统,为了控制其平衡性,对一级倒立摆系统建立了数学模型,采用模糊控制法设计了控制器,并用MATLAB/SIMULINK对控制系统进行了仿真实验研究,实验结果表明,模糊控制器具有良好的控制效果。
关键词:一级倒立摆;模糊控制;MATLAB/SIMULINK一引言倒立摆最初研究开始于20世纪50年代,麻省理工学院的控制论专家根据火箭发射器原理设计出一级倒立摆实验设备,而后倒立摆就成了验证控制方法和理论的实验平台,被广泛应用与实验教学中。
一级倒立摆具有结构简单,便于模拟的优点,同时它在控制过程中能够优先的反应控制中的许多关键问题,如系统的非线性、鲁棒性等。
因此对倒立摆的研究一直是控制领域中经久不衰的课题。
二一级倒立摆数学模型的建立在忽略各种摩擦之后,一级倒立摆系统是由小车、质量块和匀质杆组成的系统,通过控制小车位置,以使小车上的倒立摆始终处于反转垂直位置,左右倾斜角在︒±5.0范围内,原理结构图如图1.1所示。
图1.1 一级倒立摆原理结构图对该模型进行受力分析,作如下假设:M 小车质量 1.096Kg m 摆杆质量 0.109Kg b 小车摩擦系数 0.1N/m/sec I 摆杆惯量 0.0034Kg*m*m T 采样频率 0.005sl 摆杆转动轴心到杆质心的长度 0.25m F 夹在小车上的力 x 小车位置φ 摆杆与垂直向上方向的夹角θ 摆杆与垂直向下方向的夹角分析小车水平方向所受的合力:N x b F xM --= 摆杆水平方向的合力:)sin (22θl x dtd m N +=即: θθθθsin cos 2ml ml x m N -+= 把这个等式代入上式中,得到系统的第一个运动方程:F ml ml x b xm M =-+++θθθθsin cos )(2 对摆杆垂直方向上的合力进行分析,得到以下方程:θθθcos 2 ml ml mg P --=- 力矩平衡方程如下:θθθ I Nl Pl =--cos sin合并以上两个方程,得到第二个运动方程:θθθcos sin )(2xml mgl ml I -=++ 线性化后两个运动方程如下:⎪⎩⎪⎨⎧=-++=-+u ml x b x m M x ml mgl ml I φφφ)()(2 对方程组进行拉普拉斯变换,得到摆杆角度和小车位移之间的传递函数:mgls ml I mls X s -+=Φ22)()()( 将实际参数代入后得到实际模型:26705.00102125.002725.0)()(2-=Φs s X s 三 模糊控制器控制 3.1 模糊控制原理模糊逻辑控制简称模糊控制,是以模糊集合论、模糊语言变量和模糊逻辑推理为基础的一种计算机数字智能控制技术。
一级直线倒立摆matlab程序(最新整理)

非线性作业一 一级直线倒立摆如图1所示系统里的各参数变量M :小车系统的等效质量(1.096kg );:摆杆的质量(0.109kg );1m :摆杆的半长(0.25m );2m J :摆杆系统的转动惯量(0.0034kg*m );g :重力加速度(9.8N/Kg );r :小车的水平位置(m );θ:摆角大小(以竖直向上为0起始位置,逆时针方向为正方向);:小车对摆杆水平方向作用力(N )(向左为正方向),’是其反作用力;h F h F :小车对摆杆竖直方向作用力(N )(向上为正方向),’是其反作用力;v F v F U :电动机经传动机构给小车的力,可理解为控制作用u’(向左为正方向);:摆杆重心的水平位置(m );:摆杆重心的竖直位置(m )。
p x p y 1.1一级倒立摆的数学建模定义系统的状态为[r,r, θ, θ]经推导整理后可以达到倒立摆系统的牛顿力学模型:(1)θθθsin cos )(2mgl l r m ml I =-+ (2)u ml r m M ml -⋅=+-⋅2sin )(cos θθθθ 因为摆杆一般在工作在竖直向上的小领域内θ=0,可以在小范围近似处理:,则数学模型可以整理成:0,0sin ,1cos 2==≈θθθ (3)θθmgl l r m ml I =-+ )(2 (4)u r m M ml =++- )(θ系统的状态空间模型为=+ (5)⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡θθ r r ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+++++0)()(010000)(0000102222Mml m M I m M mgl Mml m M I gl m ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡θθr r ⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡+++++222)(0)(0Mml m M I ml Mml m M I ml I u (6)u r r r y ⎥⎦⎤⎢⎣⎡+⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=0000101000θθθ 代人实际系统的参数后状态方程为:=+ (7)⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡θθ r r ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡08285.2700100006293.0000010⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡θθ r r u ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡3566.208832.00 (8)u r r r y ⎥⎦⎤⎢⎣⎡+⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=0000101000θθθ 1.2滑模变结构在一级倒立摆系统的应用主要包括切换函数的设计、控制率的设计和系统消除抖振的抑制。
基于MATLAB-GUI的一级倒立摆控制仿真软件设计

基于MATLAB-GUI的一级倒立摆控制仿真软件设计基于MATLAB/GUI的一级倒立摆控制仿真软件设计摘要:本文介绍了一种基于MATLAB/GUI的一级倒立摆控制仿真软件的设计方法。
倒立摆是一个经典的控制系统问题,通过控制摆杆使其保持垂直状态。
本文使用MATLAB作为仿真平台,并通过GUI界面设计,使得用户可以方便地输入参数、观察系统状态和结果。
通过该仿真软件,可以有效地学习和研究控制系统的设计与应用。
关键词:MATLAB;倒立摆;控制系统;仿真软件;GUI一、引言倒立摆是一种非线性、强耦合且不稳定的控制系统,是控制理论中经典的问题之一。
倒立摆控制系统受到广泛的研究关注,其在机器人、飞行器、自动驾驶等领域有着重要的应用。
为了帮助学习者理解控制系统的原理和特点,设计了一种基于MATLAB/GUI的一级倒立摆控制仿真软件。
二、仿真软件设计1. 系统模型建立使用MATLAB工具箱中的Simulink建立倒立摆的系统模型。
系统包含两个部分:摆杆和电机控制器。
摆杆模型包括质量、长度、角度等参数;电机控制器模型包括电压、电流、转速等参数。
连接两个模块,构建完整的倒立摆控制系统。
2. GUI界面设计使用MATLAB的GUI工具进行界面设计,用户可以通过界面方便地输入参数、选择控制算法和观察系统状态。
界面包括输入参数框、按钮、图表等控件。
3. 控制算法设计通过GUI界面,用户可以选择不同的控制算法,如PID控制、模糊控制、自适应控制等。
根据选择的算法,修改Simulink模型中的控制器参数,并进行仿真分析。
4. 仿真结果可视化在GUI界面中添加图表,可以实时显示倒立摆的角度、位置等参数。
用户可以通过修改参数和算法,观察系统的响应结果并进行分析。
三、应用实例以PID控制算法为例,进行系统仿真。
用户可以通过GUI界面输入摆杆的质量、长度、角度等参数。
选择PID控制算法后,可以调节PID参数的值,观察系统响应和稳定性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非线性作业
一 一级直线倒立摆
如图1所示
系统里的各参数变量
M :小车系统的等效质量(1.096kg );
1m :摆杆的质量(0.109kg );
2m :摆杆的半长(0.25m );
J :摆杆系统的转动惯量(0.0034kg*m );
g :重力加速度(9.8N/Kg );
r :小车的水平位置(m );
θ:摆角大小(以竖直向上为0起始位置,逆时针方向为正方向); h F :小车对摆杆水平方向作用力(N )(向左为正方向),h F ’是其反作用力; v F :小车对摆杆竖直方向作用力(N )(向上为正方向),v F ’是其反作用力; U :电动机经传动机构给小车的力,可理解为控制作用u’(向左为正方向); p x :摆杆重心的水平位置(m );p y :摆杆重心的竖直位置(m )。
1.1一级倒立摆的数学建模
定义系统的状态为[r,r, θ, θ]
经推导整理后可以达到倒立摆系统的牛顿力学模型:
θθθsin cos )(2mgl l r m ml I =-+ (1)
u ml r m M ml -⋅=+-⋅2sin )(cos θ
θθθ (2) 因为摆杆一般在工作在竖直向上的小领域内θ=0,可以在小范围近似处理:
0,0sin ,1cos 2==≈θθθ ,则数学模型可以整理成:
θθmgl l r m ml I =-+ )(2 (3) u r m M ml =++- )(θ (4) 系统的状态空间模型为
⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡θθ r r =⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+++++0)()
(0010000)(0000102222Mml m M I m M mgl Mml m M I gl m ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡θθ r r +⎥⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡+++++222)(0)(0Mml m M I ml Mml m M I ml I u (5) u r r r y ⎥⎦⎤⎢⎣⎡+⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=0000101000θθθ (6) 代人实际系统的参数后状态方程为:
⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣
⎡θθ r r =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡08285.2700100006293.0000010⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡θθ r r +u ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡3566.208832.00 (7) u r r r y ⎥⎦⎤⎢⎣⎡+⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣
⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=0000101000θθθ (8) 1.2滑模变结构在一级倒立摆系统的应用
主要包括切换函数的设计、控制率的设计和系统消除抖振的抑制。
基于线性二次型最优化理论的切换函数设计,定义系统的优化积分指标是:
Qxdt x J T ⎰∞
=0 Q>0, 本文采用指数趋近律:)sgn(S kS S ε--= ,其中k 和ε为正数。
将其代人S=Cx=0中,可以得到:
)sgn(S kS CBu CAx x C S
ε--=+== (9) 控制率为:))sgn(()(1S kS CAx CB u ε++-=- (10) ε的选取主要是为了抑制系统的摩擦力和近似线性化所带来的误差和参数摄动等因素,从而使得系统具有良好的鲁棒性。
文中k=25, ε=0.8。
取变换矩阵T 。
其中T=⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎣⎡+-10000100)(01000012ml ml I , 去Q*11=diag([300 50 350]),Q22=10
关于Riccati 方程01112122121111=+-+*-**Q P A Q PA P A PA T T
的解有MATLAB 的lqr 函数可以解出
⎢⎢⎢⎣⎡-=6098.3599281.2147165.692P 8204.1491894.1129281.214-⎥⎥⎥⎦
⎤--4007.3548204.1496098.359 [0000.1000-=C 2717.69- 6295.210 ]9610.35
[r C x S ⋅=0)( r θ ]
T θ 二 程序
%主程序:直线一级倒立摆
clear all
close all
global C M0 F
ts=0.02; %采样时间
T=30; %仿真时间
TimeSet=[0:ts:T];
para=[];
%options 为解微分函数中的调整参数,reltol 和abstol 分别是设置相对误差和绝对误差
options=odeset('RelTol',1e-3,'AbsTol',[1e-3 1e-3 1e-3 1e-3]);
%options=[];
x0=[0.5,0.3,0,0]; %初始值
[t,xout]=ode45('daolibai2eq',TimeSet,x0,options,para);%固定格式,子程序调用 %返回值
x1=xout(:,1);
x2=xout(:,2);
x3=xout(:,3);
x4=xout(:,4);
s=C(1)*x1+C(2)*x2+C(3)*x3+C(4)*x4; %切换函数或切换面
%选择控制器
if F==1
% for k=1:1:T/ts+1
M0=40;
%u(k)=-M0*sign(s(k));
u=-M0*sign(s);
%end
else if F==2
beta=30;
delta=0;
for k=1:1:T/ts+1
u(k)=-beta*(abs(x1(k))+abs(x2(k))+abs(x3(k))+abs(x4(k))+delta)*sign(s(k));
end
end
%绘图
figure(1);
plot(t,x1,'r');
xlabel('time(s)');ylabel('Cart Position');
figure(2);
plot(t,x2,'r');
xlabel('time(s)');ylabel('Pendulum Angle');
figure(3);
plot(t,s,'r');
xlabel('time(s)');ylabel('s');
figure(4);
plot(t,u,'r');
xlabel('time(s)');
ylabel('u');
end
%子程序
function dx=DxnamicModel(t,x,flag,para)%自定义动态函数
global C M0 F
%倒立摆经计算后模型
M=1.096;m=0.109;b=0.1;l=0.25;I=0.0034;T=0.005;g=0.98;
k22=-(I+m*l^2)*b/(I*(M+m)+M*m*l^2);
k23=m^2*g*l^2/(I*(M+m)+M*m*l^2);
k42=-m*l*b/(I*(M+m)+M*m*l^2);
k43=m*g*l*(M+m)/(I*(M+m)+M*m*l^2);
b12=(I+m*l^2)/(I*(M+m)+M*m*l^2);
b14=m*l/(I*(M+m)+M*m*l^2);
A=[0,1,0,0;0,k22,k23,0;0,0,0,1;0,k42,k43,0];
b=[0;b12;0;b14];
%Ackermann's formula
n1=-1;n2=-2;n3=-3;
C=[0,0,0,1]*inv([b,A*b,A^2*b,A^3*b])*(A-n1*eye(4))*(A-n2*eye(4))*(A-n3*eye(4));
s=C*x;
F=2;
if F==1
M0=40;
u=-M0*sign(s);
elseif F==2
beta=30;
delta=0;
u=-beta*(abs(x(1))+abs(x(2))+abs(x(3))+abs(x(4))+delta)*sign(s);
end
%state equation
dx=zeros(4,1);
f0=0.5;
ft=f0*sin(3*t);
dx=A*x+b*(u+ft);
三 仿真结果
time(s)C a r t P o s i t i o n
图2
time(s)P e n d u l u m A n g l e 图3
time(s)s
图4
time(s)
图5。