- 計算機仿真技術與CAD
- 李國勇主編
- 3544字
- 2019-01-09 15:00:31
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)為刪除以上指定參數后的子系統。