このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
MIMO 制御システム
この例では、connect
を使用して数値 LTI モデルと調整可能な制御設計ブロックを相互接続し、MIMO 制御システムを構築する方法を示します。
次の 2 入力 2 出力の制御システムについて考えてみましょう。
プラント G は 2 入力と 2 出力をもつ蒸留塔です。2 つの入力は還流 L と煮沸 V です。2 つの出力は 2 つの化学薬品の濃度で、ベクトル信号 y = [y1,y2] で表します。このプラント モデルを以下のように表すことができます。
ベクトル設定点信号 r = [r1,r2] は、2 つの化学薬品の目標濃度を指定します。ベクトルの誤差信号 e は、静的な 2 行 2 列の分離行列である D への入力を表します。CL と CV は G の 2 つの入力を制御する独立した PI コントローラーを表します。
この閉ループ制御システムを表す 2 入力 2 出力のモデルを作成するには、次の手順に従います。
2 行 2 列プラント G を表す数値 LTI モデルを作成します。
s = tf('s','TimeUnit','minutes'); G = [87.8 -86.4 ; 108.2 -109.6]/(75*s+1); G.InputName = {'L','V'}; G.OutputName = 'y';
閉ループ モデルを構成すると、
connect
は入力と出力の名前を使用して、ブロック線図コンポーネント間の接続を成形します。そのため、以下の方法のいずれかで、名前を伝達関数G
の入力と出力に割り当てなければなりません。 .G.InputName = {'L','V'}
のように、cell 配列内で信号名を指定することにより、入力と出力の名前を個々の信号に割り当てることができます。また、ベクトル信号名も使用できます。これは自動的に展開されます。たとえば、コマンド
G.OutputName = 'y'
は名前の'y(1)'
と'y(2)'
をG
の出力に割り当てます。
分離行列 D および PI コントローラー CL と CV を表す調整可能な制御設計ブロックを作成します。
D = tunableGain('Decoupler',eye(2)); D.u = 'e'; D.y = {'pL','pV'}; C_L = tunablePID('C_L','pi'); C_L.TimeUnit = 'minutes'; C_L.u = 'pL'; C_L.y = 'L'; C_V = tunablePID('C_V','pi'); C_V.TimeUnit = 'minutes'; C_V.u = 'pV'; C_V.y = 'V';
メモ
u
とy
はそれぞれInputName
とOutputName
プロパティの省略形表記です。そのため、たとえば以下のように入力します。D.u = 'e'; D.y = {'pL','pV'};
これは、以下の入力と等価です。
D.InputName = 'e'; D.OutputName = {'pL','pV'};
加算結合を作成します。
加算結合は、r と y の差を取ることにより誤差信号 e を生成します。
Sum = sumblk('e = r - y',2);
Sum
は、式'e = r - y'
が記述する加算結合用の伝達関数を表します。sumblk
の 2 番目の引数は、Sum
の入力と出力がそれぞれ長さ 2 のベクトル信号であることを指定します。そのため、信号名{'r(1)','r(2)','y(1)','y(2)'}
がSum.InputName
に、信号名{'e(1)','e(2)'}
がSum.OutputName
に自動的に割り当てられます。すべてのコンポーネントを連結して、r から y への閉ループ システムを構築します。
CLry = connect(G,D,C_L,C_V,Sum,'r','y');
関数
connect
の引数は閉ループ システムのすべてのコンポーネントを任意の順に含みます。connect
は入力と出力の名前を使用して信号を連結し、自動的にコンポーネントを結合します。connect
への最後の 2 つの引数はそれぞれ閉ループ モデルの入力と出力の信号を指定します。結果のgenss
モデルCLry
は 2 つの入力と 2 つの出力をもっています。