预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

倒立摆系统的建模及Matlab仿真 1.系统的物理模型 考虑如图(1)所示的倒立摆系统。图中,倒立摆安装在一个小车上。这里仅考虑倒立摆在图面内运动的二维问题。 图(1)倒立摆系统 假定倒立摆系统的参数如下。 摆杆的质量:m=0.1g 摆杆的长度:l=1m小车的质量: M=1kg重力加速度:g=9.8m/ 摆杆的质量在摆杆的中心。 设计一个控制系统,使得当给定任意初始条件(由干扰引起)时,最大超调量≤10%,调节时间ts≤4s,通过小车的水平运动使倒立摆保持在垂直位置。 2.系统的数学模型 2.1建立倒置摆的运动方程并将其线性化。 为简化问题,在数学模型中首先假设:1)摆杆为刚体;2)忽略摆杆与支点之间的摩擦;3)忽略小车与接触面间的摩擦。 设小车瞬时位置为z,摆心瞬时位置为(),在u作用下,小车及摆均产生加速远动,根据牛顿第二定律,在水平直线远动方向的惯性力应与u平衡,于是有 即:① 绕摆轴转动的惯性力矩与重力矩平衡,因而有 即:② 以上两个方程都是非线性方程,为求得解析解,需作线性化处理。由于控制的目的是保持倒立摆直立,在试驾合适的外力条件下,假定θ很小,接近于零时合理的,则,且可忽略项。于是有 ③ ④ 联立求解可得 2.2列写系统的状态空间表达式。 选取系统变量,则 即 代入数据计算得到: 3.设计控制器 3.1判断系统的能控性和稳定性 ,rank()=4,故被控对象完全可控 由特征方程解得特征值为0,0,。出现大于零的特征值,故被控对象不稳定 3.2确定希望的极点 希望的极点n=4,选其中一对为主导极点和,另一对为远极点,认为系统性能主要由主导极点决定,远极点只有微小影响。根据二阶系统的关系式,先确定主导极点 可得,于是取;取误差带,则,闭环主导极点为=-10.8j,远极点选择使它和原点的距离大于主导极点与原点距离的5倍,取 3.3采用状态反馈方法使系统稳定并配置极点 状态反馈的控制规律为,;状态反馈系统的状态方程为,其特征多项式为 ⑤ 希望特征多项式为 ⑥ 比较以上两式系数,解得状态反馈矩阵 4.设计全维观测器 4.1判断系统的能观性 ,rank()=4,故被控对象完全可观 4.2确定观测器的反馈增益 全维观测器的动态方程为;其特征多项式为 ⑦ 取观测器的希望极点为:-45,-45,-3+3j,-3-3j;则希望特征多项式为 ⑧ 比较以上两式系数,解得观测器反馈矩阵 5.降维状态观测器的设计 5.1建立倒置摆三维子系统动态方程 设小车位移z由输出传感器测量,因而无需估计,可以设计降维(三维)状态观测器,通过重新排列被控系统变量的次序,把需由降维状态观测器估计的状态变量与输出传感器测得的状态变量分离开。将z作为第四个状态变量,则被控系统的状态方程和输出方程变换为 ⑨ 简记为: 式中 ,,, ,,=0,, 被控系统的n-q维子系统动态方程的一般形式为 , 式中, 为子系统输出量。故倒置摆三维子系统动态方程为 5.2.判断子系统的可观测性 A1=[0-10;001;0110];C1=[100]; Qg1=obsv(A1,C1);r=rank(Qg1) 运行Matlab程序;结果为r=3,故该子系统可观测 降维状态观测器动态方程的一般形式为 式中h=。考虑被控对象参数,单倒置摆降维观测器动态方程的一般形式为 5.3确定三维状态观测器的反馈矩阵h 三维状态观测器的特征多项式为 设希望的观测器闭环极点为-45,-3+3j,-3-3j,则希望特征多项式为 比较以上两式系数,解得h= 故所求三维状态观测器的动态方程为 6.Matlab仿真分析 6.1源程序 通过Matlab对用全维状态观测器实现状态反馈的倒置摆系统进行仿真分析,下面是文件名为Inversion_pendulum_system.m的源程序 %倒立摆系统建模分析 %a)判断系统能控性和能观性 clearall; clc A=[0100;00-10;0001;00110]; B=[0;1;0;-1]; C=[1000]; D=0; Uc=ctrb(A,B);rc=rank(Uc); n=size(A); ifrc==n disp('Thesystemiscontrolled.') elseifrc<n disp('Thesystemisuncontrolled.') end Vo=obsv(A,C); ro=rank(Vo); ifro==n disp('Thesystemisobservable.') elseifro~=n disp('Thesystemisnoobservable.') end %b)判断系统稳定性 P=poly(A),v=roots(P) Re=real(v); if(length(find(Re>0))~=0) d