マルチモデルの制御設計
一般的に、システムのダイナミクスは正確にはわからず、変わる場合があります。たとえば、システム ダイナミクスは以下の理由により変化することがあります。
製造上の公差に起因するパラメーター値の変化 — たとえば、抵抗の抵抗値は通常、ノミナル値 (5 Ω +/– 5%) の範囲以内です。
操作条件 — たとえば、航空機のダイナミクスは、高度と速度に基づき変化します。
このようなシステムのために設計されるコントローラーは、可能性のあるシステム ダイナミクスすべてについての設計要件を満たさなければなりません。
制御設計の概要
ダイナミクスが変化するシステムのコントローラー設計方法は次のとおりです。
変化をサンプリングします。
各サンプルの LTI モデルを作成します。
サンプリングした LTI モデルの配列を作成します。
配列から代表的なノミナル モデルに対してコントローラーを設計します。
配列のすべてのモデルに対してコントローラー設計を解析します。
コントローラーの設計が、すべてのモデルの要件を満たしていない場合、異なるノミナル モデルを指定してコントローラーを再設計します。
モデル配列
制御システム デザイナーでは、LTI モデルの配列を使用して現在の制御アーキテクチャ内の任意のプラントまたはセンサーに対して複数のモデルを指定できます (モデル配列を参照)。1 つより多いプラントまたはセンサーに対してモデル配列を指定する場合は、配列の長さが一致しなければなりません。
モデル配列の作成
マルチモデルの制御設計で配列を作成する場合、次のことが可能です。
コマンド
tf
、ss
、zpk
、またはfrd
を使って複数の LTI モデルを作成します。% Specify model parameters. m = 3; b = 0.5; k = 8:1:10; T = 0.1:.05:.2; % Create an array of LTI models. for ct = 1:length(k); G(:,:,ct) = tf(1,[m,b,k(ct)]); end
コマンド
stack
を使って、LTI モデルの配列を作成します。% Create individual LTI models. G1 = tf(1, [1 1 8]); G2 = tf(1, [1 1 9]); G3 = tf(1, [1 1 10]); % Combine models in an array. G = stack(1,G1,G2,G3);
複数の操作点でバッチ線形化を実行します。次に、計算した LTI モデルをエクスポートして、LTI モデルの配列を作成します。パラメーターが変化する DC モーターの設定値追従 (Simulink Control Design)の例を参照してください。
usample
(Robust Control Toolbox) を使用して不確かさをもつ状態空間 (uss
) モデルをサンプリングします。Simulink® モデルから
uss
モデルを計算します。次に、usubs
(Robust Control Toolbox) またはusample
(Robust Control Toolbox) を使用して LTI モデルの配列を作成します。Obtain Uncertain State-Space Model from Simulink Model (Robust Control Toolbox)を参照してくださいコアの Simulink ブロックを指定し、
uss
(Robust Control Toolbox) モデルまたはufrd
(Robust Control Toolbox) モデルに線形化します。Specify Uncertain Linearization for Core or Custom Simulink Blocks (Robust Control Toolbox)を参照してください
制御システム デザイナーへのモデル配列のインポート
モデルを配列としてインポートするには、制御システム デザイナーを MATLAB® コマンド ラインから開くときに入力引数としてモデルを渡すことができます。詳細については、制御システム デザイナーを参照してください。
制御アーキテクチャを設定するときに制御システム デザイナーにモデル配列をインポートすることもできます。[アーキテクチャの編集] ダイアログ ボックスで、次を行います。
[値] テキスト ボックスで、MATLAB ワークスペースから LTI モデルの名前を指定します。
MATLAB ワークスペースからまたは現在の作業ディレクトリの MAT ファイルからブロック データをインポートするには、 をクリックします。
ノミナル モデル
ノミナル モデルとは
"ノミナル モデル" は、制御システム デザイナーによるコントローラー設計で使用する LTI モデル配列内の代表的なモデルです。エディターと解析プロットを使用して、配列の残りのプラントでのコントローラーの効果を可視化し、解析します。
配列内の任意のモデルをノミナル モデルとして選択できます。たとえば、次のモデルを選択できます。
システムの想定される定格操作点を表している。
配列内のモデルの平均である。
最悪のプラントを表している。
安定点の最も近くにある。
ヒント
ボード線図でシステムの開ループ ダイナミクスをプロットしたり解析して、どのモデルをノミナルとして選択するか決定することができます。
ノミナル モデルの指定
LTI モデルの配列からノミナル モデルを選択するには、制御システム デザイナーで [マルチモデルの構成] をクリックします。次に、[マルチモデルの構成] ダイアログ ボックスで、[ノミナル モデル インデックス] を選択します。既定のインデックスは 1
です。
モデル配列として定義されている各プラントまたはセンサーについて、アプリは指定されたインデックスのモデルをノミナル モデルとして選択します。そうでない場合、アプリはスカラー拡張を使用してすべてのモデル インデックスに単一の LTI モデルを適用します。
たとえば、次の制御アーキテクチャでは次のようになります。
G と H が両方とも 3 要素配列であり、ノミナル モデル インデックスが 2
の場合、ソフトウェアは両方の配列で 2 番目の要素を使って、ノミナル モデルを計算します。
r から y へのノミナル応答は次のとおりです。
アプリはまた、プラント モデルとセンサー モデルの残りのペアに対する C の効果を示す応答も計算し、プロットします (G1H1 および G3H3)。
G のみが LTI モデルの配列で、指定されたノミナル モデルが 2 である場合、ノミナル応答の制御アーキテクチャは以下となります。
この場合、r から y へのノミナル応答は次のとおりです。
アプリはまた、プラント モデルとセンサー モデルの残りのペアに対する C の効果を示す応答も計算し、プロットします (G1H および 3G3H)。
周波数グリッド
システムの周波数応答は、"周波数グリッド" と呼ばれる一連の周波数値で計算されます。既定では、制御システム デザイナーは配列の各モデルのダイナミック レンジに基づく対数等間隔グリッドを計算します。
次の場合、カスタムの周波数グリッドを指定します。
自動グリッドに必要数を超える点がある。計算の効率を高めるには、より密でないグリッド間隔を指定します。
自動グリッドが特定の周波数範囲内で十分に密でない。たとえば、不足減衰システムの共振ピーク ダイナミクスを応答で取得しない場合、コーナー周波数前後がより密なグリッドを指定します。
特定の周波数範囲内の応答のみに関心がある。計算の効率を高めるには、関心のある周波数範囲のみを対象とするグリッドを指定します。
対数的に等間隔なベクトルの指定の詳細については、logspace
を参照してください。
メモ
周波数グリッドの変更は、ノミナル モデルの周波数応答の計算には影響しません。アプリでは常に、[自動選択] オプションを使用してノミナル モデルの周波数応答を計算します。
複数のプラント モデルのコントローラーの設計
この例では、制御システム デザイナーを使用して一連のプラント モデルの補償器を設計する方法を説明します。
プラント モデルの配列の作成
stack
コマンドを使用して LTI プラント モデルの配列を作成します。% Create an array of LTI models to model plant (G) variations. G1 = tf(1,[1 1 8]); G2 = tf(1,[1 1 9]); G3 = tf(1,[1 1 10]); G = stack(1,G1,G2,G3);
センサー モデルの配列の作成
同様に、センサー モデルの配列を作成します。
H1 = tf(1,[1/0.1,1]); H2 = tf(1,[1/0.15,1]); H3 = tf(1,[1/0.2,1]); H = stack(1,H1,H2,H3);
制御システム デザイナーを開く
制御システム デザイナーを開き、プラント モデルとセンサー モデルの配列をインポートします。
controlSystemDesigner(G,1,H)
アプリが開き、プラント モデルとセンサー モデルの配列がインポートされます。
解析プロットの設定
大きいプロットで閉ループ ステップ応答を表示するには、制御システム デザイナーの [IOTransfer_r2y: step] プロットで小さいドロップダウン矢印をクリックして、
[最大化]
をクリックします。既定では、ステップ応答はノミナル応答のみを表示します。他のモデル インデックスについて個別の応答を表示するには、プロット領域を右クリックし、[マルチモデル表示] 、 [個別の応答] を選択します。
メモ
すべてのモデル応答の包絡線を表示するには、プロット領域を右クリックし、[マルチモデル表示] 、 [範囲] を選択します。
プロットが更新され、その他のモデルの応答が表示されます。
ノミナル モデルの選択
[Control System] タブで、[マルチモデルの構成] をクリックします。
[マルチモデルの構成] ダイアログ ボックスで、[ノミナル モデル インデックス] に
2
を指定します。[適用] をクリックし、[閉じる] をクリックします。
選択したノミナル モデルは平均システム応答に対応します。
補償器の設計
ノミナル モデルを使用して補償器を設計するには、サポートされている任意の制御システム デザイナーの調整法を使用できます。
この例では、補償器エディターを使用して補償器ダイナミクスを手動で指定します。積分器を補償器に追加し、補償器のゲインを
0.4
に設定します。詳細については、補償器のダイナミクスの編集を参照してください。結果の解析
調整コントローラーでは、ノミナル モデルの最小オーバーシュートがあり、最悪の場合のオーバーシュートが 10% 未満のステップ応答を生成します。