实 验 报 告
实验名称 利用MATLAB 实现极点配置、设计状态观测器
系 专业 自动化 班
姓名 学号 授课老师
实验时
预定时间 实验台号
间
一、目的要求 1、掌握状态反馈和输出反馈的概念及性质。 2、掌握利用状态反馈进行极点配置的方法。学会用MATLAB 求解状态反馈矩阵。 3、掌握状态观测器的设计方法。学会用MATLAB 设计状态观测器。 4、熟悉分离定理,学会设计带有状态观测器的状态反馈系统。 原理简述 状态反馈和输出反馈 设线性定常系统的状态空间表达式为??Ax?Buxy?Cx 如果采用状态反馈控制规律u= r-Kx,其中 r是参考输入,则状态反馈闭环系统的传递函数为: Gk?C[sI?(A?BK)]?1B 2、极点配置 如果 SISO 线性定常系统完全能控,则可通过适当的状态反馈, 将闭环系统极点配置到任意期望的位置。 MATLAB 提供的函数acker( )是用Ackermann 公式求解状态反馈阵K。该函数的调用格 式为 K=acker(A,B,P) 其中A 和B 分别为系统矩阵和输入矩阵。P 是期望极点构成的向量。 MATLAB 提供的函数place( )也可求出状态反馈阵K。该函数的调用格式为 K=place(A,B,P) 函数place( )还适用于多变量系统极点配置,但不适用含有多重期望极点的问题。函数acker( )不适用于多变量系统极点配置问题,但适用于含有多重期望极点问题。 三、仪器设备 PC 计算机,MATLAB 软件 内容步骤、数据处理 题5-1 某系统状态方程如下 ?0&??0x????4y??1010??1??3?u01?x???? ??3?2????6??0?x理想闭环系统的极点为??1?2?3?,试 (1)采用直接计算法进行闭环系统极点配置; (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 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]; 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]; 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 某控制系统的状态方程描述如下: ??10?35?50?24??1??1??0?000?x???u ???x?0100??0?????010??0??0y=[1 7 24 24]x 通过状态反馈使系统的闭环极点配置在[-30 ?2.4?4j]位置上,求出状态反馈矩阵K,验证闭环极点,并绘制闭环系统的阶跃响应曲线进行对比。 程序>> 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]; 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 + + ------------------------------------ (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); t=0::20; u=ones(size(t)); y2=lsim(G1,u,t); y1=lsim(G,u,t); plot(t,y1,':',t,y2,'-') 蓝色为配置前,绿色为配置后 题5-3 某系统状态空间描述如下 ?0&??0x????4y??1010??1??3?u01?x???? ??3?2????6??0?x设计全维状态观测器,要求状态观测器的极点为程序>> 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))' ??1?2?3?。 结果:L = 4 0 -10 题5-4已知系统 10??0??0?x??0?u ???0x01???????12?16?7????1??y=[6 6 0]x 求系统的零点,极点和传递函数,并判断系统的能控性和能观测性。 分别选取K=[0 3 0].K=[1 3 2],K=[0 3 1]为状态反馈矩阵,求解闭环系统的零点,极点和传递函数,并判断系统的能控性和能观测性。它们是否发生改变为什么 (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 程序 >> 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); rank(Vo) 结果:ans =3 则系统能观 (2) ①当k=[0 3 0]时: 程序>> A=[0 1 0;0 0 1;-12 -16 -7];