仕様に対する操作点の検証
入力、出力、または状態の仕様に基づいて操作点を計算する場合、Simulink® Control Design™ ソフトウェアでは、平衡化の処理中に仕様が正常に満たされたかどうかが示されます。平衡化が失敗した場合、満たされなかった仕様を特定するために、平衡化された操作点を元の仕様に対して検証しなければなりません。
定常状態マネージャーでの操作点の検証
定常状態マネージャーを使用して操作点を計算する場合、ソフトウェアは操作点レポート オブジェクトを作成し、仕様にある制約に違反するすべての操作点値を強調表示します。
たとえば、scdairframeTRIM
モデルについて考えてみます。モデルを開いて速度と入射角のパラメーターを設定します。
sys = 'scdairframeTRIM';
open_system(sys)
alpha_ini = -0.21;
v_ini = 933;
定常状態マネージャーを開くには、Simulink モデル ウィンドウの [アプリ] ギャラリーで [定常状態マネージャー] をクリックします。
モデルに平衡化の仕様を作成します。[定常状態] タブで [仕様の平衡化] をクリックします。
[spec1] ドキュメントで、どの状態が既知でどの状態が定常状態にあるかを指定します。
モデルを平衡化するには、[仕様] タブで [平衡化] をクリックします。操作点レポートが生成され、対応する [report1] ドキュメントですべての制約違反が赤色で強調表示されます。
最適化探索では仕様を満たす操作点が見つかりませんでした。定常状態マネージャーで強調表示されているように、定常状態になるよう指定されている 3 つの状態が定常状態にありません。強調表示されている状態値は、[レポート] タブの [検証の許容誤差] フィールドに指定されている許容値より大きく指定の制約に違反しています。定常状態条件については、[dx の最小値] と [dx の最大値] の制約はともにゼロであり、つまり各状態の変化率はゼロです。平衡化した操作点では、[実際の dx] の値がこれらの制約に違反しています。
このモデルでは、2 番目の位置状態を定常状態になるよう指定することでシステムに過度の制約が適用され、定常状態の解を不可能にしています。
この定常状態の制約を削除するため、仕様を更新します。[spec1] ドキュメントの [定常状態] 列で、対応する行をクリアします。
[仕様] タブで、[平衡化] をクリックします。モデルが平衡化され、対応する [レポート] タブが開きます。結果のレポートは、制約違反がないことを示しています。
既存の操作点を仕様のセットに対して検証することもできます。たとえば、モデルの初期条件が spec1
の要件を満たすかどうかを確認するには、まずモデルの初期条件に基づく操作点を作成します。[定常状態] タブで、[操作点] をクリックします。操作点が作成され、対応する [op1] ドキュメントが開きます。
この操作点を spec1
の仕様に対して検証するには、[操作点] タブの [検証基準] の下で、[spec1]
を選択します。
操作点レポートが作成され、対応する [report3] ドキュメントが開きます。
モデルの初期条件は操作点仕様を満たしておらず、制約違反が強調表示されています。
モデル線形化器での操作点の検証
モデル線形化器を使用して操作点を計算する場合、ソフトウェアによって制約違反が強調表示されません。代わりに、操作点レポートの情報で違反を検査しなければなりません。
前の定常状態マネージャーの例からのモデルを、同じ初期仕様を用いてモデル線形化器で平衡化する場合、ソフトウェアによりデータ ブラウザーの [線形解析ワークスペース] に操作点が作成されます。
操作点が指定の制約を満たすかどうかを確認するには、[線形解析ワークスペース] で操作点をダブルクリックします。
[編集] ダイアログ ボックスで、3 つの制約違反が赤で強調表示されています。
コマンド ラインでの操作点の検証
コマンド ラインで操作点を計算する場合、既定では、関数 findop
によってコマンド ウィンドウに操作点レポートが出力されます。操作点レポートを出力引数として返すこともできます。詳細については、findop
を参照してください。操作点を仕様に対して検証するには、操作点の値が制約を満たしているかを確認しなければなりません。
たとえば、scdairframeTRIM
モデルを開いてモデル パラメーターを設定します。
sys = 'scdairframeTRIM';
open_system(sys)
alpha_ini = -0.21;
v_ini = 933;
操作点の仕様オブジェクトを作成し、どの状態が既知でどの状態が定常状態にあるかを指定します。
opspec = operspec(sys); opspec.States(1).Known = [1;1]; opspec.States(1).SteadyState = [0;1]; opspec.States(3).Known = [1;1]; opspec.States(3).SteadyState = [0;1]; opspec.States(2).Known = 1; opspec.States(2).SteadyState = 0; opspec.States(4).Known = 0; opspec.States(4).SteadyState = 1;
モデルを平衡化します。
op = findop(sys,opspec);
Operating point search report: ---------------------------------
opreport = Operating point search report for the Model scdairframeTRIM. (Time-Varying Components Evaluated at time t=0) Could not find a solution that satisfies all constraints. Relax the constraints to find a feasible solution. States: ---------- Min x Max dxMin dx dxMax __________ __________ __________ __________ __________ __________ (1.) scdairframeTRIM/Airframe Model/EOM/ Equations of Motion (Body Axes)/Position 0 0 0 -Inf 912.5028 Inf -3047.9999 -3047.9999 -3047.9999 0 -194.4931 0 (2.) scdairframeTRIM/Airframe Model/EOM/ Equations of Motion (Body Axes)/Theta 0 0 0 -Inf 0 Inf (3.) scdairframeTRIM/Airframe Model/EOM/ Equations of Motion (Body Axes)/U,w 912.5028 912.5028 912.5028 -Inf 25.3477 Inf -194.4931 -194.4931 -194.4931 0 273.1028 0 (4.) scdairframeTRIM/Airframe Model/EOM/ Equations of Motion (Body Axes)/q -Inf 0 Inf 0 31.1548 0 Inputs: ---------- Min u Max ____ ____ ____ (1.) scdairframeTRIM/delta -Inf 0 Inf Outputs: ---------- Min y Max ________ ________ ________ (1.) scdairframeTRIM/alpha -Inf -0.21 Inf (2.) scdairframeTRIM/V -Inf 933 Inf (3.) scdairframeTRIM/q -Inf 0 Inf (4.) scdairframeTRIM/az -Inf 263.2928 Inf (5.) scdairframeTRIM/gamma -Inf 0.21 Inf
操作点探索レポートでは、かっこ内の 0
値で示されるように、指定された定常状態の dx
値に制約がありません。最適化探索ではこれら 3 つの状態がすべて制約に違反しているため、定常状態の操作点が見つかりませんでした。