《现代控制理论》实验报告.docx
《《现代控制理论》实验报告.docx》由会员分享,可在线阅读,更多相关《《现代控制理论》实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
《现代控制理论》实验报告
现代控制理论实验报告
组员:
院系:
信息工程学院
专业:
指导老师:
年月日
实验1系统的传递函数阵和状态空间表达式的转换
[实验要求]
应用MATLAB对系统仿照[例1.2]编程,求系统的A、B、C、阵;然后再仿照[例1.3]进行验证。
并写出实验报告。
[实验目的]
1、学习多变量系统状态空间表达式的建立方法、了解系统状态空间表达式与传递函数相互转换的方法;
2、通过编程、上机调试,掌握多变量系统状态空间表达式与传递函数相互转换方法。
[实验内容]
1设系统的模型如式(1.1)示。
(1.1)
其中A为n×n维系数矩阵、B为n×m维输入矩阵C为p×n维输出矩阵,D为传递阵,一般情况下为0,只有n和m维数相同时,D=1。
系统的传递函数阵和状态空间表达式之间的关系如式(1.2)示。
(1.2)
式(1.2)中,
表示传递函数阵的分子阵,其维数是p×m;
表示传递函数阵的按s降幂排列的分母。
2实验步骤
1根据所给系统的传递函数或(A、B、C阵),依据系统的传递函数阵和状态空间表达式之间的关系如式(1.2),采用MATLA的file.m编程。
注意:
ss2tf和tf2ss是互为逆转换的指令;
2在MATLA界面下调试程序,并检查是否运行正确。
3[1.1]已知SISO系统的状态空间表达式为(1.3),求系统的传递函数。
(1.3)
程序:
A=[0100;00-10;0001;0050];
B=[0;1;0;-2];
C=[1000];
D=0;
[num,den]=ss2tf(A,B,C,D,1)
程序运行结果:
num=
0-0.00001.0000-0.0000-3.0000
den=
1.00000-5.000000
从程序运行结果得到:
系统的传递函数为:
4[1.2]从系统的传递函数式求状态空间表达式。
程序:
num=[0010-3];
den=[10-500];
[A,B,C,D]=tf2ss(num,den)
程序运行结果:
A=
0500
1000
0100
0010
B=
1
0
0
0
C=
010-3
D=
0
5[1.3]对上述结果进行验证编程
%将[1.2]上述结果赋值给A、B、C、D阵;
A=[0500;1000;0100;0010];
B=[1;0;0;0];
C=[010-3];
D=0;
[num,den]=ss2tf(A,B,C,D,1)
实验结果:
num=
00.00001.00000.0000-3.0000
den=
1.00000-5.000000
程序运行结果与[1.1]完全相同。
[实验分析]
当已知系统的状态空间表达式,我们可以求得系统的传递函数。
当已知系统的传递函数式,我们也可以求得状态空间表达式。
由于一个系统的状态空间表达式并不唯一,所以程序运行结果有可能不等于原式中的矩阵,但该结果与原式是等效的。
验证结果证明了这个结论。
实验2状态空间控制模型系统仿真及状态方程求解
[实验要求]
1、进行模型间的相互转换。
2、绘出系统单位阶跃及脉冲曲线。
[实验目的]
1、熟悉线性定常离散与连续系统的状态空间控制模型的各种表示方法。
2、熟悉系统模型之间的转换功能。
3、利用MATLAB对线性定常系统进行动态分析
[实验内容]
1、给定系统
,求系统的零极点增益模型和状态空间模型,并求其单位脉冲响应及单位阶跃响应。
2、已知离散系统状态空间方程:
采样周期
。
在
域和连续域对系统性能进行仿真、分析。
[实验结果及分析]
1、
程序:
num=[1213];
den=[10.521];
sys=tf(num,den)
[z,p,k]=tf2zp(num,den)
[A,B,C,D]=tf2ss(num,den)
impulse(sys),holdon
step(sys)
程序运行结果:
Transferfunction:
s^3+2s^2+s+3
-----------------------
s^3+0.5s^2+2s+1
z=
-2.1746
0.0873+1.1713i
0.0873-1.1713i
p=
0+1.4142i
0-1.4142i
-0.5000
k=
1
A=
-0.5000-2.0000-1.0000
1.000000
01.00000
B=
1
0
0
C=
1.5000-1.00002.0000
D=
1
单位脉冲响应/单位阶跃响应:
2、
程序:
g=[-1-22;0-11;10-1];
h=[2;0;1];
c=[120];
d=0;
u=1;
sysd=ss(g,h,c,d,0.05)
dstep(g,h,c,d,u)
程序运行结果:
a=
x1x2x3
x1-1-22
x20-11
x310-1
b=
u1
x12
x20
x31
c=
x1x2x3
y1120
d=
u1
y10
Samplingtime:
0.05
Discrete-timemodel.
Z域性能仿真图形:
连续域仿真曲线:
sysc=d2c(sysd,'zoh')
step(sysc)
和连续系统不同,离散系统中各部分的信号不再都是时间变量t的连续函数。
实验3能控能观判据及稳定性判据
[实验目的]
1、利用MATLAB分析线性定常及离散系统的可控性与可观性。
2、利用MATLAB进行线性定常及离散系统的李雅普诺夫稳定性判据。
[实验内容]
1、已知系统状态空间方程:
(1)
(2)
对系统进行可控性、可观性分析。
2、已知系统状态空间方程描述如下:
,
,
试判定其稳定性,并绘制出时间响应曲线来验证上述判断。
[实验结果及分析]
(1)能控性分析
程序:
A=[010;001;-2-4-3]
B=[10;01;-11]
Qc=ctrb(A,B)
rank(Qc)
程序运行结果:
A=
010
001
-2-4-3
B=
10
01
-11
Qc=
1001-11
01-111-7
-111-7115
ans=
3
系统满秩,故系统能控。
系统的状态可控性描述了输入对状态的控制能力
(2)能观性分析
程序:
A=[043;02016;0-25-20]
C=[-130]
rank(obsv(A,C))
程序运行结果:
A=
043
02016
0-25-20
C=
-130
ans=
3
系统满秩,故系统能观。
系统的状态可观性描述了通过输出可以观测状态的能力
2、
程序:
A=[-3-6-2-1;1000;0100;0010];
B=[1;0;0;0];C=[0011];D=[0];
[z,p,k]=ss2zp(A,B,C,D,1);
Flagz=0;
n=length(A);
fori=1:
n
if
real(p(i))>0
Flagz=1;
end
end
disp('系统的零极点模型为');z,p,k
程序运行结果:
系统的零极点模型为
z=
-1.0000
p=
-1.3544+1.7825i
-1.3544-1.7825i
-0.1456+0.4223i
-0.1456-0.4223i
k=
1
程序:
ifFlagz==1
disp('系统不稳定');
elsedisp('系统是稳定的');
end
step(A,B,C,D);
程序运行结果为:
系统是稳定的
程序:
step(A,B,C,D);
程序运行结果为:
从图中可以看出,系统是稳定的
实验4状态反馈及状态观测器的设计
[实验要求]
1、求出系统的状态空间模型;
2、依据系统动态性能的要求,确定所希望的闭环极点P;
3、利用上面的极点配置算法求系统的状态反馈矩阵K;
4、检验配置后的系统性能。
[实验目的]
1、熟悉状态反馈矩阵的求法。
2、熟悉状态观测器设计方法。
[实验内容]
1、某控制系统的状态方程描述如下:
通过状态反馈使系统的闭环极点配置在P=[-30,-1.2,-2.4
4i位置上,求出状态反馈阵K,并绘制出配置后系统的时间响应曲线。
2、考虑下面的状态方程模型:
要求选出合适的参数状态观测器(设观测器极点为op=[-100;-102;-103])。
[实验结果及分析]
1、
程序:
A=[-10-35-50-24;1000;0100;0010];
B=[1;0;0;0];
C=[172424];
D=[0];
disp('原系统的极点为');
p=eig(A)'%求原系统极点转置
np=[-30;-1.2;-2.4+sqrt(-16);-2.4-sqrt(-16)]
K=place(A,B,np)%求反馈K值
disp('极点配置后的闭还系统为');
sysnew=ss(A-B*K,B,C,D)%配置后新系统
disp('配置后系统的极点为');
pp=eig(A-B*K)'%求新系统极点
step(sysnew/dcgain(sysnew))%dcgain为求最大增益,使得最后结果在0—1
程序运行结果:
原系统的极点为
p=
-4.0000-3.0000-2.0000-1.0000
np=
-30.0000
-1.2000
-2.4000+4.0000i
-2.4000-4.0000i
K=
26.0000172.5200801.7120759.3600
极点配置后的闭还系统为
a=
x1x2x3x4
x1-36-207.5-851.7-783.4
x21000
x30100
x40010
b=
u1
x11
x20
x30
x40
c=
x1x2x3x4
y1172424
d=
u1
y10
Continuous-timemodel.
配置后系统的极点为
pp=
-30.0000-2.4000-4.0000i-2.4000+4.0000i-1.2000
2、
程序:
A=[010;9800-2.8;00-100];
B=[0;0;100];
C=[100];
D=[0];
op=[-100;-102;-103];
disp('原系统为');
sysold=ss(A,B,C,D)
disp('原系统的闭还极点为');
p=eig(A)
n=length(A);%求A阵维度
Q=zeros(n);%为n维0阵
Q(1,:
)=C;%C阵为Q第一行
fori=2:
n
Q(i,:
)=Q(i-1,:
)*A;
end
m=rank(Q);
ifm==n
H=place(A',C',op')';
else
disp('系统不是状态完全可观测')
end
disp('状态观测器模型');
est=estim(sysold,H)
disp('配置后观测器的极点为');
p=eig(est)
程序运行结果:
原系统为
a=
x1x2x3
x1010
x29800-2.8
x300-100
b=
u1
x10
x20
x3100
c=
x1x2x3
y1100
d=
u1
y10
Continuous-timemodel.
原系统的闭还极点为
p=
31.3050
-31.3050
-100.0000
状态观测器模型
a=
x1x2x3
x1-20510
x2-1.051e+0040-2.8
x300-100
b=
u1
x1205
x21.149e+004
x30
c=
x1x2x3
y1100
y2100
y3010
y4001
d=
u1
y10
y20
y30
y40
Inputgroups:
NameChannels
Measurement1
Outputgroups:
NameChannels
OutputEstimate1
StateEstimate2,3,4
Continuous-timemodel.
配置后观测器的极点为
p=
-103.0000
-102.0000
-100.0000