Main Content

TuningGoal.WeightedGain クラス

パッケージ: TuningGoal

制御システム調整のための周波数重み付けゲインの制約

説明

TuningGoal.WeightedGain を使用して、指定された入力から出力への重み付けゲインを制限します。重み付けゲインは入力から出力へのゲインの周波数において最大であり、指定した重み付け関数で乗算されます。TuningGoal.WeightedGain 調整目標は、systune または looptune などの調整コマンドで制御システムを調整する場合に使用できます。

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

構築

Req = TuningGoal.WeightedGain(inputname,outputname,WL,WR) は、指定された入力から出力への閉ループ伝達関数 H(s) が次の要件を満たすことを指定する調整目標を作成します。

||WL(s)H(s)WR(s)|| < 1

表記 ||•|| は、周波数全体 (H ノルム) での最大ゲインを意味します。

入力引数

inputname

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

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

    • 任意のモデル入力。

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

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

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

WL,WR

周波数重み付け関数。スカラー値、行列、SISO または MIMO の数値 LTI モデルとして指定します。

関数 WL および WR は、調整目標の重みを提供します。調整目標は、指定した入力から出力へのゲイン H(s) が必ず次の不等式を満たすようにします。

||WL(s)H(s)WR(s)|| < 1

WL は H(s) の出力チャネルの重みを提供し、WR は入力チャネルの重みを提供します。スカラー値の重みまたは周波数依存の重みを指定できます。周波数依存の重みを指定するには、数値 LTI モデルを使用します。以下に例を示します。

WL = tf(1,[1 0.01]);
WR = 10;

MIMO 重み付け関数を指定する場合、inputname および outputname はベクトル信号でなければなりません。ベクトル信号の次元は、H(s) の次元が WL および WR の次元と同じになるようにしなければなりません。たとえば、WR = diag([1 10]) を指定する場合、inputname には 2 つの信号が含まれていなければなりません。ただし、スカラー値は入力次元または出力次元に自動的に拡張されます。

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

WL = [] または WR = [] の値は単位行列として解釈されます。

プロパティ

WL

制約を受ける伝達関数の出力チャネルに対する周波数重み付け関数。スカラー値、行列、SISO または MIMO の数値 LTI モデルとして指定します。このプロパティの初期値は、調整目標を作成するときに、入力引数 WL によって設定されます。

WR

制約を受ける伝達関数の入力チャネルに対する周波数重み付け関数。スカラー値、行列、SISO または MIMO の数値 LTI モデルとして指定します。このプロパティの初期値は、調整目標を作成するときに、入力引数 WR によって設定されます。

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)

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

既定値: []

すべて折りたたむ

入力 r から出力 y への閉ループ SISO システムのゲインを制約する調整目標要件を作成します。入力時にゲインを係数 10 で重み付けし、出力時には周波数依存の重み 1/(s+0.01) で重み付けします。

WL = tf(1,[1 0.01]);
WR = 10;
Req = TuningGoal.WeightedGain('r','y',WL,WR);

systune で要件 Req を使用すると、'r' という名前の入力信号と 'y' という名前の出力信号をもつ任意の制御システム モデルの自由パラメーターを調整できます。

その後、viewGoal を使用して、要件に対し調整された制御システムを検証することができます。

次の制御システムの外側のループのゲインを制約し、内側のループが開いた状態で評価される要件を作成します。

このシステムのモデルを作成します。これを行うには、数値プラント モデル G1 および G2、調整可能なコントローラー C1 および C2 を指定して接続します。また、解析または調整の対象ポイント AP1 および AP2 をマークする AnalysisPoint ブロックを作成して接続します。

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);  
T.InputName = 'r';
T.OutputName = 'y';

このシステムの r から y へのゲインを制約する調整要件を作成します。出力時のゲインを s/(s+0.5) によって重み付けします。

WL = tf([1 0],[1 0.5]);
Req = TuningGoal.WeightedGain('r','y',WL,[]);

この要件は Req = TuningGoal.Gain('r','y',1/WL) と等価です。ただし、MIMO システムの場合、TuningGoal.WeightedGain を使用して TuningGoal.Gain 要件として表現できないチャネル固有の重み付けを作成することができます。

この制約を調整するために、r から y への伝達関数が外側のループを開いた状態で評価されるように指定します。

Req.Openings = 'AP1';

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

Req.Stabilize = false;

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

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

ヒント

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

アルゴリズム

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

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

f(x)=WLT(s,x)WR.

T(s,x) は、Input から Output への閉ループ伝達関数です。 は H ノルムを表します (getPeakGain を参照)。

バージョン履歴

R2016a で導入

すべて展開する

R2016a での動作変更

参考

| | (Simulink Control Design) | (Simulink Control Design) | (Simulink Control Design) | |