实验报告
姓名:
学号:
同组人:
***********
2014年4月
实验一 建立一级倒立摆的模型
1.实验目的
建立一级倒立摆系统的数学模型,并进行Matlab仿真。
2.实验内容
写出系统的传递函数与状态空间方程,并用Matlab进行仿真。
3.实验步骤
实际系统参数如表1.1所示。
表1.1: 系统参数表
实验步骤如下:
(1)将数据代入公式,求出系统的传递函数;
(2)将数据代入公式,求出系统的状态空间方程;
(3)将实际系统的状态空间方程转化为传递函数,与1进行比较
(4)求出传递函数的极点和状态方程A的特征值,进行比较;
(5)进行系统开环脉冲响应和阶跃响应的Matlab仿真。
4.实验代码
系统传递函数gs(输出为摆杆角度)和gspo(输出为小车位置)构建:
M=1.32;m=0.132;b=0.1;l=0.27;I=0.0032;g=9.8;T=0.02;
q=(M+m)*(I+m*l^2)-(m*l)^2
num=[m*l/q 0];
den=[1 b*(I+m*l^2)/q -(M+m)*m*g*l/q -b*m*g*l/q];
gs=tf(num,den)
numpo=[(I+m*l^2)/q 0 -m*g*l/q];
dempo=[1 b*(I+m*l^2)/q -(M+m)*m*g*l/q -b*m*g*l/q 0];
gspo=tf(numpo,dempo)
相应的状态方程为:
p=I*(M+m)+M*m*l^2;
A=[0 1 0 0;0 -(I+m*l^2)*b/p m^2*g*l^2/p 0;0 0 0 1;0 -m*b*l/p m*g*l*(M+m)/p 0];
B=[0;(I+m*l^2)/p;0;m*l/p];
C=[1 0 0 0;0 0 1 0];
D=0;
sys=ss(A,B,C,D)
实际系统仿真:
1)由系统传递函数仿真系统开环脉冲响应:
t=0:T:5;
y1=impulse(gs,t);
y2=impulse(gspo,t);
figure(1);
plot(t,y2,'b',t,y1,'r');
xlabel('t/s');
ylabel('Position/m or Angle/rad');
axis([0 2 0 80]);
legend ('Car Position','Pendulum Angle');
2)由状态方程求系统开环脉冲响应:
t=0:T:5;
y=impulse(sys,t);
figure(2);
plot(t,y(:,1),t,y(:,2),'r');
xlabel('t/s');
ylabel('Position/m or Angle/rad');
axis([0 2 0 80]);
legend('Car Position','Pendulum Angle');
将状态方程转换为传递函数gs0:
gs0=tf(sys);
3)由传递函数求系统的开环阶跃响应:
t=0:T:5;
y1=step(gs,t);
y2=step(gspo,t);
figure(3);
plot(t,y2,'b',t,y1,'r');
axis([0 2.5 0 80]);
xlabel('t/s');
ylabel('Position/m or Angle/rad');
legend('Car Position','Pendulum Angle');
4)由状态空间方程求系统的开环阶跃响应:
t=0:T:5;
y=step(sys,t);
figure(4);
plot(t,y(:,1),t,y(:,2),'r');
xlabel('t/s');
ylabel('Position/m or Angle/rad');
axis([0 2.5 0 80]);
legend('Car Position','Pendulum Angle');
5.系统的传递函数和状态方程
5.1给出系统的传递函数和状态方程
在Matlab的Command Window内运行上面的源程序,会得出系统的传递函数
以及状态方程sys(A,B,C,D):
,
5.2将实际系统的状态空间方程转化为传递函数:
可见,由实际系统的状态空间方程转化为的传递函数与仿真的传递函数相一致。
5.3传递函数极点和系统状态矩阵A的特征值:
传递函数gspo的极点:
Po = 0
5.4042
-5.4093
-0.06
系统状态矩阵A的特征值:
E = 0
-0.06
-5.4093
5.4042
可见A的特征值与传递函数gspo的极点一致。
6.系统开环响应曲线
6.1 由系统传递函数所得系统开环脉冲响应和阶跃响应
由系统传递函数求得开环脉冲响应曲线如下图1.1所示,开环阶跃响应曲线如下图1.2所示
图1.1 开环脉冲响应曲线
图1.2 开环阶跃响应曲线
6.2 由系统状态方程所得系统开环脉冲响应和阶跃响应
由系统状态方程所得开环脉冲响应曲线如下图1.3所示,开环阶跃响应曲线如下图1.4所示。
图1.3 开环脉冲响应曲线
图1.4 开环阶跃响应曲线
由图可看出系统不稳定,响应趋于无穷,二是由状态空间方程得到的响应曲线与由传递函数得到的响应曲线是相同的,也就是说,两者在描述系统特性上是等价的。那么由状态空间方程出发,设计控制方法也是可行的。
7、思考题
7.1 由状态空间方程转化为传递函数,是否与直接计算传递函数相等?
答:相等。
由系统直接计算传递函数,得:
由状态方程计算传递函数,得:
7.2 通过仿真表明开环系统是否稳定?请通过极点(特征值)理论来分析。
答:利用Matlab计算传递函数gspo极点以及状态方程的特征值如下,
传递函数gspo的极点:
Po =[0 5.4042 -5.4093 -0.06]
系统状态矩阵A的特征值:
E = [0 -0.06 -5.4093 5.4042]
存在极点含有正实部,表明开环系统不稳定。
7.3传递函数的极点和状态方程的特征值的个数、大小是否相等?如果不相等,请解释其原因。
答:传递函数的极点和状态方程的特征值的个数、大小是相等的
传递函数gspo的极点:
Po =[0 5.4042 -5.4093 -0.06]
系统状态矩阵A的特征值:
E = [0 -0.06 -5.4093 5.4042]
可见A的特征值与传递函数gspo的极点大小相等、个数一致。
实验二 倒立摆系统控制算法的状态空间法设计
1 .实验目的
学习如何使用状态空间法设计系统的控制算法。
2 .实验内容
用状态空间法设计控制器,使得当在小车上施加 0.2m 的阶跃信号时,闭环系统的响应指标为:
(1) 杆角度µ 和小车位移x的稳定时间小于5秒
(2) x的上升时间小于2秒2
(3) µ 的超调量小于20度(0.35弧度)
(4) 稳态误差小于4%.
3. Matlab源程序及程序执行结果
3.1 Matlab源程序:
clear all;
M=1.32;m=0.132;b=0.1;l=0.27;I=0.0032;g=9.8;T=0.02;
p=I*(M+m)+M*m*l^2;
A=[0 1 0 0;0
-(I+m*l^2)*b/p m^2*g*l^2/p 0;0 0 0 1;0 -m*b*l/p m*g*l*(M+m)/p 0];
B=[0;(I+m*l^2)/p;0;m*l/p];
C=[1 0 0 0;0 0 1 0];
D=0;
R=1;Q1=200;Q3=100;Q=[Q1 0 0 0;0 0 0 0;0 0 Q3 0;0 0 0 0];
K=lqr(A,B,Q,R)
Ac=A-B*K;
Bc=B*K(1);
sysstate=ss(Ac,Bc,C,D)
t=0:T:5;
U=0.2*ones(size(t));y=lsim(sysstate,U,t);
figure(1);
hold on;
plot(t,y(:,1),t,y(:,2),'r')
box on;
xlabel('t/s');
ylabel('Position/m or Angle/rad');
legend ('Car Position','Pendulum Angle');
E=eig(Ac)
3.2 Matlab程序的执行结果和仿真图形
3.2.1当时,执行结果为:
系统的响应曲线如下图2.1所示:
图2.1 系统仿真的响应曲线(Q1=200,Q2=100)
3.2.2当Q_1=90,Q_3=100时,执行结果为:
K=[-9.4868 -9.2567 56.2879 10.4228]
系统的响应曲线如下图2.2所示:
图2.2系统仿真的响应曲线(Q1=90,Q2=100)
由仿真数据可知,系统阶跃响应性能指标如下:
Q1/Q3 | 位移上升时间 | 位移调节时间 | 角度设置时间 | 角度超调量 |
200/100 | 1.68s | 2.98s | 2.25s | 4.2% |
90/100 | 1.56s | 3.12s | 2.56 | 3.6% |
实验Simulink结构图:
4.1无扰动时响应结果
4.1.1当Q1=200;Q3=100时
图2.3无输入下小车实际响应曲线(Q1=200,Q2=100)
小车的稳定位置P1=-900
图2.4 无输入下摆杆实际响应曲线(Q1=200,Q2=100)
摆杆的稳定角度Pend1=-1200
4.2阶跃输入时系统的响应结果
4.2.1当Q1=200;Q3=100时
图2.5 小车实际阶跃响应曲线(Q1=200,Q2=100)
P2=-16333.33
小车的稳定位置:P2-P1=-16333.33-(-900)=-15433.33
图2.6 摆杆实际阶跃响应曲线(Q1=200,Q2=100)
Pend2=-1200
4.2.2当 Q1=90,Q2=100时
图2.7 小车实际阶跃响应曲线(Q1=90,Q2=100)
P2=-17666.67
图2.8 摆杆实际阶跃响应曲线(Q1=90,Q2=100)
Pend2=-1200
4.3不同 K 值下的实际系统的响应曲线以及四项响应指标
4.3.1当 Q1=200,Q2=100时
图2.9小车实际响应曲线(Q1=200,Q2=100)
位置:Ts=51/30/1000*8.8*500=7.48s
Tr=12/30/1000*8.8*500=1.76s
图2.10 摆杆实际响应曲线(Q1=200,Q2=100)
角度P.O=(2/15)*200/1200=2.2%
Ts=72/30/1000*8.8*500=10.56s
4.3.2 当Q1=90,Q2=100时
图2.11小车实际响应曲线(Q1=90,Q2=100)
位置: Ts=38/30*500*8.8/1000=5.573s
Tr=4/30*500*8.8/1000=0.58s
图2.12摆杆实际响应曲线(Q1=90,Q2=100)
角度:Ts=60/30/1000*8.8*500=8.21s
P.O.=1.5/15*200/1200=1.67%
由仿真数据可知,系统阶跃响应性能指标如下:
Q1/Q3 | 位移上升时间 | 位移调节时间 | 角度设置时间 | 角度超调量 |
200/100 | 1.76s | 7.48s | 10.56s | 2.2% |
90/100 | 0.58s | 5.57s | 8.21 | 1.67% |
4.1计算的特征值
答:
ans =
-5.6236 + 1.8114i
-5.6236 - 1.8114i
-2.1284 + 1.9043i
-2.1284 - 1.9043i
ans =
-5.6657 + 1.8070i
-5.6657 - 1.8070i
-1.7030 + 1.5812i
-1.7030 - 1.5812i
4.2 通过仿真分析Q11和Q33的大小对控值效果的影响
4.2.1固定Q33,改变Q11=300 (红)、Q11=90(黄)与原值进行对比
4.2.1固定Q11,当Q33=300(红)、Q33=500(黄)与原图对比
结论:由图可以看到,固定Q33 ,增大Q11时,系统的上升和设置时间变短,但超调增加;而固定Q11 ,增大Q33的效果相反,系统的上升和设置时间变长,但是超调减少了,且改变Q11对系统的影响更大。
可以做以下推论:固定一个参数不变时,减小Q11和增大Q33有类似的效果,而减小Q33和增大Q11有类似的效果
实验三 研究倒立摆系统对信号的跟踪
1.实验目的
观察倒立摆对于不同输入信号的跟踪情况,加深对状态空间和状态反馈的理解。
2. 实验内容
在平衡位置,分别设定下列三种信号,记录倒立摆的运动情况:
(1)方波信号:频率0.2Hz,幅值0.05m;
(2)正弦波信号:频率0.2Hz,幅值0.05m;
(3)锯齿波信号:频率0.2Hz,幅值0.05m。
3. 模型matlab仿真结果
3.1 matlab程序
%求系统状态空间参数
p=I*(M+m)+M*m*l^2;
A=[0 1 0 0;0 -(I+m*l^2)*b/p m^2*g*l^2/p 0;0 0 0 1;0 -m*b*l/p m*g*l*(M+m)/p 0]; B=[0;(I+m*l^2)/p;0;m*l/p]; C=[1 0 0 0;0 0 1 0];
D=0;
%求反馈向量K
R=1; Q1=400; Q3=400; Q=[Q1 0 0 0;0 0 0 0;0 0 Q3 0;0 0 0 0];
K=lqr(A,B,Q,R);
%求状态反馈后的系统sysstate
Ac=A-B*K;
Bc=B*K(1); %输入变换使输入与反馈的量纲匹配
sysstate=ss(Ac,Bc,C,D);
%%%信号模拟发生器
T=0.001; Tmax=10;
t=[0:T: Tmax];
%生成阶跃信号
%U=0.05*ones(size(t));
%生成方波信号
U=0.05.*square(2*pi*0.2*t,50);
%生成正弦波信号
%U=0.05*sin(2*pi*0.2*t);
%生成锯齿波信号
%U=0.05*sawtooth(2*pi*0.2*t,0);
%对lqr控制系统进行仿真
y=lsim(sysstate,U,t);
plot(t,y(:,1),t,y(:,2),t,U);
grid on;
axis([0 10 -0.1 0.1]);
xlabel('t/s');
ylabel('Position/m or Angle/rad');
legend('Car Position','PendulumAngle','Input');
3.2 Matlab的仿真图形(三种扰动下的响应曲线)
3.2.1方波干扰的响应曲线:
图3.1方波干扰的响应曲线
3.2.2正弦波干扰的响应曲线:
图3.2 正弦波干扰的响应曲线
3.2.3锯齿波干扰的响应曲线:
图3.3锯齿波干扰的响应曲线
4.给出实际系统的响应曲线
4.1方波信号实际系统响应曲线:
图3.4方波信号实际系统响应位置曲线
图3.5 方波信号实际系统响应角度曲线
4.2正弦波信号实际系统响应曲线:
图3.6正弦波信号实际系统响应位置曲线
图3.7 正弦波信号实际系统响应角度曲线
4.3锯齿波信号实际系统响应曲线:
图3.8 锯齿波信号实际系统响应位置曲线
图3.9 锯齿波信号实际系统响应角度曲线
5.思考题
(1)仿真曲线和实际响应曲线是否大致相同?
答:因为仿真所用的输入信号频率与实际输入信号的频率不同,导致仿真去线不可能完全一致。但对于同一类型输入信号而言,仿真曲线和实际享有曲线大致相同。
(2)请说明原系统是否完全可控?
答:系统状态空间模型为:
其中:
,,
,
则:能控性矩阵为:;
;
;
满秩,故系统完全可控。
实验体会和收获
此次实验,使我更加理解倒单摆的建模原理,加深了对状态空间方程的理解。认识到了matlab在控制方面及数据处理方面的强大功能。
由于事先预习过实验内容,并且有老师的耐心指导,此次实验比较成功。当然,实验中也遇到了一些问题,实验中时有起摆失败,此时不能盲目修改参数,而是要由理论指导,分析原因,再改变参数来使起摆成功。其次是simulink中示波器坐标关系的转换,直接导致了最后分析处理数据的准确性。
这次实验,让理论与实践相结合,加强了我的动手能力和团队合作能力。
最后,感谢老师的耐心指导。