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

TuningGoal.Margins クラス

パッケージ: TuningGoal

制御システムの調整のための安定余裕要件

説明

TuningGoal.Margins を使用して SISO または MIMO フィードバック ループのゲイン余裕と位相余裕の調整目標を指定します。この調整目標は viewGoal で調整された制御システムの検証に使用できます。また、この調整目標は systune または looptune などの調整コマンドで制御システムを調整する場合にも使用できます。

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

調整目標を使用して制御システムを調整した後に、viewGoal コマンドを使用して調整目標と調整後の値を可視化できます。余裕目標の解釈の詳細については、制御システムの調整における安定余裕を参照してください。

構築

Req = TuningGoal.Margins(location,gainmargin,phasemargin) は制御システム内の指定した位置にゲイン余裕と位相余裕の最小値を指定する調整目標を作成します。

入力引数

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 の開ループ伝達関数に適用されます。

gainmargin

フィードバック ループに必要な最小ゲイン余裕。dB 単位のスカラー値で指定します。

MIMO フィードバック ループの場合、ゲイン余裕はディスク余裕の概念に基づいており、すべてのフィードバック チャネルで ±gainmargin および ±phasemargin の同時実行ゲインと位相変化の安定性が保証されます。ディスク余裕の詳細については、Stability Analysis Using Disk Margins (Robust Control Toolbox)を参照してください。

phasemargin

フィードバック ループに必要な最小位相余裕。角度のスカラー値として指定します。

MIMO フィードバック ループの場合、位相余裕はディスク余裕の概念に基づいており、すべてのフィードバック チャネルで ±gainmargin および ±phasemargin の同時実行ゲインと位相変化の安定性が保証されます。ディスク余裕の詳細については、Stability Analysis Using Disk Margins (Robust Control Toolbox)を参照してください。

プロパティ

GainMargin

フィードバック ループに必要な最小ゲイン余裕。デシベル (dB) のスカラー値で指定します。

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

PhaseMargin

フィードバック ループに必要な最小位相余裕。角度のスカラー値として指定します。

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

ScalingOrder

MIMO の安定余裕の計算が関係するスケーリングの次数 (状態の数) の制御。静的スケーリング (ScalingOrder = 0) が既定で使用されます。次数を増やすと結果は向上しますが、計算が増加します。viewGoal を使用して最適化された余裕と実際の余裕との間のギャップを評価します。このギャップが大きすぎる場合は、スケーリング次数を増やすことを検討します。制御システムの調整における安定余裕を参照してください。

既定値: 0 (静的スケーリング)

Focus

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

Focus プロパティを設定して、調整目標が特定の周波数帯域に適用されるように制限します。安定余裕要件で最良の結果が得られるように、ゲイン交差周波数の両側で約 1 decade 拡張する周波数帯域を選択します。たとえば、Req がシステムを約 10 rad/s 帯域幅で調整するのに使用する TuningGoal.Margins オブジェクトであると仮定します。この調整目標の適用を制限するには、次のコマンドを使用します。

Req.Focus = [1,100];

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

Location

最小ゲインと位相余裕が適用される位置。調整する制御システム内の 1 つ以上の解析ポイントを特定する文字ベクトルの cell 配列として指定します。たとえば、Location = {'u'} の場合、調整目標は解析ポイント 'u' で最小ゲインと位相余裕を適用します。

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

既定値: []

すべて折りたたむ

以下の制御システムに対し、内側のループの余裕要件を作成します。この要件は 5 dB の最小ゲイン余裕と 40 度の最小位相余裕を適用します。

このシステムのモデルを作成します。これを行うには、数値プラント モデル 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);

調整要件オブジェクトを作成します。

Req = TuningGoal.Margins('AP2',5,40);

この要件は、内側のループである AnalysisPoint チャネル 'AP2' で特定されたフィードバック ループに、指定した安定余裕を適用します。

これらの余裕が制御システムの外側のループが開かれている状態で評価されるように指定します。

Req.Openings = {'AP1'};

'AP1' を調整要件オブジェクトの Openings プロパティに追加して、その位置でループが開いている状態で systune が要件を必ず評価するようにします。

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

調整する制御システム内で 3 つのループ開始点の位置で定義されるループに、ゲイン余裕と位相余裕の最小値を設定する要件を作成します。このループは 3 つのループ開始点の位置で定義されるため、MINO ループです。

この要件は 10 dB の最小ゲイン余裕と 40 度の最小位相余裕を 0.1 ~ 10 rad/s の帯域範囲内で設定します。

Req = TuningGoal.Margins({'r','theta','phi'},10,40);

名前 'r''theta''phi' は、調整している制御システム内の有効なループ開始点の位置を指定しなければなりません。

この要件を周波数帯域 0.1 ~ 10 rad/s の範囲に制限します。

 Req.Focus = [0.1 10];

ヒント

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

アルゴリズム

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

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

f(x)=2αSαI.

S = D–1[I – L(s,x)]–1D はスケーリングされた感度関数です。

L(s,x) は整形される開ループ応答です。

D は自動的に計算されるループ スケーリング係数です

α は指定したゲインと位相余裕から計算されるスカラー パラメーターです。

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

すべて展開する

R2016a での動作変更

R2016a で導入