利用MATLAB 实现极点配置、设计状态观测器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
>> pole(G)
ans =
+
-
>> Uc=ctrb(A,B);rank(Uc)
ans =
3
则系统具有能控性
>> Vo=obsv(A,C);
rank(Vo)
ans =
3
则系统具有能观测性
当k=[0 1 3]时:
>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
函数place( )还适用于多变量系统极点配置,但不适用含有多重期望极点的问题。函数acker( )不适用于多变量系统极点配置问题,但适用于含有多重期望极点问题。
三、仪器设备
PC计算机,MATLAB软件
4、内容步骤、数据处理
题5-1 某系统状态方程如下
理想闭环系统的极点为 ,试
(1)采用直接计算法进行闭环系统极点配置;
B=[1;3; -6];
C=[1 0 0];
D=0;
p=[-1 -2 -3];
k=place(A,B,p)
结果:k =
验证:
程序:
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3; -6];
C=[1 0 0];
D=0;
p=[-1 -2 -3];
k=place(A,B,p);
A1=A-B*k;
sys=ss(A1,B,C,D);
G1=zpk(sys)
结果:
Zero/pole/gain:
(s+ (s+
--------------------
(s+3) (s+2) (s+1)
则其极点为-1,-2,-3
题5-2 某控制系统的状态方程描述如下:
y=[1 7 24 24]x
通过状态反馈使系统的闭环极点配置在[-30 ]位置上,求出状态反馈矩阵K,验证闭环极点,并绘制闭环系统的阶跃响应曲线进行对比。
>> Vo=obsv(A,C);
rank(Vo)
ans =
3
则系统具有能观测性
分析:
系统完全能控则可以任意配置极点,配置极点不改变系统的能控性,但可能改变系统的能观测性。不存在零极相消的情况下,则不改变系统的能观测性。
五、分析讨论
通过本次试验,掌握了状态反馈和输出反馈的概念及性质。掌握了利用状态反馈进行极点配置的方法。学会了用MATLAB求解状态反馈矩阵。掌握了状态观测器的设计方法。学会了用MATLAB设计状态观测器。熟悉了分离定理,学会了设计简单的带有状态观测器的状态反馈系统。原本通过平常的上课,对于一些概念我还是没有完全掌握,比如极点配置,状态反馈,输出反馈。通过实验的验证,翻阅书籍,使我对于书本上的概念产生了更深的理解,学会了分析验证书本上的定理而不是盲目学习。
程序>> 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;
p=[-30 +4i ];
k=place(A,B,p)
结果:k =
验证:
程序:>> A=[-10 -35 -50 -24;1 0 0 0;0 1 0 0;0 0 1 0];
6 (s+1)
---------------------------------
(s+ (s^2 + +
则零点为-1
>> pole(G)
ans =
+
-
>> Uc=ctrb(A,B);rank(Uc)
ans =
3
>> Vo=obsv(A,C);
rank(Vo)
ans =
3
当k=[1 3 2]时:
程序>> A=[0 1 0;0 0 1;-12 -16 -7];
(s+30) (s+ (s^2 + +
>> 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;
G=ss(A,B,C,D);
p=[-30 +4i ];
k=place(A,B,p);
A1=A-B*k;
G1=ss(A1,B,C,D);
程序
>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
D=0;
Uc=ctrb(A,B);rank(Uc)
结果:ans = 3
则系统能控
程序:
>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
D=0;
Vo=obsv(A,C);
实 验 报 告
实验名称利用MATLAB实现极点配置、设计状态观测器
系
专业
自动化
班
姓名
学号
授课老师
预定时间
实验时间
实验台号
一、目的要求
1、掌握状态反馈和输出反馈的概念及性质。
2、掌握利用状态反馈进行极点配置的方法。学会用MATLAB求解状态反馈矩阵。
3、掌握状态观测器的设计方法。学会用MATLAB设计状态观测器。
C=[1 0 0];
D=0;
k=[ ];
A1=A-B*k;
sys=ss(A1,B,C,D);
G1=zpk(sys)
结果:Zero/pole/gain:
(s^2 + 5s + 15)
-------------------------
(s+1) (s+ (s+
则其极点为-1 ,-2 ,-3
(2)
程序:
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3;-6]';
C=[1 0 0];
D=0;
p=[-1 -2 -3];
L=(acker(A',C',p))'
结果:L = 4
0
-10
题5-4已知系统
y=[6 6 0]x
(1)求系统的零点,极点和传递函数,并判断系统的能控性和能观测性。
(2)分别选取K=[0 3 0].K=[1 3 2],K=[0 3 1]为状态反馈矩阵,求解闭环系统的零点,极点和传递函数,并判断系统的能控性和能观测性。它们是否发生改变?为什么?
B=[0;0;1];
C=[6 6 0];
D=0;
k=[1 3 2];
A1=A-B*k;
sys=ss(A1,B,C,D);
G=zpk(sys)
结果:
Zero/pole/gain:
6 (s+1)
---------------------------------
(s+ (s^2 + +
则闭环系统的零点为:-1
D=0;
k=[0 1 3];
A1=A-B*k;
sys=ss(A1,B,C,D);
G=zpk(sys)
Zero/pole/gain:
6 (s+1)
-------------------------------
(s+ (s^2 + +
>> Uc=ctrb(A,B);rank(Uc)
ans =
3
则系统具有能控性
t=0::20;
u=ones(size(t));
y2=lsim(G1,u,t);
y1=lsim(G,u,t);
plot(t,y1,':',t,y2,'-')
蓝色为配置前,绿色为配置后
题5-3 某系统状态空间描述如下
设计全维状态观测器,要求状态观测器的极点为 。
程序>> A=[0 1 0;0 0 1;-4 -3 -2];
(2)采用Ackermann公式计算法进行闭环系统极点配置;
(3)采用调用place函数法进行闭环系统极点配置。
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3;6];
C=[1 0 0];
D=0;
G=ss(A,B,C,D);
[Q,D]=eig(A)
结果:
Q =
- +
+ -
D =
0 0
4、熟悉分离定理,学会设计带有状态观测器的状态反馈系统。
2、原理简述
1、状态反馈和输出反馈
设线性定常系统的状态空间表达式为
如果采用状态反馈控制规律u=r-Kx,其中r是参考输入,则状态反馈闭环系统的传递函数为:
2、极点配置
如果SISO线性定常系统完全能控,则可通过适当的状态反馈,将闭环系统极点配置到任意期望的位置。
MATLAB 提供的函数acker( )是用Ackermann 公式求解状态反馈阵K。该函数的调用格
式为
K=acker(A,B,P)
其中A 和B 分别为系统矩阵和输入矩阵。P 是期望极点构成的向量。
MATLAB提供的函数place( )也可求出状态反馈阵K。该函数的调用格式为
K=place(A,B,P)
0 + 0
0 0 -
则矩阵A的特征根为:,+,-
程序:
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3;-6];
C=[1 0 0];
D=0;
p=[-1 -2 -3];
k=acker(A,B,p)
结果:k =
验证:
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3;6];
(1)
程序
>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
D=0;
sys=ss(A,B,C,D);
G=zpk(sys)
结果:
Zero/pole/gain:
6 (s+1)
-------------
(s+2)^2 (s+3)
则系统的零点为:-1
则系统的极点为:-2,-2,-3
rank(Vo)
结果:ans =3
则系统能观
(2)
当k=[0 3 0]时:
程序>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
D=0;
k=[0 3 0];
A1=A-B*k;
sys=ss(ABaidu Nhomakorabea,B,C,D);
G=zpk(sys)
结果:Zero/pole/gain:
B=[1;0;0;0];
C=[1 7 24 24];
D=0;
p=[-30 +4i ];
k=place(A,B,p);
A1=A-B*k;
sys=ss(A1,B,C,D);
G1=zpk(sys)
结果:Zero/pole/gain:
(s+ (s^2 + +
------------------------------------
ans =
+
-
>> Uc=ctrb(A,B);rank(Uc)
ans =
3
则系统具有能控性
>> Vo=obsv(A,C);
rank(Vo)
ans =
3
则系统具有能观测性
当k=[0 1 3]时:
>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
函数place( )还适用于多变量系统极点配置,但不适用含有多重期望极点的问题。函数acker( )不适用于多变量系统极点配置问题,但适用于含有多重期望极点问题。
三、仪器设备
PC计算机,MATLAB软件
4、内容步骤、数据处理
题5-1 某系统状态方程如下
理想闭环系统的极点为 ,试
(1)采用直接计算法进行闭环系统极点配置;
B=[1;3; -6];
C=[1 0 0];
D=0;
p=[-1 -2 -3];
k=place(A,B,p)
结果:k =
验证:
程序:
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3; -6];
C=[1 0 0];
D=0;
p=[-1 -2 -3];
k=place(A,B,p);
A1=A-B*k;
sys=ss(A1,B,C,D);
G1=zpk(sys)
结果:
Zero/pole/gain:
(s+ (s+
--------------------
(s+3) (s+2) (s+1)
则其极点为-1,-2,-3
题5-2 某控制系统的状态方程描述如下:
y=[1 7 24 24]x
通过状态反馈使系统的闭环极点配置在[-30 ]位置上,求出状态反馈矩阵K,验证闭环极点,并绘制闭环系统的阶跃响应曲线进行对比。
>> Vo=obsv(A,C);
rank(Vo)
ans =
3
则系统具有能观测性
分析:
系统完全能控则可以任意配置极点,配置极点不改变系统的能控性,但可能改变系统的能观测性。不存在零极相消的情况下,则不改变系统的能观测性。
五、分析讨论
通过本次试验,掌握了状态反馈和输出反馈的概念及性质。掌握了利用状态反馈进行极点配置的方法。学会了用MATLAB求解状态反馈矩阵。掌握了状态观测器的设计方法。学会了用MATLAB设计状态观测器。熟悉了分离定理,学会了设计简单的带有状态观测器的状态反馈系统。原本通过平常的上课,对于一些概念我还是没有完全掌握,比如极点配置,状态反馈,输出反馈。通过实验的验证,翻阅书籍,使我对于书本上的概念产生了更深的理解,学会了分析验证书本上的定理而不是盲目学习。
程序>> 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;
p=[-30 +4i ];
k=place(A,B,p)
结果:k =
验证:
程序:>> A=[-10 -35 -50 -24;1 0 0 0;0 1 0 0;0 0 1 0];
6 (s+1)
---------------------------------
(s+ (s^2 + +
则零点为-1
>> pole(G)
ans =
+
-
>> Uc=ctrb(A,B);rank(Uc)
ans =
3
>> Vo=obsv(A,C);
rank(Vo)
ans =
3
当k=[1 3 2]时:
程序>> A=[0 1 0;0 0 1;-12 -16 -7];
(s+30) (s+ (s^2 + +
>> 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;
G=ss(A,B,C,D);
p=[-30 +4i ];
k=place(A,B,p);
A1=A-B*k;
G1=ss(A1,B,C,D);
程序
>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
D=0;
Uc=ctrb(A,B);rank(Uc)
结果:ans = 3
则系统能控
程序:
>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
D=0;
Vo=obsv(A,C);
实 验 报 告
实验名称利用MATLAB实现极点配置、设计状态观测器
系
专业
自动化
班
姓名
学号
授课老师
预定时间
实验时间
实验台号
一、目的要求
1、掌握状态反馈和输出反馈的概念及性质。
2、掌握利用状态反馈进行极点配置的方法。学会用MATLAB求解状态反馈矩阵。
3、掌握状态观测器的设计方法。学会用MATLAB设计状态观测器。
C=[1 0 0];
D=0;
k=[ ];
A1=A-B*k;
sys=ss(A1,B,C,D);
G1=zpk(sys)
结果:Zero/pole/gain:
(s^2 + 5s + 15)
-------------------------
(s+1) (s+ (s+
则其极点为-1 ,-2 ,-3
(2)
程序:
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3;-6]';
C=[1 0 0];
D=0;
p=[-1 -2 -3];
L=(acker(A',C',p))'
结果:L = 4
0
-10
题5-4已知系统
y=[6 6 0]x
(1)求系统的零点,极点和传递函数,并判断系统的能控性和能观测性。
(2)分别选取K=[0 3 0].K=[1 3 2],K=[0 3 1]为状态反馈矩阵,求解闭环系统的零点,极点和传递函数,并判断系统的能控性和能观测性。它们是否发生改变?为什么?
B=[0;0;1];
C=[6 6 0];
D=0;
k=[1 3 2];
A1=A-B*k;
sys=ss(A1,B,C,D);
G=zpk(sys)
结果:
Zero/pole/gain:
6 (s+1)
---------------------------------
(s+ (s^2 + +
则闭环系统的零点为:-1
D=0;
k=[0 1 3];
A1=A-B*k;
sys=ss(A1,B,C,D);
G=zpk(sys)
Zero/pole/gain:
6 (s+1)
-------------------------------
(s+ (s^2 + +
>> Uc=ctrb(A,B);rank(Uc)
ans =
3
则系统具有能控性
t=0::20;
u=ones(size(t));
y2=lsim(G1,u,t);
y1=lsim(G,u,t);
plot(t,y1,':',t,y2,'-')
蓝色为配置前,绿色为配置后
题5-3 某系统状态空间描述如下
设计全维状态观测器,要求状态观测器的极点为 。
程序>> A=[0 1 0;0 0 1;-4 -3 -2];
(2)采用Ackermann公式计算法进行闭环系统极点配置;
(3)采用调用place函数法进行闭环系统极点配置。
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3;6];
C=[1 0 0];
D=0;
G=ss(A,B,C,D);
[Q,D]=eig(A)
结果:
Q =
- +
+ -
D =
0 0
4、熟悉分离定理,学会设计带有状态观测器的状态反馈系统。
2、原理简述
1、状态反馈和输出反馈
设线性定常系统的状态空间表达式为
如果采用状态反馈控制规律u=r-Kx,其中r是参考输入,则状态反馈闭环系统的传递函数为:
2、极点配置
如果SISO线性定常系统完全能控,则可通过适当的状态反馈,将闭环系统极点配置到任意期望的位置。
MATLAB 提供的函数acker( )是用Ackermann 公式求解状态反馈阵K。该函数的调用格
式为
K=acker(A,B,P)
其中A 和B 分别为系统矩阵和输入矩阵。P 是期望极点构成的向量。
MATLAB提供的函数place( )也可求出状态反馈阵K。该函数的调用格式为
K=place(A,B,P)
0 + 0
0 0 -
则矩阵A的特征根为:,+,-
程序:
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3;-6];
C=[1 0 0];
D=0;
p=[-1 -2 -3];
k=acker(A,B,p)
结果:k =
验证:
>> A=[0 1 0;0 0 1;-4 -3 -2];
B=[1;3;6];
(1)
程序
>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
D=0;
sys=ss(A,B,C,D);
G=zpk(sys)
结果:
Zero/pole/gain:
6 (s+1)
-------------
(s+2)^2 (s+3)
则系统的零点为:-1
则系统的极点为:-2,-2,-3
rank(Vo)
结果:ans =3
则系统能观
(2)
当k=[0 3 0]时:
程序>> A=[0 1 0;0 0 1;-12 -16 -7];
B=[0;0;1];
C=[6 6 0];
D=0;
k=[0 3 0];
A1=A-B*k;
sys=ss(ABaidu Nhomakorabea,B,C,D);
G=zpk(sys)
结果:Zero/pole/gain:
B=[1;0;0;0];
C=[1 7 24 24];
D=0;
p=[-30 +4i ];
k=place(A,B,p);
A1=A-B*k;
sys=ss(A1,B,C,D);
G1=zpk(sys)
结果:Zero/pole/gain:
(s+ (s^2 + +
------------------------------------