第四章 控制系统建模,利用控制工具箱来建模,其中包括传递函数建模,状态方程建模,零极点建模以及模型的联接和转换自动控制理论提供了各种分析和设计方法:如时域响应法,根轨迹法、频域响应法,能方便地进行运算并能以图形的形式表达出来,常规的手工计算只能粗略计算,绘制近似图形,适合一般的工程应用 MATLAB的控制系统工具箱含有丰富的专门用于线性系统分析和设计的函数, 提供可靠、准确的运算工具,使得分析和设计更切合实际线性时不变系统的模型形式有:,传递函数模型(系统的外部模型) 零极点增益模型 框图模型 部分分式模型 状态方程模型(系统的内部模型) 这些模型之间都有着内在的联系,可以相互进行转换关心的重点,如何利用MATLAB进行系统分析中的计算工作如: 多项式运算 传递函数零点和极点的计算 闭环传递函数的计算 框图模型的化简运算等1. 传递函数模型,由于传递函数具有多项式之比的形式 分子和分母多项式在MATLAB中分别给定,系统在MATLAB中可以方便地由分子(numerator)和分母(denominator)系数构成的两个向量唯一地确定出来 分别用num和den表示 num=[b1,b2,…,bm,bm+1] den=[a1,a2,…,an,an+1] 注意:按s的降幂排列,缺项补零。
Sys=tf(num,den)%sys为变量名求零极点分布,[p,z]=pzmap(num,den) 绘制零极点分布图:pzmap(num,den) 零点(zero)用O表示;极点(pole)用X表示,例1:已知传递函数,计算G(s)的零极点 H(s)的特征方程 绘制GH(s)的零-极点图,G(s),numg=[6 0 1]; deng=[1 3 3 1]; z=roots(numg); p=roots(deng);,p p = -1.0000 -1.0000 + 0.0000i -1.0000 - 0.0000i z z = 0 + 0.4082i 0 - 0.4082i,H(s), n1=[1 1];n2=[1 2];d1=[1 2*i];d2=[1 -2*i];d3=[1 3]; numh=conv(n1,n2);denh=conv(d1,conv(d2,d3));,printsys(numh,denh) num/den = s^2 + 3 s + 2 --------------------------- s^3 + 3 s^2 + 4 s + 12,tf(numh,denh) Transfer function: s^2 + 3 s + 2 ----------------------------- s^3 + 3 s^2 + 4 s + 12,GH(s),num=conv(numg,numh);den=conv(deng,denh); printsys(num,den) num/den = 6 s^4 + 18 s^3 + 13 s^2 + 3 s + 2 -------------------------------------------------------------------- s^6 + 6 s^5 + 16 s^4 + 34 s^3 + 51 s^2 + 40 s + 12,p = -3.0000 -0.0000 + 2.0000i -0.0000 - 2.0000i -1.0000 -1.0000 + 0.0000i -1.0000 - 0.0000i z = -2.0000 -1.0000 0.0000 + 0.4082i 0.0000 - 0.4082i, pzmap(num,den), [p,z]=pzmap(num,den),,2. 零极点增益模型,零极点模型实际上是传递函数模型的另一种表现形式,其原理是分别对原系统传递函数的分子、分母进行因式分解处理,以获得系统的零点和极点的表示形式。
K为系统增益,zi为零点,pj为极点 在MATLAB中零极点增益模型用[z,p,k]矢量组表示即: z=[z1,z2,…,zm] p=[p1,p2,.,pn] k=[K] 函数tf2zp():传递函数模型零极点增益模型 函数zp2tf(): 零极点增益模型传递函数模型,例子: num=[1,11,30,0]; den=[1,9,45,87,50]; [z,p,k]=tf2zp(num,den),z = 0 -6.0000 -5.0000 p = -3.0000 + 4.0000i -3.0000 - 4.0000i -2.0000 -1.0000 k = 1,例子: z=[-3];p=[-1,-2,-5];k=6; [num,den]=zp2tf(z,p,k),tf(num,den) Transfer function: 6 s + 18 ----------------------- s^3 + 8 s^2 + 17 s + 10,num = 0 0 6 18 den = 1 8 17 10,3. 框图模型,我们分别以传递函数的形式建立了各部件的模型,目的是将它们有机地组合成完整的控制系统。
MATLAB可用来完成框图模型的化简变换,串联联接的框图,series()函数把两个传递函数串联起来,[num,den]=series(num1,den1,num2,den2),,,例, numg=[1];deng=[500 0 0]; numh=[1 1];denh=[1 2]; [num,den]=series(numg,deng,numh,denh); printsys(num,den) num/den = s + 1 ------------------ 500 s^3 + 1000 s^2,并联联接的框图,parallel()函数把两个传递函数并联起来,[num,den]=parallel(num1,den1,num2,den2),,G1(s),G2(s),例, numg=[1];deng=[500 0 0]; numh=[1 1];denh=[1 2]; [num,den]=parallel(numg,deng,numh,denh); printsys(num,den) num/den = 500 s^3 + 500 s^2 + s + 2 -------------------------------------- 500 s^3 + 1000 s^2,cloop将系统输出反馈到系统输入构成闭环系统。
当sign=+1时采用正反馈;当sign缺省时,默认为负反馈cloop()函数计算闭环传递函数,G1(s),,,,,,,,[num,den]=cloop(num1,den1,sign),,,例, numg=[1];deng=[500 0 0]; numc=[1 1];denc=[1 2]; [num1,den1]=series(numg,deng,numc,denc); [num,den]=cloop(num1,den1,-1); printsys(num,den) num/den = s + 1 ------------------------------------- 500 s^3 + 1000 s^2 + s + 1,feedback函数将两个系统按反馈形式进行联接sign缺省时,默认为-1feedback()函数计算闭环传递函数,G1(s),,,,,,,,[num,den]=feedback(num1,den1,num2,den2,sign),G2(s),,G1(s),G2(s),,例, numg=[1];deng=[500 0 0]; numc=[1 1];denc=[1 2]; [num,den]=feedback(numg,deng,numh,denh,-1); printsys(num,den) num/den = s + 2 ------------------------------------ 500 s^3 + 1000 s^2 + s + 1,多回路化简,G1(s),,,,,,,,G2(s),,,G3(s),,,,G4(s),,,H1(s),,,,,H2(s),,,,,-,R(s),C(s),,已知各环节的传递函数,ng1=[1];dg1=[1 10]; ng2=[1];dg2=[1 1]; ng3=[1 0 1];dg3=[1 4 4]; ng4=[1 1];dg4=[1 6]; nh1=[1 1];dh1=[1 2]; nh2=[2];dh2=[1];,多回路化简,n1=conv(nh2,dg4);d1=conv(dh2,ng4); % H2(S) /G4(S)相除 [n2a,d2a]=series(ng3,dg3,ng4,dg4); % G3(S)与G4(S)串联 [n2,d2]=feedback(n2a,d2a,nh1,dh1,+1); % 与H1(S)构成反馈 [n3a,d3a]=series(ng2,dg2,n2,d2); % 与G2(S)串联 [n3,d3]=feedback(n3a,d3a,n1,d1); % 与H2(S) /G4(S)构成反馈 [n4,d4]=series(ng1,dg1,n3,d3); % 与G1(S)串联 [num,den]=cloop(n4,d4,-1); % 单位反馈,结果显示,printsys(num,den) num/den = s^5 + 4 s^4 + 6 s^3 + 6 s^2 + 5 s + 2 -------------------------------------------------------------------------- 12 s^6 +205 s^5 +1066 s^4 +2517 s^3 +3128 s^2 +2196 s +712,G1(s),,,,,,,,G2(s),,,G3(s),,,,G4(s),,,H1(s),,,,,H2(s),,,,,-,R(s),,G5(s),,,,,,n1=conv(nh2,dg4);d1=conv(dh2,ng4); % H2(S) /G4(S)相除 [n2a,d2a]=series(ng3,dg3,ng4,dg4); % G3(S)与G4(S)串联 [n3a,d3a]=parellel(n2a,d2a,ng5,dg5); % G3(S)与G4(S)串联后与G5(s)并联 [n2,d2]=feedback(n3a,d3a,nh1,dh1,+1); % 与H1(S)构成反馈 [n4a,d4a]=series(ng2,dg2,n2,d2); % 与G2(S)串联 [n3,d3]=feedback(n4a,d4a,n1,d1); % 与H2(S) /G4(S)构成反馈 [n4,d4]=series(ng1,dg1,n3,d3); % 与G1(S)串联 [num,den]=cloop(n4,d4,-1);,严格意义上的传递函数,传递函数的定义为经过零极点对消之后的输入-输出关系,当分子分母有公因式时,必须消除。
minreal()函数,即最小实现是一种模型的实现,它消除了模型中过多的或不必要的状态对传递函数或零极点增益模型,这等价于将可彼此对消的零极点对进行对消对以前的多回路的例子 p1=roots(num) p1 = -2.0000 0.0000 + 1.0000i 0.0000 - 1.0000i -1.0000 -1.0000 p2=roots(den) p2 = -10.1174 -2.4403 -2.3493 -0.5882 + 0.8228i -0.5882 - 0.8228i -1.0000,[a,b,c,d]=tf。