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

TuningGoal.MaxLoopGain クラス

パッケージ: TuningGoal

制御システムの調整のための最大ループ ゲインの制約

説明

TuningGoal.MaxLoopGain を使用して、特定の周波数帯域で最大ループ ゲインと必要なロールオフを適用します。この調整目標は、systune または looptune などの制御システム調整コマンドで使用します。

この調整目標は、制御システムの指定された位置で開ループ周波数応答 (L) に最大ゲインを課します。最大開ループ ゲインを周波数の関数 (最大の "ゲイン プロファイル") として指定します。MIMO フィードバック ループの場合、指定したゲイン プロファイルは L の最大特異値の上限として解釈されます。

制御システムを調整すると、最大ゲイン プロファイルは相補感度関数 T) = L/(I + L) の最大ゲインの制約に変換されます。

次の図は、一般的な指定された最大ゲイン プロファイル (破線) とその結果調整されたループ ゲイン L (青い線) を示します。影付きの領域はこの調整目標によって禁止されたゲイン プロファイル値を表します。この図は、L が 1 よりはるかに小さい場合、最大ゲインを T に課すことが最大開ループ ゲインの有効な代用であることを示します。

TuningGoal.MaxLoopGainTuningGoal.MinLoopGain は特定の周波数帯域で高ゲイン制約または低ゲイン制約のみを指定します。これらの調整目標を使用すると、systunelooptune は交差の近傍で最適なループ整形を特定します。交差の近傍のループ整形が単純であるか、よく知られたものである場合 (積分動作など)、TuningGoal.LoopShape を使用してそのターゲット ループ整形を指定できます。

構築

Req = TuningGoal.MaxLoopGain(location,loopgain) は SISO または MIMO フィードバック ループのゲインを制限する調整目標を作成します。この調整目標は指定した位置で測定された開ループ周波数応答を loopgain で指定された最大ゲイン プロファイルに制限します。最大ゲイン プロファイルを滑らかな伝達関数として指定するか、frd モデルまたは makeweight コマンドを使用して区分的なエラー プロファイルをスケッチできます。1 より少ないゲイン値のみが適用されます。

Req = TuningGoal.MaxLoopGain(location,fmax,gmax) は形式 loopgain = K/s (積分動作) の最大ゲイン プロファイルを指定します。ソフトウェアは、ゲイン値が指定した周波数 fmaxgmax である K を選択します。

入力引数

location

最大開ループ ゲインが制約される位置。調整する制御システム内で 1 つ以上の位置を特定する文字ベクトルまたは文字ベクトルの cell 配列として指定します。利用可能なループ開始点の位置は調整しているシステムの種類によって異なります。

  • 制御システムの Simulink® モデルを調整している場合、モデル内でマークされた任意の線形解析ポイントまたは Simulink モデルに関連付けられた slTuner インターフェイス内の任意の線形解析ポイントを使用できます。addPoint を使用して解析ポイントを slTuner インターフェイスに追加します。たとえば、slTuner インターフェイスに解析ポイント u が含まれる場合は、調整目標の作成時に 'u' を使用してそのポイントを参照できます。getPoints を使用してモデルへの slTuner インターフェイスで使用できる解析ポイントのリストを取得します。

  • 制御システムの一般化状態空間 (genss) モデルを調整する場合、制御システム モデルで任意の AnalysisPoint の位置を使用できます。たとえば、次のコードはプラント入力 'u' に解析ポイントをもつ PI ループを作成します。

    AP = AnalysisPoint('u');
    G = tf(1,[1 2]);
    C = tunablePID('C','pi');
    T = feedback(G*AP*C,1);
    

    調整目標を作成するときに、'u' を使用してプラント入力で解析ポイントを参照できます。getPoints を使用して genss モデルで使用できる解析ポイントのリストを取得します。

location がループ開始点の位置の cell 配列の場合、最大ゲイン要件は結果の MIMO ループに適用されます。

loopgain

周波数の関数としての最大開ループ ゲイン。

loopgain を滑らかな SISO 伝達関数 (tfzpk または ss モデル) として指定できます。または、frd モデルまたは makeweight コマンドを使用して区分的なゲイン プロファイルをスケッチできます。たとえば、次の frd モデルは 1 rad/s で 1 (0 dB) の最大ゲインが 10 rad/s までは –20 dB/dec のレートで、高周波では –40 dB/dec のレートでロールオフするように指定します。

loopgain = frd([1 1e-1 1e-3],[1 10 100]);
bodemag(loopgain)

frd モデルを使用して loopgain を指定すると、ソフトウェアは指定したゲイン プロファイルを zpk モデルに自動的にマッピングします。このモデルのゲインは目的のゲイン プロファイルを近似します。viewGoal(Req) を使用してその zpk モデルのゲインをプロットします。

1 より少ないゲイン値のみが適用されます。多入力、多出力 (MIMO) フィードバック ループの場合、ゲイン プロファイルは L の最大特異値の上限である最小ロールオフ要件として解釈されます。特異値の詳細については、sigma を参照してください。

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

fmax

最大ゲイン gmax の周波数。スカラー値 (rad/s) として指定します。

この引数を使用して、形式 loopgain = K/s (積分動作) の最大ゲイン プロファイルを指定します。ソフトウェアは、ゲイン値が指定した周波数 fmaxgmax である K を選択します。

gmax

fmax で発生する最大ゲインの値。スカラー絶対値として指定します。

この引数を使用して、形式 loopgain = K/s (積分動作) の最大ゲイン プロファイルを指定します。ソフトウェアは、ゲイン値が指定した周波数 fmaxgmax である K を選択します。

プロパティ

MaxGain

周波数の関数としての最大開ループ ゲイン。SISO zpk モデルとして指定します。

ソフトウェアは自動的に入力引数 loopgainzpk モデルにマッピングします。この zpk モデルのゲインは目的のゲイン プロファイルを近似します。または、fmax 引数と gmax 引数を使用してゲイン プロファイルを指定する場合、このプロパティは K/s に設定されます。ソフトウェアは、ゲイン値が指定した周波数 fmaxgmax である K を選択します。

viewGoal(Req) を使用して開ループの最大ゲイン プロファイルのゲインをプロットします。

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) として指定します。

Stabilizetrue の場合、この要件は指定したフィードバック ループを安定化し、ゲインまたはループ整形要件を適用します。指定したループの安定性が不要または得られない場合、Stabilizefalse に設定します。

既定値: 1 (true)

LoopScaling

自動的にスケーリングするループ信号の切り替え。'on' または 'off' として指定します。

マルチループまたは MIMO 制御システムの場合、フィードバック チャネルは自動的に再スケーリングされ、開ループ伝達関数の非対角項 (ループ相互作用の項) が均等化されます。このようなスケーリングを無効にし、スケーリングされていない開ループ応答を整形するには、LoopScaling'off' に設定します。

既定値: 'on'

Location

最小ループ ゲインが制約される位置。調整する制御システム内の 1 つ以上の解析ポイントを特定する文字ベクトルの cell 配列として指定します。たとえば、Location = {'u'} の場合、調整目標は解析ポイント 'u' で測定される開ループ応答を評価します。Location = {'u1','u2'} の場合、調整目標は、解析ポイント 'u1' および 'u2' で測定された MIMO 開ループ応答を評価します。

Location プロパティの値は調整目標を作成する際に location 入力引数によって設定されます。

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';

既定値: []

すべて折りたたむ

フィードバック ループの最大開ループ ゲインを指定したプロファイルに制限する調整目標を作成します。

調整している制御システムで、ループ開始点の位置が PILoop によって識別されると仮定します。その位置で測定された開ループ ゲインを 1 rad/s で 1 (0 dB) に制限し、10 rad/s までは –20 dB/dec のレートで、高周波では –40 dB/dec のレートでロールオフするように指定します。frd モデルを使用してこのゲイン プロファイルをスケッチします。

loopgain = frd([1 1e-1 1e-3],[1 10 100]);
Req = TuningGoal.MaxLoopGain('PILoop',loopgain);

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

viewGoal(Req)

破線は指定されたゲイン プロファイルを示します。影付きの領域は、1 より大きいゲイン値が適用されないことを除き、調整目標に違反する範囲を示しています。したがって、この調整目標は 1 rad/s より高い周波数で最小ロールオフ レートのみを指定します。

制御システムを調整する際に、Reqlooptune または systune への入力として使用できます。次に viewGoal(Req,T) を使用して、調整されたループ ゲインを調整目標で指定された最小ゲインと比較します。ここで、T は調整された制御システムを表します。

形式 L = K / s で最大ループ ゲインを指定する調整目標を作成します。最大ゲインは 100 rad/s で -20 dB (0.01) の値に到達します。

Req = TuningGoal.MaxLoopGain('X',100,0.01);
viewGoal(Req)

viewGoal により、調整目標が正しく指定されていることが確認されます。この調整目標を使用して、'X' として識別されるループ開始点の位置をもつ制御システムを調整できます。1 より大きいループ ゲイン値は無視されるため、この要件では 1 rad/s より大きい 20 dB/decade のロールオフを指定し、その周波数より低いループ ゲインを制限しません。

指定されたゲイン プロファイル (破線) は純積分器ですが、数値的な理由から、調整中に課されるゲイン プロファイルは超高周波数では平坦になります。アルゴリズムを参照してください。正則化されたゲイン プロファイルを確認するには、調整目標プロットの座標軸を拡張します。

xlim([10^-2,10^4])
ylim([-80,20])

影付きの領域は変更後のゲイン プロファイルを反映しています。

次の制御システムの内側のループで、50 rad/s で 20 dB (100) の最小ループ ゲインと 1000 rad/s で -20 dB (0.01) の最大ループ ゲインを指定する要件を作成します。

最大ループ ゲイン要件と最小ループ ゲイン要件を作成します。

RMinGain = TuningGoal.MinLoopGain('X2',50,100);
RMaxGain = TuningGoal.MaxLoopGain('X2',1000,0.01);

外側のループが開いた状態で測定される内側のループのループ ゲインに適用するように、この要件を設定します。

RMinGain.Openings = 'X1';
RMaxGain.Openings = 'X1';

Req.Openings を設定すると、調整アルゴリズムは指定の位置にループが開いた状態で要件を適用するように指定を受けます。外側のループを開いた状態で、要件が内側のループにのみ適用されます。

既定では、TuningGoal.MinLoopGain または TuningGoal.MaxLoopGain を使用する調整によって、安定性要件と最小ループ ゲインまたは最大ループ ゲインの要件が課されます。一部の制御システムでは、安定した内側のループを得ることは実質的に不可能です。このような場合は、Stabilize プロパティを false に設定して内側のループの安定性要件を削除します。

RMinGain.Stabilize = false;
RMaxGain.Stabilize = false;

これらの要件のいずれかを使用して調整する場合、調整アルゴリズムによって安定性要件は調整された制御システム全体に依然として課されますが、内側のループ単独には適用されません。

ヒント

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

アルゴリズム

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

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

f(x)=WT(D1TD).

ここで D は対角スケーリング (MIMO ループ用) です。T は Location での相補感度関数です。WT は、最大ループ ゲイン プロファイル MaxGain から導出された周波数重み付け関数です。この関数のゲインは、–60 dB から 20 dB の範囲の値に対して 1/MaxGain にほぼ一致します。数値的な理由から、指定されたゲイン プロファイルの勾配がこの範囲の外で変化する場合を除き、重み付け関数はこの範囲の外では平坦になります。この調整は、"正則化" と呼ばれます。s = 0 または s = Inf に近い WT の極の場合、systune の最適化問題の数値的な調整が難しくなることがあるため、周波数が極度に低い、あるいは極度に高いダイナミクスでゲイン プロファイルを指定することは推奨されません。

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

WT = getWeight(Req,Ts)

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

T は閉ループ伝達関数ですが、f(x) < 1 に駆動することは L のゲインが 1 未満の周波数帯域で開ループ伝達関数 L に上限を適用するのと同じです。その理由を理解するには、T = L/(I + L) であることに注意してください。SISO ループの場合、|L| << 1 のとき、|T| ≈ |L| となります。したがって、開ループの最大ゲイン要件を適用すると、|L| < 1/|WT||WTT| < 1 を適用するのとほぼ同じになります。MIMO ループの場合は、同様の理由が、||T|| ≈ σmax(L) で当てはまります。ここで σmax は最大特異値です。

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

すべて展開する

R2016a での動作変更

R2016a で導入