【精编完整版】基于matlab的倒立摆模糊控制_毕业论文报告

更新时间:2023-04-09 15:30:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

(此文档为word格式,下载后您可任意编辑修改!)

智能控制理论及应用课程设计报告

题目:基于matlab的倒立摆模糊控制

院系:西北民族大学电气工程学院

专业班级:10级自动化(3)班

学生姓名:蔡余敏

指导教师:刁晨

2013.10

基于MATLAB的倒立摆模糊控制

作者:蔡余敏指导老师:刁晨

摘要:倒立摆的控制问题就是使摆杆尽快地达到一个平衡位置,并且使之没有大的振荡和过大的角度和速度。当摆杆到达期望的位置后,系统能克服随机扰动而保持稳定的位置。本文主要针对较为简单的单级倒立摆控制系统而进行的设计分析。通过建立微分方程模型,求出相关参数,设计出对应的模糊控制器,并运用MATLAB软件进行系统模型的软件仿真,从而达到预定控制效果。目前,一级倒立摆的研究成果应用于火箭发射推进器和控制卫星的飞行状态等航空航天领域。关键词:单级倒立摆;微分方程;模糊控制;MATLAB仿真

1背景分析

倒立摆控制系统是一个复杂的、不稳定的、非线性系统,是进行控制理论教学及开展各种控制实验的理想实验平台。对倒立摆系统的研究能有效的反映控制中的许多典型问题:如非线性问题、鲁棒性问题、镇定问题、随动问题以及跟踪问题等。通过对倒立摆的控制,用来检验新的控制方法是否有较强的处理非线性和不稳定性问题的能力。同时,其控制方法在军工、航天、机器人和一般工业过程领域中都有着广泛的用途,如机器人行走过程中的平衡控制、火箭发射中的垂直度控制和卫星飞行中的姿态控制等。

正是由于倒立摆系统的特殊性,许多不同领域的专家学者在检验新提出理论的正确性和实际可行性时,都将倒立摆系统作为实验测试平台。再将经过测试后的控制理论和控制方法应用到更为广泛的领域中去。现代控制理论已经在工业生产过程、军事科学、航空航天等许多方面都取得了成功的应用。例如极小值原理可以用来解决某些最优控制问题;利用卡尔曼滤波器可以对具有有色噪声的系统进行状态估计;预测控制理论可以对大滞后过程进行有效的控制。但是它们都有一个基本的要求:需要建立被控对象的精确数学模型。

随着科学技术的迅猛发展,各个领域对自动控制控制精度、响应速度、系统稳定性与适应能力的要求越来越高,所研究的系统也日益复杂多变。然而由于一系列的原因,诸如被控对象或过程的非线性、时变性、多参数间的强烈耦合、较大的随机干扰、过程机理错综复杂、各种不确定性以及现场测量手段不完善等,难以建立被控对象的精确

模型。虽然常规自适应控制技术可以解决一些问题,但范围是有限的。对于像二级倒立摆这样的非线性、多参数、强耦合的被控对象,使用传统控制理论难以达到良好的控制性能。而模糊控制理论能够克服这些困难,达到实际设计要求。

所以说,对倒立摆系统控制理论的研究不仅具有理论研究价值,也具有相当的实际工程应用价值。

2提出控制问题

倒立摆控制问题是展示智能控制方法由于传统控制方法的典型范例。一级倒立摆的背景源于火箭发射助推器;二级倒立摆于双足机器人控制有关。这里只讨论一级倒立摆的控制问题。

有一个倒立摆控制系统如图2.1所示。

图2.1 倒立摆控制系统

它由小车和倒立摆构成,小车在控制器的作用下,沿滑轨在水平

方向运动,使倒立摆在垂直平面内稳定。

倒立摆的控制问题就是使摆杆尽快地达到一个平衡位置,并且使之没有大的振荡和过大的角度和速度。当摆杆到达期望的位置后,系统能克服随机扰动而保持稳定的位置。

倒立摆系统的输入为小车的位移(即位置)和摆杆的倾斜角度期望值,计算机在每一个采样周期中采集来自传感器的小车与摆杆的实际位置信号,与期望值进行比较后,通过控制算法得到控制量,再经数模转换驱动直流电机实现倒立摆的实时控制。直流电机通过皮带带动小车在固定的轨道上运动,摆杆的一端安装在小车上,能以此点为轴心使摆杆能在垂直的平面上自由地摆动。作用力平行于铁轨的方向作用于小车,使杆绕小车上的轴在竖直平面内旋转,小车沿着水平铁轨运动。当没有作用力时,摆杆处于垂直的稳定的平衡位置(竖直向下)。为了使杆子摆动或者达到竖直向上的稳定,需要给小车一个控制力,使其在轨道上被往前或朝后拉动。

3建立控制模型

首先假设:

①摆杆为刚体;

②忽略摆杆与支点之间的摩擦;

③忽略小车与导轨之间的摩擦。

一级倒立摆系统可抽象成小车与匀质杆组成的系统,假设:M为小车的质量;m为摆杆质量;为摆杆转动轴心到杆质心的长度;I为

摆杆惯量;U 为加在小车上的力;为小车位置;θ为摆杆与垂直向上方向的夹角。应用Newton 第二定律的方法可得到系统方向的运动方程为

()21'

'Ma Ma F ma G m F x x x +===

()()()()1-3cos sin sin 222222

22??????+??? ??-++=++=dt d dt d ml dt x d m M l dt

d m dt x d m M θθθθθ 规定逆时针方向的力矩为正,以摆与小车的连接点为原点,列出摆的力矩方程:考虑到摆的惯性力矩,求得系统的运动方程为(未考虑摆旋转的摩擦阻力矩)

()

2-3cos sin 343

4sin cos 22222

22222θθθρθθθdt x d g dt d l ml m J mgl l dt

x d m dt d J -==∑=-= 由式(3-1)和式(3-2)可得 ()()()()

33cos sin cos 34cos 2sin 21sin 222222222-+-??? ??+=+-+????????+??? ??-=m M dt d ml dt d ml F dt x d m M ml l m M F dt d ml g dt d θθθθθθθθθθ

4设计模糊控制器

4.1确定输入输出变量

以摆角θ、摆角角速度、小车位移、速度为状态变量。将这些状态变量作为控制器输入量,以作用在小车的力F作为模糊控制器输出量。所以分别在四个输入变量的空间建立相应的隶属度函数。

图4.1 四输入变量单级倒立摆

以下分别在MATLAB的仿真图中来说明情况。

确定摆角θ的论域 [-0.3 ,0.3],将其划分为两个语言变量“大”和“小”,隶属度函数如图 4.2;摆角角速度的论域 [-1 ,1],划分

两个语言变量为“快”和“慢”;隶属度函数如图 4.3;小车位移的论域 [-3,3],划分两个语言变量为“远”和“近”;隶属度函数如图4.4;速度的论域 [-3,3],划分两个语言变量为“快”和“慢”;隶属度函数如图4.5;输出变量的论域为[ -10,10],如图4.6。

图4.2 摆角θ的隶属度函数

图4.3 摆角角速度的隶属度函数

图4.4 位移的隶属度函数

图4.5 速度的隶属度函数

图4.6 输出变量

4.2 设计模糊规则库

这里选取T-S的控制器,控制器根据这4个输入变量,综合得出作用于小车的控制信号。

然后,列出每种输入所对应的输出量的模糊规则,共计设置了16条规则:

? 1. If (in1 is in1mf1) and (in2 is in2mf1) and (in3 is in3mf1) and (in4 is in4mf1) then (out is mf1) (1)

? 2. If (in1 is in1mf1) and (in2 is in2mf1) and (in3 is in3mf1) and (in4 is in4mf2) then (out is mf2) (1)

? 3. If (in1 is in1mf1) and (in2 is in2mf1) and (in3 is in3mf2) and (in4 is in4mf1) then (out is mf3) (1)

? 4. If (in1 is in1mf1) and (in2 is in2mf1) and (in3 is in3mf2) and (in4 is in4mf2) then (out is mf4) (1)

? 5. If (in1 is in1mf1) and (in2 is in2mf2) and (in3 is in3mf1) and (in4 is in4mf1) then (out is mf5) (1)

? 6. If (in1 is in1mf1) and (in2 is in2mf2) and (in3 is in3mf1) and (in4 is in4mf2) then (out is mf6) (1)

?7. If (in1 is in1mf1) and (in2 is in2mf2) and (in3 is in3mf2) and (in4 is in4mf1) then (out is mf7) (1)

?8. If (in1 is in1mf1) and (in2 is in2mf2) and (in3 is in3mf2) and (in4 is in4mf2) then (out is mf8) (1)

?9. If (in1 is in1mf2) and (in2 is in2mf1) and (in3 is in3mf1) and (in4 is in4mf1) then (out is mf9) (1)

?10. If (in1 is in1mf2) and (in2 is in2mf1) and (in3 is in3mf1) and (in4 is in4mf2) then (out is mf10) (1)

?11. If (in1 is in1mf2) and (in2 is in2mf1) and (in3 is in3mf2) and (in4 is in4mf1) then (out is mf11) (1)

?12. If (in1 is in1mf2) and (in2 is in2mf1) and (in3 is in3mf2) and (in4 is in4mf2) then (out is mf12) (1)

?13. If (in1 is in1mf2) and (in2 is in2mf2) and (in3 is in3mf1) and (in4 is in4mf1) then (out is mf13) (1)

?14. If (in1 is in1mf2) and (in2 is in2mf2) and (in3 is in3mf1) and (in4 is in4mf2) then (out is mf14) (1)

?15. If (in1 is in1mf2) and (in2 is in2mf2) and (in3 is in3mf2) and (in4 is in4mf1) then (out is mf15) (1)

?16. If (in1 is in1mf2) and (in2 is in2mf2) and (in3 is in3mf2) and (in4 is in4mf2) then (out is mf16) (1)

其中,in1mf1和in1mf2表示角θ是“大”和“小”,in2mf1和in2mf2表示角速度是“快”和“慢”,in3mf1和in3mf2表示位移的“远”和“近”、in4mf1和in4mf2表示速度是“快”和“慢”。

在多输入多输出的模糊逻辑系统中,常可能会有很多规则,并且这些规则的前提部分和结论部分也可以由许多语句组成。前面介绍的IF.THEN规则只是最简单的形式,是最基本的模糊系统单元。对

于复杂的模糊逻辑系统,如果满足“输出一输入解耦的,各输入间、输出间分别是独立的”,就可以用连接词“and”、“or”和“also”连接的一系列简单的模糊规则组成的模糊规则库来表示。其中,“and”和“or”用来连接同一规则的多个输入或多个输出,“also”用来连接多条不同的模糊规则。

模糊推理的规则通常来源于专家的知识,对于多输入多输出系统,其规则库可以看成由n个子规则库所组成,每一个子规则库由n 个多输入单输出规则所组成,而且每个子规则库是相互独立的,因此通常只要考虑一个多输入单输出规则库的模糊推理问题,分别求出每一个单输出,组合起来就是最终结果。然后将上述实施规则录入到MATLAB仿真结构中,具体如下图4.7所示。

图4.7 模糊规则

录入结束后要对所指定的输入输出规则进行保存,以便在具体的

仿真过程中实现调用,保存的文件扩展名为单级倒立摆Caymi.fis

图4.8 模糊推理规则通过view直观显示图

此外,在建立起具体的模糊推理规则以后,可以通过view功能来得到规则的直观显示,这些图形可以帮助更好的理解建立的模糊推理规则。如图4.8所示。设置完后保存为单级倒立摆Caymi.fis文件。对应的源代码如下:

[System]

Name='单级倒立摆Caymi'

Type='sugeno'

Version=2.0

NumInputs=4

NumOutputs=1

NumRules=16

AndMethod='prod'

OrMethod='probor'

ImpMethod='prod'

AggMethod='sum'

DefuzzMethod='wtaver'

[Input1]

Name='in1'

Range=[-0.3 0.3]

NumMFs=2

MF1='in1mf1':'gbellmf',[0.3 2.5 -0.3]

MF2='in1mf2':'gbellmf',[0.3 2.5 0.3]

[Input2]

Name='in2'

Range=[-1 1]

NumMFs=2

MF1='in2mf1':'gbellmf',[1 2.5 -1] MF2='in2mf2':'gbellmf',[1 2.5 1]

[Input3]

Name='in3'

Range=[-3 3]

NumMFs=2

MF1='in3mf1':'gbellmf',[3 2.5 -3] MF2='in3mf2':'gbellmf',[3 2.5 3]

[Input4]

Name='in4'

Range=[-3 3]

NumMFs=2

MF1='in4mf1':'gbellmf',[3 2.5 -3] MF2='in4mf2':'gbellmf',[3 2.5 3]

[Output1]

Name='out'

Range=[0 1]

NumMFs=16

MF1='mf1':'constant',[0]

MF2='mf2':'constant',[0.125] MF3='mf3':'constant',[0.25]

MF4='mf4':'constant',[0.375] MF5='mf5':'constant',[0.5]

MF6='mf6':'constant',[0.625] MF7='mf7':'constant',[0.75]

MF8='mf8':'constant',[0.875] MF9='mf9':'constant',[1]

MF10='mf10':'constant',[0]

MF13='mf13':'constant',[0.5]

MF16='mf16':'constant',[1]

[Rules]

1 1 1 1, 1 (1) : 1

1 1 1 2,

2 (1) : 1

1 1

2 1,

3 (1) : 1

1 1

2 2, 4 (1) : 1

1 2 1 1, 5 (1) : 1

1 2 1 2, 6 (1) : 1

1 2 2 1, 7 (1) : 1

1 2 2 2, 8 (1) : 1

2 1 1 1, 9 (1) : 1

2 1 1 2, 10 (1) : 1

2 1 2 1, 11 (1) : 1

2 1 2 2, 12 (1) : 1

2 2 1 1, 1

3 (1) : 1

2 2 1 2, 14 (1) : 1

2 2 2 1, 15 (1) : 1

2 2 2 2, 16 (1) : 1

根据控制器和倒立摆模型的分析,通过MATLAB可以得到单级倒立摆控制系统的结构如图所示。

图4.9 单级倒立摆控制系统的结构

5根据控制模型,分析动稳态特性根据控制器和倒立摆模型得出图 4.9所示的单级倒立摆控制系统的结构后,设置不同的隶属度函数,分别对上述过程进行仿真,得到不同情况下的线速度和角位移的变化情况,说明选取不同的隶属度函数曲线在控制效果上有着明显的差异,其中系统默认的隶属度函数是较好的控制方法。

通过不断调试,达到最佳状态,在MATLAB中进行仿真,设定方波为跟踪的期望信号,得到结果如图5.1所示。图5-2所示为仿真运

行时的图形用户界面。

图5.1 小车对方波期望值的跟踪情况

图5.2 仿真运行时的图形用户界面

从以上的图5.1可知,绿色规则的方波期望值代表小车位置的期望,红色不规则的近似方波为小车的实际位置。从以上的图5.2可知,绿色的三角形为小车位置的期望,红色的方块为小车的实际位置,黄色的粗斜线为摆杆实际位置。

图5.3 小车在不同时刻跟随情况

本文来源:https://www.bwwdw.com/article/nmbl.html

Top