倒立摆实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小车的稳定位置P1=—0.08
4.思考题
4.1计算 的特征值
答:
K =[
-14.1421 -12.1673 63.5849 11.8418]
实际:[-10-8.447153.6817 10.0889]
4.2
结论:固定Q33 ,增大Q11时,系统的上升和设置时间变短,但超调增加;而固定Q11 ,增大Q33的效果相反,系统的上升和设置时间变长,但是超调减少了,且改变Q11对系统的影响更大。
%生成方波信号
[U,t ]=gensig(`square`, 5 , Tmax , T);
U=0.1*U
%生成正弦波信号
%U=0.1*sin(2*pi*t);
%或[U,t ]=gensig(`sine`, 5 , Tmax , T);
U=0.1*U
%对lqr控制系统进行仿真
y=lsim(sysstate,U,t);
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');
系统状态矩阵A的特征值:
E =0
-0.0689
-5.4093
5.4042
传递函数的极点和状态方程的特征值的个数相同、大小相等。
实验二 倒立摆系统控制算法的状态空间法设计
1.实验目的
学习如何使用极点配置方法和最优控制方法设计状态反馈控制器。
2.实验内容
使用极点配置方法和最优控制方法设计状态反馈控制器,使得当在小车上施加 0.2m 的阶跃信号时,闭环系统的响应指标为:
(1) 杆角度 和小车位移x的稳定时间小于5秒
(2) x的上升时间小于2
(3) µ 的超调量小于20度(0.35弧度)
(4) 稳态误差小于4%.
3.Matlab源程序及程序执行结果
3.1Matlab源程序:
clear all;
M=1.32;
m=0.132;
b=0.1;l=0.27;I=0.0032;
(2)正弦波信号:频率0.2Hz,幅值0.05m;
(3)锯齿波信号:频率0.2Hz,幅值0.05m。
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;
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=5;
%生成阶跃信号
%t=[0:T: Tmax];
%U=0.1*ones(size(t));
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')
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];
答:相等。
由系统直接计算传递函数,得:
由状态方程计算传递函数,得:
7.2 通过仿真表明开环系统是否稳定?请通过极点(特征值)理论来分析。
答:利用Matlab计算传递函数gspo极点以及状态方程的特征值如下,
传递函数gspo的极点:
Po =0
5.4042
-5.4093
-0.0689
系统状态矩阵A的特征值:
可以做以下推论:固定一个参数不变时,减小Q11和增大Q33有类似的效果,而减小Q33和增大Q11有类似的效果
实验三研究倒立摆系统对信号的跟踪
1.实验目的
观察倒立摆对于不同输入信号的跟踪情况,加深对状态空间和状态反馈的理解。
2.实验内容
在平衡位置,分别设定下列三种信号,记录倒立摆的运动情况:
(1)方波信号:频率0.2Hz,幅值0.05m;
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];
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];
box on;
xlabel('t/s');
ylabel('Position/m or Angle/rad');
legend ('Car Position','Pendulum Angle');
3.2Matlab程序的执行结果和仿真图形
3.2.1用最优控制方法求反馈向量
系统的响应曲线如下图2.1所示:
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)
倒立摆控制系统实验报告
姓名
学号
实验台:3号
指导老师:***
2015年5月
实验一 建立一级倒立摆的模型
1.实验目的
建立一级倒立摆系统的数学模型,并进行Matlab仿真。
2.实验内容
写出系统的传递函数与状态空间方程,并用Matlab进行仿真。
3.实验步骤
实际系统参数如表1.1所示。
表1.1: 系统参数表
D=0;
Zeta=0.7l;
Wn=6;
Pp=conv ([ 1 2*zeta*wn wn^2],[1 2*zeta*wn*3 wn^2*9 ]);
P=root(pp);
K=acker(A,B,P);
R=1;
Q1=200;
Q3=100;
Q=[Q1 0 0 0;0 0 0 0;0 0 Q3 0;0 0 0 0];
图2.1 系统仿真的响应曲线
3.2.2用Ackermann公式求反馈向量K
K =[
-579.3561 -180.4741 500.9511 81.2049]
3.2.3状态反馈后的系统sysstate
sysstate=ss(Ac,Bc,C,D)
a =
x1 x2 x3 x4
x1 0 1 0 0
x2 10.45 8.823 -46.28 -8.753
6.系统开环响应曲线
6.1 由系统传递函数所得系统开环脉冲响应和阶跃响应
由系统传递函数求得开环脉冲响应曲线如下图1.1所示,开环阶跃响应曲线如下图1.2所示
图1.1 开环脉冲响应曲线
图1.2 开环阶跃响应曲线
6.2 由系统状态方程所得系统开环脉冲响应和阶跃响应
由系统状态方程所得开环脉冲响应曲线如下图1.3所示,开环阶跃响应曲线如下图1.4所示。
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]);
xlawk.baidu.comel('t/s');
ylabel('Position/m or Angle/rad');
可见,由实际系统的状态空间方程转化为的传递函数与仿真的传递函数相一致。
5.3传递函数极点和系统状态矩阵A的特征值:
传递函数gspo的极点:
Po =0
5.4042
-5.4093
-0.0689
系统状态矩阵A的特征值:
E =0
-0.0689
-5.4093
5.4042
可见A的特征值与传递函数gspo的极点一致。
A=
x1 x2 x3 x4
x1 0 1 0 0
x2 0 -0.07391 0.7175 0
x3 0 0 0 1
x4 0 -0.2054 29.23 0
B=
u1
x1 0
x2 0.7391
x3 0
x4 2.054
C=
x1 x2 x3 x4
y1 1 0 0 0
y2 0 0 1 0
D=
u1
y1 0
y2 0
5.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);
图1.3 开环脉冲响应曲线
图1.4 开环阶跃响应曲线
由图可看出系统不稳定,响应趋于无穷,二是由状态空间方程得到的响应曲线与由传递函数得到的响应曲线是相同的,也就是说,两者在描述系统特性上是等价的。那么由状态空间方程出发,设计控制方法也是可行的。
7、思考题
7.1 由状态空间方程转化为传递函数,是否与直接计算传递函数相等?
实验步骤如下:
(1)将数据代入公式,求出系统的传递函数;
(2)将数据代入公式,求出系统的状态空间方程;
(3)将实际系统的状态空间方程转化为传递函数,与1进行比较
(4)求出传递函数的极点和状态方程A的特征值,进行比较;
(5)进行系统开环脉冲响应和阶跃响应的Matlab仿真。
4.实验代码
系统传递函数gs(输出为摆杆角度)和gspo(输出为小车位置)构建:
axis([0 2.5 0 80]);
legend('Car Position','Pendulum Angle');
5.系统的传递函数和状态方程
5.1给出系统的传递函数和状态方程
在Matlab的Command Window内运行上面的源程序,会得出系统的传递函数
以及状态方程sys(A,B,C,D):
figure(1);
hold on;
E =0
-0.0689
-5.4093
5.4042
存在极点含有正实部,表明开环系统不稳定。
7.3传递函数的极点和状态方程的特征值的个数、大小是否相等?如果不相等,请解释其原因。
答:传递函数的极点和状态方程的特征值的个数、大小是相等的
传递函数gspo的极点:
Po =0
5.4042
-5.4093
-0.0689
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');
x3 0 0 0 1
x4 29.05 24.52 -101.4 -24.33
b =
u1
x1 0
x2 -10.45
x3 0
x4 -29.05
c =
x1 x2 x3 x4
y1 1 0 0 0
y2 0 0 1 0
d =
u1
y1 0
y2 0
3.2.4
对lqr控制系统进行仿真结果,小车位置
从上图可以看出我们的系统的存在稳定误差.小车最后的平衡位置并不在0位置上 而是在—0.08附近,从小车的平衡位置看出小车最后停止在平衡位置偏右的地方。
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);
相关文档
最新文档