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

TuningGoal.LoopShape クラス

パッケージ: TuningGoal

制御システムの調整のためのターゲットのループ整形

説明

TuningGoal.LoopShape を使用して、開ループ応答のターゲット "ゲイン プロファイル" (周波数の関数としてのゲイン) を指定します。TuningGoal.LoopShape は、ポイント間を結ぶ開ループ応答 (L) を制御システムの特定の位置で制約します。この調整目標は、制御システムを systunelooptune などの調整コマンドで調整するために使用します。

制御システムを調整する場合、ターゲットの開ループ ゲインのプロファイルは、逆感度関数 inv(S)  = (I + L) および相補感度関数 T = 1–S に対する制約に変換されます。次の図に、代表的な調整されたシステムでのこれらの制約について示します。

ここで L は 1 よりも大幅に大きく、inv(S) (緑色の影付きの領域) に対する最小ゲインの制約は L に対する最小ゲインの制約と同じです。同様に、L は 1 よりも大幅に小さく、T (赤色の影付きの領域) に対する最大ゲインの制約は L に対する最大ゲインの制約と同じです。これら 2 つの制約間のギャップは、CrossTol パラメーターの 2 倍であり、ループ ゲインが 0 dB をまたぐ周波数帯域を指定します。

多入力多出力 (MIMO) 制御システムの場合、1 より大きいゲイン プロファイルの値は最小性能要件として解釈されます。そのような値は、開ループ応答の最小特異値の下限です。1 より小さいゲイン プロファイルの値は最小ロールオフ要件として解釈されます。これは、開ループ応答の最大特異値の上限です。特異値の詳細については、sigma を参照してください。

交差の近傍のループ整形が単純であるか、よく知られたものである場合 (積分動作など)、TuningGoal.LoopShape を使用します。ある周波数帯域での高ゲインの制約または低ゲインの制約のみを指定するには、TuningGoal.MinLoopGain および TuningGoal.MaxLoopGain を使用します。その場合、ソフトウェアは交差の近傍で最適なループ整形を決定します。

構築

Req = TuningGoal.LoopShape(location,loopgain) は、指定された位置で測定された開ループ応答を整形するために調整目標を作成します。単入力単出力 (SISO) 伝達関数 loopgain のゲインは、ターゲットの開ループ ゲインのプロファイルを指定します。ターゲット ゲイン プロファイル (I/O ペア全体での最大ゲイン) を滑らかな伝達関数として指定するか、frd モデルを使用して区分的な誤差プロファイルをスケッチできます。

Req = TuningGoal.LoopShape(location,loopgain,crosstol) は、交差周波数の位置での許容誤差を指定します。crosstol は許容誤差を decade で表します。たとえば、crosstol = 0.5 は、loopgain によって指定されたターゲットの交差周波数の両側で半分の decade に収まるゲイン交差を許容します。crosstol を省略すると、調整目標は既定値の 0.1 decade を使用します。MIMO 制御システムを調整する場合は、crosstol を増加させます。こうすることで、システムの別個のループの交差周波数をさらに大幅に変化させることができます。

Req = TuningGoal.LoopShape(location,wc) は、ターゲット ゲインの交差周波数を指定するだけです。この構文は、純積分器のループ整形 loopgain = wc/s を指定することと同等です。

Req = TuningGoal.LoopShape(location,wcrange) は、ターゲット ゲインの交差周波数の範囲を指定します。範囲は wcrange = [wc1,wc2] 形式のベクトルです。この構文は、幾何平均 sqrt(wc1*wc2)wc として使用することと、crosstolwcrange の半分の幅の decade に設定することと同等です。単一の wc 値の代わりに範囲を使用することで、MIMO 制御システム内のすべてのループにターゲットのループ整形を強制する調整アルゴリズムの機能が向上します。

入力引数

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 で複数の位置を指定すると、ループ整形要件が MIMO 開ループ伝達関数に適用されます。

loopgain

周波数の関数としてのターゲットの開ループ ゲインのプロファイル。

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

多入力多出力 (MIMO) 制御システムの場合、1 より大きいゲイン プロファイルの値は最小性能要件として解釈されます。これらの値は、L の最小特異値の下限です。1 より小さいゲイン プロファイルの値は、最小ロールオフ要件として解釈されます。これは、L の最大特異値の上限です。特異値の詳細については、sigma を参照してください。

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

crosstol

交差周波数の位置の許容誤差 (decade 単位)。スカラー値として指定します。たとえば、crosstol = 0.5 は、loopgain によって指定されたターゲットの交差周波数の両側で半分の decade に収まるゲイン交差を許容します。crosstol を増加させると、MIMO 制御システム内のすべてのループにターゲットのループ整形を強制する調整アルゴリズムの機能が向上します。

既定値: 0.1

wc

ターゲットの交差周波数。正のスカラー値として指定します。wc を rad/TimeUnit の単位で表します。ここで、TimeUnit は、調整している制御システム モデルの TimeUnit プロパティです。

wcrange

ターゲットの交差周波数の範囲。[wc1,wc2] 形式のベクトルとして指定します。wc を rad/TimeUnit の単位で表します。ここで、TimeUnit は、調整している制御システム モデルの TimeUnit プロパティです。

プロパティ

LoopGain

周波数の関数としてのターゲットのループ整形。SISO zpk モデルとして指定します。

ソフトウェアは自動的に入力引数 loopgainzpk モデルにマッピングします。この zpk モデルのゲインは目的のゲイン プロファイルを近似します。viewGoal(Req) を使用して zpk モデル LoopGain のゲインをプロットします。

CrossTol

ゲインの交差周波数の許容誤差 (decade 単位)。

CrossTol の初期値は、調整目標を作成するときに、crosstol 入力によって設定されます。

既定値: 0.1

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

既定値: []

すべて折りたたむ

以下の制御システムにターゲット ゲイン プロファイルの要件を作成します。積分動作、1 のゲイン交差、40 dB/decade のロールオフ要件を指定します。

要件は、AnalysisPoint ブロック X で測定される開ループ応答に適用する必要があります。0.5 decade の交差に対する許容誤差を指定します。

LS = frd([100 1 0.0001],[0.01 1 100]);
Req = TuningGoal.LoopShape('X',LS,0.5);

ソフトウェアによって LS は区分的に指定された要件を近似する周波数の滑らかな関数に変換されます。viewGoal を使用して要件を表示します。

viewGoal(Req)

緑と赤の領域は、逆感度 (inv(S) = 1-G*C) の範囲と相補感度 (T = 1-S) の範囲をそれぞれ示します。0 dB のゲインにおけるこれらの領域間のギャップは指定した交差に対する許容誤差を反映し、ターゲットのループ交差の両側で半分の decade になります。

viewGoal(Req,CL) を使用してこの制御システム CL の調整された閉ループ モデルを検証すると、ST の調整後の値もプロットされます。

以下の制御システムに対し、内側のループと外側のループに個別のループ整形要件を作成します。

内側のループの場合、積分動作、1 のゲイン交差、40 dB/decade のロールオフ要件でループ整形を指定します。また、外側のループが開いた状態でこのループ整形要件が適用されるように指定します。

LS2 = frd([100 1 0.0001],[0.01 1 100]);
Req2 = TuningGoal.LoopShape('X2',LS2);
Req2.Openings = 'X1';

location'X2' を指定すると、Req2 が位置 X2 で点と点を結ぶ開ループ伝達関数に適用されることが示されます。Req2.Openings を設定すると、Req2 の適用に際してループが解析ポイント X1 で開かれることが示されます。

既定では、Req2 は内側のループに、ループ整形要件だけでなく安定性要件も適用します。ただし、制御システムによっては内側のループに安定性が必要ない場合や、適用できない可能性もあります。その場合は、次のようにして、Req2 から安定性要件を削除します。

Req2.Stabilize = false;

外側のループの場合、積分動作、0.1 のゲイン交差、20 dB/decade のロールオフ要件でループ整形を指定します。

LS1 = frd([10 1 0.01],[0.01 0.1 10]);
Req1 = TuningGoal.LoopShape('X1',LS1);

location'X1' を指定すると、Req1 が位置 X1 で点と点を結ぶ開ループ伝達関数に適用されることが示されます。このループ整形は内側のループが閉じた状態で適用されるため、Req1.Openings を設定する必要はありません。

制御システムを Req1Req2 両方のループ整形要件で調整する場合もあります。これを行うには、両方の要件を調整コマンドへの入力として使用します。たとえば、CL0 が閉ループ制御システムの調整可能な genss モデルであると仮定します。その場合は、[CL,fSoft] = systune(CL0,[Req1,Req2]) を使用して両方の要件に合わせて制御システムを調整します。

Simulink モデル rct_airframe2'q' にフィードバック ループ用のループ整形要件を作成します。'az' ループが開いた状態でループ整形要件が適用されるように指定します。

モデルを開きます。

open_system('rct_airframe2')

'q' ループに 2 rad/s の交差の積分動作を適用するループ整形要件を作成します。このループ整形は 2/_s_ のループ整形に相当します。

s = tf('s');
shape = 2/s;
Req = TuningGoal.LoopShape('q',shape);

この要件を適用するときに追加のループを開く位置を指定します。

Req.Openings = 'az';

この要件を使用して Simulink モデルを調整するには、モデルに slTuner インターフェイスを作成します。インターフェイスで調整するブロックを特定します。

ST0 = slTuner('rct_airframe2','MIMO Controller');

azq の両方を slTuner インターフェイスの解析ポイントとして指定します。

addPoint(ST0,{'az','q'});

このコマンドは q を解析位置として利用できるようにします。また、az でループが開いている状態で調整要件を適用可能にします。

これで、Req と他の調整要件を使用してモデルを調整できるようになります。以下に例を示します。

[ST,fSoft] = systune(ST0,Req);
Final: Soft = 0.845, Hard = -Inf, Iterations = 50

50 ~ 100 rad/s の 'X' 交差ユニティー ゲインで識別されたループの開ループ応答を指定する調整要件を作成します。

Req = TuningGoal.LoopShape('X',[50,100]);

その結果の要件を調べて、ターゲットのループ整形を確認します。

viewGoal(Req)

このプロットは、要件が 70 rad/s 前後の交差をもつ、範囲 [50,100] の幾何学的平均値の積分ループ整形を指定することを示します。0 dB における最小低周波ゲイン (緑の領域) と最大高周波ゲイン (赤の領域) 間のギャップは、許容される交差範囲 [50,100] を反映しています。

ヒント

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

アルゴリズム

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

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

f(x)=WSSWTT.

ここで、S = D–1[I – L(s,x)]–1D は指定された位置におけるスケーリングされた感度関数です。L(s,x) は整形される開ループ応答で、D は自動的に計算されるループ スケーリング係数です (LoopScaling プロパティが 'off' に設定された場合、D = I となります)。T = S – I は相補感度関数です。

WS と WT は指定したループ整形から導出された周波数重み付け関数です。これらの関数のゲインは、–20 dB から 60 dB の範囲の値に対して LoopGain および 1/LoopGain にほぼ一致します。数値的な理由から、60 dB を超える、あるいは –60 dB に満たないゲインについて指定したループのゲイン プロファイルが勾配を変更する場合を除き、重み付け関数はこの範囲の外で横ばいになります。s = 0 または s = Inf に近い WS または WT の極の場合、systune の最適化問題の数値的な調整が難しくなることがあるため、周波数が極度に低い、あるいは極度に高いダイナミクスでループ整形を指定することは推奨されません。

WS と WT を得るには、次を使用します。

[WS,WT] = getWeights(Req,Ts)

ここで Req は調整目標、Ts は調整を行うサンプル時間です (連続時間の場合は Ts = 0)。重み付け関数が数値的な安定性に与える効果の詳細については、調整目標の可視化を参照してください。

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

すべて展開する

R2016a での動作変更

R2016a で導入