固定コンポーネントと調整可能なコンポーネントを含む MIMO 制御システム
この例では、connect を使用して固定コンポーネント (数値線形時不変 (LTI) モデル) と調整可能なコンポーネント (制御設計ブロック) の両方をもつブロック線図を表す動的システム モデルを構築して、MIMO 制御システムを構築する方法を示します。この例の手法を使用して、あらゆるタイプの動的システム モデルまたは要素からモデルを構築できます。
次の図の 2 入力 2 出力の制御システムについて考えます。
プラント "G" は 2 入力と 2 出力をもつ蒸留塔です。プラント入力は還流 "L" と煮沸 "V" です。2 つの出力は 2 つの化学薬品の濃度で、ベクトル信号 y = [y(1),y(2)] で表します。この例では、プラント モデルが以下のとおりであると仮定します。
ベクトル設定点信号 r = [r(1),r(2)] は、2 つの化学薬品の目標濃度を指定します。ベクトルの誤差信号 "e" は、静的な 2 行 2 列の分離行列である "D" への入力を表します。"CL" と "CV" は "G" の 2 つの入力を制御する独立した PI コントローラーを表します。
ブロック線図の構築
このブロック線図を表す 2 入力 2 出力の動的システム モデルを作成するには、まず各コンポーネントを表す LTI モデルを作成します。この例では、プラントに状態空間モデルを使用します。ブロック線図の信号名を使用して、プラント モデルの InputName
プロパティと OutputName
プロパティを設定します。
s = tf('s'); G = [87.8 -86.4 ; 108.2 -109.6]/(75*s+1); G.InputName = {'L','V'}; G.OutputName = 'y';
この例では、2 つの入力に別個に名前が付けられます。単一の名前をマルチチャネル入力または出力に割り当て、名前を拡張できるようにすることも可能です。たとえば、プラント出力名を確認します。
G.OutputName
ans = 2x1 cell
{'y(1)'}
{'y(2)'}
この例では、調整可能な制御設計ブロックを使用して PI コントローラーおよび分離行列を表します。
D = tunableGain('Decoupler',eye(2)); D.InputName = 'e'; D.OutputName = {'pL','pV'}; C_L = tunablePID('C_L','pi'); C_L.InputName = 'pL'; C_L.OutputName = 'L'; C_V = tunablePID('C_V','pi'); C_V.InputName = 'pV'; C_V.OutputName = 'V';
入力名と出力名をモデルに割り当てる際には、ショートカット u
と y
を使用してそれぞれ InputName
プロパティと OutputName
プロパティを設定できます。たとえば、コントローラー C_V
の入力名と出力名を指定する別の方法を以下に示します。
C_V.u = 'pV'; C_V.y = 'V';
sumblk
コマンドを使用して加算結合を表す要素を作成します。このブロック線図内の加算結合はベクトル信号 "r" と "y" の差をとり、出力 "e" を生成します。したがって、加算結合の式は e = r – y です。
Sum = sumblk('e = r - y',2);
入力引数 2 は、Sum
の入力と出力がそれぞれ長さ 2 のベクトル信号であることを sumblk
に指示します。そのため、信号名が自動的に拡張されます。たとえば、入力名を確認します。
Sum.InputName
ans = 4x1 cell
{'r(1)'}
{'r(2)'}
{'y(1)'}
{'y(2)'}
次に、connect
を使用してすべてのコンポーネントを連結して、"r" から "y" への閉ループ システムを構築します。
CL = connect(G,D,C_L,C_V,Sum,'r','y');
関数 connect の引数は閉ループ システムのすべてのコンポーネントを任意の順に含みます。connect
は入力と出力の名前を使用して信号を連結し、自動的にコンポーネントを結合します。connect への最後の 2 つの引数はそれぞれ閉ループ モデルの入力と出力の信号を指定します。r
と y
がともにベクトル信号であるため、得られた genss
モデル CL
には、2 つの入力と 2 つの出力があります。
CL
Generalized continuous-time state-space model with 2 outputs, 2 inputs, 4 states, and the following blocks: C_L: Tunable PID controller, 1 occurrences. C_V: Tunable PID controller, 1 occurrences. Decoupler: Tunable 2x2 gain, 1 occurrences. Type "ss(CL)" to see the current value and "CL.Blocks" to interact with the blocks.
その他のシステム応答
プラント入力での外乱に対するこのシステムの応答を知りたいとします。それを得るには、プラント入力でブロック線図に "解析ポイント" を作成します。解析ポイントは、外乱を挿入したり応答を抽出したりすることのできる、モデル内の位置です。connect
では、解析ポイントを導入する信号位置を直接指定できます。プラント入力での外乱に対するシステム応答を調べるには、信号位置 L
および V
に解析ポイントを挿入します。
APs = {'L','V'}; CL_APs = connect(G,D,C_L,C_V,Sum,'r','y',APs); CL_APs
Generalized continuous-time state-space model with 2 outputs, 2 inputs, 4 states, and the following blocks: CONNECT_AP1: Analysis point, 2 channels, 1 occurrences. C_L: Tunable PID controller, 1 occurrences. C_V: Tunable PID controller, 1 occurrences. Decoupler: Tunable 2x2 gain, 1 occurrences. Type "ss(CL_APs)" to see the current value and "CL_APs.Blocks" to interact with the blocks.
これで、getIOTransfer
のようなコマンドを使用して、解析ポイントで入力または出力をもつシステム応答など、任意のシステム応答を抽出できます。プラント入力で挿入された外乱に対するシステム応答を抽出します。
Td = getIOTransfer(CL_APs,APs,'y');
Td.InputName
ans = 2x1 cell
{'L'}
{'V'}
Td.OutputName
ans = 2x1 cell
{'y(1)'}
{'y(2)'}
参考
connect
| sumblk
| getIOTransfer