倒立摆系统的建模及Matlab 仿真
1.系统的物理模型
考虑如图(1)面内运动的二维问题。
图(1)倒立摆系统
假定倒立摆系统的参数如下。 摆杆的质量:m=
摆杆的长度:l =1m 小车的质量: M=1kg 重力加速度:g=9.8m/2s 摆杆的质量在摆杆的中心。
设计一个控制系统,使得当给定任意初始条件(由干扰引起)时,最大超调量
≤10%,调
节时间ts ≤4s ,通过小车的水平运动使倒立摆保持在垂直位置。
2.系统的数学模型
建立倒置摆的运动方程并将其线性化。
为简化问题,在数学模型中首先假设:1)摆杆为刚体;2)忽略摆杆与支点之间的摩擦;3)忽略小车与接触面间的摩擦。
设小车瞬时位置为z,摆心瞬时位置为(θsin l z +),在u 作用下,小车及摆均产生加速远动,根据牛顿第二定律,在水平直线远动方向的惯性力应与u 平衡,于是有
u l z dt
d m dt z d M =++)sin (22
22θ
即: u ml ml z m M =-++θθθθsin cos )(2
① 绕摆轴转动的惯性力矩与重力矩平衡,因而有
θθθsin cos )sin (22mgl l l z dt d m =???
?
???+ 即: θθθθθθθsin cos sin cos cos 22g l l z =-+
② 以上两个方程都是非线性方程,为求得解析解,需作线性化处理。由于控制的目的是保持倒立摆直立,在试驾合适的外力条件下,假定θ很小,接近于零时合理的,则1cos ,sin ≈≈θθθ,且可
忽略θθ
2 项。于是有 u ml z m M =++θ
)( ③ θθg l z =+
④ 联立求解可得
u Ml Ml m M u M
M mg z
1)(1
-+=+-=θθθ
列写系统的状态空间表达式。
选取系统变量4321,,,x x x x , []T
x x x x x 4321,,,=则
u Ml
x Ml m M x
x x u M
x M mg x x x 1
)(134433221-+==+-==
即
[]Cx
x x y Bu Ax u Ml M x Ml
g m M M
mg
z z dt d
x
===+=??????
?
???????-+?????????????
?+-
=????????????=000110100)(0
010
0000000
1
1θθ 代入数据计算得到:
[][]0,0001,1010,01100
1000010000
1
0==-=?
?
???
?
???
???-=D C B A T 3.设计控制器
判断系统的能控性和稳定性
[
]
?????
????
???----==01101110100101101
032B A B
A A
B B
Q k ,rank(k Q )=4,故被控对象完全可控 由特征方程 0)11(22=-=-λλλA I 解得特征值为 0,0,11±。出现大于零的特征值,故被控对象不稳定
确定希望的极点
希望的极点n=4,选其中一对为主导极点1s 和2s ,另一对为远极点,认为系统性能主要由主导极点决定,远极点只有微小影响。根据二阶系统的关系式,先确定主导极点
1.02
1≤=--
?πξ
σe p 可得59.0≥ξ,于是取6.0=ξ;取误差带02.0=?有n
s t ξω4
=
,则 1.67=n ω,
闭环主导极点为22,11ξξω-±-=j s n =±,远极点选择使它和原点的距离大于主导极点与原点距离的5倍,取154,3-=s
采用状态反馈方法使系统稳定并配置极点
状态反馈的控制规律为kx u -=,[]32
1
k k k k k =;状态反馈系统的状态方程为
Bv x BK A x
+-=)( ,其特征多项式为 0122033141010)11()()(k k k k k k BK A I ----+-+=--λλλλλ ⑤
希望特征多项式为
3692.49964.28632)8.01)(8.01()15(2342++++=++-++λλλλλλλj j ⑥
比较以上两式系数,解得状态反馈矩阵[]92.8154.33492.499.36----=k
4.设计全维观测器
判断系统的能观性
[]
?
?
????
???
???--==1000
01000010
00
1)()(3
2C A C A C A C
Q T T T g ,rank(g Q )=4,故被控对象完全可观 确定观测器的反馈增益
全维观测器的动态方程为GCx Bv x GC A x
++-= )(;其特征多项式为 )11()11()11()(312021304g g g g g g GC A I --+--+-++=--λλλλλ ⑦
取观测器的希望极点为:-45,-45,-3+3j ,-3-3j ;则希望特征多项式为
3465013770258396)8.01)(8.01()15(2342++++=++-++λλλλλλλj j ⑧
比较以上两式系数,解得观测器反馈矩阵[]T
G 6498414826
2594
96--=
5.降维状态观测器的设计
建立倒置摆三维子系统动态方程
设小车位移z 由输出传感器测量,因而无需估计,可以设计降维(三维)状态观测器,通过重
新排列被控系统变量的次序,把需由降维状态观测器估计的状态变量与输出传感器测得的状态变量分离开。将z 作为第四个状态变量,则被控系统的状态方程和输出方程变换为
[]???
?
?
???????=?????
???????-+???????????????????
???
??-=????????????z z y u z z
z z dt d θθθ
θθθ 10000101000100110010
00010 ⑨
简记为:
[]?
?
?
???==??
????+????????????=??????21121212221
1211210x x I y y u b b x x A A A A x x
式中
[]
T z
x θθ =1,????
?
?????-=011
10
0010
11A ,[]T A 00012
=,T b ]101[1-= y z x ==2,[]T
A 00121=,21A =0,02=b ,11=I
被控系统的n-q 维子系统动态方程的一般形式为
v x A x
+=1111 ,121x A z =' 式中u b u b y A v 1121=+=,z y u b y A y
z ==--='222 z '为子系统输出量。故倒置摆三维子系统动态方程为
[]????
??????='??????????-+????????????????????-=??????????θθθθθθ z
z u z z
dt d 0011010110100010
.判断子系统的可观测性
A1=[0 -1 0;0 0 1;0 11 0];C1= [1 0 0];
Qg1=obsv(A1,C1);r=rank(Qg1)
运行Matlab 程序;结果为r=3,故该子系统可观测 降维状态观测器动态方
程的一般形式为
()()()[]y h x
y A h A h A h A u b h b A h A +=-+-+-+-=ωωω122122*********
式中h=[]T
h h h 210
。考虑被控对象参数,单倒置摆降维观测器动态方程的一般形式为
y h h h x y h h h h h h h h u h h h ??
??
?
?????+=????
??????+-+---+??
???
?????-+???????
???----=21011202101202
10111010111001ωωω
确定三维状态观测器的反馈矩阵h
三维状态观测器的特征多项式为
()()()20120321111111h h h h A h A I --+--++=--λλλλ
设希望的观测器闭环极点为-45,-3+3j ,-3-3j ,则希望特征多项式为
()()()8102885133334523+++=-++++λλλλλλj j
比较以上两式系数,解得h=[]1371-29951-
故所求三维状态观测器的动态方程为
y y x x y u ?????
?
??????--+??
???????
???=??????=??
??
??????-+??????????-+??????????--=113712995100000100001000016663213878230210101113711029901511ωωω 仿真分析
源程序
通过Matlab 对用全维状态观测器实现状态反馈的倒置摆系统进行仿真分析,下面是文件名为
的源程序
%倒立摆系统建模分析
%a)判断系统能控性和能观性
clear all;
clc
A=[0 1 0 0;0 0 -1 0;0 0 0 1;0 0 11 0];
B=[0;1;0;-1];
C=[1 0 0 0];
D=0;
Uc=ctrb(A,B);rc=rank(Uc);
n=size(A);
if rc==n
disp('The system is controlled.')
elseif rc disp('The system is uncontrolled.') end Vo=obsv(A,C); ro=rank(Vo); if ro==n disp('The system is observable.') elseif ro~=n disp('The system is no observable.') end %b)判断系统稳定性 P=poly(A),v=roots(P) Re=real(v); if(length(find(Re>0))~=0) disp('The system is unstable and the ubstable poles are:') v(find(Re>0)) else disp('The system is stable!'); end % c)极点配置与控制器-全维状态观测器设计与仿真 pc=[-1+*j,*j,-15,-15];po=[-45 -45 -3+3*j -3-3*j]; K=acker(A,B,pc),G=acker(A',C',po)' Gp=ss(A,B,C,D); %将受控过程创建为一个LTI对象 disp('受控对象的传递函数模型:'); H=tf(Gp) Af=A-B*K-G*C; disp('观测器——控制器模型:'); Gc=ss(Af,-G,-K,0) %将观测器-控制器创建为一个LTI对象 disp('观测器——控制器的极点:'); f_poles=pole(Gc) GpGc=Gp*Gc; %控制器和对象串联 disp('观测器——控制器与对象串联构成的闭环系统模型:'); Gcl=feedback(GpGc,1,-1) %闭环系统 disp('闭环系统的极点和零点:'); c_poles=pole(Gcl) c_zeros=tzero(Gcl) lfg=dcgain(Gcl) %低频增益 N=1/lfg % 归一化常数 T=N*Gcl; %将N与闭环系统传递函数串联 x0=[100 10 30 10 0 0 0 0];%初始条件向量 t=[0::1]'; %时间列向量 r=0*t; %零参考输入 [y t x]=lsim(T,r,t,x0); %初始条件仿真 plot(t,x(:,1:4),'-.',t,x(:,5:8)) %由初始条件引起的状态响应title('\bf状态响应') legend('x1','x2','x3','x4','x1hat','x2hat','x3hat','x4hat') figure(2) step(T) title('\bf阶跃响应') figure(3) impulse(T) title('\bf脉冲响应') 程序运行结果 The system is controlled. The system is observable. P = 1 0 -11 0 0 v = The system is unstable and the ubstable poles are: ans = K = G = 96 2594 -14826 -64984 受控对象的传递函数模型 Transfer function: s^2 - s - 10 ----------------------- s^4 - 11 s^2 观测器——控制器模型: a = x1 x2 x3 x4 x1 -96 1 0 0 x2 -2557 x3 +004 0 0 1 x4 +004 b = u1 x1 -96 x2 -2594 x3 +004 x4 +004 c = x1 x2 x3 x4 y1 d = u1 y1 0 Continuous-time model. 观测器——控制器的极点: f_poles = +002 * + - 观测器——控制器与对象串联构成的闭环系统模型: a = x1 x2 x3 x4 x5 x1 0 1 0 0 0 x2 0 0 -1 0 x3 0 0 0 1 0 x4 0 0 11 0 x5 96 0 0 0 -96 x6 2594 0 0 0 -2557 x7 +004 0 0 0 +004 x8 +004 0 0 0 +004 x6 x7 x8 x1 0 0 0 x2 x3 0 0 0 x4 x5 1 0 0 x6 x7 0 0 1 x8 b = u1 x1 0 x2 0 x3 0 x4 0 x5 -96 x6 -2594 x7 +004 x8 +004 c = x1 x2 x3 x4 x5 x6 x7 x8 y1 1 0 0 0 0 0 0 0 d = u1 y1 0 Continuous-time model. 闭环系统的极点和零点: c_poles = + - + - c_zeros = lfg = N = 由控制器——全维状态观测器实现的倒立摆系统在初始条件下引起的状态变量的响应、输出变量的阶跃响应和脉冲响应如下图 图(2)状态响应()t x (虚线)和()t x (实线) 图(3)阶跃响应()t y 图(4)脉冲响应()t y