Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

TuningGoal.Variance クラス

パッケージ: TuningGoal

制御システムの調整のためのノイズ増幅の制約

説明

TuningGoal.Variance を使用して、指定した入力から出力へのノイズ増幅を制限する調整目標を指定します。ノイズ増幅は次のいずれかで定義されます。

  • 単位分散のホワイト ノイズ入力に対する出力の分散の平方根

  • 単位分散のホワイトノイズ入力に対する出力の平方根平均二乗

  • 指定した入力から出力への伝達関数の H2 ノルム (インパルス応答のエネルギーの総量に等しい)

これらの定義は同じ量に対する異なる解釈です。TuningGoal.Variance はこれらの量に同じ制限を加えます。

TuningGoal.Variance は、systune または looptune などの調整コマンドで制御システムを調整する場合に使用できます。この調整目標を指定すると、ホワイトノイズ入力へのシステム応答を調整できます。一様でないスペクトル (カラード ノイズ) を含む確率的な入力については、代わりに TuningGoal.WeightedVariance を使用します。

調整目標を作成した後、オブジェクトのプロパティを設定して、調整目標をさらに詳しく構成できます。

構築

Req = TuningGoal.Variance(inputname,outputname,maxamp) は、inputname から outputname への伝達関数のノイズ増幅をスカラー値 maxamp に制限する調整目標を作成します。

離散時間の制御システムを調整する場合、この調整目標は、物理プラントとノイズ プロセスは連続であると仮定します。連続時間と離散時間の調整で一貫した結果が必ず得られるように、maxamp は連続時間 H2 ノルムの制約として解釈されます。プラントのプロセスとノイズ プロセスが真に離散的であり、離散時間の H2 ノルムを値 maxamp に制約する場合は、3 番目の入力引数を maxamp/sqrt(Ts) に設定します。Ts は調整するモデルのサンプル時間です。

入力引数

inputname

調整目標の入力信号。文字ベクトル、または多入力調整目標の場合は文字ベクトルの cell 配列として指定します。

  • 調整目標を使用して制御システムの Simulink® モデルを調整する場合、inputname に次を含めることが可能。

    • 任意のモデル入力。

    • モデルでマークされた任意の線形解析ポイント。

    • Simulink モデルに関連付けられた slTuner (Simulink Control Design) インターフェイス内の任意の線形解析ポイント。addPoint (Simulink Control Design) を使用して解析ポイントを slTuner インターフェイスに追加します。getPoints (Simulink Control Design) を使用してモデルへの slTuner インターフェイスで使用できる解析ポイントのリストを取得します。

    たとえば、slTuner インターフェイスに解析ポイント u1u2 が含まれているとします。調整目標を作成するときに、'u1' を使用してそのポイントを入力信号として指定します。{'u1','u2'} を使用して 2 チャネル入力を指定します。

  • 調整目標を使用して制御システムの一般化状態空間 (genss) モデルを調整する場合、inputname に次を含めることが可能。

    • genss モデルの任意の入力

    • 制御システム モデル内の任意の AnalysisPoint の位置

    たとえば、制御システム モデル T を調整する場合、inputnameT.InputName の任意の入力名とすることができます。また、TAP_u という名前の位置をもつ AnalysisPoint ブロックが含まれる場合、inputname'AP_u' を含めることができます。getPoints を使用して genss モデルで使用できる解析ポイントのリストを取得します。

    inputname が一般化モデルの AnalysisPoint の位置の場合、調整目標の入力信号は AnalysisPoint ブロックに関連付けられた暗黙的な入力になります。

制御システム モデル内の解析ポイントの詳細については、制御システムの解析と設計における対象信号のマークを参照してください。

outputname

調整目標の出力信号。文字ベクトル、または多出力調整目標の場合は文字ベクトルの cell 配列として指定します。

  • 調整目標を使用して制御システムの Simulink モデルを調整する場合、outputname に次を含めることが可能。

    • 任意のモデル出力。

    • モデルでマークされた任意の線形解析ポイント。

    • Simulink モデルに関連付けられた slTuner (Simulink Control Design) インターフェイス内の任意の線形解析ポイント。addPoint (Simulink Control Design) を使用して解析ポイントを slTuner インターフェイスに追加します。getPoints (Simulink Control Design) を使用してモデルへの slTuner インターフェイスで使用できる解析ポイントのリストを取得します。

    たとえば、slTuner インターフェイスに解析ポイント y1y2 が含まれているとします。調整目標を作成するときに、'y1' を使用してそのポイントを出力信号として指定します。{'y1','y2'} を使用して 2 チャネル出力を指定します。

  • 調整目標を使用して制御システムの一般化状態空間 (genss) モデルを調整する場合、outputname に次を含めることが可能。

    • genss モデルの任意の出力

    • 制御システム モデル内の任意の AnalysisPoint の位置

    たとえば、制御システム モデル T を調整する場合、outputnameT.OutputName の任意の出力名とすることができます。また、TAP_u という名前の位置をもつ AnalysisPoint ブロックが含まれる場合、outputname'AP_u' を含めることができます。getPoints を使用して genss モデルで使用できる解析ポイントのリストを取得します。

    outputname が一般化モデルの AnalysisPoint の位置の場合、調整目標の出力信号は AnalysisPoint ブロックに関連付けられた暗黙的な出力になります。

制御システム モデル内の解析ポイントの詳細については、制御システムの解析と設計における対象信号のマークを参照してください。

maxamp

inputname から outputname への最大ノイズ増幅。正のスカラー値として指定します。この値は、inputname での単位分散のホワイト ノイズ信号に対する outputname で指定される信号での出力の分散の最大値を指定します。この値は inputname から outputname への最大 H2 ノルムに相当します。

離散時間の制御システムを調整する場合、この調整目標は物理プラントとノイズ プロセスが連続であると仮定し、maxamp を連続時間 H2 ノルムの制約として解釈します。これにより、連続時間と離散時間の調整で一貫した結果が必ず得られるようになります。プラントのプロセスとノイズ プロセスが真に離散的であり、代わりに離散時間の H2 ノルムを制限する場合は、値 maxamp/Ts を指定します。Ts は調整するモデルのサンプル時間です。

プロパティ

MaxAmplification

最大ノイズ増幅。正のスカラー値として指定します。このプロパティは、Input での単位分散のホワイト ノイズ信号に対する Output で指定される信号での出力の分散の最大値を指定します。この値は Input から Output への最大 H2 ノルムに相当します。MaxAmplification の初期値は、調整目標を作成する際に入力引数 maxamp によって設定されます。

InputScaling

入力信号のスケーリング。正の実数値のベクトルとして指定します。

単位の選択によって小さい信号と大きい信号が混在することになる場合、このプロパティを使用して、ベクトル値の入力信号内の各エントリの相対振幅を指定します。この情報は、調整目標を評価するときに、Input から Output への閉ループ伝達関数をスケーリングするために使用されます。

T(s) が Input から Output への閉ループ伝達関数であると仮定します。調整目標は、スケーリングされた伝達関数 Do–1T(s)Di に対して評価されます。対角行列 Do および Di にはそれぞれ OutputScaling および InputScaling の対角値があります。

既定値の [] は、スケーリングしないことを意味します。

既定値: []

OutputScaling

出力信号のスケーリング。正の実数値のベクトルとして指定します。

単位の選択によって小さい信号と大きい信号が混在することになる場合、このプロパティを使用して、ベクトル値の出力信号内の各エントリの相対振幅を指定します。この情報は、調整目標を評価するときに、Input から Output への閉ループ伝達関数をスケーリングするために使用されます。

T(s) が Input から Output への閉ループ伝達関数であると仮定します。調整目標は、スケーリングされた伝達関数 Do–1T(s)Di に対して評価されます。対角行列 Do および Di にはそれぞれ OutputScaling および InputScaling の対角値があります。

既定値の [] は、スケーリングしないことを意味します。

既定値: []

Input

入力信号名。調整目標によって制約される伝達関数の入力を識別する文字ベクトルの cell 配列として指定します。Input プロパティの初期値は、調整目標を作成する際に入力引数 inputname によって設定されます。

Output

出力信号名。調整目標によって制約される伝達関数の出力を識別する文字ベクトルの cell 配列として指定します。Output プロパティの初期値は、調整目標を作成する際に入力引数 outputname によって設定されます。

Models

調整目標を適用するモデル。インデックスのベクトルとして指定します。

制御システム モデルの配列を systune によって調整し、配列内の一部のモデルに調整目標を適用する場合に、Models プロパティを使用します。たとえば、systune に渡されるモデル配列の中の 2 番目、3 番目、4 番目のモデルに調整目標 Req を適用する必要があると仮定します。この調整目標の適用を制限するには、次のコマンドを使用します。

Req.Models = 2:4;

Models = NaN の場合、調整目標はすべてのモデルに適用されます。

既定値: NaN

Openings

調整目標を評価するときに開くフィードバック ループ。ループ開始点の位置を特定する文字ベクトルの cell 配列として指定します。調整目標は、特定した位置でフィードバック ループを開くことにより作成される開ループの構成に対して評価されます。

調整目標を使用して制御システムの Simulink モデルを調整する場合、Openings にはモデルでマークされた任意の線形解析ポイントまたは Simulink モデルに関連付けられている slTuner (Simulink Control Design) インターフェイスの任意の線形解析ポイントを含めることができます。addPoint (Simulink Control Design) を使用して解析ポイントとループ開始点を slTuner インターフェイスに追加します。getPoints (Simulink Control Design) を使用してモデルへの slTuner インターフェイスで使用できる解析ポイントのリストを取得します。

調整目標を使用して制御システムの一般化状態空間 (genss) モデルを調整する場合、Openings に制御システム モデルの任意の AnalysisPoint の位置を含めることができます。getPoints を使用して genss モデルで使用できる解析ポイントのリストを取得します。

たとえば、Openings = {'u1','u2'} の場合、解析ポイント u1u2 でループが開いている状態で調整目標が評価されます。

既定値: {}

Name

調整目標の名前。文字ベクトルとして指定します。

たとえば、Req が調整目標の場合は次のようになります。

Req.Name = 'LoopReq';

既定値: []

すべて折りたたむ

次の制御システムの解析ポイント AP2 から出力 y への分散の増幅を制約する要件を作成します。これは外側のループが開いた状態で測定されます。

このシステムのモデルを作成します。これを行うには、数値プラント モデル G1G2 および調整可能なコントローラー C1C2 を指定して接続します。また、解析と調整の対象ポイントをマークする AnalysisPoint ブロック AP1AP2 を指定して接続します。

G1 = tf(10,[1 10]);
G2 = tf([1 2],[1 0.2 10]);
C1 = tunablePID('C','pi');
C2 = tunableGain('G',1);
AP1 = AnalysisPoint('AP1');
AP2 = AnalysisPoint('AP2');
T = feedback(G1*feedback(G2*C2,AP2)*C1,AP1);

解析ポイント AP2 に関連付けられている暗黙的な入力から出力 y へのノイズ増幅を制約する調整要件を作成します。

Req = TuningGoal.Variance('AP2','y',0.1);

この制約は増幅を 0.1 倍に制限します。

この制約で調整するときに、AP2 から y への伝達関数が外側のループが開いた状態で評価されるように指定します。

Req.Openings = {'AP1'};

systune を使用して、T の自由パラメーターが Req で指定された調整要件を満たすように調整します。その後、viewGoal(Req,T) を使用して、調整された制御システムを要件に対して検証できます。

ヒント

  • この調整目標を使用して連続時間制御システムを調整すると、systune はゼロの直達 (D =0) を調整目標が制約する伝達に適用しようとします。ゼロの直達は H2 ノルム、つまり調整目標 (アルゴリズムを参照) の値が非ゼロの直達をもつ連続時間システムで無限であることから適用されます。

    systune は直達項に寄与しているすべての調整可能なパラメーターをゼロに固定することによってゼロの直達を適用します。systune はこれらの調整可能なパラメーターを固定するだけではゼロの直達を適用するのに不十分である場合、エラーを返します。このような場合、調整目標または制御構造を修正するか、システムの一部の調整可能なパラメーターを直達項を排除する値に手動で固定しなければなりません。

    制約された伝達関数が調整可能なブロックを直列でいくつかもつ場合、直達全体に寄与するすべてのパラメーターをゼロに設定するというソフトウェアのアプローチが無難な可能性があります。この場合、いずれか 1 つのブロックの直達項をゼロに設定するだけで十分です。直達をゼロに固定するブロックを制御する場合、選択した調整ブロックの直達を手動で固定できます。

    調整可能なブロックのパラメーターを指定した値に固定するには、ブロックのパラメーター化で Value プロパティと Free プロパティを使用します。たとえば、次のような調整された状態空間ブロックを検討します。

    C = tunableSS('C',1,2,3);

    このブロックにゼロの直達を適用するには、このブロックの D 行列値をゼロに設定し、パラメーターを固定します。

    C.D.Value = 0;
    C.D.Free = false;

    パラメーター値の固定の詳細については、tunableSS などの制御設計ブロックのリファレンス ページを参照してください。

  • この調整目標は、Openings で特定されたポイントでループが開いた状態で評価される、Input から Output への閉ループ伝達関数に暗黙的な安定性の制約を課します。この暗黙的な制約に影響を受けるダイナミクスは、この調整目標の "安定ダイナミクス" です。systuneOptionsMinDecay および MaxRadius オプションは、これらの暗黙的に制約されたダイナミクスの範囲を制御します。最適化で既定の範囲が満たされない場合や、既定の範囲が他の要件と競合する場合は、systuneOptions を使用してこれらの既定値を変更します。

アルゴリズム

TuningGoal を使用して制御システムを調整するときに、調整目標は正規化されたスカラー値 f(x) に変換されます。ベクトル x は、制御システムの自由 (調整可能) パラメーターのベクトルです。その後、ソフトウェアはパラメーター値を調整して f(x) を最小化するか、調整目標が厳密な制約値の場合、f(x) が 1 より小さくなるようにします。

TuningGoal.Variance の場合、f(x) は次のようになります。

f(x)=1MaxAmplificationT(s,x)2.

T(s,x) は Input から Output への閉ループ伝達関数です。2 は H2 ノルムを表します (norm を参照)。

離散時間制御システムを調整する場合、f(x) は次のようになります。

f(x)=1MaxAmplificationTsT(z,x)2.

Ts は離散時間伝達関数 T(z,x) のサンプル時間です。

バージョン履歴

R2016a で導入

すべて展開する