当前位置:文档之家› 《现代控制理论》实验报告

《现代控制理论》实验报告

《现代控制理论》实验报告
《现代控制理论》实验报告

现代控制理论实验报告

组员:

院系:信息工程学院

专业:

指导老师:

年月日

实验1 系统的传递函数阵和状态空间表达式的转换

[实验要求]

应用MATLAB 对系统仿照[例1.2]编程,求系统的A 、B 、C 、阵;然后再仿照[例1.3]进行验证。并写出实验报告。 [实验目的]

1、学习多变量系统状态空间表达式的建立方法、了解系统状态空间表达式与传递函数相互转换的方法;

2、通过编程、上机调试,掌握多变量系统状态空间表达式与传递函数相互转换方法。 [实验内容]

1 设系统的模型如式(1.1)示。

p m n R y R u R x D

Cx y Bu Ax x ∈∈∈??

?+=+=& (1.1)

其中A 为n ×n 维系数矩阵、B 为n ×m 维输入矩阵 C 为p ×n 维输出矩阵,D 为传递阵,一般情况下为0,只有n 和m 维数相同时,D=1。系统的传递函数阵和状态空间表达式之间的关系如式(1.2)示。

D B A SI C s den s num s G +-==

-1)()

()

(()( (1.2)

式(1.2)中,)(s num 表示传递函数阵的分子阵,其维数是p ×m ;)(s den 表示传递函数阵的按s 降幂排列的分母。 2 实验步骤

① 根据所给系统的传递函数或(A 、B 、C 阵),依据系统的传递函数阵和状态空间表达式之间的关系如式(1.2),采用MATLA 的file.m 编程。注意:ss2tf 和tf2ss 是互为逆转换的指令;

② 在MATLA 界面下调试程序,并检查是否运行正确。

③ [1.1] 已知SISO 系统的状态空间表达式为(1.3),求系统的传递函数。

,

2010050010000100001

0432143

21u x x x x x x x x ?

?

???

?

??????-+????????????????????????-=????????????&&&&[]???

?

?

???????=43210001x x x x y (1.3)

程序:

A=[0 1 0 0;0 0 -1 0;0 0 0 1;0 0 5 0]; B=[0;1;0;-2]; C=[1 0 0 0]; D=0;

[num,den]=ss2tf(A,B,C,D,1)

程序运行结果:

num =

0 -0.0000 1.0000 -0.0000 -3.0000 den =

1.0000 0 -5.0000 0 0

从程序运行结果得到:系统的传递函数为:

2

4253

)(s

s s S G --= ④ [1.2] 从系统的传递函数式求状态空间表达式。 程序:

num =[0 0 1 0 -3]; den =[1 0 -5 0 0]; [A,B,C,D]=tf2ss(num,den)

程序运行结果:

A =

0 5 0 0 1 0 0 0 0 1 0 0

0 0 1 0

B =

1

C =

0 1 0 -3

D =

⑤ [1.3] 对上述结果进行验证编程

%将[1.2]上述结果赋值给A、B、C、D阵;

A=[0 5 0 0;1 0 0 0;0 1 0 0;0 0 1 0];

B=[1;0;0;0];

C=[0 1 0 -3];

D=0;

[num,den]=ss2tf(A,B,C,D,1)

实验结果:

num =

0 0.0000 1.0000 0.0000 -3.0000

den =

1.0000 0 -5.0000 0 0

程序运行结果与[1.1]完全相同。

[实验分析]

当已知系统的状态空间表达式,我们可以求得系统的传递函数。当已知系统的传递函数式,我们也可以求得状态空间表达式。由于一个系统的状态空间表达式并不唯一,所以程序运行结果有可能不等于原式中的矩阵,但该结果与原式是等效的。验证结果证明了这个结论。

实验2 状态空间控制模型系统仿真及状态方程求解

[实验要求]

1、进行模型间的相互转换。

2、绘出系统单位阶跃及脉冲曲线。 [实验目的]

1、熟悉线性定常离散与连续系统的状态空间控制模型的各种表示方法。

2、熟悉系统模型之间的转换功能。

3、利用MATLAB 对线性定常系统进行动态分析 [实验内容]

1、 给定系统1

25.03

2)(2

323++++++=s s s s s s s G ,求系统的零极点增益模型和状态空间模型,并求其单位脉冲响应及单位阶跃响应。 2、 已知离散系统状态空间方程:

[]??

?

???

?=??????????+??????????----=+)(021)()

(102)(101110221)1(k x k y k u k x k x 采样周期s T s 05.0=。在Z 域和连续域对系统性能进行仿真、分析。 [实验结果及分析] 1、 程序:

num=[1 2 1 3]; den=[1 0.5 2 1]; sys=tf(num,den)

[z,p,k]=tf2zp(num,den) [A,B,C,D]=tf2ss(num,den) impulse(sys),hold on step(sys)

程序运行结果:

Transfer function:

s^3 + 2 s^2 + s + 3

-----------------------

s^3 + 0.5 s^2 + 2 s + 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.0000 0 0

0 1.0000 0

B =

1

C =

1.5000 -1.0000

2.0000

D =

1

单位脉冲响应/单位阶跃响应:

2、

程序:

g=[-1 -2 2;0 -1 1;1 0 -1];

h =[2;0;1];

c =[1 2 0];

d=0;

u=1;

sysd=ss(g,h,c,d,0.05) dstep(g,h,c,d,u)

程序运行结果:

a =

x1 x2 x3

x1 -1 -2 2

x2 0 -1 1

x3 1 0 -1

b =

u1

x1 2

x2 0

x3 1

c =

x1 x2 x3

y1 1 2 0

d =

u1

y1 0

Sampling time: 0.05 Discrete-time model.

Z域性能仿真图形:

连续域仿真曲线:

sysc=d2c(sysd,'zoh')

step(sysc)

和连续系统不同,离散系统中各部分的信号不再都是时间变量t的连续函数。

实验3 能控能观判据及稳定性判据

[实验目的]

1、利用MATLAB 分析线性定常及离散系统的可控性与可观性。

2、利用MATLAB 进行线性定常及离散系统的李雅普诺夫稳定性判据。 [实验内容]

1、已知系统状态空间方程:

(1) ???

??????????????-+??????????---=u x x 111001342100010&

(2)[]??

?

????-=??????????--=x y x x 0312025016200340& 对系统进行可控性、可观性分析。

2、 已知系统状态空间方程描述如下:

?

?????

??????----=0100

001000011263A ,?????

???????=0001B ,[]1100=C

试判定其稳定性,并绘制出时间响应曲线来验证上述判断。

[实验结果及分析]

(1)能控性分析

程序:

A=[0 1 0;0 0 1;-2 -4 -3]

B=[1 0;0 1;-1 1]

Qc=ctrb(A,B)

rank(Qc)

程序运行结果:

A =

0 1 0

0 0 1

-2 -4 -3

B =

1 0

0 1

-1 1

Qc =

1 0 0 1 -1 1

0 1 -1 1 1 -7

-1 1 1 -7 1 15

ans =

3

系统满秩,故系统能控。

系统的状态可控性描述了输入对状态的控制能力(2)能观性分析

程序:

A=[0 4 3;0 20 16;0 -25 -20]

C=[-1 3 0]

rank(obsv(A,C))

程序运行结果:

A =

0 4 3

0 20 16

0 -25 -20

C =

-1 3 0

ans =

3

系统满秩,故系统能观。

系统的状态可观性描述了通过输出可以观测状态的能力

2、

程序:

A=[-3 -6 -2 -1;1 0 0 0;0 1 0 0;0 0 1 0];

B=[1;0;0;0];C=[0 0 1 1];D=[0];

[z,p,k]=ss2zp(A,B,C,D,1);

Flagz=0;

n=length(A);

for i=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

程序:

if Flagz==1

disp('系统不稳定');

else disp('系统是稳定的'); end

step(A,B,C,D);

程序运行结果为: 系统是稳定的 程序:

step(A,B,C,D); 程序运行结果为:

0510152025303540

0.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (sec)

A m p l i t u d e

从图中可以看出,系统是稳定的

实验4 状态反馈及状态观测器的设计

[实验要求]

1、求出系统的状态空间模型;

2、依据系统动态性能的要求,确定所希望的闭环极点P ;

3、利用上面的极点配置算法求系统的状态反馈矩阵K ;

4、检验配置后的系统性能。 [实验目的]

1、熟悉状态反馈矩阵的求法。

2、熟悉状态观测器设计方法。 [实验内容]

1、 某控制系统的状态方程描述如下:

[]242471,0001,01000010000124503510=?????

???????=????

?????

???----=C B A 通过状态反馈使系统的闭环极点配置在P=[-30,-1.2,-2.4±4i 位置上,求出状态反馈阵K,并绘制出配置后系统的时间响应曲线。 2、考虑下面的状态方程模型:

[]0,001,10000,100008.20980010==????

??????=??????????--=D C B A 要求选出合适的参数状态观测器(设观测器极点为op=[-100;-102;-103])。

[实验结果及分析] 1、 程序:

A=[-10 -35 -50 -24;1 0 0 0;0 1 0 0;0 0 1 0];

B=[1;0;0;0];

C=[1 7 24 24];

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.0000 172.5200 801.7120 759.3600

极点配置后的闭还系统为

a =

x1 x2 x3 x4

x1 -36 -207.5 -851.7 -783.4

x2 1 0 0 0

x3 0 1 0 0

x4 0 0 1 0

b =

u1

x1 1

x2 0

x3 0

x4 0

c =

x1 x2 x3 x4

y1 1 7 24 24

d =

u1

y1 0

Continuous-time model.

配置后系统的极点为

pp =

-30.0000 -2.4000 - 4.0000i -2.4000 + 4.0000i -1.2000

2、

程序:

A=[0 1 0;980 0 -2.8;0 0 -100];

B=[0;0;100];

C=[1 0 0];

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第一行

for i=2:n

Q(i,:)=Q(i-1,:)*A;

end

m=rank(Q);

if m==n

H=place(A',C',op')';

else

disp('系统不是状态完全可观测') end

disp('状态观测器模型');

est=estim(sysold,H)

disp('配置后观测器的极点为');

p=eig(est)

程序运行结果:

原系统为

a =

x1 x2 x3

x1 0 1 0

x2 980 0 -2.8

x3 0 0 -100

b =

u1

x1 0

x2 0

x3 100

c =

x1 x2 x3

y1 1 0 0

u1

y1 0

Continuous-time model.

原系统的闭还极点为

p =

31.3050

-31.3050

-100.0000

状态观测器模型

a =

x1 x2 x3 x1 -205 1 0 x2 -1.051e+004 0 -2.8 x3 0 0 -100 b =

u1

x1 205

x2 1.149e+004

x3 0

c =

x1 x2 x3

y1 1 0 0

y2 1 0 0

y3 0 1 0

y4 0 0 1

d =

u1

y1 0

y2 0

y3 0

y4 0

Input groups:

Name Channels

Measurement 1

Output groups:

Name Channels

OutputEstimate 1

StateEstimate 2,3,4

Continuous-time model.

配置后观测器的极点为

-103.0000 -102.0000 -100.0000

相关主题
文本预览
相关文档 最新文档