您的当前位置:首页正文

线性定常系统的能控性和能观测性报告.报告.docx

来源:一二三四网


线性定常系统的能控性和能观测性

一、实验设备

PC 计算机,MATLAB 软件,控制理论实验台。

二、实验目的

(1)学习系统状态能控性、能观测性的定义及判别方法;

(2)通过用 MATLAB 编程、上机调试,掌握系统能控性、能观测性的判别方法,

掌握将一般形式的状态空间描述变换成能控标准形、能观标准形。 (3)掌握能控性和能观测性的概念。学会用 MATLAB 判断能控性和能观测性。 (4)掌握系统的结构分解。学会用 MATLAB 进行结构分解。 (5)掌握最小实现的概念。学会用 MATLAB 求最小实现

三、实验原理

(1)参考教材 P117~118“4.2.4 利用 MATLAB 判定系统能控性”

P124~125“4.3.3 利用 MATLAB 判定系统能观测性” (2)MATLAB 现代控制理论仿真实验基础 (3)控制理论实验台使用指导

四、实验内容

(1)已知系统状态空间描述如下

(1)判断系统状态的能控性和能观测性,以及系统输出的能控性。说明状态能控性和输出能控性之间有无联系。

精选

代码:

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

Uc=[B,A*B,A^2*B,A^3*B]; rank(Uc)%能控性判断 Uo=[C,C*A,C*A^2,C*A^3]; rank(Uo)%判断能观性

Uco=[C*B,C*A*B,C*A^2*B,C*A^3*B]; rank(Uco)%判断输出能控性

(2)令系统的初始状态为零,系统的输入分别为单位阶跃函数和单位脉冲函数。用 MATLAB 函数计算系统的状态响应和输出响应,并绘制相应的响应曲线。观察和记录这些曲线。当输入改变时, 每个状态变量的响应曲线是否随着改变?能否根据这些曲线判断系统状态的能控性?

单位阶跃输入: 代码:

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

Uc=[B,A*B,A^2*B,A^3*B]; rank(Uc)%判断状态能控性 Uo=[C,C*A,C*A^2,C*A^3];

精选

rank(Uo)%判断能观性

Uco=[C*B,C*A*B,C*A^2*B,C*A^3*B]; rank(Uco)%判断输出能控 G=ss(A,B,C,D); t=[0:.04:2];

[y,t,x]=step(G,t);%单位阶跃输入 plot(t,x,'b',t,y,'m')%状态及输出响应曲线

legend('original target positions ','original target positions','X','Y')

精选

单位脉冲输入: 代码:

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

G=ss(A,B,C,D); t=[0:.04:2];

[y,t,x]=impulse(G,t)%单位脉冲输入 plot(t,x,'b',t,y,'m')%状态及输出响应曲线

legend('original target positions','original target positions','X','Y')

精选

精选

精选

当输入改变时, 每个状态变量的响应曲线并没有随着改变。

(3)将给定的状态空间表达式变换为对角标准型,判断系统的能控性和能观测性,与 1)的结果是否一致?为何? 代码:

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

G=ss(A,B,C,D); G1=canon(G,'model')

A1=[-3.89,0,0;0,3.574,0;0,0,0.8234]; B1=[0.389;-0.7421;-0.6574]; C1=[-0.2313,-1.37,-0.1116]; D1=[0];

Uc=[B,A*B,A^2*B,A^3*B]; rank(Uc)%判断状态能控性 Uo=[C,C*A,C*A^2,C*A^3]; rank(Uo)%判断能观性

精选

系统的能控性和能观测性,与 1)的结果是一致的

(4)令 3)中系统的初始状态为零, 输入分别为单位阶跃函数和单位脉冲函数。用 MATLAB 函数计算系统的状态响应和输出响应,并绘制响应的曲线。观察和记录这些曲线。当输入改变时, 每个状态变量曲线是否随着改变?能否根据这些曲线判断系统以及各状态变量的能控性?不能控和能控状态变量的响应曲线有何不同?

单位阶跃输入: 代码:

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

G1=ss(A,B,C,D); t=[0:.04:3];

[y,t,x]=step(G1,t)%单位脉冲输入

精选

plot(t,x,'b',t,y,'m')%状态及输出响应曲线

legend('original target positions','original target positions','X','Y')

单位脉冲输入:

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

G=ss(A,B,C,D); G1=canon(G,'model')

t=[0:.04:2];

[y,t,x]=impulse(G,t)%单位脉冲输入 plot(t,x,'b',t,y,'m')%状态及输出响应曲线

legend('original target positions','original target positions','X','Y')

精选

输入改变时, 每个状态变量曲线并没有随着改变。

(4)根据 2)和 4)所得曲线能否判断系统状态以及各状态变量的能观测性? 答:能观性表述的是输出y(t)反映状态变量x(t)的能力,与控制作用没有直接关系。

(1) 已知如下

和所描述的系统

已知系统

精选

(1)将给定的状态空间模型转换为传递函数模型。令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,绘制和记录相应的曲线。 代码:

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

G=ss(A,B,C,D); G1=tf(G) t=[0:.04:5];

[y,t,x]=step(G,t)%单位阶跃输入

plot(t,x,'b',t,y,'m')%状态及输出响应曲线

legend('original target positions','original target positions','X','Y')

精选

② 代码:

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

G=ss(A,B,C,D); G1=tf(G) t=[0:.04:5];

[y,t,x]=step(G,t);%单位阶跃输入 plot(t,x,'b',t,y,'m')%状态及输出响应曲线

legend('original target positions','original target positions','original target positions','X','Y')

精选

(2)按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型。它与 1)中所得的传递函数模型是否一致?为什么?令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,并绘制和记录相应曲线。这一曲线与 1)中的输出曲线是否一致?为什么?

A=[-3 -4;-2 0];B=[5;1];C=[-1 -1];D=[0]; [Ac Bc Cc Tc Kc]=ctrbf(A,B,C); G=ss(Ac,Bc,Cc,0); G1=tf(G) t=[0:.04:5];

[y,t,x]=step(G,t);%单位阶跃输入 plot(t,x,'b',t,y,'m')%状态及输出响应曲线 legend('original target positions','X','Y')

精选

按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与 1)中所得的传递函数模型一致的。令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与 1)中的输出曲线是一致的。

精选

② 代码:

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

[Ac Bc Cc Tc Kc]=ctrbf(A,B,C); G=ss(Ac,Bc,Cc,0); G1=tf(G) t=[0:.04:5];

[y,t,x]=step(G,t);%单位阶跃输入 plot(t,x,'b',t,y,'m')%状态及输出响应曲线

legend('original target positions','original target positions','original target positions','X','Y')

精选

按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与 1)中所得的传递函数模型是不一致的。令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与 1)中的输出曲线是不一致的。

(3)按能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其转换为传递函数模型。它与 1)中的传递函数模型是否一致?为何?令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,并绘制和记录相应曲线。这一曲线与 1)中的输出曲线是否一致?

A=[-3 -4;-2 0];B=[5;1];C=[-1 -1];D=[0]; [Ao Bo Co To Ko]=obsvf(A,B,C);

精选

G=ss(Ao,Bo,Co,0); G1=tf(G) t=[0:.04:5];

[y,t,x]=step(G,t)%单位阶跃输入

plot(t,x,'b',t,y,'m')%状态及输出响应曲线

legend('original target positions','original target positions','original target positions','X','Y')

按能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与 1)中所得的传递函数模型一致的。令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与 1)中的输出曲线是不一致的。

精选

② 代码:

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

D=[0];[Ao Bo Co To Ko]=obsvf(A,B,C); G=ss(Ao,Bo,Co,0); G1=tf(G) t=[0:.04:5];

[y,t,x]=step(G,t)%单位阶跃输入

plot(t,x,'b',t,y,'m')%状态及输出响应曲线

legend('original target positions','original target positions','original target positions','X','Y')

精选

按能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与 1)中所得的传递函数模型不一致的。令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与 1)中的输出曲线是不一致的。

4)按能控性能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其转换为传递函数模型。它与 1)中的传递函数模型是否一致?为何?令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,并绘制和记录相应的曲线。这一曲线与 1)中的输出曲线是 否一致?为什么? 代码:

A=[-3 -4;-2 0];B=[5;1];C=[-1 -1];D=[0]; [Ak Bk Ck Tk ] = kalmdec(A,B,C); G= ss(Ak,Bk,Ck,0); G1=tf(G) t=[0:.04:5];

精选

[y,t,x]=step(G,t)%单位阶跃输入

plot(t,x,'b',t,y,'m')%状态及输出响应曲线 legend('original target positions','X','Y')

按能控性能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与 1)中所得的传递函数模型是一致的。令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与 1)中的输出曲线是不一致的。

精选

② 代码:

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

[Ak Bk Ck Tk ] = kalmdec(A,B,C); G=ss(Ak,Bk,Ck,0); G1=tf(G)

[y,t,x]=step(G,t)%单位阶跃输入

plot(t,x,'b',t,y,'m')%状态及输出响应曲线 legend('original target positions','X','Y')

精选

按能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与 1)中所得的传递函数模型不一致的。令初始状态为零,用 MATLAB 计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与 1)中的输出曲线是一致的。

(3) 已知系统

精选

1) 求最小实现(用函数 minreal( )。

(a) 代码:

A = [-1,0,0,0;0,-3,0,0;0,0,-2,0;0,0,0,-4]; B = [2;1;0;0]; C = [1,0,1,0]; D = 0;

G = ss(A,B,C,D); Gm = minreal(G)

(b)

num=[1,1]; den=[1,6,11,6]; G=tf(num,den); G1=ss(G) Gm=minreal(G1)

精选

2) 判断所得系统的能控性和能观测性

(a) 代码:

A = [-1,0,0,0;0,-3,0,0;0,0,-2,0;0,0,0,-4];B = [2;1;0;0];C = [1,0,1,0];D = 0;

G = ss(A,B,C,D); Gm = minreal(G)

Uc = [B,A*B,A^2*B,A^3*B]; rank(Uc)%判断能控性 Uo = [C,C*A,C*A^2,C*A^3]; rank(Uo)%判断能观性

精选

(b) 代码:

num=[1,1]; den=[1,6,11,6]; G=tf(num,den); G1=ss(G) Gm=minreal(G1)

A=[-6 -2.75 -1.5;4 0 0;0 1 0]; B=[0.5;0;0]; C=[0 0 0.5]; D=0;

Uc = [B,A*B,A^2*B,A^3*B]; rank(Uc)%判断能控性 Uo = [C,C*A,C*A^2,C*A^3]; rank(Uo)%判断能观性

精选

3)求得的结果是否是最小实现?

答:求得的结果是最小实现

五、实验心得

本次试验是研究线性定常系统的能控性和能观测性。

通过本次实验学习了解到系统状态能控性、能观测性的定义及判别方法;通过用 MATLAB 编程、上机调试,掌握系统能控性、能观测性的判别方法,学习到将一般形式的状态空间描述变换成能控标准形、能观标准形,以及再能控性和能观测性的概念,如何用 MATLAB 判断能控性和能观测性。 并且了解系统的结构分解,学会用 MATLAB 进行结构分解。并且再了解最小实现的概念后学会用 MATLAB 求最小实现 。

精选

因篇幅问题不能全部显示,请点此查看更多更全内容

Top