现代控制系统分析与设计
一 线性定常系统模型
1. 线性定常系统的数学模型
在MATLAB中,线性定常(linear time invariant, 简称为 LTI)系统可以用4种数学模型描述,即传递函数(TF)模型、零极点增益(ZPK)模型和状态空间(SS)模型以及SIMULINK结构图。前三种数学模型是用数学表达式表示的,且均有连续和离散两种类型,通常把它们统称为LTI模型。
1) 传递函数模型(TF 模型)
令单输入单输出线性定常连续和离散系统的传递函数分别为
G(s)?Y(s)U(s)?bmsnmm??bm?s???b1s?b0s?an?1sn?1???a1s?a0 (1-1)
和
G(z)?Y(z)U(z)?bmznm?bm?zm????b1z?b0z?an?1zn?1???a1z?a0。 (1-2)
在MATLAB中,连续系统和离散系统的传递函数都用分子/分母多项式系数构成的两个行向量num和den表示,即
num??bm?b1b0?,den??1an?1?a0?
系统的传递函数模型用MATLAB提供的函数tf( )建立。函数tf ( )不仅能用于建立系统传递函数模型,也能用于将系统的零极点增益模型和状态空间模型转换为传递函数模型。该函数的调用格式如下:
G?tf(num,den) 返回连续系统的传递函数模型G。
G?tf(num,den,Ts) 返回离散系统的传递函数模型G。Ts为采样周期,当Ts=-1或者Ts=[]时,系统的采样周期未定义。
Gtf?tf(G) 可将任意的LTI模型G转换为传递函数模型Gtf。 例1-1 已知一个系统的传递函数为
G(s)?6s?6s?11s?632
建立传递函数模型。
在命令窗中运行下列命令
>>num=6;den=[1 6 11 6];G=tf (num, den)
返回
Transfer function: 6
---------------------- s^3 + 6 s^2 + 11 s + 6
2) 零极点增益模型(ZPK模型)
1
系统的零极点增益模型是传递函数模型的一种特殊形式。令线性定常连续和离散系统的零极点形式的传递函数分别为
G(s)?Y(s)U(s)?K(s?z1)(s?z2)?(s?zm)(s?p1)(s?p2)?(s?pn) (1-3)
和
G(z)?Y(z)U(z)?K(z?z1)(z?z2)?(z?zm)(z?p1)(z?p2)?(z?pn) (1-4)
在MATLAB中,连续和离散系统的零点和极点都用行向量z和p表示,即
z??z1z2?zm?,p??p1p2?pn?。
系统的零极点增益模型用MATLAB提供的函数zpk ( )建立。函数zpk( )不仅能用来建立系统零极点增益模型,也能用于将系统的传递函数模型和状态空间模型转换为零极点增益模型。该函数的调用格式如下:
G?zpk(z,p,k) 返回连续系统的零极点增益模型G。
G?zpk(z,p,k,Ts) 返回离散系统的零极点增益模型G。Ts为采样周期,当Ts=-1或者Ts=[]时,系统的采样周期未定义。
Gzpk?zpk(G) 可将任意的LTI模型G转换为零极点增益模型Gzpk。 例1-2 已知系统的传递函数为
G(s)?6(s?1)(s?2)(s?3)
建立系统的零极点增益模型。
在命令窗中运行下列命令 >> z=[ ];p=[-1 -2 -3];k=6;G=zpk(z,p,k)
返回 Zero/pole/gain:
6
----------------- (s+1) (s+2) (s+3)
注意:无零点时,设z为空。 3) 状态空间模型(SS模型)
令多输入多输出线性定常连续和离散系统的状态空间表达式分别为
?(t)?Ax(t)?Bu(t) xy(t)?Cx(t)?Du(t) (1-5)
和
x(k?1)?Ax(k)?Bu(k)
2
y(k)?Cx(k)?Du(k) (1-6)
在MATLAB中,连续系统和离散系统的状态空间模型都用MATLAB提供的函数ss ( )建立。函数ss ( )不仅能用于建立系统的状态空间模型,也能用于将系统的传递函数模型和零极点增益模型转换为状态空间模型。该函数的调用格式如下: G?ss(A,B,C,D) 返回连续系统的状态空间模型G。
G?ss(A,B,C,D,Ts) 返回离散系统的状态空间模型G。Ts为采样周期,当Ts=1或者Ts=[]时,系统的采样周期未定义。
Gss?ss(G) 可将任意的LTI模型G转换为状态空间模型Gss。 例1-3 已知系统的状态空间表达式为 ?0???0 x????610?110??0????1x?0u ?????6???1?? y??6建立系统的状态空间模型。
在命令窗中运行下列命令
00?x
>> A=[0 1 0;0 0 1;-6 -11 -6];B=[0;0;1];C=[6 0 0];D=0;G=ss(A,B,C,D) 返回
a =
x1 x2 x3 x1 0 1 0 x2 0 0 1 x3 -6 -11 -6 b =
u1 x1 0 x2 0 x3 1 c =
x1 x2 x3 y1 6 0 0 d = u1 y1 0
Continuous-time model. 注意:D=0不能缺省。
2.模型转换
上述三种LTI模型之间可以通过函数tf( ),zpk( )和ss( )相互转换。线性定常系统的传递函数模型和零极点增益模型是唯一的,但系统的状态空间模型是不唯一的。函数ss( )只能将
3
传递函数模型和零极点增益模型转换为一种指定形式的状态空间模型。
例1-4 已知系统的传递函数,建立TF模型,将其转换为ZPK模型和SS模型。再将转换得到的SS模型转换为TF模型。 G(s)?编制如下程序%ex14。 %ex14
num=5;den=[1 4 5 2];Gtf=tf(num,den); Gzpk=zpk(Gtf) Gss=ss(Gtf)
Gtf1=tf(Gss)
在命令窗中运行该程序,即 >> ex14 返回
Zero/pole/gain: 5 ------------- (s+2) (s+1)^2 a =
x1 x2 x3 x1 -4 -2.5 -0.5 x2 2 0 0 x3 0 2 0 b =
u1 x1 1 x2 0
x3 0 c =
x1 x2 x3 y1 0 0 1.25 d = u1 y1 0
Continuous-time model. Transfer function: 5
--------------------- s^3 + 4 s^2 + 5 s + 2
传递函数可以转换为约旦标准型(包括对角标准型)、能控标准型和能观测标准型。 我们编制的函数jordants( ) 可用部分分式展开将传递函数转换为对角标准型或约当标准型。该函数的调用格式为:
GJ?jordants(num,den)
5s?4s?5s?232
4
GJ为转换得到对角标准其中num和den分别为传递函数分子和分母多项式系数的行向量,
型或约当标准型。
该函数的程序如下:
function Gj=jordants(num,den) %用部分分式展开将传递函数转换为约当标准型
[R,P,K]=residue(num,den); j=1;q=P(1);m(1)=0; for i=1:length(P)
if P(i)==q
m(j)=m(j)+1; else q=P(i); j=j+1; m(j)=1;
end
end %计算各极点的重数 Aj=diag(P);
for i=1:length(P)-1
if Aj(i,i)==Aj(i+1,i+1) Aj(i,i+1)=1; else Aj(i,i+1)=0;
end
end %构造系统矩阵Aj B1=0; l=0;
for j=1:length(m) l=l+m(j);
B1(l)=1; end
Bj=B1'; %构造输入矩阵Bj n=1;l=m(1);
Cj(:,1:m(1))=rot90(R(1:m(1),:),3); for k=2:length(m)
n=l+1;l=l+m(k);
Cj(:,n:l)=rot90(R(n:l,:),3);
end %构造输出矩阵Cj if K==[ ]
Dj=0; else
Dj=K;
end %构造直联矩阵Dj Gj=ss(Aj,Bj,Cj,Dj);
例1-5 已知系统的传递函数为
G(s)?将其转换为对角标准型。
6s?6s?11s?632
5