首页 > 范文大全 > 正文

线性连续SISO系统极点配置算法的MATLAB实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇线性连续SISO系统极点配置算法的MATLAB实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:针对典型的SISO系统极点配置方法,利用常用的算法进行了matlab的编程实现,对同一应用问题,当期望极点位置发生改变时,只需在程序中修改X的值便可,当系统发生变化时,只需修改A,B,X的相应取值即可,并通过实例仿真进行验证。

关键词:SISO系统;状态; 闭环极点;极点配置;算法; MATLAB

中图分类号:TP317.4文献标识码:A文章编号:1009-3044(2008)36-2855-03

The Implement of Pole Assignment Arithmetic Based on MATLAB of SISO System of the Linear System

ZHANG Jiang-xia

(Department of Electrical Engineering, Shanxi University of Technology, Hanzhong 723003, China)

Abstract: Aims at the typical pole assignment of the SISO systems, the common arithmetic is used to carry out the MATLAB implement. For the same question, when the anticipant place of the pole changes, just to modify the value of X, when the system changes, just to modify the value of A,B,X, and the program have been convinced by computer simulation.

Key words: SISO system; state; close-loop pole; pole assignment; arithmetic; MATLAB

1 引言

当系统以状态空间描述以后,系统的状态含有系统的全部运动信息。众所周知,系统的运动状态也即其动态性能,主要由系统的极点位置决定。把闭环极点组配置到所希望的位置上,实际上等价于使综合得到的系统的动态性能达到期望的要求[1]。给定线性定常系统:

=Ax+Bu,y=Cx (1)

式中x,u,y 分别为n维、p维和q维向量,A、B、C分别为n×n、n×p、q×n阶实矩阵。系统可以有两种反馈结构,即状态反馈和输出反馈。不管是状态反馈还是输出反馈均可以改变状态的系数矩阵,但不是说两者具有等同的性能。由于状态能够完整的表征系统的动态行为,因而利用状态反馈时,其信息量大而完整,而输出反馈仅利用了状态变量的线性组合来进行反馈,其信息量较小。这里主要讨论状态反馈下的极点配置问题。

当反馈形式确定以后,再给出n个期望的闭环极点λ1*,λ2*,…,λn*,对(1)式给定的线性定常系统,引入控制规律:

U=v-Kx (2)

其中v为p维系统参考输入向量,K为p×n维反馈增益矩阵。极点配置问题就是依据给出的n个期望的闭环极点λ1*,λ2*,…,λn*来计算反馈增益矩阵 的问题。

2 单输入单输出系统的极点配置方法[2]

设受控系统状态方程:

=Ax+Bu(3)

要通过状态反馈的方法,使闭环系统的极点位于预先规定的位置上,其充分必要条件是系统(3)完全能控。

考虑(3)给定的单输入单输出系统及一组希望的极点位置λ1*,λ2*,…,λn*,根据定理1,如果系统完全可控,则可以找到状态反馈增益矩阵 ,引入控制规律:U=v-Kx,使系统能够达到任意期望的闭环极点。

2.1 单输入单输出极点配置常用算法[3]

1) 规范算法

Step1:计算A的特征多项式,即

Step2:计算由λ1*,λ2*,…,λn*所决定的希望特征多项式,即

Step3:计算

Step4:计算变换矩阵

Step5:计算增益矩阵k=kp

2) 直接计算法

Step1:令k=[k1,k2,…kn]

Step2:计算A的特征多项式,即

Step3:计算A-Bk 的特征多项式,即

Step4:比较a*(s)与a(s)的同次幂系数相等,即可确定增益矩阵k。

3) Ackermann公式法

Step1:检查系统的可控性

Step2:当系统可控时,计算 的系数αi,

其中αi为 的系数。

Step3:计算?准(A)

Step4:计算增益矩阵 。

算法(1)是一种规范算法,也适用于单输入多输出系统。算法(2)是一种人工计算方法,在维数较低时可以使用,当位数大于3维时,计算比较繁琐。算法(3)是一种公式计算方法,由于需要求解系统能控矩阵的逆矩阵,而系统的能控矩阵不一定为方阵,同时当维数较高时,该方法存在一定的不稳定状况。

2.2 SISO系统极点配置算法的MATLAB实现[4]

本文依据算法(1),编写MATLAB程序进行实现,程序如下:

%单输入单输出系统极点配置规范算法

clear;

clc;

%给定系统矩阵A、B及期望的极点位置向量X:

A=[?];

B=[?];

X=[?]

%系统的能控判别阵Q1:

Q1=ctrb(A,B);

n=size(Q1,2);

Q=eye(size(Q1));

for i=1:n

Q(:,i)=Q1(:,n-i+1);

end

%对系统的可控性进行判断:

dim=size(X,2);

K0=eye(1,dim);

W=eye(n);

if ~(rank(Q1)==dim)

msgbox('该系统不完全可控,不能进行极点的任意配置!','注意','warn')

else

%系统矩阵的特征多项式与期望极点多项式系数向量detA、detX:

detA=poly(A);

detX=poly(X);

%求取变换阵K0:

for i=1:dim

K0(i)=detX(dim+2-i)-detA(dim+2-i);

end

%求取变换阵W:

for i=1:n

for j=1:n-1

if (i>j)

W(i,j)=detA(i-j+1);

end

end

end

%变换阵P:

P=inv(Q*W);

%求得状态反馈阵K:

K=K0*P

%对状态反馈后的系统进行验证:

AK=A-B*K;

TureW=eig(AK)

End

此算法首先对系统的能控性进行判别,如果系统完全可控,则进行极点配置,配置完成后对结果进行验证。如果系统不完全可控,则给出提示。

3 算例

例:给定受控系统为 ,指定期望的闭环极点为 。

即 ,输入程序运行后结果如下:

K = -1.3333 - 3.3333 - 8.1667 - 4.1667

TureW = - 2.0000

-1.0000 + 1.0000i

-1.0000 - 1.0000i

-1.0000

验证结果正确。

4 结束语

通过以上的论述可见,本文对SISO系统极点配置算法的实现方法具有很高的通用性和实用性.,能够根据不同需要通过修改程序参数满足使用要求。

参考文献:

[1] 王万良. 自动控制原理, 北京:科学出版社,2001.

[2] 张家生. 连续系统设计极点配置方法研究[J].计算技术与自动化,2003.2(6).

[3] 阙志宏,等. 线性系统理论[M].西安:西北工业大学出版社.1994.

[4] Frederick,D.K.Feedback Control Problems using MATLAB and the Control System Toolbox.张彦斌译[M],西安交通大学出版社.

[5] Katsuhiko Ogata. Modern Control Engineering[M]. 卢伯英,于海勋,等译. 电子工业出版社.

注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”