Main Content

TuningGoal.Tracking クラス

パッケージ: TuningGoal

制御システムの調整のための追従要件

説明

TuningGoal.Tracking を使用して、指定した入力と出力の間の周波数領域の追従要件を指定します。この調整目標では、最大の相対誤差 (基準入力から追従誤差へのゲイン) を周波数の関数として指定します。この調整目標は、制御システムを systunelooptune などの調整コマンドで調整するために使用します。

伝達関数を入力して最大誤差のプロファイルを直接指定できます。または、ターゲットの DC 偏差、ピーク偏差および応答時間を指定することもできます。これらのパラメーターは、周波数領域の最大追従誤差を記述する次の伝達関数に変換されます。

MaxError=(PeakError)s+ωc(DCError)s+ωc.

ここで ωc は 2/(応答時間) です。次のプロットは、一連の値の例に対するこれらの関係を示しています。

構築

Req = TuningGoal.Tracking(inputname,outputname,responsetime,dcerror,peakerror) は調整目標 Req を作成します。これは、周波数領域での inputname から outputname への追従性能を制約します。この調整目標は、最大誤差プロファイルを次で定義される周波数の関数として指定します。

MaxError=(PeakError)s+ωc(DCError)s+ωc.

追従帯域幅 ωc = 2/responsetime。最大相対定常偏差は dcerror で指定され、peakerror は全周波数でのピーク相対偏差を指定します。

inputname または outputname に信号名あるいは複数の信号名の cell 配列を指定することによって、MIMO 追従要件を指定できます。MIMO 追従要件の場合は、InputScaling プロパティを使用して相互干渉を制限します。プロパティを参照してください。

Req = TuningGoal.Tracking(inputname,outputname,maxerror) は、最大相対誤差を周波数の関数として指定します。ターゲット誤差プロファイル (基準信号から追従誤差信号への最大ゲイン) を滑らかな伝達関数として指定できます。あるいは、frd モデルを使用して区分的な誤差プロファイルをスケッチできます。

入力引数

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 ブロックに関連付けられた暗黙的な出力になります。

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

responsetime

ターゲット応答時間。正のスカラー値として指定します。追従帯域幅は ωc = 2/responsetime. で指定されます。ターゲット応答時間は調整するモデルの時間単位で表します。たとえば、モデル T を調整するときに、T.TimeUnit'minutes' の場合、ターゲット応答時間は分で表します。

dcerror

定常状態の非整数の最大追従誤差。正のスカラー値として指定します。たとえば、dcerror = 0.01 は最大定常偏差を 1% に設定します。

inputname または outputname がベクトル値の場合、dcerrorinputname から outputname へのすべての I/O ペアに適用されます。

既定値: 0.001

peakerror

全周波数での非整数の最大追従誤差。1 より大きい正のスカラー値として指定します。

既定値: 1

maxerror

周波数の関数としてのターゲット追従誤差プロファイル。SISO 数値 LTI モデルとして指定します。

maxerror は、基準信号から追従誤差信号への最大ゲインです。maxerror は滑らかな伝達関数として指定できます (tfzpk または ss モデル)。あるいは、frd モデルを使用して区分的な誤差プロファイルをスケッチできます。その場合、ソフトウェアは自動的に誤差プロファイルを zpk モデルにマッピングします。zpk モデルのゲインは、目標とする誤差プロファイルを近似します。show(Req) を使用して zpk モデルのゲインをプロットします。

maxerror は SISO LTI モデルでなければなりません。inputname または outputname が cell 配列の場合、maxerrorinputname から outputname へのすべての I/O ペアに適用されます。

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

プロパティ

MaxError

周波数の関数としての最大誤差。SISO zpk モデルで表現されます。このプロパティは最大追従誤差を周波数の関数として保存します (基準信号から追従誤差信号への最大ゲイン)。

構文 Req = TuningGoal.Tracking(inputname,outputname,maxerror) を使用する場合、MaxError プロパティは zpk と等価であるか、maxerror 入力引数で指定した LTI モデルの近似です。

構文 Req = TuningGoal.Tracking(inputname,outputname,resptime,dcerror,peakerror) を使用する場合、MaxError は次で定義される zpk 伝達関数です。

MaxError=(PeakError)s+ωc(DCError)s+ωc.

MaxError は SISO LTI モデルです。inputname または outputname が cell 配列の場合、MaxErrorinputname から outputname へのすべての I/O ペアに適用されます。

show(Req) を使用して MaxError のゲインをプロットします。

Focus

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

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

Req.Focus = [1,100];

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

InputScaling

基準信号のスケーリング。正の実数値のベクトルとして指定します。

MIMO 追従要件で、単位の選択によって異なるチャネルの応答に小さい信号と大きい信号が混合される結果となる場合、このプロパティを使用して各エントリの相対的な振幅をベクトル値のステップ入力で指定します。この情報は、追従誤差の参照によって伝達関数の非対角項をスケーリングするために使用されます。このスケーリングは、それぞれの基準信号の振幅に比例して相互干渉が測定されるようにします。

たとえば、Req が調整目標であり、信号 {'y1','y2'} が基準信号 {'r1','r2'} に追従することを要求していると仮定します。さらに、出力は相互干渉 10% 未満で基準信号に追従する必要があると仮定します。r1r2 が同程度の振幅の場合、r1 から y2r2y1 へのゲインは 0.1 未満に維持すれば十分です。しかし、r1r2 よりも 100 倍大きい場合、r1 による y2 の変動を確実に r2 ターゲットの 10% 未満にするためには、r1 から y2 へのゲインは 0.001 未満でなければなりません。この結果を確実に得るためには、InputScaling プロパティを次のように設定します。

Req.InputScaling = [100,1];

これにより、1 番目の基準信号は 2 番目の基準信号より 100 倍大きいことを考慮に入れるようにソフトウェアに指示します。

既定値の [] は、スケーリングしないことを意味します。

既定値: []

Input

基準信号名。追従される信号の名前を指定する文字ベクトルまたは文字ベクトルの cell 配列として指定します。inputname 引数によって与えられます。

Output

出力信号名。基準信号に追従しなければならない信号の名前を指定する文字ベクトルまたは文字ベクトルの cell 配列として指定します。引数 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';

既定値: []

応答時間と定常状態の最大追従誤差を含む追従目標

信号 'theta' が信号 'theta_ref' に追従するように指定する追従目標を作成します。必要とされる応答時間は、調整する制御システムの時間単位で 2 です。最大定常偏差は 0.1% です。

 Req = TuningGoal.Tracking('theta_ref','theta',2,0.001);

peakerror は未指定のため、この調整目標では既定値の 1 が使用されます。

最大追従誤差を周波数の関数として含む追従目標

信号 'theta' が信号 'theta_ref' に追従するように指定する追従目標を作成します。周波数範囲 [0,1] での最大相対誤差は 0.01 (1%) です。周波数 100 での相対誤差は 1 (100%) に増加します。

frd モデルを使用して、誤差プロファイルを周波数の関数として指定します。

err = frd([0.01 0.01 1],[0 1 100]);
Req = TuningGoal.Tracking('theta_ref','theta',err);

ソフトウェアは、区分的に指定されたプロファイルを近似する周波数の滑らかな関数に err を変換します。viewGoal を使用してこの関数を表示します。

viewGoal(Req)

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

破線は MaxError に格納されているターゲット誤差プロファイルで、影付きの領域は調整目標に違反する範囲を示しています。

ヒント

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

アルゴリズム

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

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

f(x)=WF(s)(T(s,x)I),

またはその離散時間の等価物です。ここで、T(s,x) は Input から Output への閉ループ伝達関数で、 は、H ノルムを示します (getPeakGain を参照)。WF は、調整目標で指定する誤差プロファイルから導出された周波数重み付け関数です。WF1/MaxError のゲインは、–20 dB から 60 dB の範囲のゲイン値に対してほぼ一致します。数値的な理由から、この範囲の外で勾配が変化する参照モデルを指定しない限り、重み付け関数はこの範囲の外では平坦になります。この調整は、"正則化" と呼ばれます。s = 0 または s = Inf に近い WF の極の場合、systune の最適化問題の数値的な調整が難しくなることがあるため、周波数が極度に低い、あるいは極度に高いダイナミクスで誤差プロファイルを指定することは推奨されません。

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

WF = getWeight(Req,Ts)

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

バージョン履歴

R2016a で導入

すべて展開する