第一篇:倒立摆实验报告
一、实验内容
1、完成Matlab Simulink 环境下的电机控制实验。
2、完成直线一级倒立摆的建模、仿真、分析。
3、理解并掌握PID控制的的原理和方法,并应用与直线一级倒立摆
4、主要完成状态空间极点配置控制实验、LQR控制实验、LQR控制(能量自摆起)实验、直线二级倒立摆Simulink的实时控制实验。
二、实验设备
1、计算机。
2、电控箱,包括交流伺服机驱动器、运动控制卡的接口板、直流电源等。
3、倒立摆本体,包括一级倒立摆,二级倒立摆。
三、倒立摆实验介绍
倒立摆是一个典型的不稳定系统,同时又具有多变量、非线性、强耦合的特性,是自动控制理论中的典型被控对象。它深刻揭示了自然界一种基本规律,即一个自然不稳定的被控对象,运用控制手段可使之具有一定的稳定性和良好的性能。许多抽象的控制概念如控制系统的稳定性、可控性、系统收敛速度和系统抗干扰能力等,都可以通过倒立摆系统直观的表现出来。
(1)被控对象 倒立摆的被控对象为摆杆和小车。摆杆通过铰链连接在小车上,并可以围绕连接轴自由旋转。通过给小车施加适当的力可以将摆杆直立起来并保持稳定的状态。
(2)传感器 倒立摆系统中的传感器为光电编码盘。旋转编码器是一种角位移传感器,它分为光电式、接触式和电磁感应式三种,本系统用到的就是光电式增量编码器。
(3)执行机构 倒立摆系统的执行机构为松下伺服电机和与之连接的皮带轮。电机的转矩和速度通过皮带轮传送到小车上,从而带动小车的运动。电机的驱动由与其配套的伺服驱动器提供。
光电码盘1将小车的位移、速度信号反馈给伺服驱动器和运动控制卡,而光电码盘2 将摆杆的位置、速度信号反馈回控制卡。计算机从运动控制卡中读取实时数据,确定控制决策(小车向哪个方向移动、移动速度、加速度等),并由运动控制卡来实现该控制决策,产生相应的控制量,使电机转动,带动小车运动,保持摆杆平衡。
图1 直线倒立摆系统总体结构图
四、实验步骤
4.1 状态空间极点配置控制实验
极点配置法通过设计状态反馈控制器将多变量系统的闭环系统极点配置在期望的位置上,从而使系统满足瞬态和稳态性能指标。前面我们已经得到了倒立摆系统的比较精确的动力学模型,下面我们针对直线型一级倒立摆系统应用极点配置法设计控制器。1)状态空间分析
对于控制系统X AXBu式中:X—状态向量(n维);u—控制向量;A—nn常数矩阵;B—n1常数矩阵。
选择控制信号为:uKX
求解上式,得到:x(t)(ABK)(xt)(ABK)t 方程的解为:x()tex(0)
图3 状态反馈闭环控制原理图
可以看出,如果系统状态完全可控,K选择适当,对于任意的初始状态,当t 趋于无穷时,都可以使趋于0。2)状态空间极点配置
前面我们已经得到了直线一级倒立摆的状态空间模型,以小车加速度作为输 入的系统状态方程为:
x00x 00
100000029.40x0x01u'
0103x1y000即: A001000000100029.4x0x0u'
000010 B
0103
1 C0000100 D
00对于如上所述的系统,设计控制器,要求系统具有较短的调整时间(约3秒)和合适的阻尼(阻尼比0.5)。
下面采用极点配置的方法计算反馈矩阵。
1、检验系统可控性
由系统可控性分析可以得到,系统的状态完全可控性矩阵的秩等于系统的状态维数4,系统的输出完全可控性矩阵的秩等于系统输出向量的维数2,所以系统可控。
图4 倒立摆极点配置原理图
2、计算特征值
根据要求,并留有一定的裕量(设调整时间为2秒),我们选取期望的闭环 极点s其中:i1,2,3,4)i(。
10,10,2j23,2j231234的主导闭环极点,1,2位于主导闭环极点的左3,4是一对具有0.5,4n边,因此其影响较小,可以将系统近似为二级系统,根据公式
12e%ts3.3n
1,2nn12j可得,n和一对主导极点1,2 因此期望的特征方程为:
sssss10s10s2j23s2j231234432s24s196s720s160012
因此可以得到:
24,196,720,160034
由系统的特征方程:
00s10s00s429.4ssIA00s10029.4s因此有a10,a229.4,a30,a40。
系统的反馈增益矩阵为:
3、确定使状态方程变为可控标准型的变换矩阵T:
TMW其中:
M[BABA2BA3B]01 0311KaaaaT nnn1n122110000 3088.2088.200
a3aW2a1
1所以:
29.40
TMW000a2a110a11029.429.41000001001001100000 00.011300.333300.0113 00.333300.03410029.4011,T003000300.034002、求状态反馈增益矩阵K:
K[4a43a32a21a1]T100.0340 0.034[160072019629.424]0000[54.421824.489893.273816.1633]0.011300.33330 0.011300.33330 93.273916.1633 得到控制量: uKX54.4218x24.4898x以上计算可以采用 MATLAB 编程计算。3)Simulink仿真实验
在MATLAB Simulink下对系统进行仿真。
图5 直线一级倒立摆极点配置控制仿真模型
双击“State-Space”模块打开直线一级倒立摆的模型设置窗口如下:
图6 系统状态空间模型设置窗口
把参数A,B,C,D 的值设置为实际系统模型的值。
双击“Pole Controller”模块打开极点配置控制器参数的设置窗口:
图7 反馈增益矩阵输入窗口
把上面计算得到的反馈增益矩阵K输入,设置好各项参数后,点击“行仿真。
4)Simulink实时控制实验
”运
图9 实验五 状态空间极点配置控制实验
上图中的红色方框为设计的极点配置控制器,运行前查看是否为自己设计好的控制器,并确定保证摆杆此时竖直向下。不用编译链接,直接单击“
”按钮,用手捏住摆杆顶端(不要抓住中部或下部),慢慢地提起,到接近竖直方向时放手,当摆杆与竖直向上的方向夹角小于0.30弧度时,进入稳摆范围,可以观察到,摆杆直立不倒,小车稳摆在初始位置,然后单击“
”停止实验。
4.2 LQR控制实验
1)LQR控制分析
LQR控制器是应用线性二次型最优控制原理设计的控制器。当系统状态由于任何原因偏离了平衡状态时,能在不消耗过多能量的情况下,保持系统状态各分量仍接近于平衡状态。线性二次型最优控制研究的系统是线性的或可线性化的,并且性能指标是状态变量和控制变量的二次型函数的积分。它的解很容易获得,并且可以达到非常好的控制效果,因此在工程上有广泛的应用。
二次型性能指标一般形式如下:
1T1TTJx(t)Q(t)x(t)u(t)R(t)u(t)x()tx()tfFf
22t0tf
其中,Qnn维半正定状态加权矩阵;Rrr维正定控制加权矩阵;
Fnn维半正定终端加权矩阵;
min,则其实质在于,用不大的控制来保持较小最优控制的目标就是使J的误差,从而达到能量和误差综合最优的目的。
2)LQR控制器设计 系统状态方程为:
AXBuXyCXDu(1)二次型性能指标函数: J1TT[XQXURU]dt(2)02其中:加权矩阵Q和R是用来平衡状态变量和输入向量的权重,X是n维状态变量, U是r维输入变量, Y为m维输出向量,如果该系统受到外界干扰而偏离零状态,应施加怎样的控制U*才能使得系统回到零状态附近并同时满足J达到最小,那么这时的U*就称之为最优控制。由最优控制理论可知, 使式(2)取得最小值的最优控制律为: UR1BTPXKX(3)式中, P就是Riccati方程的解, K是线性最优反馈增益矩阵。这时求解Riccati代数方程:PAATPPBR1BTPQ0(4)就可获得P值以及最优反馈增益矩阵K值。KR1BTP(5)前面我们已经得到了直线一级倒立摆系统的系统状态方程:
x00x 00100000029.40x0x10u'
0103 y0x10001x0x0u'
000010,B
0103 可知:
00 A00100000029.4分别代表小车位移、小车速度、摆杆角度、摆杆角,, 四个状态量x,x速度,输出y[x,]包括小车位置和摆杆角度。
一般情况下:R增加时,控制力减小,角度变化减小,跟随速度变慢。矩阵Q中某元素相对增加,其对应的状态变量的响应速度增加,其他变量的响应速度相对减慢,如:若Q对应于角度的元素增加,使得角度变化速度减小,而位移的响应速度减慢;若Q对应于位移的元素增加,使得位移的跟踪速度变快,而角度 的变化幅度增大。可通过Matlab中的lqr函数求解反馈矩阵K并对系统进行仿真。
3)Simulink仿真实验
图11 直线一级倒立摆LQR控制仿真模型
双击“State-Space”模块打开直线一级倒立摆的模型设置窗口如下:
图12 系统状态空间模型设置窗口
把参数A,B,C,D 的值设置为实际系统模型的值。双击“LQR Controller”模块打开LQR控制器参数的设置窗口:
图13 反馈增益矩阵输入窗口
把上面计算得到的反馈增益矩阵K输入。设置好各项参数后,点击“真。
4)Simulink实时控制实验
”运行仿
图15 实验六 LQR控制实验
上图中的红色方框为设计的LQR控制器,运行前查看是否为自己设计好的控制器,并确定保证摆杆此时竖直向下。不用编译链接,直接单击“
”按钮,用手捏住摆杆顶端(不要抓住中部或下部),慢慢地提起,到接近竖直方向时放手,当摆杆与竖直向上的方向夹角小于0.30弧度时,进入稳摆范围,可以观察到,摆杆直立不倒,小车稳摆在初始位置,然后单击“
”停止实验。
4.3 LQR控制(能量自摆起)实验
倒立摆系统自摆起控制目标:通过控制小车运动,将摆杆从自由下垂状态摆到倒置平衡位置,并使系统能保持摆杆倒置状态,具有一定的抗干扰能力,同时还要控制小车回到初始零位附近,使整个系统处于动态平衡状态。
1)起摆过程
我们可将起摆分为以下四个阶段(定义摆杆自然下垂位置0,以逆时针方向为正,箭头代表摆杆运动方向)。
图16 倒立摆能量起摆过程
在初始时刻,小车位于导轨中心,摆杆自然下垂。当进行起摆实验时,先向负方向给小车一个较大的力(小车有加速度),使摆杆运动,随后紧接着令小车停止,摆杆会在惯性的作用下,继续沿着与小车连接处的转轴向上运动(Ⅰ),达到最高点后,摆杆速度为零,在重力的作用下沿摆杆的轴心自动下落(Ⅱ),这时给小车施加一个相反的作用力,小车反向运动的同时通过连接轴给摆杆一个反向的力。当再次到达初始点(0)时,令小车制动,摆杆此时的速度不为零,0时,即摆杆达到负方向在惯性的作用下继续运动,此时0(Ⅲ)。当0,的最高点,在重力的的作用下,摆杆回落,继续给小车施加负方向的力,直到0下车制动(Ⅳ)。
反复以上动作,摆杆在小车驱动力的作用下,抛起的高度会不断增加,直到进入稳摆区域,切换到稳摆控制算法。
对以上的四种情况进行分析,可转化成控制算法:
0,控制量unv(1)0,,初始时刻
00(2)00u0(3)
unvunv
2)Simulink仿真实验
图17 直线一级倒立摆能量自摆起仿真模型
其中“Energy Controller”为封装(Mask)后的能量起摆控制器,如下图:
图18 能量起摆控制器
“LQR Controller”为封装后的LQR控制器,双击该模块可以进行LQR参数设置:
图19 LQR稳摆控制器
设置好各项参数后,点击“”运行可进行仿真。
3)Simulink实时控制实验
图21 实验七 LQR控制(能量自摆起)实验
将小车移至导轨中间位置,确定摆杆此时竖直向下。不用编译连接,直接单击“”按钮,倒立摆进行自摆起,当摆杆与竖直向上的方向夹角小于0.30弧度时进入稳摆范围,稳摆采用LQR控制算法。如果不能正常摆起,用户可自己修改调整系数直到正常摆起。可以观察到,摆杆直立不倒,小车会稳摆在初始位置,一段时间后单击“”停止实验。
4.4 直线二级倒立摆实时控制实验
启动MATLAB(Simulink)实时控制程序reinovo.mdl,直线二级倒立摆Simulink实时控制程序的初始化界面如图所示:
运行前查看是否为自己设计好的控制器,并确定保证摆杆此时都竖直向下。不用编译连接,直接单击“”按钮,用手捏住下摆杆顶端(不要抓住中部或下部),慢慢的提起,到接近竖直方向时放手,当上摆杆与竖直向上的方向夹角小于0.25弧度时,进入稳摆范围,可以观察到,两根摆杆直立不倒,小车会稳摆在初始位置,一段时间后单击“
”停止实验。
五、实验总结
通过这次试验,我们熟悉了倒立摆实验的整个过程,学习了系统的建模方法,实验建模就是通过在研究对象上加上一系列的研究者事先确定的输入信号,激励研究对象并通过传感器检测其可观测的输出,应用数学手段建立起系统的输入-输出关系。这里面包括输入信号的设计选取,输出信号的精确检测,数学算法的研究等等内容。同时通过极点配置实验,我们学习了状态反馈控制器的设计方法,在Matlab中有一个acker函数,可以很简单的计算出在确定极点处对应的状态反馈矩阵。我们学习到状态反馈阵的设计与C、D矩阵无关,并且在实际工程中只考虑主导极点而忽略非主导极点对控制系统的影响对实际控制效果的影响不大,学到了一种工程设计的方法。
通过LQR控制实验,我们学习了线性二次型最有控制器的设计方法。稳定性仅仅是系统的一个指标,对一个控制系统,仅仅稳定是不够的,还要考虑注入调节时间、超调、震荡等动态性能及控制器所消耗的能量等因素。极点配置法保证了系统具有稳定性和动态性能,而二次型最优控制法保证了控制器在达到较好的控制效果的同时消耗的能量最小,这更具有实际意义。通过倒立摆LQR最优控制系统设计与研究,并反复实验选取好加权阵Q和R可以很好的实现倒立摆的稳定控制,该方法与极点配置状态反馈法一样都能取得良好的控制效果。
在LQR控制能量自摆起实验中,我们学习了一种控制策略,该过程分为两个阶段:摆起控制与稳摆控制。两者模型的差异性决定了两个过程中控制方法的不同,要使倒立摆的整体性能好,两者之间的切换控制尤为重要。通过本次实验我对控制理论有了一个更深入的了解,以后会加强学习和实践。
第二篇:倒立摆实验报告
倒立摆实验报告 机自 82
组员:李宗泽
李航
刘凯
付荣 倒立摆与自动控制原理实验 一.实验目得:
1、运用经典控制理论控制直线一级倒立摆,包括实际系统模型得建立、根轨迹分析与控制器设计、频率响应分析、PID 控制分析等内容、2、运用现代控制理论中得线性最优控制LQR 方法实验控制倒立摆 3、学习运用模糊控制理论控制倒立摆系统 4、学习MATLAB工具软件在控制工程中得应用 5、掌握对实际系统进行建模得方法,熟悉利用MATLAB 对系统模型进行仿真,利用学习得控制理论对系统进行控制器得设计,并对系统进行实际控制实验,对实验结果进行观察与分析,非常直观得感受控制器得控制作用。
二、
实验设备 计算机及MATLAB、VC等相关软件 固高倒立摆系统得软件 固高一级直线倒立摆系统,包括运动卡与倒立摆实物 倒立摆相关安装工具 三. 倒立摆系统介绍 倒立摆就是机器人技术、控制理论、计算机控制等多个领域、多种技术得有机结合,其被控系统本身又就是一个绝对不稳定、高阶次、多变量、强耦合得非线性系统,可以作为一个典型得控制对象对其进行研究。倒立摆系统作为控制理论研究中得一种比较理想得实验手段,为自动控制理论得教学、实验与科研构建一个良好得实验平台,以用来检验某种控制理论或方法得典型方案,促进了控制系统新理论、新思想得发展。由于控制理论得广泛应用,由此系统研究产生得方法与技术将在半导体及精密仪器加工、机器人控制技术、人工智能、导弹拦截控制系统、航空对接控制技术、火箭发射中得垂直度控制、卫星飞行中得姿态控制与一般工业应用等方面具有广阔得利用开发前景. 倒立摆已经由原来得直线一级倒立摆扩展出很多 种类,典型得有直线倒立摆环形倒立摆,平面倒立摆与复合倒立摆等,本次实验采用得就是直线一级倒立摆。
倒立摆得形式与结构各异,但所有得倒立摆都具有以下得 特性: 1)
非线性2)
不确定性3)耦合性4)开环不稳定性5)
约束限制
倒立摆 控制器得设计就是倒立摆系统得核心内容,因为倒立摆就是一个绝对不稳定得系统,为使其保持稳定并且可以承受一定得干扰,需要给系统设计控制器,本小组采用得 控制方法有:PID 控制、双PID控制、LQR控制、模糊PID控制、纯模糊控制 四.直线一级倒立摆得物理模型: 系统建模可以分为两种:机理建模与实验建模。实验建模就就是通过在研究对象上加上一系列得研究者事先确定得输入信号,激励研究对象并通过传感器检测其可观测得输出,应用数学手段建立起系统得输入-输出关系。机理建模就就是在了解研究对象得运动规律基础上,通过物理、化学得知识与数学手段建立起系统内部得输入-状态关系。,由于倒立摆本身就是自不稳定得系统,实验建模存在一定得困难。但就是忽略掉一些次要得因素后,倒立摆系统就就是一个典型得运动得刚体系统,可以在惯性坐标系内应用经典力学理论建立系统得动力学方程。
下面我们采用 牛顿--欧拉方 法建立直线型一级倒立摆系统得数学模型:
在忽略了空气阻力与各种摩擦之后,可将直线一级倒立摆系统抽象成小车与匀质杆组成得系统,如图所示:
我们不妨做以下假设: M 小车质量 m 摆杆质量 b
小车摩擦系数 l 摆杆转动轴心到杆质心得长度 I
摆杆惯量 F 加在小车上得力 x 小车位置 φ 摆杆与垂直向上方向得夹角 θ 摆杆与垂直向下方向得夹角(考虑到摆杆初始位置为竖直向下)图就是系统中小车与摆杆得受力分析图。其中,N 与P 为小车与摆杆相互作用 力得水平与垂直方向得分量。
注意:在实际倒立摆系统中检测与执行装置得正负方向已经完全确定,因而 矢量方向定义如图所示,图示方向为矢量正方向。
分析小车水平方向所受得合力,可以得到以下方程:
(3—1)由摆杆水平方向得受力进行分析可以得到下面等式:
(3-2)即:
(3-3)把这个等式代入式(3—1)中,就得到系统得第一个运动方程:
(3—4)
为了推出系统得第二个运动方程,我们对摆杆垂直方向上得合力进行分析,可以得到下面方程:
(3—5)
(3-6)
力矩平衡方程如下:
(3-7)注意:此方程中力矩得方向,由l,故等式前面有负号。
合并这两个方程,约去P 与N,得到第二个运动方程:
(3-8)设θ=φ+π(φ就是摆杆与垂直向上方向之间得夹角),假设φ与1(单位就是弧 度)相比很小,即φ〈<1,则可以进行近似处理:
用u 来代表被控对象得输入力F,线性化后两个运动方程如下:
(3-9)对式(3—9)进行拉普拉斯变换,得到
(3—10)注意:推导传递函数时假设初始条件为0。
由于输出为角度φ,求解方程组得第一个方程,可以得到:
或
如果令
则有:
把上式代入方程组得第二个方程,得到:
整理后得到传递函数:
其中
设系统状态空间方程为:
方程组 对,解代数方程,得到解如下:
整理后得到系统状态空间方程:
由(3-9)得第一个方程为:
对于质量均匀分布得摆杆有:
于就是可以得到:
化简得到:
设
则有:
另外,也可以利用MATLAB 中tf2ss 命令对(3-13)式进行转化,求得上述状 态方程。
实际系统得模型参数如下: M 小车质量 1.096 Kg m 摆杆质量 0。109 Kg b
小车摩擦系数 0、1N/m/sec l
摆杆转动轴心到杆质心得长度 0、2 5m I 摆杆惯量 0.0034 kg*m*m 把上述参数代入,可以得到系统得实际模型。
摆杆角度与小车位移得传递函数:
摆杆角度与小车加速度之间得传递函数为:
摆杆角度与小车所受外界作用力得传递函数:
以外界作用力作为输入得系统状态方程:
以小车加速度作为输入得系统状态方程:
注意事项:在固高科技所有提供得控制器设计与程序中,采用得都就是以 小车得加速度作为系统得输入,如果用户需要采用力矩控制得方法,可以参考以 上把外界作用力作为输入得各式.五.系统得阶越响应分析
根据已经得到系统得状态方程,先对其进行阶跃响应分析,在MATLAB 中 键入以下命令:
clear; A=[ 0 1 0 0;0 0 0 0;0 0 0 1;0 0 29、4 0];B=[ 0 1 0 3]’; C=[ 1 0 0 0;0 1 0 0];D=[ 0 0 ]’;step(A, B ,C ,D)
可以瞧出,在单位阶跃响应作用下,小车位置与摆杆角度都就是发散得.六.频率响应分析(系统稳定性分析)
前面我们已经得到了直线一级倒立摆得物理模型,实际系统得开环传递函数 为:
其中输入为小车得加速度V(s),输出为摆杆得角度Φ(s)
.在MATLAB 下绘制系统得Bode 图与奈奎斯特图.在MATLAB 中键入以下命令: clear; num=[0、02725];den=[0、0102125 0 —0、26705]; z=roots(num);p=roots(den); subplot(2,1,1)bode(num,den)subplot(2,1,2)
nyquist(num,den)得到如下图所示得结果:
z = Empty matrix: 0—by-1 p = 5、1136 -5、1136
可以得到,系统没有零点,但存在两个极点,其中一个极点位于右半s平面,根据 奈奎斯特稳定判据,闭环系统稳定得充分必要条件就是:当ω 从− ∞到+ ∞变 化时,开环传递函数G(jω)
沿逆时针方向包围-1 点p 圈,其中p
为开环传递函数 在右半S平面内得极点数。对于直线一级倒立摆,由奈奎斯特图我们可以瞧出,开 环传递函数在S 右半平面有一个极点,因此G(j ω)需要沿逆时针方向包围—1 点一圈。可以瞧出,系统得奈奎斯特图并没有逆时针绕—1 点一圈,因此系统不稳定, 需要设计控制器来镇定系统。
七.具体控制方法(一)双 双 PID 控制
直线一级倒立摆双 PID 控制实验
1。PID 控制分析
经典控制理论得研究对象主要就是单输入单输出得系统,控制器设计时一般需
要有关被控对象得较精确模型。PID 控制器因其结构简单,容易调节,且不需要
对系统建立精确得模型,在控制上应用较广。
对于倒立摆系统输出量为摆杆得角度,它得平衡位置为垂直向上得情
况。系统控制结构框图如下:
2、双 PID 实验控制参数设定及仿真。
在 Simulinkzhong 建立直线一级倒立摆模型
上下两个 PID 模块。鼠标右键,选择 “ Look under mask”打开模型内部结构分别为:
双击第二个模块打开参数设置窗口
令 kp=1、ki=0、kd=0 得到摆杆角度仿真结果
可瞧出控制曲线不收敛。因此增大控制量。令 kp=-30、ki=0、kd=4、6、得到如下仿 真结果
从上面摆杆角度仿真结果可瞧出,稳定比较好。但稳定时间稍微有点长。
双击第一个模块打开参数设置窗
经多次尝试在此参数即 kp=—7,ki=0,kp=-4、5 情况下效果最好。
得到以下仿真结果
黄线为小车位置输出曲线,红线为摆杆角度输出曲线.从图中可以瞧出,系统可以比较好得稳定。稳定时间在2—3 秒之间。稳定性不错.3。双 PID 控制实验 打开直线一级倒立摆爽 PID 实时控制模块
双击doublePID控制模块进入参数设置
把参数输入 PID 控制器。编译程序,使计算机同倒立摆连接。
运行程序.实验结果如下图所示
从图中可以瞧出,倒立摆可以实现比较好得稳定性。
(二)线性最优二次控制 LQR
线性二次最优控制LQR 控制实验
线性二次最优控制 LQR 基本原理及分析
线性二次最优控制LQR 基本原理为,由系统方程:
确定下列最佳控制向量得矩阵 K:
u(t)=—K*x(t)
使得性能指标达到最小值:
式中
Q——正定(或正半定)厄米特或实对称阵
R——为正定厄米特或实对称阵
图 3-54
最优控制 LQR 控制原理图
方程右端第二项就是考虑到控制能量得损耗而引进得,矩阵 Q 与R确定了误差与能量损耗得相对重要性。并且假设控制向量 u(t)就是无约束得.对线性系统:
根据期望性能指标选取Q 与 R,利用 MATLAB 命令 lqr 就可以得到反馈矩阵 K 得值。
K=lqr(A,B,Q,R)
改变矩阵 Q 得值,可以得到不同得响应效果,Q 得值越大(在一定得范围之内),系统抵抗干扰得能力越强,调整时间越短。但就是Q 不能过大
2、LQR 控制参数调节及仿真
前面我们已经得到了直线一级倒立摆系统得比较精确得动力学模型,下面我们针对直线型一级倒立摆系统应用 LQR 法设计与调节控制器,控制摆杆保持竖直向上平衡得同时,跟踪小车得位置。
前面我们已经得到了直线一级倒立摆系统得系统状态方程:
应 用 线 性 反 馈 控 制 器 , 控 制 系 统 结 构 如 下 图。
图 中 R
就是施加在小车上得阶跃输入,四个状态量 x,x,φ,φ分别代表小车位移、小车速度、摆杆角度与摆杆角速度,输出 y = [x,φ]’ 包括小车位置与摆杆角度。设计控制器使得当给系统施加一个阶跃输入时,摆杆会摆动,然后仍然回到垂直位置,小车可以到达新得指定位置.假设全状态反馈可以实现(四个状态量都可测),找出确定反馈控制规律得向量K
.在 Matlab
中得到最优控制器对应得K
。Lqr
函数允许您选择两个参数——R 与 Q,这两个参数用来平衡输入量与状态量得权重。最简单得情况就是假设
R = 1,Q =C’
*C.当然,也可以通过改变 Q 矩阵中得非零元素来调节控制器以得到期望得响应.其中, Q1,1 代表小车位置得权重,而 Q3,3 就是摆杆角度得权重,输入得权重 R 就是 1。
下面来求矩阵 K,Matlab 语句为 K = lqr(A,B,Q,R)
。下面在MATLAB 中编程计算: A=[0 1 0 0;0 0 0 0;0 0 0 1;0 0 29、4 0]; B=[0 1 0 3]’;C=[1 0 0 0;0 0 1 0]; D=[0 0]“; Q11=1500;Q33=300; Q=[Q11 0 0 0;
0 0 0 0;
0 0 Q33 0;
0 0 0 0]; R=1;K=lqr(A,B,Q,R);Ac=[(A—B*K)];Bc=[B];Cc=[C];Dc=[D]; T=0:0、005:5; U=0、2*ones(size(T));Cn=[1 0 0 0];Nbar=rscale(A,B,Cn,0,K);Bcn=[Nbar*B]; [Y,X]=lsim(Ac,Bc,Cc,Dc,U,T);plot(T,X(:,1),”—');hold on;plot(T,X(:,2),’—“);hold on; plot(T,X(:,3),”、“);hold on;plot(T,X(:,4),”-’);
legend(“cartpls”,“cartspd’,'pendang’,”pendspd’)令 Q1,1= 1,Q3,3 =1 求得
K
[—1
—1、7855
25、422
4、6849]
在 Simulink 中建立直线一级倒立摆得模型如下图所示:
“LQR Controller”为一封装好得模块,在其上单击鼠标右键,选择“Look under
mask"打开 LQR Controller 结构如下:
双击“Matrix gain K”即可输入控制参数:
点击 执行仿真,得到如下仿真结果:
LQR 控制得阶跃响应如上图所示,从图中可以瞧出,闭环控制系统响应得超调量很小,但稳定时间与上升时间偏大,我们可以通过增大控制量来缩短稳定时间与上升时间。
可以发现,Q
矩阵中,增加 Q11 使稳定时间与上升时间变短,并且使摆杆得角度变化减小.经过多次尝试,这里取 Q1,1=1500, Q3,3 =300,则 K = [
-32、7298
-23、8255
81、6182 14、7098]
输入参数,运行得到响应曲线如下:
从图中可以瞧出,系统响应时间有明显得改善,增大Q1,1 与Q3,3,系统得响应还会更快,但就是对于实际离散控制系统,过大得控制量会引起系统振荡.3、直线一级倒立摆LQR 控制实验 打开直线一级倒立摆 LQR 实时控制模块
其中“LQR Controller”为 LQR 控制器模块,“Real Control”为实时控制模块,双击“LQR Controller”模块打开 LQR 控制器参数设置窗口如下:
在“LQR Controller”模块上点击鼠标右键选择“Look under mask“打开模
型如下:
双击“Real Control"模块打开实时控制模块如下图:
其中“Pendulum”模块为倒立摆系统输入输出模块,输入为小车得速度“Vel ”与“Acc ”,输出为小车得位置“Pos”与摆杆得角度“Angle ”。
双击“Pendulum”模块打开其内部结构:
其中“Set Cart’s Acc and Vel“模块得作用就是设置小车运动得速度与加速度,Get Cart’s Position”模块得作用就是读取小车当前得实际位置,“Get Pend’s Angle“ 得作用就是读取摆杆当前得实际角度.2)
运行程序,实验运行结果如下图所示:
其中图片上半部分为小车得位置曲线,下半部分为摆杆角度得变化曲线,从图中可以瞧出,小车位置与摆杆角度比较稳定。控制效果很好。
在此实验中,R 值固定,R=1,则只调节 Q 值,Q11 代表小车位置得权重,而 Q33 就是摆杆角度得权重,若Q33增加,使得θ得变化幅度减小,而位移r得响应速度变慢;若Q11 增加,使得 r 得跟踪速度变快,而θ得变化幅度增大.当给系统施加一个阶跃输入后,得到系统得响应结果。从响应曲线可明显瞧出就是否满足系统所要达到得性能指标要求。通过这样反复不断得试凑,选取能够满足系统动态性能要求得 Q 与 R。
(三)直线二级倒立摆 直线两级倒立摆由直线运动模块与两级倒立摆组件组成.6、1
系统物理模型
为简化系统,我们在建模时忽略了空气阻力与各种摩擦,并认为摆杆为刚体。
二级倒立摆得组成如图
6—1
所示:
图 6—1 直线两级倒立摆物理模型
倒立摆参数定义如下:
M
小车质量
m1
摆杆 1 得质量
m2
摆杆 2 得质量
m3
质量块得质量
l1
摆杆 1 中心到转动中心得距离
l2
摆杆 2 中心到转动中心得距离
θ1 摆杆 1 与竖直方向得夹角 θ2 摆杆 2 与竖直方向得夹角
F
作用在系统上得外力
利用拉格朗日方程推导运动学方程:
拉格朗日方程为: L(q,q)=T(q,q)—V(q,q)
其中
L
为拉格朗日算子,q
为系统得广义坐标,T 为系统得动能,V 为系统得势能。
其中
i =1,2,3„„n,f i
为系统在第 i 个广义坐标上得外力,在二级倒立摆系统中,系统得广义坐标有三个广义坐标,分别为 x,θ1,θ2。
首先计算系统得动能:
其中 Tm,Tm1,Tm2,Tm3分别为小车得动能,摆杆 1 得动能,摆杆 2 得动能与质量块得动能。
小车得动能:
Tm1
= Tm1” +Tm2 ’' 其中 Tm1“,Tm2 ’ 分别为摆杆 1 得平动动能与转动动能。
Tm2
= Tm2 ” +Tm2 ’’ 其中 Tm2 “ ,Tm2 ’ 分别为摆杆 2 得平动动能与转动动能.对于系统,设以下变量:
xpend1
摆杆 1 质心横坐标;
yangle1 摆杆 1 质心纵坐标;
xpend2
摆杆 2 质心横坐标;
yangle2 摆杆 2 质心纵坐标;
xmass
质量块质心横坐标;
ymass 质量块质心纵坐标;
又有:
由于系统在θ1,θ2 广义坐标下没有外力作用,所以有:
在Mathematics中计算以上各式。
因其余各项为 0,所以这里仅列举了 k12、k13、k17、k22、k23、k27
等 7 项,得到结果如下:
6、2
系统可控性分析
系统状态矩阵 A,B,C,D 如下:
利用 MATLAB 计算系统状态可控性矩阵与输出可控性矩阵得秩:
得到结果如下:
或就是通过 MATLAB 命令 ctrb 与 obsv 直接得到系统得可控性与可观测性。
运行得到:
可以得到,系统状态与输出都可控,且系统具有可观测性.6、3
直线两级倒立摆MATLAB
仿真
在 MATLAB Simulink 中建立直线两级倒立摆得模型:
其中“State-Space”模块为直线两级倒立摆得状态方程,双击模块打开模型:
“Controller”模块为控制器模块,在“Controller”模块上单击鼠标右键,选择 “ Look under mask”打开模型内部结构:
其中“Matrix Gain K”为反馈矩阵。
双击“Controller”模块打开其参数设置窗口: 先设置参数为“1“。
“Disturbance”模块为外界干扰模块,其作用就是给系统施加一个阶跃信号,点击
“ ”运行模型进行开环系统仿真.得到运行结果如下:
从仿真结果可以瞧出,系统发散,为使系统稳定,需要对其添加控制器。
6、4 LQR 控制器设计及仿真
给系统添加 LQR 控制器,添加控制器后得系统闭环图如下图所示 :
下面利用线性二次最优控制 LQR 方法对系统进行控制器得设计 clear;clc;—=22kﻫ;46、6=71k;26、12-=31k;96、68=21kﻫ40、31;k23=39、45;k27=-0、088;a= [0 0 0 1 0 0;0 0 0 0 1 0;0 0 0 0 0 1;0
0 0 0
0 0;0
k12 k 13 0 0 0 ;0 k22 k23 0 0 0];ﻫ;”]72k 71k 1 0 0 0 [=bﻫc =[ 1
0 0 0 0 0 ;0 1 0 0 0 0;0 0 1 0 0 0];;]0;0;0[=dﻫq 1 1= 1 ; q 2 2 = 1;q3 3 =1;qﻫ = [q11 0 0 0 0 0;0 q22 0 0 0 0;0 0 q33 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0];r=1;;k*b—a=aaﻫ)r,q,b,a(rql=kﻫ
b=b*k(1);;)d,c,b,aa(ss=sysﻫt=0:0、01:5;[y,t,x]=step(sys,t);plot(t,y(:,1),’g’,t,y(:,2),'r“,t,y(:,3));o dirgﻫn 运行得到以下结果:
LQR 控制参数为:
K=[ 1
73、818 —83、941
2、0162 4、2791-13、036]
得到仿真结果如下:
可以瞧出,系统稳定时间过长,因此增加权重 Q 得值。
设 Q11=300;Q22=500;Q33=500;
运行得到仿真结果:
LQR 控制参数为:
K=[ 17、321
110、87-197、57
18、468 2、7061 —32、142]
从图中可以瞧出,系统可以很好得稳定,在给定倒立摆干扰后,系统在 2、5 秒内可以恢复到平衡点附近。
把以上仿真参数输入 Simulink 模型中
得到运行结果
从图中可知,系统稳定性还不错。
但这未必就是最好得参数。所以,下面改变 LQR 参数,比较结果变化。
确定最合适参数。
1、设 Q11=1000;Q22=500;Q33=500;
运行得到仿真结果: LQR 控制参数为:
k=31、6228 116、7093 -238、1742 29、1041 1、2221
-39、3596
可瞧出位置在 2 秒左右就可恢复到平衡点位置。而角度依然就是在 2、5 秒内恢复到平衡位置.2、设 Q11=1500;Q22=500;Q33=500;
运行得到仿真结果: LQR 控制参数为:
k= 38、7298 119、2083 —257、0671 34、1612 0、5092
-4 2、7166
可瞧出位置在1、5—2、0秒内就可恢复到平衡点位置.而角度依然就是在 2、5 秒内恢复到平衡位置。
3、设Q11=1500;Q22=500;Q33=500;
运行得到仿真结果: LQR 控制参数为:
k =
44、7214
121、1834 —272、5934
38、3562
—0、0849
—45、4751
可瞧出位置依然在 1、5秒就可恢复到平衡点位置。而角度依然就是在 2、5 秒内恢复到平衡位置.4、设 Q11=1500;Q22=1000;Q33=1000;
运行得到仿真结果: LQR 控制参数为: k =
38、7298
129、4996 -281、3118
35、73890、4721
—46、5905
可瞧出位置在 1、5—2、0内就可恢复到平衡点位置。而角度就是在 2、5 秒内恢复到平衡位置.5、设 Q11=1500;Q22=100;Q33=100;
运行得到仿真结果: LQR 控制参数为:
k =
38、7298
108、6175 -232、1487
32、4616
0、5479
-38、7170
可瞧出位置在 1、5内就可恢复到平衡点位置.而角度就是在 2 秒内恢复到平衡位置.通过对比,第 5 个参数最合适。
LQR 控制参数为: k =38、7298
108、6175 -232、1487
32、4616
0、5479
-38、7170 把其输入到Simulink 模型中。
得到运行结果。
此结果最好,系统不仅可以很好得稳定,而且在给定倒立摆干扰后,系统可在 2 秒内恢复到平衡点附近.八.个人小结。
倒立摆实验个人小结
李航 08011041
大三上学期得第一次机械工程实验,我们接触与学习了减速器,维持一个学期得实验,我们从结构,运动等方面,对机械有了更深得认识,而这个学期,我们要更进一步,从机械控制理论,来让自己对机械得理解,有一个新得高度。
我们接触得倒立摆就是机器人技术、控制理论、计算机控制等多个领域、多种技术得有机结合,其被控系统本身又就是一个绝对不稳定、高阶次、多变量、强耦合得非线性系统,可以作为一个典型得控制对象对其进行研究。
倒立摆数学模型:
通过对倒立摆系统得物理模型与实际模型得认知,以及对该系统得阶跃响应,可控性分析与频率响应分析,我们可以知道倒立摆系统就是不稳定得,可控得,所以就有了我们得课题:具体得控制方法。
在前半个学期,我们学习了机械控制理论,了解了伯德图与奈奎斯特图,而在大一得高数学习中,我们初步学习了MATLAB,通过在图书馆以及网上查找资料,我们学习了SIMULINK仿真,为这次实验打下了一定得基础。
对于一级倒立摆线性系统,我们实验了两种控制方法:分别就是双PID控制与LQR控制。
常规得PID控制,就是最早得也就是最经典得一种控制方式,由于其算法简单、鲁棒性好、可靠性高,因而至今仍广泛应用于工业过程控制中。它有三个控制环节,分别就是比例、积分与微分,实验中使用得控制器得传递函数就是
其中Kp、Ki、Kd分别为比例系数、积分系数与微分系数。各个系数功能如下: 1、比例系数Kp增大,闭环系统得灵敏度增加,稳态误差减小,系统振荡增强;比例系数超过某个值时,闭环系统可能变得不稳定。
2、积分系数Ki增大,可以提高系统得型别,使系统由有差变为无差;积分作用太强会导致闭环系统不稳定。
3、微分系数Kd增大,预测系统变化趋势得作用增强,会使系统得超调量减小,响应时间变快.但就是上述得各个参数在调节过程中并不就是相互独立得,而就是会相互影响。PID控制得快速性较差,而且只能对摆角进行控制,无法控制位移。
双PID控制,则解决了传统得PID控制只能控制摆角得缺陷,但就是对于双PID控制,如何使摆角角度与小车位置达到协调,使系统响应收敛,就是个难题,而且PID控制就是单控制量,外部扰动对实验结果得影响会比较大,所以我们学习了线性二次型控制,也就就是LQR控制。
LQR控制就是通过最小化性能指标,得到系统得控制量U=-KX,其中Q,R,分别就是状态变量与输入向量得加权矩阵,X就是状态量,U就是控制量,K就是状态矩阵.根据期望性能指标选取Q与R,利用MATLAB 命令lqr 就可以得到反馈矩阵K 得值。K=lqr(A,B,Q,R)
改变矩阵Q 得值,可以得到不同得响应效果,Q 得值越大(在一定得范围之内),系统抵抗干扰得能力越强,调整时间越短。利用MATLAB自带得函数,可以很快算出反馈矩阵各参数得值.通过实验结果,我们发现LQR控制作为多变量得控制,稳定性,快速性与抗
干扰性都很好,LQR控制可得到状态线性反馈得最优控制规律 ,易于构成闭环最优控制就是现代控制理论中发展最早也最为成熟得一种状态空间设计法。
实验心得: 比较这三种控制方法,经典PID控制方法得效果就是最不理想得,因为PID这类单输入输出得线性控制器,对于倒立摆这种非线性,很不稳定得系统,虽然能使其稳定,但就是快速性与抗干扰性都很差,相比较而言,LQR得效果就要好很多。
这次得倒立摆实验,可以说就是我做过得最难得一个实验了,不仅涉及面十分广,而且涉及得知识也都很难。通过这次实验,我们对机械控制理论有了更深一步得了解,也把书上学得知识,应用到了实际中. 在实验过程中,我们认识了倒立摆这个经典得控制系统,也接触了PID与LQR等多种控制方法,让我们对机械,这个词得概念,也更加深入得有了自己得理解。
而且作为一个分组实验,我充分感受到了团队力量得强大,也体会到了克服困难得艰辛,学会了用多种得途径去解决难题。通过预习,借阅书籍,上网等多种途径,也为将来得学习打下良好得基础。
而且通过这个控制领域得经典基础实验,为将来考研以及科研都就是很有帮助得。
同时要感谢同学与老师对自己得帮助,让自己能顺利得完成这次实验.但就是在实验中,我个人也有一些建议。首先这个实验得基础就是机械控制理论基础这门课,但就是这么课我们在实验开始得时候压根就没学,所以前几周只能靠自学或者毫无进展,但就是自学不能保证效率,所以实验得时间安排感觉不就是很好。
倒立摆实验小结
李宗泽
我就是这次倒立摆实验我们小组得组长,由于分组得关系,我们组得组员平时成绩都不就是特别理想,但就是从一开始,我们就有信心能把这次实验完成。
这次实验要求我们运用经典控制理论控制直线一级倒立摆,包括实际系统模型得建立、控制器设计、频率响应分析、PID 控制分析等内容。运用现代控制理论中得线性最优控制LQR 方法实验控制倒立摆.并且能熟练得运用matlab解决实际问题,了解SIMULINK仿真。
倒立摆就是一种典型得快速、多变量、非线性、绝对不稳定、非最小相位系统.就是进行控制理论研究得典型实验平台,倒立摆实验就是运用古典控制理论,结合现代应用软件MATLAB里得SIMULINK对其进行仿真,最后在实际实验中对摆杆进行快速性,准确性与稳定性控制,达到理想得效果。因此,研究倒立摆具有重要得理论与实践意义。
实验得初期,也就就是前几周,我们主要先大致预习了控制理论里得频率响应与时域响应得内容,了解了伯德图与奈奎斯特图得含义。并且到图书馆里借阅了相关书籍,到网上查找有关资料,并且结合大一时得高数课,复习了matlab得基本操作。
这次实验得主要内容就是利用三种控制方法,使倒立摆系统达到稳定,并且比较三种控制方法得优劣。
我们首先做得就是经典PID控制,经典PID控制就是最早发展起来得一种控制方法,由于其算法简单、鲁棒性好、可靠性高,因而至今仍广泛应用于工业过
程控制中。该方法得主要思想就是:根据给定值r与系统得实际输出值c构成控制偏差e,然后将偏差得比例(P)、积分(I)与微分(D)三项通过线性组合构成控制量,对被控对象进行控制,故称为PID控制。
比例环节P得作用,就是对当前时刻得偏差信号进行放大或衰减后作为控制信号输出。积分环节I可以累计从零时刻起到当前得输入信号得全部值。微分环节D得输出正比于输入得当前变化率,作用就是有偏差信号得当前变化率来预见随后得偏差将就是增大还就是减小,增减幅度如何。PID控制通过调节KP,KI,KD三个基本参数,来实现仿真,达到预期得控制效果,但就是PID控制就是一个单输入输出得控制,它只能摇杆得角度,而不能控制小车得位移。
双PID控制就是利用两个PID来同时控制倒立摆系统,双PID得模型如下:
双PID控制虽然能控制小车得位移,但就是我们在实际操作过程中,发现实验结果得曲线很难达到收敛,往往都就是发散得。
LQR控制:线性二次型调节器(Linear Quadratic Regulator —LQR)
问题在现代控制理论中占有非常重要得位置,受到控制界得普遍重视,应用十分广泛,就是现代控制理论得中最重要得成果之一。线性二次型(LQ)
性能指标易于分析、处理与计算,而且通过线性二次型最优设计方法得到得倒立摆系统控制方法,具好较好得鲁棒性与动态特性以及能够获得线性反馈结构等优点,因而在实际得倒立摆控制系统设计中,得到了广泛得应用。
LQR控制通过matlab得程序,根据期望性能指标选取Q与R,就可以得到反馈矩阵K得值。改变矩阵Q得值,可以得到不同得响应结果,Q得值越大,系统抵抗干扰能力越强,调整时间越短。
从实验得结果来瞧,LQR控制在快速性与抗干扰性上,都要强于PID控制,这就是因为LQR就是多变量控制.经过了这次实验,我有了很多收获:
1.作为一个小组得组长,我体会到了自己身上得责任与压力,从分配任务到实验进行,实验报告,对我自己都就是一个很好得锻炼。
2.这次实验过程中,我也学习到了很多平时接触不到得知识,复习了matlab得应用,了解了simulink模块得应用,而且也对现代控制理论有了理解,为将来得学习打下基础.3.体会到了团队力量得强大,大家得互相努力,才有了这次实验得成功.4.最后离不开老师与同学对自己与我们这个小组得帮助,感谢老师与同学. 倒立摆实验小结 机自82
刘凯
08011044 倒立摆就是进行控制理论研究得典型实验平台。由于倒立摆系统得控制策略与杂技运动员顶杆平衡表演得技巧有异曲同工之处,极富趣味性,而且许多抽象得控制理论概念如系统稳定性、可控性与系统抗干扰能力等等,都可以通过倒立摆系统实验直观得表现出来。倒立摆系统本身所具有得高阶次、不稳定、多变量、非线性与强耦合特性。主要特点包括:1、开放性:采用四轴运动控制板卡,机械部分与电气部分非常容易扩展,可以根据用户需要进行配置.系统软件接口充分开放,用户不仅可以使用配套得实验软件,而且可以根据自己得实际需要扩展软件得功能.2 模块化:系统得机械部分可以选用直线或者旋转平台,根据实际需要配置成一级、二级或者三级倒立摆.而三级摆可以方便地改装成两级摆,两级摆可以
改装成一级摆。系统实验软件同样就是基于模块化得思想设计,用户可以根据需要
增加或者修改相应得功能模块。简易安全:摆实验系统包括运动控制板卡、电控箱(旋转平台系统中与机械本体联在一起)、机械本体与微型计算机几个部分组成,安装升级方便。同时在机械、运动控制板卡与实验软件上都采取了积极措施,保证实验时人员得安全可靠与仪器安全。方便性:倒立摆系统易于安装、升级,同时软件界面操作简单。先进性:采用工业级四轴运动控制板卡作为核心控制系统,先进得交流伺服电机作为驱动,检测元件使用高精度高性能光电码盘。系统设计符合当今先进得运动控制发展方向。
6 实验软件多样化:用于实验得软件包括经典得BorlandC++,VC++,以及控制领域使用最多得仿真工具 Matlab,提供完备得设备接口与程序接口,方便用户进行实验与开发.特性包括
1)
非线性
倒立摆就是一个典型得非线性复杂系统,实际中可以通过线性化得到系统得近似模型,线性化处理后再进行控制。也可以利用非线性控制理论对其进行控制。倒立摆得非线性控制正成为一个研究得热点。
2)
不确定性
主要就是模型误差以及机械传动间隙,各种阻力等,实际控制中一般通过减少各种误差来降低不确定性,如通过施加预紧力减少皮带或齿轮得传动误差,利用滚珠轴承减少摩擦阻力等不确定因素。
3)
耦合性
倒立摆得各级摆杆之间,以及与运动模块之间都有很强得耦合关系,在倒立摆得控制中一般都在平衡点附近进行解耦计算,忽略一些次要得耦合量。
4)
开环不稳定性
倒立摆得平衡状态只有两个,即在垂直向上得状态与垂直向下得状态,其中垂直向上为绝对不稳定得平衡点,垂直向下为稳定得平衡点。5)约束限制
由于机构得限制,如运动模块行程限制,电机力矩限制等。为了制造方便与降低成本,倒立摆得结构尺寸与电机功率都尽量要求最小,行程限制对倒立摆得摆起影响尤为突出,容易出现小车得撞边现象。
这个学期我们学习了机械控制理论基础这门课程正好应用在本次实验上。我们借阅了很多关于智能控制及现代理论控制方面得书籍,深入地了一级倒立摆,二级倒立摆得原理。,、在完成得过程中尽管遇到了重重困难,但就是在老师与同学得帮助下,在通过我们自己得努力,也顺利将其克服。实验结束了,我们受益匪浅,这次实验不但锻炼了我们得发现问题,思考问题,解决问题得能力,还使我们对机械控制系统得进一步认识,培养了我们小组成员得分工协作能力。
第三篇:倒立摆专题
洛阳理工学院毕业设计(论文)
第1章:绪论
1.1 倒立摆的发展历史及现状
控制理论教学领域,开展各种理论教学、控制实验、验证新理论的正确性的理想实验平台就是倒立摆控制系统。对倒立摆系统的研究能有效的反映控制中的许多典型问题,同时兼具多变性、强非线性和自然不稳定性等优点,通过对倒立摆的控制,用来检验新的控制方法是否有较强的处理非线性和不稳定性问题。倒立摆系统作为一个实验装置,形象直观、结构简单、构件组成参数和形状易于改变、成本低廉,且控制效果可以通过其稳定性直观地体现,也可以通过摆杆角度、小车位移和稳定时间直接度量其实验效果,直观显著。因而从诞生之日就受到国内外学者的广泛研究。
倒立摆系统的最初研究始于二十世纪50年代末,麻省理工学院的控制论专家根据火箭发射助推器的原理设计出一级倒立摆实验设备。1966年Schaefer和Cannon应用Bang Bang控制理论将一个曲轴稳定于倒置位置,在60年代后期作为一个典型的不稳定严重非线性证例提出了倒立摆的概念,并用其检验控制方法对不稳定、非线性和快速性系统的控制能力受到世界各国许多科学家的重视。而后人们又参照双足机器人控制问题研制出二级倒立摆控制设备,从而提高了检验控制理论或方法的能力,也拓宽了控制理论或方法的检验范围。对倒立摆研究较多的是美国、日本等发达国家,如Kawamoto-Sh.等讨论了有关倒立摆的非线性控制的问题以及倒立摆的模糊控制的稳定性问题为其后的倒立摆模糊控制研究开辟了道路,美国国家航空和宇航局Torres-Pornales,Wilfredo等人研究了从倒立摆的建模、系统分析到非线性控制器设计的一系列问题,比较深入的研究了倒立摆的非线性控制问题并进行了实物仿真;科罗拉多州大学的Hauser.J正在从事基于哈密尔顿函数的倒立摆控制问题的研究;日本东京大学的Sugihara.Tomorniehi等研究了倒立摆的实时控制问题及其在机器人控制中的应用问题。此外,还有如德国宇航中心的Schreiber等研究了倒立摆的零空间运动控制问题,分析了倒立摆的零空间运动特性与其稳定性之间的联系。
国内研究倒立摆系统的控制问题起步虽晚,但成果也还是挺多较早的,如尹征琦等于1985年采用模拟调节器,实现了对倒立摆系统的稳定控制;梁任秋等于1987年讨论了设计小车一二阶倒立摆系统数学控制器的一般方法;任章、徐建民于1995年利用振荡器控制原理,提出了在倒立摆的支撑点的垂直方向上加入一零均值的高频震荡信号以改善倒立摆系统的稳定性。同年,程福雁先生等研究了使用参变量模糊控制对倒立摆进行实时控制的问题。北京理工大学的蒋国飞、吴沧浦等实现了状态未离散化的倒立摆的无模型学习控制。仿真表明该方法不仅能成功解决确定和随机倒立摆模型的平衡控制具有很好的学习效果。
90年代以来,由于数学基础理论、控制理论和计算机技术的发展,不断地有新的控制理论和控制思想问世,使得倒立摆控制系统的研究和应用更加广泛和深入,把这些理论应用在实际的实物控制和分析中己经成为当前控制理论研究和应用的核心问题。人们为了检验新的控制方法是否具有良好的处理多变量、非线性和绝对不稳定型的能力,不断提升倒立摆系统的复杂性和难度,如增加摆杆的级数,加大摆杆的长度,改变摆的形状和放置的形式等。2002年8月,北京师范大学教授李洪兴领导的复杂系统智能控制实验室,首次成功实现了直线运动四级倒立摆实物系统控制,2003年10月,他们采用高维变论域自适应控制理论,在世界
洛阳理工学院毕业设计(论文)
上第一个成功地实现了平面运动三级倒立摆实物系统控制。但是多年来小车一多级摆系统的控制研究主要集中在摆倒立点的稳定控制方面,同时也只是针对在水平轨道上的研究,而对于在倾斜轨道上的倒立摆的研究,还不多见。然而对于摆的摆起倒立稳定控制,由于小车多级摆摆起倒立稳定的高难性,目前国际上罕见小车二级摆以上实际系统的摆起倒立成功的例子。在小车二级摆摆起倒立控制的研究中,一般采用了混杂控制转换的方法,即将控制过程分为摆起和倒立稳摆两个阶段。在摆起阶段,采取基于能量的控制(K.J.Astrom,K.Furuta,W.spong),通过不断增加两摆杆的能量,直至达到倒立稳摆的位置。这样的方法对于小车单摆系统摆起倒立十分有效。然而,由于能量是一个标量,基于能量正反馈的方法在摆起过程中,无法兼顾和有效控制欠驱动多摆杆之间的相对运动,存在着摆杆与摆杆之间相对运动难以协调控制的问题。其它的采用直接数字求解动态方程获得理想轨迹,然后将其与实时参数比较形成闭环控制的方法,以及部分反馈线性化等方法,但这些方法都同样存在对摆杆之间相对运动难以协调控制的问题。捷克学者J.Rubl,在研究直线小车二级摆的摆起倒立过程中,运用了数字方法、最优控制与分段线性化结合的综合控制方法,解决了水平轨道上小车二级摆摆起倒立控制的实物实现问题。重庆大学李祖枢教授等人利用仿人智能控制方法分别成功地实现了在水平轨道上和在倾斜轨道上小车二级摆的摆起倒立稳定实时控制,而小车三级摆的摆起倒立稳定控制,由于控制难度更大,国际上尚无成功的先例。近年来在结合模糊控制与神经网络等方面也取得了很多成果。
总之,倒立摆系统是一种能够有效检验控制理论和控制算法的实验设备。目前应用于倒立摆系统的算法主要有以下几类:经典控制(LMI,PDI)、现代控制(LQR 最优控制法,极点配置法)、变结构倒立摆系统最初研究开始于二十世纪 50 年代,麻省理工学院的控制论专家们根据火箭发射的原理设计出了一级倒立摆实验装置;发展到今天,倒立摆系统已经由原来的一级直线倒立摆衍生出了异常丰富的类别。按照倒立摆摆杆的数目可以分为一级倒立摆、二级倒立摆、三级倒立摆、四级倒立摆等,且控制难度也随着摆杆的级数增加而变大;按照倒立摆系统结构的不同,可以分为:直线倒立摆系统、旋转倒立摆系统、平面倒立摆系统、复合倒立摆系统等;按照倒立摆摆杆的不同还可以分为刚性倒立摆和柔性倒立摆。在检验不同的控制方法对各种复杂的、不稳定的、非线性系统的控制效果中得到广泛的应用,并且越来越受到世界各国科研工作者的重视
2.该课题的意义:
随着实际工程控制系统的研究发展的需要,对于理论方面的研究迫切需要一 个平台去检验新理论的正确性和在实际中的可行性,倒立摆系统作为一个具有绝 对不稳定、高阶次、多变量、强藕合的典型的非线性系统,是检验控制理论和方 法的理想模型,所以本文选择倒立摆系统作为研究对象具有重要的理论意义和应 用价值。相对于其他研究倒立摆系统的控制方法,Backstepping方法最大的优点是不必对系统进行线性化,可以直接对系统进行递推性的控制器设计,保留了被控象中有用的非线性项,使得控制设计更接近实际情况,而且所设计的控制器具有很强的鲁棒性。而且国内外用此方法研究倒立摆系统的成果还不多见,因而具有很大的理论研究价值;由于当前国内外对于倒立摆系统的研究大都仍只局限于理论分析或计算机软件的数值仿真而缺少实际的实验检验分析,而MATLABSim-ulink就是提供了进行仿真实验的良好平台,它利用自带的模块建立系统模型,然后进行仿真,形象直观,非常有利于研究者进行分析和总结,同
洛阳理工学院毕业设计(论文)
时可以利用MATLAB-RTW实时工具箱构建实时控制平台,把设计好的控制器建立的Simulink仿真樟型连接在实时内核中运行,驱动外部硬件设备,实现对倒立摆系统的实时控制,倒立摆的控制模型与直立行走机器人的平衡控制、两轮小车的自平衡控制、导弹拦截控制、火箭发射时的垂直控制、卫星飞行中的姿态控制和航空对接控制等涉及平衡和角度的控制问题非常相似,所以在机器人、航天、军工等领域和一般的工业过程中都有着广泛的应用。倒立摆系统作为研究控制理论的一种典型的实验装置,具有较为简单的结构、可以有效地检验众多控制方法的有效性、参数和模型易于改变、相对低廉的成本等优点,研究控制理论的很多科研人员一直将它们视为主要的研究对象,用它们来描述线性控制领域中不稳定系统的稳定性以及在非线性控制领域中的无源性控制、变结构控制、非线性观测器、自由行走、非线性模型降阶、摩擦补偿等控制思想,且从中不断开发出新的控制方法和控制理论,所以倒立摆系统是研究智能控制方法较为理想的实验装置。倒立摆系统自身是一个典型的多变量、非线性、高阶次、强耦合和绝对不稳定系统,许多抽象的控制概念如系统的可控性、稳定性、系统的抗干扰能力和系统的收敛速度等,都可以由倒立摆系统直观地展示出来。此外,通过倒立摆系统还可以研究非线性观测器、变结构控制、目标定位控制、摩擦补偿和混合系统等。不仅如此,倒立摆系统也是进行控制理论教学的理想平台。传统的教学中,实验只是作为理论教学延伸,往往是理论知识的比重大于实验,即使有实验课程也只是学生完全按照实验指导书上的指导去完成实验,整个实验过程中学生们完全是消极的被动的接收知识,甚至学生对实验方法、内容完全没有兴趣。很显然,这种实验教学方法难以培养学生综合素质和实践能力。所以必须在实验环节的内容和形式上进行改革与创新,以培养学生的创新意识和实践动手能力。因此,进行设计性、开放性的综合实验具有极其重要的现实意义。若在控制理论的教学中,如果构建一个高效的合理的倒立摆系统实验平台,就可以在深入理解控制理论知识的同时,还可以让学生们对硬件回路仿真技术的开发流程有一定的了解,并掌握基于 MATLAB 的实时仿真操作,这样就可以从理论和实践上提高学生对控制理论的兴趣和认识。将倒立摆系统研究应用于高校的控制理论教学和实验早已在欧美等教育发达地区流行多年。因此,倒立摆控制策略的研究在我国高校的控制理论教学和实验中具有广阔的前景。较理想的控制效果,能够快速稳定并且有很强的抗干扰能力。
3.本论文的主要工作:
本论文是对一级倒立摆系统的LQR控制器设计。验证算法采用实验室的倒立摆装置。用 Matlab 中的 Simulink 搭接仿真的实验原理图,编写恰当的模糊规则,通过对隶属度曲线以及参数的适当调整,得到理想的仿真曲线。最后,通过倒立摆实验装置来验证所设计的模糊控制算法的可行性。具体内容如下:
第一章是绪论部分,主要概括介绍了倒立摆控制系统研究的发展历史及现状,本课题研究的背景和意义,本文主要研究的内容及章节安排以及本文的创新点。初步了解目前倒立摆的研究现状以及研究热点,论述了控制理论在倒立摆系 统运用的不断发展和完善,智能控制器越来越受到专家学者的关注。
第二章是预备知识,主要概述了本文主要用到的倒立摆装置,Matlab仿真平台简介及应用。
洛阳理工学院毕业设计(论文)
第三章详细介绍了一级倒立摆控制系统的工作原理、两轮小车的硬件设计。包括自平衡小车的组成模块及工作原理、各模块硬件设计。
第四章介绍了MATLAB/Simulink建模原理,利用本文设计的非线性控制器在 MATLAB环境下对系统进行了离线仿真分析、能控性分析、能观性分析,基于卡尔曼滤波器的LQR控制器设计。对单级倒立摆进行了详细的受力分析,建立倒立摆系统的数学模型,并对倒立摆系统进行定性分析。证明了倒立摆系统是开环不稳定的,但在平衡点是能观的和能控的,可以对系统进行控制器的设计,使系统稳定。
第五章介绍了基于MATLAB的倒立摆实时控制系统,利用所设计的非线性控 制器对实际的硬件系统进行了控制实验,并和固高公司提供的控制器对系统的控 制效果进行了对比,然后利用所设计的非线性控制器对倒立摆系统进行了实时控 制开发的研究。
第二章:倒立摆简介: 1.倒立摆简介:
倒立摆系统是非线性、强藕合、多变量和自然不稳定的系统。在控制过程中,它能有效的反映诸如可镇定性、鲁棒性、随动性以及跟踪等许多控制中的关键问 题,是检验各种控制理论的理想模型。迄今,人们己经利用古典控制理论、现代 控制理论以及各种智能控制理论实现了多种倒立摆系统的控制。因此,对倒立摆 系统的研究无论在理论上还是在实际上均有很大的意义。
倒立摆系统包含倒立摆本体、电控箱及由计算机和运动控制卡组成的控制平台三大部分,组成了一个闭环系统。其中电控箱内主要有以下部件:(1)交流伺服驱动器(2)1/0接口板(3)开关电源
控制平台主要部分组成:(1)与IBM PC/AI机兼容的PC机,带PCI/SCI总线插槽(2)GT400-SV-PCI运动控制卡
(3)GT400-SV-PCI运动控制卡用户接口软件
电机通过同步带驱动小车在滑杆上来回运动,以保持摆杆平衡。其工作原理 框图如图3-1所示,以直线一级倒立摆为例。电机编码器和角码器向运动控制卡反
馈小车和摆杆位置,小车的位移可以根据光电码盘1的反馈通过换算获得,速度信
号可以通过对位移的差分得到,并同时反馈给伺服驱动器和运动控制卡;摆杆的 角度由光电码盘2测量得到,而角速度信号可以通过对角度的差分得到,并同时反
馈给控制卡和伺服驱动器。计算机从运动控制卡中读取实时数据,确定控制决策(小车向哪个方向移动,移动速度,加速度等),并由运动控制卡来实现控制决 策,产生相应的控制量,使电机转动,带动小车运动,保持摆杆平衡。
硬件部分包括计算机、运动控制卡、电控箱、伺服系统、倒立摆本体和旋转光电编码器、位移传感器等几大部分,它们构成一
洛阳理工学院毕业设计(论文)
个闭环
系统。伺服电机通过同步皮带与小车相连接,并带动小车同步运动,以此来控制小
车在水平轨道上做直线运动。匀质刚体摆杆与小车相连,由小车的水平移动来控制摆杆 的稳定竖直倒立。旋转光电编码器是一种角位移传感器,其输出的检测信号是数字信号,因此可以直接进入计算机进行处理,而不需放大和转换等过程,使用非常方便。可以用
它准确的测出倒立摆摆杆的偏转角度。将旋转光电编码器、位移传感器、以及状态反馈
信息输入运动控制器,而运动控制卡中采集的这些信息经一定的控制算法会得出控制信
息并将被输入伺服电机。通过这样一个闭环系统就能达到倒立摆的稳定控制。其中计算
机从运动控制卡实时读取数据,计算并确定控制决策,即根据倒立摆的实时状态不断地
调用相应的函数程序如速度、加速度等,经过电控箱内的转换电路产生相应的控制量,由此驱动伺服电机转动的
倒立摆系统由机械部分和电路部分组成。机械部分包括底座、框架、滑轨、齿 轮带、轮、电机、小车和摆体等。电路部分由测量电位器、C805lF020单片机(A/D 转换器、D/A转换器)、计算机、信号放大与功率放大、电机等组成。计算机作为数
字控制器实现对系统的实时控制,同时也为操作者提供人一机界面,完成对系统的
监督管理功能:如实时画图、数据采集等。C8051F020单片机(A/D转换器、D/A 转换器)完成模数、数模的转换,放大器用于电压和功率放大。电动机是系统的执 行元件和速度反馈元件,电位器是倒立摆角度的反馈测量元件。一级倒立摆系统的
整套机械部件分别安装在两块底板上,底板上固定着导轨支架、电机底座、滚动轴
承等,通过导轨支架安装好小车滑行导轨,小车用电机和滚动轴承通过传动皮带实
现运动,小车连接着角位移电位器。单级倒立摆原理结构图如图1.1所示。倒立摆是一个数字式的闭环控制系统,其工作原理:小车在电动机的拖动下沿 固定的直线轨道进行运动,相应的产生了小车的直线位移和倒立摆的转角。小车位
移通过电动机电位器测得,角位移由安装在倒立摆轴上的电位器测得。角位移经过
刀D转换送到计算机经过计算机内部的实时控制程序运算产生控制指令。该控制指
令经D/A变换、再经功率放大,然后输出给电动机,产生相应的控制作用,从而实
洛阳理工学院毕业设计(论文)
东北大学硕士学位论文第1章绪论 现对小车位移和倒立摆角位移的控制。)))))))}}}(臼臼
图1.1单级倒立摆原理结构图
Fig.1.1ThePrineiPleofsingleinvertedPendulumstrueturedrawing 倒立摆控制系统是一个复杂的、不稳定的、非线性系统,是进行控制理论教学 及开展各种控制实验的理想实验平台。对倒立摆系统的研究能有效的反映控制中的
许多典型问题:如非线性问题、鲁棒性问题、镇定问题、随动问题以及跟踪问题等。
通过对倒立摆的控制,用来检验新的控制方法是否有较强的处理非线性和不稳定性
问题的能力。同时,其控制方法在军工、航天、机器人和一般工业过程领域中都有
着广泛的用途,如机器人行走过程中的平衡控制、火箭发射中的垂直度控制和卫星
飞行中的姿态控制等,且对于揭示定性定量转换规律和策略具有普遍意义
2.MATLAB简介及应用:
第三章 两轮小车硬件设计(1、自平衡小车的组成模块及工作原理
2、各模块硬件设计)第四章 一级倒立摆的数学建模(1、一级倒立摆的数学建模
系统的建模就是用形式化模型或者抽象的表示方法,对事物本身和外部的 某些因素进行描述。科学家们通过大量的观察和实验,建立了抽象的表示方法
和定律,这些方法和定律是对现实世界中一些已被证明正确的假设加以形式化。
例如:爱因斯坦的相对论和牛顿万有引力定律等等。实物系统的建模找出了所
要建模系统的基本性质,人们可以在模型上进行试验推理、研究和设计,从而
获得控制实物系统的方法。系统建模帮助人们不断地加深对事物现象的认识,并且启发人们去进行可以获得满意结果的实验。因此,系统建模是研究系统的
前提条件和十分有效地手段。
系统建模是对系统进行仿真、分析、设计、控制和优化的基础。在建模过 程中,要想模型能包含实际系统的全部信息,是难以现实的。这是因为模型中
存在着过多的实体,实体之间又存在相互关联。因此,包含实际系统的全部信
洛阳理工学院毕业设计(论文)
息的模型难以获得,也难以处理。对于建立好的模型,通常存在着两个相互矛
盾的因素:简单化和精确性。为了使模型尽可能的精确和简单,建模者通常要
决定忽略那些次要的因素,忽略次要因素的前提是:忽略这些因素以后不会显
著地改变整个模型行为,相反能够使模型更加简单化
建立系统数学模型的方法一般有两种:第一种是机理建模,根据现实对象 的特性,分析其存在的因果关系,找出反映现实对象内部的规律,所建立的模
型一般都具有明确的物理意义或者现实意义。第二种是实验建模,将现实对象
看作一个“黑箱”,由于内部的规律并不能直接的得到,必须分析现实对象的输
入数据和输出数据,用统计学方法分析。根据分析得出的结论,按先前规定的
标准来选出一个实验数据最符合的模型。这种方法也称为系统辩识。倒立摆系
统的形状较为规则,是一个绝对不稳定的系统,用实验建模方法获取其数学模
型有一定的困难。故在下面的论文中采用机理建模对一级倒立摆系统建模。
在忽略了空气阻力和各种摩擦之后,可将直线型一级倒立摆系统抽象成小车 和匀质摆杆组成的系统,如图所示:
洛阳理工学院毕业设计(论文)
图3-2一级倒立摆系统的力学示意图 系统中小车和摆杆的受力分析图如图 2.2 所示。其中,N 和 P 为小车与摆杆相 互作用力的水平和垂直方向的分量。
将摆杆视为刚体,则一级倒立摆系统的参数为:小车质量M,摆杆质量m,摆 杆重心到铰链的长度l,重力加速度g,小车位置x,摆杆角度9,作用在小车上 的驱动力F。当小车在水平方向运动时,若忽略摩擦力矩的非线性,对小车和摆 杆进行水平和垂直方向受力分析,如图:
1、运用牛顿力学分析方法建立了一级倒立摆系统的数学模型。并对倒立摆系统进
行定性分析。证明了倒立摆系统是开环不稳定的,但在平衡点是能观的和能控的,可以
对系统进行控制器的设计,使系统稳定。
2、通过建立模糊规则,研究倒立摆系统的模糊控制算法。本文把摆杆的角度和角 速度作为输入量,单独组成一个角度控制器;把小车的位置和速度作为输入量,组成另
一个位置控制器。从而实现“摆体不倒,小车停住”的总体控制目标。
3、倒立摆模糊控制仿真。本文利用Simulink建立倒立摆系统模型,实现了倒立摆
模糊控制系统的仿真。仿真结果表明:模糊控制器不仅可以使摆杆稳定,还可以使小车
稳定在特定位置。
由于倒立摆系统存在不确定性、耦合性等特性,在数学上完全准确的描述它
几乎是不可能的。为简化系统,解决实际系统中的控制问题,我们在建模时要忽
略了一些次要因素,如空气阻力、伺服电机的静摩擦力、系统连接处的松弛程度、洛阳理工学院毕业设计(论文)
摆杆连接处质量分布不均匀、传送带的弹性、传动齿轮的间隙等,并将小车抽象
为质点,认为摆杆是匀质刚体,从而将二级直线倒立摆简化成小车和摆杆组成的
系统,建立一个较为精确地倒立摆系统的数学模型。
目前,对倒立摆系统建模一般采用两种方法:牛顿力学分析方法,欧拉—拉
格朗日原理(Lagrange方程)[41]。建立被控对象的数学模型常采用牛顿力学的方法,建立倒立摆系统的数学模型先分析小车和各个摆体的受力情况,然后列出小车和
各个摆体在X方向和Y方向的运动方程以及各摆体相对各个转轴处的转动力矩平衡
式。再通过求解各摆体运动方程和各个转轴处的转动力矩平衡方程得到倒立摆系
统的数学模型。可见,采用牛顿运动定律建模,需要解算大量的微分方程组,而
且要考虑到质点组受到的约束条件,建模将更加复杂
倒立摆系统的数学建模一般有牛顿欧拉法和拉格朗日法两种。对于结构相对简单的
一级直线倒立摆可以使用牛顿欧拉法,先对小车和摆杆进行受力分析,并分别求出他们 的运动方程。将线性化后的两个运动方程进行拉普拉斯变换。最后整理后可以得到系统 的状态空间方程 [1-9]。但在对二级、三级以上的倒立摆进行数学建模时,这种方法就显
得有些复杂。牛顿运动定律来求解质点组的运动问题时,计算量会比较大。在许多实际 的运算中,求解微分方程组会遇到较大的困难。有时,还需要确定各质点间的位移、相
互作用力、速度、加速度等关系来解决质点组中存在约束情况,联立求解这些方程组就 更为困难 [10-13]。为了简化倒立摆系统的数学建模过程,本章采用了分析力学中的拉格朗 日方程推导直线倒立摆的数学模型,并对该系统的可控性进行了分析。
洛阳理工学院毕业设计(论文)
2、能空性分析
3、能观性分析
4、基于卡尔曼滤波器的LQR控制器设计)
第五章 基于MATLAB的仿真(1、基于MATLAB的倒立摆模型
于在教学和工程实验领域广泛应用的 MATLAB/Simulink平台,MATLAB 实时控
制软件实验平台,使得实验和先进算法研究变得无比轻松。在不需要熟练掌握其他编程
语言的基础上就能做控制理论实验,只需要把精力集中在控制算法研究上而不需要接触
艰深的硬件接口。现在,在此平台上可以把系统的建模、仿真和实时控制,用户的建模
和仿真结果不需要太多修改就可以直接在同一平台上针对实际物理设备进行控制实验 验证。
MATLAB 实时控制软件的特点:实控软件采用了 MATLAB/Simulink 的实时工具箱
RTW(Real-Time Workshop)实现控制任务,运行在 Windows 操作系统基础上,专用的
实时内核代替 Windows 操作系统接管了实时控制任务。内核任务执行的最小周期是
1ms,大大地提高了系统控制的实时性,完全可以满足 Windows 下较高的实时性控制要
求而不用担心 Windows 本身的实时性问题。
2、控制器设计及实时仿真)
第四篇:倒立摆课程设计
西北民族大学2012级自动化3班钟小龙
摘 要
倒立摆系统作为一个具有绝对不稳定、高阶次、多变量、强祸合 的典型的非线性系统,是检验新的控制理论和方法的理想模型,所以 本文选择倒立摆系统作为研究对象具有重要的理论意义和应用价值。相对于其他研究倒立摆系统的控制方法,Backstepping方法最大的优点是不必对’系统进行线性化,可以直接对系统进行递推性的控制器设计,保留了被控对象中有用的非线性项,使得控制设计更接近实际情况,而且所设计的控制器具有很强的鲁棒性。
本文主要利用Backstepping方法设计了直线型一级倒立摆系统控制器并基于MATLAB/Simulink对系统进行了离线仿真。本文所作的主要工作或要达到的主要目的是:(一)建立直线型一级倒立摆系统的数学模型,并利用Backstepping方法设计了该倒立摆系统的控制器,然后对闭环系统进行了数值仿真并与其他方法进行了数值仿真分析比较。与当前的倒立摆研究成果相比,具有研究方法新颖、控制效果好的特点。
(二)本文利用所设计的非线性控制器在MATLAB/Simulink环境下对系统进行了离线仿真分析,并与固高公司提供的算法进行了仿真效果比较。
关键词:倒立摆系统,Backstepping, MATLAB/Simulink,实时控制
西北民族大学2012级自动化3班钟小龙
目 录
1.倒立摆系统的简介........................................1 1.1倒立摆系统的研究背景..........................................1 1.2倒立摆系统的研究历史、现状及发展趋势..........................2 1.3倒立摆的主要控制方法..........................................4 2.一级倒立摆数学模型......................................6 2.1一级倒立摆系统的组成..........................................6 2.2一级倒立摆系统数学模型的建立..................................7 3.系统控制器的设计和闭环系统的数值仿真....................9 4.直线型一级倒立摆系统的Simulink模型和离线仿真............12 4.1基于线性控制器对线性系统的离线仿真..........................12 4.2基于线性控制器对非线性系统的离线仿真........................15 4.3基于非线性控制器对非线性系统的离线仿真......................16
5.模型的优点.............................................18 6.结论和展望.............................................19 7.参考文献...............................................20
西北民族大学2012级自动化3班钟小龙
1.倒立摆系统的简介
1.1倒立摆系统的研究背景
在控制理论的研究及其应用的发展过程中,当一种新的理论产生,它的正确性及实际应用中的可行性都需要一个按其理论设计的控制器去控制一个典型对象来验证,而倒立摆就是这样一个被控制对象。倒立摆是一个多变量、快速、非线性、强藕合、不稳定的系统,通过对它引入一个适当的控制方法使之成为一个稳定系统,来检验控制方法对不稳定性、非线性和快速性系统的处理能力,而且在倒立摆的控制过程中,它能有效地反映诸如可镇定性、鲁棒性、随动性以及跟踪性能等许多自动控制领域中的关键问题。因此受到世界各国许多科学家的重视,从而用不同的控制方法控制不同类型的倒立摆,成为最具有挑战性的课题之一。对倒立摆系统的研究不仅仅在其结构简单、原理清晰、易于实现等特点,而且作为典型的多变量系统,可采用实验来研究控制理论中许多方面的问题。诸如模型的建立、状态反馈、观测器理论、快速控制理论以及滤波理论等都可以用于这类系统。因此,倒立摆实验模型对现代控制理论的教学来说,自然成为一个相当理想的实验模型,而且也可以作为数控技术应用的典型的对象;另一方面对系统的研究也比较有实用价值,从日常生活中所见到的任何重心在上、支点在下的控制问题,到空间飞行器和各类伺服云台的稳定,都和倒立摆的控制有很大的相似性,故对其的稳定控制在实际中有很多应用,如海上钻井平台的稳定控制、卫星发射架的稳定控制、火箭姿态控制、飞机安全着陆、机器人双足行走机构、化工过程控制等都属这类问题。因此对倒立摆机理的研究具有重要的理论和实际意义,成为控制理论中经久不衰的研究课题。
除此之外,由于倒立摆系统的高阶次、不稳定、多变量、非线性、强耦合等特性,许多现代控制理论的研究人员一直将它们视为研究对象,用它们来描述线性控制领域中不稳定系统的稳定性和非线性控制领域中的变结构控制、无源性控制、自由行走、非线性观测器、摩擦补偿、非线性模型降阶等控制思想,并且不断从中发掘出新的控制理论和控制方法,相关的成果在航空航天和机器人学方面获得了广阔的应用。可见,对倒立摆系统进行研究既具有意义深远的理论价值,又具有重要的工程背景和实际意义。
倒立摆系统有着很强的工程背景,主要体现在:(l)机器人的站立与行走类似于双倒立摆系统,尽管第一台机器人在美国问世至今已有三十年的历史,机器人的关键技术—机器人的行走控制至今仍未能很好解决。
(2)在火箭等飞行器的飞行过程中为了保持其正确的姿态要不断进行实时控 1
西北民族大学2012级自动化3班钟小龙
制。
(3)通信卫星在预先计算好的轨道和确定的位置上运行的同时要保持其稳定的姿态使卫星天线一直指向地球使它的太阳能电池板一直指向太阳。
(4)侦察卫星中摄像机的轻微抖动会对摄像的图像质量产生很大的影响,为了提高摄像的质量必须能自动地保持伺服云台的稳定消除震动。
(5)为防一止单级火箭在拐弯时断裂而诞生的柔性火箭(多级火箭)其飞行姿态的控制也可以用多级倒立摆系统进行研究。
由于控制理论的广泛应用,由此系统研究产生的方法和技术将在半导体及精密仪器加工、机器人控制技术、人工智能、导弹拦截控制系统、航空对接控制技术、火箭发射中的垂直度控制、双足机器人火箭飞行控制、伺服云台稳定、卫星飞行中的姿态控制和一般工业应用等方面具有广阔的利用开发前景。因此对倒立摆控制机理的研究具有重要的理论和实践意义。
倒立摆系统大概可以归纳为如下几类:平行式倒立摆、平面摆、柔性摆、悬挂式倒立摆和球平衡式倒摆系统。倒立摆的级数可以是一级、二级、三级乃至多级,倒立摆的运动轨道既可以是水平的,也可以是倾斜的。1.2倒立摆系统的研究历史、现状及发展趋势
自从20世纪50年代倒立摆系统成为控制实验室的经典工具以来,关于倒立摆控制的论述可以分为2个主要的方面: 1)理论方面:依靠计算机仿真对控制方法的可行性进行验证;2)实验方面:调查引起计算机仿真结果和实时控制之间性能差异的物理不确定性。
在理论方面,1986年,Chung和Litt对单级倒立摆系统的动态进行了辨识,并分别设计了自适应自整定反馈控制器和PD反馈控制器来保持倒立摆在垂直向上方向的稳定。1989年,Anderson和Grantham,运用函数最小化和Lyapunov稳定方法成功产生了一个优化反馈控制器。1992年,Renders和Soudak通过相平面分析,得到了一个线性控制器。1995年,任章等应用振荡控制理论,通过在倒立摆支撑点的垂直方向上加入一个零均值的高频振荡信号,改善了倒立摆系统本身的稳定性。1998年,蒋国飞等将Q学习算法和BP神经网络有效结合,实现了状态未离散化的倒立摆的无模型学习控制。2001年,单波等利用基于神经网络的预测控制算法对倒立摆的控制进行了仿真。在两级倒立摆方面,Sabba(1983)把系统稳定尺度作为一个无限维不等式,从而避免了方法。1996年,翁正新等利用带观测器的H状态反馈控制器对二级倒立摆系统进行了仿真控制。1997年,翁正新等利用同样的方法对倾斜导轨上的二级倒立摆进行了仿真控制。
Sinha和Joseph2000年,刘妹琴等用进化RBF神经网络控制二级倒立摆。1994年,2
西北民族大学2012级自动化3班钟小龙
利用LyapunovFloquet变换得到了三级倒立摆系统的计算机仿真模型(有3个控制输入)。2001年,李洪兴领导的模糊系统和模糊信息研究中心利用变论域自适应模糊控制的思想在国际上首次实现了四轴倒立摆的仿真;同年,肖军等提出一种基于三维模糊组合变量的控制方法,仿真结果证明了该方法的有效性。在数学模型方面,Larcombe(1991 ,1992)得到了在二维坐标中的简单多级倒立摆系统的运动方程。1992年,Larcombe和Torsneyt2发现了简单多级倒立摆系统平衡状态的辨识方程。随后,Larcombe(1993)把符号算法应用于二级倒立摆系统的开环线性化动态方程,并且计算了系统的特征方程和开环极点。2001年,史晓霞等建立了二级倒立摆的数学模型,同年,张葛祥等建立了三级倒立摆的数学模型,并分析了系统的可控制性和可观测性,给出了智能控制算法的思路。
在实验方面,单级倒立摆系统的实验最早出现在Roberge(1960)的论文中。1963年,Higdon 和Cannon提出了平行倒立摆的问题。Koenigsberg和Fredrick(1970)则使用了基于观测器的输出反馈控制器和状态反馈调节器。Mori等((1976)设计了一个组合控制器,既可以摆起倒立摆,还可以维持它在垂直向上方向上的平衡。1992年,Simth和Blackburn利用高频垂直振荡获得稳定的倒置状态,同年,Ostertag和CarvalhoOstertag开发了一个带摩擦力补偿的稳定模糊控制器。Wei等(1995)利用bangbang非线性控制器摆起了倒立摆并稳定在垂直向上方向。1996年,张乃尧等实现了倒立摆的双闭环模糊控制。1998年,王佳斌用网络控制倒立摆。对于二级倒立摆,Loscuttof(1972)认为只有全阶观测器才能实现它的稳定;但Furuta等((1975)证明了这种结论的错误性,并在1978年利用一个线性函数观测器稳定了同一系统。1980年,Furuta等控制了倾斜导轨上的同一系统,并能保持小车的正确定位。Zuren等在1984年运用部分状态和线性函数观测器结构,在模拟计算机上应用了同一算法,1987年他
Der Linden和们使用离散二次性能指标修改T这一控制器。1993年,Van Lambrechts在运用戈理论设计倒立摆的控制器时考虑了干摩擦。Yamakita等(1993)运用学习控制方法成功摆起了二级倒立摆系统,而且在1994年他们运用这相同的控制方法使倒立摆在4种平衡状态中互相切换。1995年,程福雁等利用参变量模糊控制对二级倒立摆进行实时控制,取得了较好的效果。1999年,李岩等运用基于PD控制的专家智能控制并实现了二级倒立摆的稳定控制。2000年,林红等利用最优反馈调节器使其在倒立位置保持平衡,并在锯齿波信号的作用下有规律地移动,直至无限远处。在三级倒立摆方面,Furuta(1984)和Meier等(1990)分别利用带函数观测器和降阶观测器的LQR方法设计了反馈控制器。1999年,李德毅利用云控制方法有效地实现了单电机控制的一、二、三级倒立摆的多种不同动平衡姿态,并给出了详细试验结果;同年,张飞舟等采用相平面 3
西北民族大学2012级自动化3班钟小龙
分析法并结合人的控制经验,实现了一、二、三级倒立摆的拟人智能控制。2000年,杨亚炜等利用拟人智能控制成功实现了在倾斜导轨上三级倒立摆的稳定,并可以控制三级倒立摆沿水平或倾斜导轨自由行走。
多年来,人们对倒立摆的研究越来越感兴趣,倒立摆的种类也由简单的单级倒立摆发展为多种形式的倒置系统。目前研究的大部分均为二维空间即平面内摆动的摆,另外近年来还出现了球摆、柔性摆、倾斜轨道式倒立摆、旋转式倒立摆等。
国际上每年都有成百篇关于倒立摆控制研究的论文发表,其中大部分是建立在计算机基础上的仿真研究。而且主要是以一级倒立摆作为被控对象进行仿真,用二级倒立摆和平行倒立摆来仿真的文章则很少,而用三级倒立摆乃至多级倒立摆进行仿真研究的更是罕见。三级倒立摆的控制作为控制界的经典难题一直为人们所关注,也一直是研究的热点。目前,只有很少一部分学者在对实际物理摆进行设计、实验和控制研究。1.3倒立摆的主要控制方法
经过几十年的发展,对倒立摆这样的一个典型被控对象的研究,无论在理论上和方法上都在不断的更新。各种控制理论和方法都可以通过倒立摆控制系统得以充分实践并且可以促成相互间的有机结合。目前倒立摆的控制方法主要可分为以下几类:(I)线性理论控制方法
将倒立摆系统的非线性模型进行近似线性化处理,获得系统在平衡点附近的线性化模型;然后,再利用各种线性系统控制器设计方法得到期望的控制器PID ,控制状态反馈控制、LQR控制算法,这类方法对一二级的倒立摆(线性化后误差较小模型较简单)控制时可以得到较好的控制效果,但对于像非线性较强模型较复杂的多变量系统(三四级以及多级倒立摆),线性系统设计方法的局限性就十分明显,这就要求采用更有效的方法来进行合理的设计。
(2)变结构控制和自适应控制方法
变结构控制是一种非连续控制,可将控制对象从任意位置控制到滑动曲面上仍然保持系统的稳定性和鲁棒性,但是系统存在颤抖。变结构控制和自适应控制在理论上有较好的控制效果,但由于控制方法复杂,成本也高,不易在快速变化的系统上实时实现。
(3)智能控制方法
在倒立摆系统中用到的智能控制方法主要有神经网络控制、模糊控制、拟人智能控制、仿人智能控制和云模型控制。
神经网络控制一一神经网络能够任意充分地逼近复杂的非线性关系,能够学 4
西北民族大学2012级自动化3班钟小龙
习与适应严重不确定性系统的动态特性,所有定量或定性的信息都等势分布贮存于网络内的各种神经元,故有很强的鲁棒性和容错性,但是神经网络控制方法存在的主要问题是缺乏一种专门适合于控制问题的动态神经网络,而且多层网络的层数隐层神经元的数量激发函数类型的选择缺乏指导性原则等。
模糊控制一一经典的模糊控制器利用模糊集合理论,将专家知识或操作人员经验形成的语言规则直接转化为自动控制策略(通常是专家模糊规则查询标),其设计不依靠对象精确的数学模型而是利用其语言知识模型进行设计和修正控制算法,常规的模糊控制器的设计方法有很大的局限性,首先难以建立一组比较完善的多维模糊控制规则,即使能凑成这样一组不完整的粗糙的模糊控制规则其控制效果也是难以保证的,但是模糊控制结合其他控制方法就可能产生比较理想的效果,例如北京师范大学己经采用模糊自适应控制理论成功的研制了三级倒立摆装置并对四级倒立摆系统做了仿真结果,接着还成功研制了四级倒立摆装置且稳定
效果良好。但是基于这些模糊控制、神经网络控制等智能控制理论所设计的系统往往需要庞大的知识库和相应的推理机,不利于实现实时控制,这又阻碍了智能控制理论的发展。
拟人智能控制一一它的核心是“广义归约”和“拟人归约”是人工智能中的一种问题求解方法,这种方法是将等求解的复杂问题分解成复杂程度较低的若干问题集合,再将这些集合分解成更简单的集合,依此类推最终得到一个本原问题集合,即可以直接求解的问题。另一核心概念是拟人其含义是在控制规律形成过程中直接利用人的控制经验直觉以及推理分析。
仿人智能控制一一它的基本思想是通过对人运动控制的宏观结构和手动控制行为的综合模仿,把人在控制中的动觉智能模型化,提出了仿人智能控制方法研究结果表明仿人智能控制方法解决复杂强非线性系统的控制具有很强的实用性。
云模型控制一一利用云模型实现对倒立摆的控制,用云模型构成语言值,用语言值构成规则,形成一种定性的推理机制,这种拟人控制不要求给出被控对象精确的数学模型,仅仅依据人的经验、感受和逻辑判断,将人用自然语言表达的控制经验,通过语盲一原子和云模型转换到语言控制规则器中,就能解决非线性问题和不确定性问题。
(4)鲁棒控制方法
虽然目前对倒立摆系统的控制策略有如此之多,而且有许多控制策略都对倒立摆进行了稳定控制,但大多数都没考虑倒立摆系统本身的大量不确定因素和外界干扰。
西北民族大学2012级自动化3班钟小龙
(5)Backstepping方法
PV及其它是一种新的研究非线性系统的控制思想和方法,它是由Kokotovic 合作者在上世纪90年代提出的,但目前用此方法研究倒立摆系统的成果还不多见。Backstepping是一种构造性方法,它利用系统的结构特性递推地构造出整个系统的Lapunov函数,所以系统Lapunov函数和控制器的设计过程有较强的系统性、灵活性和结构性,而且保留系统中有用的非线性项,加上可以控制相对阶为n的非线性系统,消除了经典无源设计中相对阶为1的限制正因为这些优点,后来中外学者把它广泛地用在非线性系统的状态反馈控制、输出跟踪控制、自适应控制、鲁棒控制等领域的研究.2.一级倒立摆数学模型
2.1一级倒立摆系统的组成
一级倒立摆控制系统主要由以下4部分组成: 1.在有限长的轨道L上作直线运动的小车;2.与小车铰接在一起,并能在包含L的平面内绕O点转动的摆;3.驱动小车的直流力矩电机和转轮、钢丝等传动部分;4.使摆稳定在垂直向上的平衡位置,且使小车稳定在轨道中心毛的控制器。
一级倒立摆的结构简图如图1.1所示。
图1.1倒立摆系统的结构图
倒立摆系统主要由计算机、A/D , D/A、电机、电位计以及一些机械部件组成。计算机作为数字控制器实现对系统的实时控制,同时也为操作者提供人机界
西北民族大学2012级自动化3班钟小龙
面,完成系统的监督管理功能,如实时画面,数据采集;A/D , D/A板插在计算机内,完成模/数、数/模转换;放大器用于电压和功率放大。电机是系统的执行元件;电位计是系统的测量元件,它分别检测了小车相对于轨道中心点的相对位置、小车的速度,摆和铅垂线的角度偏移、角速度。倒立摆系统的整套机械部件分别安装在一块台架上,底板上固定着导轨支架、电机底座等装置。通过导轨支架安装好小车滑行的导轨,小车用电机和转轮通过传动钢丝实现运动。2.2一级倒立摆系统数学模型的建立
在忽略了空气阻力和各种摩擦之后,可将直线型一级倒立摆系统抽象成小车 和匀质摆杆组成的系统,如图所示:
图1.2.1 一级倒立摆系统的力学示意图
将摆杆视为刚体,则一级倒立摆系统的参数为:小车质量M,摆杆质量m,摆杆重心到铰链的长度l,重力加速度g,小车位置x,摆杆角度,作用在小车上的驱动力F。当小车在水平方向运动时,若忽略摩擦力矩的非线性,对小车和摆杆进行水平和垂直方向受力分析,如图:
西北民族大学2012级自动化3班钟小龙
图1.2.2 小车和摆杆的受力分析图
其中N和P为小车和摆杆间的相互作用力水平和垂直方向上的分量。分析小车水平方向上的合力,由牛顿运动定律可得:
由摆杆水平方向的受力分析可得:
即:
把式子(3.3)代入(3.1)式中,就得系统的第一个运动方程:
对摆杆垂直方向上的合力进行分析并由力矩平衡方程可得:
合并这两个方程,约去P和N,得到第二个运动方程:
为了后面设计的方便我们对得到的两个方程进行化简和处理可得一级倒立摆系统的数学模型如下:
西北民族大学2012级自动化3班钟小龙
在这里可以将倒立摆系统(3.8)看作是由小车和摆两部分组成的具有两个子系统的组合系统。倒立摆的摆系统控制具有高度非线性,同时考虑到实际设备长度的约束,我们必须限制小车系统的位移。以前大部分研究工作都是通过对倒立摆数学模型中的非线性项进行近似或忽略,从而简化控制器的设计。我们采用基于 Lapunov能量反馈的方法对倒立摆进行起摆控制,这实际上是利用正反馈不断增大摆的能量。针对摆系统,采用Backstepping方法设计非线性控制器,但此时得到的控制器不能实现对小车位移的控制;因此我们结合线性控制理论的极点配置方法获得对小车位移和速度控制的部分控制器;两者结合则得到整个倒立摆系统的一个非线性稳摆控制器。
3.系统控制器的设计和闭环系统的数值仿真
针对直线型一级倒立摆系统的控制器设计方法很多,包括状态反馈控制、LQR最优控制、模糊控制和PID控制等方法,同时各种方法的相互结合使用来设计倒立摆系统己经称为研究热点。
针对上面的直线型一级倒立摆系统(x..1,x2,x3x,x4x),选取M2.0kg,m8.0kg,10.5m,g9.8m/s2。我们先考虑摆子系统的动态模型:
step1令:z1x1,x2看作是系统: 的虚拟控制。现在我们的控制目的就是设计虚拟反馈控制;x21(x1)去镇定z1为此,构造Lapun函数v2..1(z1)(1/z12,)则有v1(z1)z1z1z1x2。取1(x1)k1z,1k1为可设计常数,并引入误差变量0z2x21(x1),则有:
西北民族大学2012级自动化3班钟小龙
故若z20,则v1(z1)k1z120,即z1子系统(3.10)被镇定,下面镇定:z2
step 2对应一个二阶系统:
此时真正的控制u出现。这一步主要是镇定z2 构造Lapunov函数V1(z1,z2)(1/2)z12(1/2)z2,则
令
其中k20为设计常数,由(3.1 5)求得系统的控制输入:
20,即z1,z2子系统(3.13)被镇定,所以代入式(3.14),则V(z1,z2)k1z12k2z2.进而:z10,反推之后可得x1,x20,即可得系统(3.9)在控制(3.16)z20,作用下被镇定。而把z1x1,z2x21(x1)x2k1x1代入(3.17)可得系统(3.9)的控制输入:
其中的k1,k20为可设计常数,可以根据实际系统的具体要求进行设计,这一点也是Backstepping方法的特点和优点之一。当取k1k2100,k1k21150时相
西北民族大学2012级自动化3班钟小龙
应的控制器:
我们先对上面得到的非线性系统(3.8)作近似线性化。考虑摆杆在平衡点(0)附近摆动微小,对非线性系统(3.8)进行局部线性化,即令cos,sin做近似处理后,就得到倒立摆的线性状态方程
.式中X[xT.1,x2,x3,x4][,,x,x]T,uF,输出y[,x]T
其中I(1/3)ml2
用Matlab中的place函数得到反馈矩阵:
截取K3,K4部分为x3,x4的系数,则可得
西北民族大学2012级自动化3班钟小龙
两者结合可得:
该控制器可以控制摆杆保持平衡的同时,跟踪小车的位置。注意:上述F的参数可以进一步调试。对整个倒立摆做数值仿真结果如下:
图3-4小车和摆杆的状态响应曲线
4.直线型一级倒立摆系统的Simulink模型和离线仿真
4.1基于线性控制器对线性系统的离线仿真 在上面所设计的直线型一级倒立摆的线性控制器
该控制器的设计采用的是Backstepping方法,类似于极点配置法,设计的目的是使系统满足工程师提出的瞬态和稳态性能指标。我们利用Simulink搭建该控制器模型如图4-1 12
西北民族大学2012级自动化3班钟小龙
图4-1 线性控制器的Simulink模型
其次构建直线型一级倒立摆系统的线性系统的Simulink模型为
图4-2 线性系统的Simulink框图
最后对控制器模块和线性模型模块进行封装,再连接起来就是倒立摆系统的闭环系统模型,如下图4-3。
西北民族大学2012级自动化3班钟小龙
图4-3 倒立摆闭环系统的Simulink框图
这样我们就在MATLAB的Simulink环境下,搭建出状态反馈控制系统仿真试验研究平台,通过示波器可以在线观察系统的状态变化,进而可以对倒立摆闭环系统进行实验仿真分析了。
图4-4 倒立摆闭环系统的Simulink仿真曲线
西北民族大学2012级自动化3班钟小龙
4.2基于线性控制器对非线性系统的离线仿真
首先用Simulink搭建的倒立摆系统的非线性系统模型为:
图4-5 倒立摆系统的非线性系统模型
利用4-7建好的线性控制器模块和上面建好的非线性系统模型进行封装,再连接起来就是倒立摆系统的闭环系统模型,如下图4-6。
图4-6 整体闭环系统Simulink框图
最后模型建立好后,我们就可以对倒立摆闭环系统进行离线仿真。如下图4-7。
西北民族大学2012级自动化3班钟小龙
图4-7 倒立摆闭环系统的Simulink仿真曲线
从图4-4和图4-7可以看出,所设计的线性控制器对线性化系统控制效果比对非线性系统的好,这说明线性控制器对非线性倒立摆系统的控制较差,而且实验表明非线性控制器对系统的抗干扰能力和鲁棒性强。4.3基于非线性控制器对非线性系统的离线仿真 先建立非线性控制器的Simulink框图
图4-8 非线性控制器的Simulink框图
西北民族大学2012级自动化3班钟小龙
图4-9 非线性部分的Simulink框图
对非线性控制器模块进行封装,再与非线性系统模型模块连接起来就是倒立摆系统的闭环系统模型,如下图4-10。
图4-10 闭环系统的Simulink框图
最后模型建立好后,我们就可以对倒立摆系统进行离线仿真。如下图4-11。
西北民族大学2012级自动化3班钟小龙
图4-11 倒立摆闭环系统的Simulink仿真曲线
可以看出非线性控制器的控制效果很好,时间越长稳定性越好,内有抖动性,但收敛时间稍微有点长,但它的控制效果好,特别是对外界的抗干扰能力等。
5.模型的优缺点
该控制算法与其他算法相比,优缺点主要有以下几点:(1)与固高公司提供的LQR最优控制算法相比,在稳定时间几乎一样,由于本文给出的算法里面含有可调参数,只要合适的调节参数,就可以使得稳定时间大大缩短,但这样也会存在使控制量过大,出现系统抖动问题。另一方面本文给出的算法在抗干扰能力方面要强于LQR最优控制算法,见最后一章的分析。
(2)与精确线性化方法对比,该方法收敛速度即稳定时间要比精确线性化 方法快,而且精确线性化方法对原系统进行了线性化,故理论上与实际的系统模 型有一定的误差。而本文设计的控制算法保留了系统的非线性项,控制效果好,但同时也增加了控制器的能量,响应时间会受到影响。
(3)与模糊逻辑控制理论相比,该方法收敛速度明显要快,而且调节时间短,稳态性能指标也比较好。
(4)变结构控制理论设计的控制算法使得系统的抖动厉害,而本文给出的算法抖动性小,而且时间越长控制效果越好。
西北民族大学2012级自动化3班钟小龙
(5)本文只采用一种控制设计方法,当然与那些多种控制方法结合使用的设 计方法相比存在一定的不足。把模糊控制和神经网络控制结合控制的效果很好,在稳定性、抗干扰性方面优势都很大。事实证明:模糊神经网络的BP算法比一般神经网络的BP算法快得多,在受干扰情况下,小车摆杆的恢复迅速。
6.结论和展望
倒立摆控制系统作为检验控制理论的试金石,对于控制理论研究方面发挥着 越来越重要的作用,值得进一步的研究和开发。本文主要利用Backstepping方法设计了直线型一级倒立摆系统控制器并基于MATLAB/Simulinkk对系统进行了离线仿真。本文所作的主要工作或要达到的主要目的是:(一)建立直线型一级倒立摆系统的数学模型,并利用Backstepping方法设 计了该倒立摆系统的控制器,然后对闭环系统进行了数值仿真并与其他方法进行 了数值仿真分析比较。与当前的倒立摆研究成果相比,具有研究方法新颖、控制 效果好的特点。
(二)本文利用所设计的非线性控制器在MATLAB/Simulink环境下对系统进 行了离线仿真分析,并与固高公司提供的算法进行了仿真效果比较。
倒立摆系统的种类有很多,本文只是在直线型一级倒立摆中进行了研究和分析,随着控制理论研究的深入,必将会出现更多新的控制方法,而且新的控制方 法的综合使用也将是研究的热点,那么就需要更复杂的系统进行检验,需要对更 复杂的倒立摆系统进行研究;同时MATLAB/Simulink的广泛应用,必将带来控制理论和控制实验方面的进一步深入和丰富。
西北民族大学2012级自动化3班钟小龙
7.参考文献
[1]俞立.现代控制理论【M】.北京:清华大学出版社,2007.4 [2]中国科学技术人学编.固高摆系统与自动控制实验【Z】.2002 [3]谢克明.现代控制理论基础【M】.北京:北京工业大学出版社,2003 [4]邓丽霞.基于Backstepping和MATLAB/Simulink的直线型一级倒立摆系统的控制器设计与实时控制研究【J】,2008 [5]徐若冰.基于极点配置的倒立摆控制器设计【J】,2007 [6] Albertalsidori.非线性控制系统(第二版)【M】.比京:电子工业出版社,2005 [7]宋兆基,徐流美.MATLAB6.5在科学计算中的应用【M】.北京:清华大学出版社.2005 [8]周党伟,钱富才.直线倒立摆的稳定控制研究【J】.西安理工大学硕士学位论文
第五篇:倒立摆初步调式程序
/*/***************************************************** 此为倒立摆程序,共分为六个模式
//************************************************ *************************************************** *********************************************************/ #include
sbit B1=P1^0;//按键接口由模式1到模式6,模式6必须在完成模式5所设定功能启动 sbit B2=P1^1;sbit B3=P1^2;sbit B4=P1^3;sbit B5=P1^4;sbit B6=P1^5;
sbit Zx=P3^2;
//增量式编码器接口z用于判断起点 sbit Ax=P3^3;//A,B联立用于判断方向 sbit Bx=P2^4;
sbit rs=P2^5;
//1602的数据/指令选择控制线
sbit rw=P2^6;
//1602的读写控制线
sbit en=P2^7;
//1602的使能控制线
void moshi1();//倒立摆的不同模式函数 void moshi2();void moshi3();void moshi4();void moshi5();void moshi6();//*********************************************** //lcd显示函数声明
void fuzhi1(uchar n2,uchar n3);void fuzhi(uchar n2,uchar n3);void lcd_w1(uchar ff);void lcd_w2(uchar dat);void lcd_init();void display();
//************************************************ //pid参数及其计算函数声明 void PID_init();void chushihua();float PID_jisuang(float shuzhi);//************************************************** void dianji(int v,int s,char m);//电机函数
int zhuanghua(float shijizhi1);//pid控制量转化为电机运转角度函数
float zengliangzhi,jiaodu,Py;
uchar flag=1,a=0,j=0,j1=0,su=0,time,time1,time2,y=0;uchar table[]={“jiaodu1=00.00”};uchar table1[]={“p=0000,x=0;”};uint mc,n,Pw,d1,d2,d3,d4,d5,m1;//********************************************************* //延时函数 void deplay(uint ms){
uchar i;
while(ms--)
for(i=0;i<2;i++);
} //*********************************************
void main(){
PID_init();
chushihua();
while(1)
} //************************************************* void chushihua(){ {
while(B1)
moshi1();while(B2)
moshi2();while(B3)
moshi3();while(B4)
moshi4();while(B5)
moshi5();
}
EA=1;
//开总中断1优先级
TMOD=0x01;
//T0定时方式1 TH0=(65536-200)/256;
TL0=(65536-200)%256;
} //****************************************************** void bianmaA()interrupt 2 {
if((time1-time2)>=2)
{
time2=time1;if(Bx)
IT0=1;IT1=1;EX0=1;PX0=1;
//下降沿触发
//下降沿触发
//开外部中断0 //外部中断0高
TR0=1;
//启用定时器T0 ET0=1;
//控制打开T0
j++;
else
j1++;
}
} //******************************************** void bianmaZ()interrupt 0 {
EX0=0;
EX1=1;
PX1=1;flag=0;}
//*********************************************** void time0()interrupt 1 {
TL0=(65536-200)%256;TH0=(65536-200)/256;su++;time++;while(time==5){
time=0;
time1++;
} } while(su==a)
//脉冲频率调节
{
su=0;Pw++;}
if(su<(a/2))
A2=0;
else
A2=1;
//************************************** //模式1实现倒立摆左右大于60度角功能,具体再看;
void moshi1(){
dianji(6,100,1);
dianji(6,100,0);
} //*************************************** //模式1实现倒立摆运转至少一周功能;具体再看; void moshi2(){
dianji(6,200,1);
dianji(6,200,0);} //*************************************** //模式1实现倒立摆摆杆拿到左边165度自平衡功能;并显示角度(100次测量)具体再看; void moshi3(){
while(flag)
{ a=6;
Pw=0;
A1=1;
}
if(1)
{
jiaodu=(j-j1)*0.36;
Py=(int)PID_jisuang(jiaodu);
mc=zhuanghua(Py);
dianji(6,mc,1);
y=1;
}
else { a=0;
jiaodu=(j1-j)*0.36;
Py=(int)PID_jisuang(jiaodu);
mc=zhuanghua(Py);
dianji(6,mc,0);
y=0;} m1++;
if(m1==100)
{
d1=((int)(jiaodu*100))/1000;
d2=((int)(jiaodu*100))%1000/100;
d3=((int)(jiaodu*100))%1000%100/10;
d4=((int)(jiaodu*100))%1000%100%10;
fuzhi(d1,8);
fuzhi(d2,9);
fuzhi(d3,11);
fuzhi(d4,12);
d1=mc/1000;
d2=mc%1000/100;
d3=mc%1000%100/10;
}
d4=mc%1000%100%10;
d5=y;
fuzhi1(d1,2);
fuzhi1(d2,3);
fuzhi1(d3,4);
fuzhi1(d4,5);
fuzhi1(d5,9);
display();
m1=0;
} //************************************************************ //模式1实现倒立摆摆杆拿到右边165度自平衡功能;并显示其角度(100次测量)具体再看; void moshi4(){
a=6;
Pw=0;
while(flag)
{
A1=0;
}
if(j>j1)
{
jiaodu=(j-j1)*0.36;
Py=(int)PID_jisuang(jiaodu);
mc=zhuanghua(Py);
dianji(6,mc,1);
y=1;}
else
{
jiaodu=(j1-j)*0.36;
Py=(int)PID_jisuang(jiaodu);
mc=zhuanghua(Py);
dianji(6,mc,0);
y=0;} m1++;if(m1==100)
{
d1=((int)(jiaodu*100))/1000;
d2=((int)(jiaodu*100))%1000/100;
}
d3=((int)(jiaodu*100))%1000%100/10;
d4=((int)(jiaodu*100))%1000%100%10;
fuzhi(d1,8);
fuzhi(d2,9);
fuzhi(d3,11);
fuzhi(d4,12);
d1=mc/1000;
d2=mc%1000/100;
d3=mc%1000%100/10;
d4=mc%1000%100%10;
d5=y;
fuzhi1(d1,2);
fuzhi1(d2,3);
fuzhi1(d3,4);
fuzhi1(d4,5);
fuzhi1(d5,9);
display();
m1=0;
} //********************************************************* //模式1实现倒立摆摆杆由低到最高点平衡功能,平衡后按下B6实现单方向旋转一周;具体再看; void moshi5(){
if(!flag)
{
if(j>j1)
{
jiaodu=(j-j1)*0.36;
Py=(int)PID_jisuang(jiaodu);
mc=zhuanghua(Py);
dianji(6,mc,1);
} else {
jiaodu=(j1-j)*0.36;y=1;
Py=(int)PID_jisuang(jiaodu);
mc=zhuanghua(Py);
dianji(6,mc,0);
y=0;} m1++;
if(m1==100)
{
d1=((int)(jiaodu*100))/1000;
d2=((int)(jiaodu*100))%1000/100;
d3=((int)(jiaodu*100))%1000%100/10;
d4=((int)(jiaodu*100))%1000%100%10;
fuzhi(d1,8);
fuzhi(d2,9);
fuzhi(d3,11);
fuzhi(d4,12);
d1=mc/1000;
d2=mc%1000/100;
d3=mc%1000%100/10;
d4=mc%1000%100%10;
d5=y;
fuzhi1(d1,2);
fuzhi1(d2,3);
fuzhi1(d3,4);
fuzhi1(d4,5);
fuzhi1(d5,9);
display();
m1=0;
}
} else {
a=6;
Pw=0;
while((Pw<200)&&(!flag))
{
A1=1;
}
Pw=0;
while((Pw<200)&&(!flag))
{
A1=0;
} } while(B6)
{
if(((j-j1)>=2)&&((j-j1)<=8))
{
a=50;A1=1;
//此为功能6
}
} else
{
if(j>j1)
jiaodu=(j-j1-5)*0.36;else
jiaodu=(j1-j-5)*0.36;
Py=(int)PID_jisuang(jiaodu);
mc=zhuanghua(Py);dianji(6,mc,0);
} }
//************************************************** //pid算法 struct _pid
{
float shijizhi;
//定义实际值
float piancha;
//定义偏差值
float piancha_1;
//定义上一个偏差值
float piancha_2;
//定义最上前的偏差值
float Kp,Ki,Kd;
//定义比例、积分、微分系数
}pid;//****************************************************** //数字增量式pid参数值的设定 void PID_init(){
pid.shijizhi=0.0;
pid.piancha=0.0;
pid.piancha_1=0.0;pid.piancha_2=0.0;
pid.Kp=2.0;pid.Ki=0.25;
pid.Kd=0.5;}
//********************************************************** //数字增量式pid计算误差 float PID_jisuang(float shuzhi){
pid.piancha=shuzhi;
zengliangzhi=pid.Kp*(pid.piancha-pid.piancha_1)+pid.Ki*pid.piancha+pid.Kd*(pid.piancha-2*pid.piancha_1+pid.piancha_2);
pid.shijizhi+=zengliangzhi;
pid.piancha_2=pid.piancha_1;
pid.piancha_1=pid.piancha;
return pid.shijizhi;} //*************************************************************** //电机调整角度模块 void dianji(int v,int s,char m){
} //****************************************** //pid控制量转为步进电机角度函数 int zhuanghua(float shijizhi1){
} float dianjizhuangtai=0.75*sin(shijizhi1);int dianjishuchu=(int)(dianjizhuangtai*127.4);return dianjishuchu;a=v;Pw=0;while(Pw
void lcd_w1(uchar ff)//1602写命令函数
{
rs=0;
//选择指令寄存器
rw=0;
//选择写
P0=ff;
//把命令字送入P2
deplay(5);
//延时一小会儿,让1602准备接收数据
en=1;
//使能线电平变化,命令送入1602的8位数据口
en=0;}
void lcd_w2(uchar dat)
//1602写数据函数
{
rs=1;
//选择数据寄存器
rw=0;
//选择写
P0=dat;
//把要显示的数据送入P2
deplay(5);
//延时一小会儿,让1602准备接收数据
en=1;
//使能线电平变化,数据送入1602的8位数据口
en=0;}
void lcd_init()
//1602初始化函数
{
lcd_w1(0x38);
//8位数据,双列,5*7字形
lcd_w1(0x0c);
//开启显示屏,关光标,光标不闪烁
lcd_w1(0x06);
//显示地址递增,即写一个数据后,显示位置右移一位
lcd_w1(0x01);
//清屏
}
void display(){
lcd_init();
//液晶初始化
lcd_w1(0x80);
//显示地址设为80H(即00H,)
if(1)
{
for(n=0;n<13;n++)
//将table1[]中的数据依次写入1602显示
{
lcd_w2(table[n]);
deplay(1);
}
lcd_w1(0x80+0x40);//重新设定显示地址
for(n=0;n<11;n++)
//将table1[]中的数据依次写入1602显示
{
lcd_w2(table1[n]);
deplay(1);
}
}
//***************************************** void fuzhi(uchar n2,uchar n3)
{
switch(n2){
case 0:table[n3]='0';break;case 1:table[n3]='1';break;case 2:table[n3]='2';break;case 3:table[n3]='3';break;case 4:table[n3]='4';break;case 5:table[n3]='5';break;
}
}
} case 6:table[n3]='6';break;case 7:table[n3]='7';break;case 8:table[n3]='8';break;case 9:table[n3]='9';break;default:break;
void fuzhi1(uchar n2,uchar n3)
{
switch(n2){
case 0:table1[n3]='0';break;case 1:table1[n3]='1';break;case 2:table1[n3]='2';break;case 3:table1[n3]='3';break;case 4:table1[n3]='4';break;case 5:table1[n3]='5';break;case 6:table1[n3]='6';break;case 7:table1[n3]='7';break;case 8:table1[n3]='8';break;case 9:table1[n3]='9';break;default:break;
}
}//*****************************************