最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

TuningGoal.Gain クラス

パッケージ: TuningGoal

制御システムの調整のためのゲインの制約

説明

TuningGoal.Gain オブジェクトを使用して、指定した入力から得たゲインを指定した出力に制限する制約を指定します。この調整目標は、制御システムを systunelooptune などの調整コマンドで調整するために使用します。

TuningGoal.Gain を使用する場合、指定された入力から指定された出力へのゲインが指定された値を超えないように、システムの調整が試行されます。既定では、制約は閉じたループに対して適用されます。制約を開ループ応答に適用するには、TuningGoal.Gain オブジェクトの Openings プロパティを使用します。

ゲインの制約を使用して、以下を行うことができます。

  • 特定の入出力の組み合わせ全体に対して外乱の抑制の設計要件を、ゲインを 1 未満に制約することで強制

  • 特定の周波数帯域のカスタムのロールオフ率を、その帯域のゲイン プロファイルを指定することで強制

構築

Req = TuningGoal.Gain(inputname,outputname,gainvalue) は、inputname から outputname へのゲインを制約して、値 gainvalue 未満に維持する調整目標を作成します。

inputname または outputname を cell 配列 (ベクトル値の信号) として指定できます。そのように指定すると、調整目標は inputname から outputname への伝達行列の最大特異値を制約します。特異値の詳細については、sigma を参照してください。

Req = TuningGoal.Gain(inputname,outputname,gainprofile) は、最大ゲインを周波数の関数として指定します。ターゲット ゲイン プロファイル (I/O の組み合わせ全体の最大ゲイン) を滑らかな伝達関数として指定します。あるいは、frd モデルを使用して区分的な誤差プロファイルをスケッチできます。

入力引数

inputname

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

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

    • 任意のモデル入力。

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

    • Simulink モデルに関連付けられた slTuner インターフェイス内の任意の線形解析ポイント。addPoint を使用して解析ポイントを slTuner インターフェイスに追加します。getPoints を使用してモデルへの 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 インターフェイス内の任意の線形解析ポイント。addPoint を使用して解析ポイントを slTuner インターフェイスに追加します。getPoints を使用してモデルへの 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 ブロックに関連付けられた暗黙的な出力になります。

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

gainvalue

最大ゲイン (線形)。ゲインの制約 Req は、inputname から outputname へのゲインが gainvalue 未満となるように指定します。

gainvalue はスカラー値です。信号 inputname または outputname がベクトル値の信号である場合、gainvalueinputname から outputname への伝達行列の最大特異値を制約します。特異値の詳細については、sigma を参照してください。

gainprofile

周波数の関数としてのゲイン プロファイル。ゲインの制約 Req は、特定の周波数の inputname から outputname へのゲインが gainprofile 未満となるように指定します。gainprofile は滑らかな伝達関数として指定できます (tfzpk または ss モデル)。あるいは、frd モデルまたは関数 makeweight を使用して区分的な誤差プロファイルをスケッチできます。その場合、ソフトウェアは自動的にゲイン プロファイルを zpk モデルにマッピングします。この zpk モデルのゲインは目的のゲイン プロファイルを近似します。viewGoal(Req) を使用して zpk モデルのゲインをプロットします。

gainprofile は SISO 伝達関数です。inputname または outputname が cell 配列の場合、gainprofileinputname から outputname へのすべての I/O の組み合わせに適用されます。

離散時間で調整する場合 (つまり genss モデルまたは slTuner インターフェイスを非ゼロの Ts で使用する場合)、同じ Ts をもつ離散時間モデルとして gainfprofile を指定できます。gainfprofile を連続時間で指定すると、調整ソフトウェアはこれを離散化します。ゲイン プロファイルを離散時間で指定すると、ナイキスト周波数付近でゲイン プロファイルをより詳細に制御できます。

プロパティ

MaxGain

周波数の関数としての最大ゲイン。SISO zpk モデルとして表されます。

gainvalue または gainprofile 入力引数は zpk モデルに自動的にマッピングされます。この zpk モデルのゲインは目的のゲイン プロファイルを近似します。調整目標の導出と保存は MaxGain プロパティで行われます。viewGoal(Req) を使用して MaxGain のゲインをプロットします。

Focus

調整目標が適用される周波数帯域。[min,max] 形式の行ベクトルとして指定します。

Focus プロパティを設定して、調整目標が特定の周波数帯域に適用されるように制限します。この値は、調整している制御システム モデルの周波数の単位で表します (rad/TimeUnit)。たとえば、Req は 1 ~ 100 rad/s の間にのみ適用する調整目標であるとします。この帯域に対する調整目標を制限するには、次のコマンドを使用します。

Req.Focus = [1,100];

既定値: 連続時間の場合は [0,Inf]、離散時間の場合は [0,pi/Ts]。ここで Ts はモデルのサンプル時間です。

Stabilize

閉ループ ダイナミクスに対する安定性要件。1 (true) または 0 (false) として指定します。

既定では、TuningGoal.Gain は、ゲイン要件に加えて、指定された入力から出力への閉ループ伝達関数に対して安定性要件を適用します。安定性が必要ない場合、あるいは安定性を実現できない場合、Stabilizefalse を設定して安定性要件を削除します。たとえば、ゲインの制約が不安定な開ループ伝達関数に適用される場合、Stabilizefalse を設定します。

既定値: 1(true)

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 インターフェイスの任意の線形解析ポイントを含めることができます。addPoint を使用して解析ポイントとループ開始点を slTuner インターフェイスに追加します。getPoints を使用してモデルへの slTuner インターフェイスで使用できる解析ポイントのリストを取得します。

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

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

既定値: {}

Name

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

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

Req.Name = 'LoopReq';

既定値: []

すべて折りたたむ

信号 'du' から信号 'u' への外乱の抑制の要件を強制するゲインの制約を作成します。

Req = TuningGoal.Gain('du','u',1);

この要件は、'du' から 'u' への応答の最大ゲインが 1 (0 dB) を超えないことを指定します。

1 より大きい周波数で 20 dB/decade でロールオフするために、信号 'du' から信号 'u' への応答を制約する調整目標を作成します。この調整目標は、周波数範囲 [0,1] の外乱の抑制 (最大ゲインが 1) も指定します。

gmax = frd([1 1 0.01],[0 1 100]);
Req = TuningGoal.Gain('du','u',gmax);

これらのコマンドは frd モデルを使用して、ゲイン プロファイルを周波数の関数として指定します。周波数 1 rad/s で 1 dB の最大ゲインと周波数 100 rad/s で 0.01 dB の最大ゲインの両方によって、目的のロールオフが 20 dB/decade であると指定されます。

ソフトウェアは、区分的に指定された要件を近似する周波数の滑らかな関数に gmax を変換します。viewGoal を使用してゲイン プロファイルを表示します。

viewGoal(Req)

破線はゲイン プロファイルを示し、領域は要件に違反する範囲を示しています。

ヒント

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

アルゴリズム

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

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

f(x)=WF(s)Do1T(s,x)Di,

または、離散時間の調整の場合は離散時間の等価物になります。ここで、T(s,x) は Input から Output への閉ループ伝達関数です。Do および Di は、それぞれ OutputScaling プロパティおよび InputScaling プロパティの値を対角にもつ対角行列です。 は H ノルムを表します (getPeakGain を参照)。

周波数重み付け関数 WF は、指定する最大ゲイン プロファイルから導出された、正則化されたゲイン プロファイルです。WF および 1/MaxGain のゲインは、周波数帯域 Focus 内でほぼ一致します。WF は常に安定かつプロパーです。s = 0 または s = Inf に近い WF の極の場合、systune の最適化問題の数値的な調整が難しくなることがあるため、周波数が極度に低い、あるいは極度に高いダイナミクスで最大ゲイン プロファイルを指定することは推奨されません。

WF を取得するには、以下を使用します。

WF = getWeight(Req,Ts)

ここで Req は調整目標、Ts は調整を行うサンプル時間です (連続時間の場合は Ts = 0)。正則化とその効果の詳細については、調整目標の可視化を参照してください。

互換性についての考慮事項

すべて展開する

R2016a での動作変更

R2016a で導入