现代控制理论实验报告.docx
- 文档编号:11805062
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:14
- 大小:371.34KB
现代控制理论实验报告.docx
《现代控制理论实验报告.docx》由会员分享,可在线阅读,更多相关《现代控制理论实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
现代控制理论实验报告
一、目的要求
1、学习系统状态空间模型的建立方法、了解状态空间模型与传递函数相互转换的方法;
2、通过编程、上机调试,掌握系统状态空间模型与传递函数相互转换的方法。
3、根据状态空间模型分析系统由初始状态和外部激励所引起的响应;
4、通过编程、上机调试,掌握系统运动的分析方法。
5、基于对象的一个连续时间状态空间模型,导出其相应的离散化状态空间模型;
6、通过编程、上机调试,掌握离散系统运动分析方法。
7、学习极点配置状态反馈控制器的设计算法;
8、通过编程、上机调试,掌握系统极点配置设计方法。
9、学习观测器设计算法;
10、通过编程、上机调试,掌握基于观测器的输出反馈控制系统设计方法。
二、原理简述
实验一:
状态空间模型和传递函数的MATLAB函数:
1、函数ss(statespace的首字母)给出了状态空间模型,其一般形式是SYS=ss(A,B,C,D)
2、函数tf(transferfunction的首字母)给出了传递函数,其一般形式是G=tf(num,den)
其中的num表示传递函数中分子多项式的系数向量(单输入单输出系统),den表示传递函数中分母多项式的系数向量。
3、函数tf2ss给出了传递函数的一个状态空间实现,其一般形式是
[A,B,C,D]=tf2ss(num,den)
4、函数ss2tf给出了状态空间模型所描述系统的传递函数,其一般形式是
[num,den]=ss2tf(A,B,C,D,iu)
实验二:
1、函数initial(A,B,C,D,x0)可以得到系统输出对初始状态x0的时间响应;
2、函数step(A,B,C,D)给出了系统的单位阶跃响应曲线;
3、函数impulse(A,B,C,D)给出了系统的单位脉冲响应曲线;
4、函数[y,T,x]=lsim(sys,u,t,x0)给出了一个状态空间模型对任意输入u的响应,其中的sys表示贮存在计算机内的状态空间模型,它可以由函数sys=ss(A,B,C,D)
得到,x0是初始状态
实验三:
MATLAB提供了计算离散化状态空间模型中状态
矩阵和输入矩阵的函数:
[G,H]=c2d(A,B,T)
其中的T是离散化模型的采样周期。
实验四:
MATLAB软件提供了两个函数acker和place来确定极点配置状态反馈控制器的增益矩阵K。
函数acker是基于求解极点配置问题的爱克曼公式,它只能应用到单输入系统,要配置的闭环极点中可以包括多重极点。
函数acker和place的一般形式是:
K=acker(A,B,J)
K=place(A,B,J)
其中的J是一个向量,
,
是n个期望的闭环极点。
得到了所要求的反馈增益矩阵后,可以用命令eig(A-B*K)来检验闭环极点。
实验五:
应用MATLAB中极点配置的函数来确定所需要的观测器增益矩阵。
例如,对于单输入单输出系统,观测器的增益矩阵可以由函数
L=(acker(A’,C’,V))’
得到。
其中的V是由期望的观测器极点所构成的向量。
类似的,也可以用
L=(place(A’,C’,V))’
来确定一般系统的观测器矩阵,但这里要求V不包含相同的极点。
对于降阶观测器的设计,使用MATLAB软件中的函数
L=(acker(Abb’,Aab’,V))’或L=(place(Abb’,Aab’,V))’
可以得到观测器的增益矩阵L。
其中的V是由降阶观测器的期望极点所组成的向量。
三、仪器设备
PC计算机1台(要求P4-1.8G以上),MATLAB6.X或MATLAB7.X软件1套。
四、线路示图
五、内容步骤
1、根据所给系统的传递函数或(A、B、C、D),依据系统的传递函数阵和状态空间模型之间的关系,采用MATLAB的相关函数编写m-文件。
2、求取系统的状态和输出响应;
3、在MATLA界面下调试程序,并检查是否运行正确。
六、数据处理
实验一
程序代码:
num=[0012;0153]
den=[1234]
[A,B,C,D]=tf2ss(num,den)
结果:
A=
-2-3-4
100
010
B=
1
0
0
C=
012
153
D=
0
0
实验二
程序代码:
A=[01;-10];
B=[0;0];
D=B;
C=[10;01];
x0=[0;1];
[y,x,t]=initial(A,B,C,D,x0);
plot(t,x(:
1),t,x(:
2))
grid
title('ResponsetoInitialCondition')
xlabel('Time(sec)')
ylabel('x1,x2')
text(0.55,1.15,'x1')
text(0.4,-2.9,'x2')
symst;
A=[01;-10];
F=expm(A*t)
结果:
F=
[cos(t),sin(t)]
[-sin(t),cos(t)]
实验三
程序代码:
A=[-10;0-2];
B=[1;0];
[G,H]=c2d(A,B,1)
结果:
G=
0.36790
00.1353
H=
0.6321
0
程序代码:
A=[-10;0-2];
B=[1;0];
[G,H]=c2d(A,B,0.5)
结果:
G=
0.60650
00.3679
H=
0.3935
0
实验四
4.1
A=[010;001;-1-5-6];
B=[0;0;1];
J=[-2+j*4-2-j*4-10];
K=acker(A,B,J)
K=place(A,B,J)
sys=ss(A-B*K,[0;0;0],eye(3),0);
t=0:
0.01:
4;
x=initial(sys,[1;0;0],t);
x1=[100]*x';
x2=[010]*x';
x3=[001]*x';
subplot(3,1,1);plot(t,x1),grid
title('ResponsetoInitialCondition')
ylabel('x1')
subplot(3,1,2);plot(t,x2),grid
ylabel('x2')
subplot(3,1,3);plot(t,x3),grid
xlabel('t(sec)')
ylabel('x3')
4.5
A=[01;-3-4];
B=[0;1];
C=[32];
D=[0];
J=[-4-5];
K=place(A,B,J)
x0=[1;0];
t=0:
0.01:
4;
sys=ss(A-B*K,[0;0],eye
(2),0);
x=initial(sys,[1;0],t);
x1=[10]*x';
x2=[01]*x';
subplot(3,1,1);plot(t,x1),grid
title('ResponsetoInitialCondition')
ylabel('x1')
subplot(3,1,2);plot(t,x2),grid
ylabel('x2')
xlabel('t(sec)')
实验五
5.1
a=[010;001;1.2440.3965-3.145];
b=[0;0;1.244];
c=[100];
v=[-5+j*5*sqrt(3)-5-j*5*sqrt(3)-10];
l=(acker(a',c',v))'
Warning:
Polelocationsaremorethan10%inerror.
l=
16.8550
147.3875
544.3932
5.2
Aaa=[0];
Aab=[10];
Aba=[0;1.244];
Abb=[01;0.3965-3.145];
Ba=[0];
Bb=[0;1.244];
v=[-5+j*5*sqrt(3)-5-j*5*sqrt(3)];
l=(acker(Abb',Aab',v))'
Ahat=Abb-l*Aab
Bhat=Ahat*l+Aba-l*Aaa
Fhat=Bb-l*Ba
l=
6.8550
78.8375
Ahat=
-6.85501.0000
-78.4410-3.1450
Bhat=
31.8465
-784.4132
Fhat=
0
1.2440
5.5
num=4;
den=[120];
[A,B,C,D]=tf2ss(num,den);
J=[-2+j*2*sqrt(3)-2-j*2*sqrt(3)];
K=acker(A,B,J);
V=[-8-8];
L=(acker(A',C',V))';
A0=[A-B*KB*K;zeros(2,2)A-L*C];
sys=ss(A0,eye(4),eye(4),eye(4));
t=0:
0.01:
5;
x=initial(sys,[1;0;1;0],t);
x1=[1000]*x';
x2=[0100]*x';
e1=[0010]*x';
e2=[0001]*x';
figure
(1)
subplot(2,1,1);plot(t,x1),grid
title('Responsetoinitialcondition')
ylabel('x1')
subplot(2,1,2);plot(t,x2),grid
title('Responsetoinitialcondition')
ylabel('x2')
figure
(2)
subplot(2,1,1);plot(t,e1),grid
title('t(sec)')
ylabel('e1')
subplot(2,1,2);plot(t,e2),grid
title('t(sec)')
ylabel('e2')
L=
9.0000
3.5000
七、分析讨论
通过本次试验,我学习了系统状态空间模型的建立方法、了解了状态空间模型与传递函数相互转换的方法,通过编程、上机调试,掌握系统状态空间模型与传递函数相互转换的方法。
同时我学会了根据状态空间模型分析系统由初始状态和外部激励所引起的响应,通过编程、上机调试,掌握系统运动的分析方法。
掌握了建立基于对象的一个连续时间状态空间模型,并导出其相应的离散化状态空间模型,并通过编程、上机调试,掌握离散系统运动分析方法。
配置极点后,系统的稳态性能变好了,但是稳态误差变大了。
为了消除几点配置对稳态性能的负面影响,对于一个n维系统,必须制定n个实极点或共轭复极点,在确定极点位置的时候,要充分考虑他们对于系统性能的主导影响及其余系统零点分布状况关系,还要兼顾系统抗干扰能力和对参数飘逸低敏感性的要求。
通过实验五我学习掌握了观测器设计计算方法,通过编程上机调试,掌握了全阶观测器的输出反馈控制系统设计方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代 控制 理论 实验 报告