线性定常系统地能控性和能观测性.docx
《线性定常系统地能控性和能观测性.docx》由会员分享,可在线阅读,更多相关《线性定常系统地能控性和能观测性.docx(24页珍藏版)》请在冰豆网上搜索。
![线性定常系统地能控性和能观测性.docx](https://file1.bdocx.com/fileroot1/2023-1/9/9569697c-54c4-4485-af13-a1e8cdcee085/9569697c-54c4-4485-af13-a1e8cdcee0851.gif)
线性定常系统地能控性和能观测性
线性定常系统的能控性和能观测性
一、实验设备
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=[02-1;512;-200];
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('originaltargetpositions','originaltargetpositions','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('originaltargetpositions','originaltargetpositions','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('originaltargetpositions','originaltargetpositions','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('originaltargetpositions','originaltargetpositions','X','Y')
输入改变时,每个状态变量曲线并没有随着改变。
〔4〕根据2〕和4〕所得曲线能否判断系统状态以与各状态变量的能观测性?
答:
能观性表述的是输出y〔t〕反映状态变量x〔t〕的能力,与控制作用没有直接关系。
(1)如下和所描述的系统
系统
〔1〕将给定的状态空间模型转换为传递函数模型。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,绘制和记录相应的曲线。
代码:
A=[-3-4;-20];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('originaltargetpositions','originaltargetpositions','X','Y')
②
代码:
A=[-1000;0-300;00-20;000-5];
B=[2;1;0;0];
C=[1010];
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('originaltargetpositions','originaltargetpositions','originaltargetpositions','X','Y')
〔2〕按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型。
它与1〕中所得的传递函数模型是否一致?
为什么?
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线。
这一曲线与1〕中的输出曲线是否一致?
为什么?
A=[-3-4;-20];B=[5;1];C=[-1-1];D=[0];
[AcBcCcTcKc]=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('originaltargetpositions','X','Y')
按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1〕中所得的传递函数模型一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1〕中的输出曲线是一致的。
②
代码:
A=[-1000;0-300;00-20;000-5];
B=[2;1;0;0];
C=[1010];
D=[0];
[AcBcCcTcKc]=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('originaltargetpositions','originaltargetpositions','originaltargetpositions','X','Y')
按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1〕中所得的传递函数模型是不一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1〕中的输出曲线是不一致的。
〔3〕按能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其转换为传递函数模型。
它与1〕中的传递函数模型是否一致?
为何?
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线。
这一曲线与1〕中的输出曲线是否一致?
A=[-3-4;-20];B=[5;1];C=[-1-1];D=[0];
[AoBoCoToKo]=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('originaltargetpositions','originaltargetpositions','originaltargetpositions','X','Y')
按能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1〕中所得的传递函数模型一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1〕中的输出曲线是不一致的。
②
代码:
A=[-1000;0-300;00-20;000-5];
B=[2;1;0;0];
C=[1010];
D=[0];[AoBoCoToKo]=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('originaltargetpositions','originaltargetpositions','originaltargetpositions','X','Y')
按能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1〕中所得的传递函数模型不一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1〕中的输出曲线是不一致的。
4〕按能控性能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其转换为传递函数模型。
它与1〕中的传递函数模型是否一致?
为何?
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应的曲线。
这一曲线与1〕中的输出曲线是
否一致?
为什么?
代码:
A=[-3-4;-20];B=[5;1];C=[-1-1];D=[0];
[AkBkCkTk]=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('originaltargetpositions','X','Y')
按能控性能观测性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型,它与1〕中所得的传递函数模型是一致的。
令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线这一曲线与1〕中的输出曲线是不一致的。
②
代码:
A=[-1000;0-300;00-20;000-5];
B=[2;1;0;0];
C=[1010];
D=[0];
[AkBkCkTk]=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('originaltargetpositions','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;400;010];
B=[0.5;0;0];
C=[000.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求最小实现。