Main Content

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

TuningGoal.Sensitivity クラス

パッケージ: TuningGoal

制御システムの調整のための感度要件

説明

TuningGoal.Sensitivity を使用して、外乱に対するフィードバック ループの感度を制限します。優れた外乱の抑制が必要となる周波数での感度よりも低くなるように感度を抑制します。この調整目標は、制御システムを systunelooptune などの調整コマンドで調整するために使用します。

構築

Req = TuningGoal.Sensitivity(location,maxsens) は、指定した位置でフィードバック ループに入る外乱に対する感度を制限する調整目標を作成します。maxsens は、最大感度を周波数の関数として指定します。最大感度プロファイルを滑らかな伝達関数として指定するか、frd モデルまたは makeweight (Robust Control Toolbox) コマンドを使用して区分的なエラー プロファイルをスケッチできます

(感度関数の詳細については、getSensitivity (Simulink Control Design) を参照してください)。

入力引数

location

外乱に対する感度が制約される位置。調整する制御システム内で 1 つ以上の位置を特定する文字ベクトルまたは文字ベクトルの cell 配列として指定します。利用可能な位置は調整しているシステムの種類によって異なります。

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

maxsens

周波数の関数としての外乱に対する最大感度。

maxsens を滑らかな SISO 伝達関数 (tfzpk または ss モデル) として指定できます。または、frd モデルまたは makeweight (Robust Control Toolbox) コマンドを使用して区分的なゲイン プロファイルをスケッチできます。たとえば、次の frd モデルは、1 rad/s で 0.01 (–40 dB) の最大感度が増加していき、50 rad/s を超えると 1 (0 dB) になるように指定します。

maxsens = frd([0.01 1 1],[1 50 100]);
bodemag(maxsens)
ylim([-45,5])

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

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

プロパティ

MaxSensitivity

周波数の関数としての最大感度。SISO zpk モデルとして指定します。

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

Focus

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

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

Req.Focus = [1,100];

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

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

既定値: []

プラント入力における外乱感度

次の制御システムのプラント入力における外乱に対する感度を制限する調整目標を作成します。制御システムには、プラント入力に 'X' という解析ポイントが含まれます。

1 rad/s で 0.01 (–40 dB) の最大感度が増加していき、10 rad/s を超えると 1 (0 dB) になるように指定します。frd モデルを使用してこのターゲット感度をスケッチします。

maxsens = frd([0.01 1 1],[1 10 100]);
Req = TuningGoal.Sensitivity('X',maxsens);

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

viewGoal(Req)

Figure contains an axes. The axes contains an object of type line. These objects represent Max sensitivity, Effective bound.

影付きの領域は、調整目標に違反している領域を示しています。影付きの領域は、超低周波数では指定されたゲイン プロファイル (破線) と異なります。これは、数値的な安定性のためにソフトウェアによって行われる変更に原因があります。アルゴリズムを参照してください。

周波数範囲とモデルの適用が制限された感度目標

5 rad/s 未満の周波数で最大感度が 0.1 (10%) になるように指定する調整目標を作成します。調整目標が 2 番目と 3 番目のプラント モデルにのみ適用されるように設定します。

Req = TuningGoal.Sensitivity('u',0.1);
Req.Focus = [0 5];
Req.Models = [2 3];

'u' という名前の解析ポイントをもつ制御システムの調整時に、Reqlooptune または systune への入力として使用できます。Focus プロパティを設定すると、調整目標の適用が 0 ~ 5 rad/s の周波数に制限されます。Models プロパティを設定すると、調整目標を使用して制御システム モデルの配列を調整するときに、調整目標の適用が配列内の 2 番目と 3 番目のモデルに制限されます。

ヒント

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

アルゴリズム

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

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

f(x)=WS(s)S(s,x),

またはその離散時間の等価物です。ここで、S(s,x) は調整目標に指定した位置で測定された閉ループ感度関数です。WS は、指定した感度プロファイルから導出された周波数重み付け関数です。WS1/MaxSensitivity のゲインは、–20 dB から 60 dB の範囲のゲイン値に対してほぼ一致します。数値的な理由から、指定された感度プロファイルの勾配がこの範囲の外で変化する場合を除き、重み付け関数はこの範囲の外では平坦になります。この調整は、"正則化" と呼ばれます。s = 0 または s = Inf に近い WS の極の場合、systune の最適化問題の数値的な調整が難しくなることがあるため、周波数が極度に低い、あるいは極度に高いダイナミクスで感度プロファイルを指定することは推奨されません。

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

WS = getWeight(Req,Ts)

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

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

すべて展開する

R2016a での動作変更

R2016a で導入