2.3 系统模型的连接
在一般情况下,控制系统常常由若干个环节通过串联、并联和反馈连接的方式组合而成,能够对在各种连接模式下的系统进行分析,就需要对系统的模型进行适当的处理。在MATLAB的控制系统工具箱中提供了大量的对控制系统的简单模型进行连接的函数,如表2-2所示。
表2-2 模型连接函数
1.串联连接
当系统 ∑1(A1,B1,C1,D1)和∑2(A2,B2,C2,D2)如图2-1所示连接时,有
u1 =u,y=y2,u2 =y1
这时可得串联后系统总的状态空间表达式为
图2-1 系统的串联连接
或
串联后系统总的传递函数矩阵为
G(s)=C(sI-A)-1 B+D=G2(s)G1(s)
在MATLAB的控制系统工具箱中提供了系统的串联连接处理函数series(),它既可处理由状态方程表示的系统,也可处理由传递函数矩阵表示的单输入多输出系统,其调用格式为
[A,B,C,D] =series(A1,B1,C1,D1,A2,B2,C2,D2)
和
[num,den] =series(num1,den1,num2,den2)
其中,(A1,B1,C1,D1)和(A2,B2,C2,D2)分别为系统1和系统2的状态空间形式的系数矩阵;(A,B,C,D)为串联连接后系统的整体状态空间形式的系数矩阵;num1,den1和num2,den2分别为系统1和系统2的传递函数的分子和分母多项式系数向量;num,den则为串联连接后系统的整体传递函数矩阵的分子和分母多项式系数向量。
【例2-14】 求下列两系统串联后的系统模型
解 在MATLAB命令窗口中,利用下列MATLAB命令
>>A1=[2,3;-1,4];B1=[1;0];C1=[2,4];D1=1; >>A2=[0,3;-3,-1];B2=[0;1];C2=[1,3];D2=2; >>[A,B,C,D] =series(A1,B1,C1,D1,A2,B2,C2,D2)
结果显示:
当系统∑1(A1,B1,C1,D1)和系统∑2(A2,B2,C2,D2)如图2-2所示连接时,series()函数的调用格式为
[A,B,C,D] =series((A1,B1,C1,D1,A2,B2,C2,D2,outputs1,inputs2)
其中,outputs1和inputs2用于指定系统1的部分输出和系统2的部分输入进行连接的编号。
若系统∑1(A1,B1,C1,D1)具有4输入4输出,系统∑2(A2,B2,C2,D2)具有3输入3输出,今将系统1的输出2和输出4串联至系统2的输入2和输入3,则可以采用如下命令。
图2-2 部分串联连接
>>outputs1=[2 4];inputs2=[2 3]; >>[A,B,C,D] =series(A1,B1,C1,D1,A2,B2,C2,D2,outputs1,inputs2)
2.并联连接
当系统∑1(A1,B1,C1,D1)和系统∑2(A2,B2,C2,D2)如图2-3所示连接时有
u1 =u2 =u,y=y1 +y2
这时可得并联后系统总的状态空间表达式
图2-3 系统并联连接
或
并联后系统的传递函数矩阵为
G(s)=C(sI-A)-1 B+D=G1(s)+G2(s)
在MATLAB的控制系统工具箱中提供了系统的并联连接处理函数parallel(),该函数的调用格式为
[A,B,C,D] =parallel(A1,B1,C1,D1,A2,B2,C2,D2)
和
[num,den] =parallel(num1,den1,num2,den2)
其中前一式用来处理由状态方程表示的系统,后一式仅用来处理由传递函数(阵)表示的系统。
【例2-15】 求下列两系统并联后的系统模型。
解 在MATLAB命令窗口中,利用下列MATLAB命令
>>num1=3;den1=[1,4];num2=[2,4];den2=[1,2,3]; >>[num,den] =parallel(num1,den1,num2,den2)
结果显示:
可得并联后的系统模型为
当系统∑1(A1,B1,C1,D1)和系统∑2(A2,B2,C2,D2)如图2-4所示连接时,函数parallel()的调用格式为
[A,B,C,D] =parallel(A1,B1,C1,D1,A2,B2,C2,D2,inp1,inp2,out1,out2)
其中,inp1和inp2分别指定两系统要连接在一起的输入端编号;out1和out2分别指定要进行相加的输出端编号。这样系统将具有[v1 u v2]输入,[z1 y z2]输出。
3.反馈连接
当系统∑1(A1,B1,C1,D1)和系统∑2(A2,B2,C2,D2)如图2-5所示连接时有
u1 =u ±y2,u2 =y1,y=y1
图2-4 部分并联连接
图2-5 系统的反馈连接
这时可得反馈连接后系统的总状态空间表达式为
或
总的传递函数矩阵为
G(s)=C(sI-A)-1 B+D=[I∓G1(s)G2(s)] -1 G1(s)
在MATLAB的控制系统工具箱中提供了系统反馈连接处理函数feedback(),其调用格式为
[A,B,C,D] =feedback(A1,B1,C1,D1,A2,B2,C2,D2,sign)
和
[num,den] =feedback(num1,den1,num2,den2,sign)
其中,前一式用来处理由状态方程表示的系统;后一式用来处理由传递函数表示的系统;sign为反馈极性,对于正反馈sign取1,对负反馈取-1或默认。
【例2-16】 对于如下两系统
求如图2-5所示方式连接的闭环传递函数。
解 MATLAB命令及其执行结果如下
当系统∑1(A1,B1,C1,D1)和系统∑2(A2,B2,C2,D2)如图2-6所示方式连接时,函数feedback()的调用格式为
[A,B,C,D] =feedback(A1,B1,C1,D1,A2,B2,C2,D2,out1,inp1,sign)
上式表示将系统1的指定输出out1连接到系统2的输入,系统2的输出连接到系统1的指定输入inp1。
特别地,对于单位反馈系统,MATLAB提供了更简单的处理函数cloop(),其调用格式为
[A,B,C,D] =cloop(A1,B1,C1,D1,sign)
图2-6 部分反馈连接
和
[num,den] =cloop(num1,den1,sign)
[A,B,C,D] =cloop(A1,B1,C1,D1,outputs,inputs)
其中,第三式表示将指定的输出outputs反馈到指定的输入inputs,以此构成闭环系统。outputs指定反馈的输出序号;inputs指定输入反馈序号。
例如,状态系统∑(A1,B1,C1,D1)具有8输入5输出,现将第1,3,5输出负反馈到第2,8,7输入中,以此构成闭环系统。则可利用下列命令
>>outputs=[1 3 5];inputs=[ -2 -8 -7] >>[A,B,C,D] =cloop(A1,B1,C1,D1,outputs,inputs)
【例2-17】 已知系统的方框图如图2-7所示,求系统的传递函数。
图2-7 某系统的方框图
解 MATLAB命令及其执行结果如下
4.将状态增广到状态空间系统的输出中
对于系统
若将状态增广到系统的输出中则可表示为
利用MATLAB的augstate()函数,便可由式(2-19)直接求出式(2-20),其调用格式为
[Ab,Bb,Cb,Db] =augstate(A,B,C,D)
其中,(A,B,C,D)为原系统的系数矩阵;(Ab,Bb,Cb,Db)为状态增广后系统的系数矩阵。
5.系统的组合
当系统∑1(A1,B1,C1,D1)和系统∑2(A2,B2,C2,D2)如图2-8所示的方式进行组合时有
图2-8 系统的组合
MATLAB的组合函数append()的调用格式为
[A,B,C,D] =append(A1,B1,C1,D1,A2,B2,C2,D2)
6.根据框图建模
利用connect()函数,可以根据系统的方框图按指定方式求取系统模型。其函数调用格式为
[A1,B1,C1,D1] =connect(A,B,C,D,Q,inputs,outputs)
其中,(A,B,C,D)为由函数append()生成的无连接对角方块系统的状态空间模型系数矩阵;Q矩阵用于指定系统(A,B,C,D)的内部连接关系,Q矩阵的每一行对应于一个有连接关系的输入,其第一个元素为输入编号,其后为连接该输入的输出编号,如采用负连接,则以负值表示;inputs和outputs用于指定系统(A1,B1,C1,D1)的输入和输出的编号;(A1,B1,C1,D1)为在指定输入和输出并按要求的内部连接关系下所生成的系统。
【例2-18】 以方框图表示的系统的连接关系如图2-9所示。求以u1,u2为输入,y2,y3为输出的系统。
图2-9 用方框图表示系统的连接关系
其中
解 ①定义方框图中各子系统,并对各子系统的输入和输出进行编号。
将单输入单输出子系统sys1 的输入、输出定义为输入1和输出1;双输入双输出子系统sys2的输入、输出定义为输入2,3和输出2,3;单输入单输出子系统sys3的输入、输出定义为输入4和输出4。
②建立无连接的状态空间模型。
利用append()函数形成一个由所有无连接关系的子系统构成的对角块状态空间模型(A,B,C,D),MATLAB命令如下所示
>>num1=10;den1=[1 5];[A1,B1,C1,D1] =tf2ss(num1,den1); >>A2=[ -9.0201 17.7791;-1.6943 3.2138]; >>B2=[ -5.5112 0.5362;-0.0020 -1.8470]; >>C2=[ -3.2897 2.4544;-13.5009 18.0745]; >>D2=[ -0.5476 -0.1410;-0.6459 0.2958]; >>[A,B,C,D] =append(A1,B1,C1,D1,A2,B2,C2,D2); >>Z3=-1;P3=-2;K3=2;[A3,B3,C3,D3] =zp2ss(Z3,P3,K3); >>[Aa,Ba,Ca,Da] =append(A,B,C,D,A3,B3,C3,D3)
结果显示:
③指定方框图间的连接关系。
因为本例输入3与输出1和输出4有连接关系(其中与输出4是负连接关系);输入4与输出3有连接关系;其他的输入与任何输入输出均无连接关系。所以在MATLAB下采用以下命令定义Q矩阵
>>Q=[3 1 -4;4 3 0];
④选择系统的输入/输出编号。
因为将输入1和输入2作为外部输入;将输出2和输出3作为外部输出,所以在MATLAB下采用以下命令定义inputs和outputs
>>inputs=[1 2];outputs=[2 3];
⑤最后在MATLAB命令窗口中,利用以下命令便可得到所求系统。
>>[Ac,Bc,Cc,Dc] =connect(Aa,Ba,Ca,Da,Q,inputs,outputs)
结果显示:
7.化简系统
在MATLAB中使用ssselect()函数,可根据系统指定的输入和输出产生一个子系统,其函数调用格式为
[A1,B1,C1,D1] =ssselete(A,B,C,D,inputs,outputs)
或
[A1,B1,C1,D1] =ssselete(A,B,C,D,inputs,outputs,states)
其中,(A,B,C,D)为给定的状态空间模型系数矩阵;inputs和outputs用于指定作为子系统的输入和输出的编号;states用于指定作为子系统的状态的编号。
例如,对一个具有5输出4输入的状态空间系统(A,B,C,D),若以输入1和2,输出2,3和4构成一个子系统,则可利用下列命令
>>inputs=[1 2];outputs=[2 3 4 ]; >>[A1,B1,C1,D1] =ssselete(A,B,C,D,inputs,outputs)
利用MATLAB的ssdelete()函数也可产生一个系统,不过它的用法和ssselect()函数刚好相反,该函数的调用格式为
[A1,B1,C1,D1] =ssdelete(A,B,C,D,inputs,outputs)
或
[A1,B1,C1,D1] =ssdelete(A,B,C,D,inputs,outputs,states)
其中,inputs,outputs和states用于指定从系统∑(A,B,C,D)中要删除的输入、输出和状态的编号;(A1,B1,C1,D1)为删除以上指定参数后的子系统。