TuningGoal.Tracking クラス
パッケージ: TuningGoal
制御システムの調整のための追従要件
説明
TuningGoal.Tracking
を使用して、指定した入力と出力の間の周波数領域の追従要件を指定します。この調整目標では、最大の相対誤差 (基準入力から追従誤差へのゲイン) を周波数の関数として指定します。この調整目標は、制御システムを systune
や looptune
などの調整コマンドで調整するために使用します。
伝達関数を入力して最大誤差のプロファイルを直接指定できます。または、ターゲットの DC 偏差、ピーク偏差および応答時間を指定することもできます。これらのパラメーターは、周波数領域の最大追従誤差を記述する次の伝達関数に変換されます。
ここで ωc は 2/(応答時間) です。次のプロットは、一連の値の例に対するこれらの関係を示しています。
構築
は調整目標 Req
= TuningGoal.Tracking(inputname
,outputname
,responsetime
,dcerror
,peakerror
)Req
を作成します。これは、周波数領域での inputname
から outputname
への追従性能を制約します。この調整目標は、最大誤差プロファイルを次で定義される周波数の関数として指定します。
追従帯域幅 ωc = 2/responsetime
。最大相対定常偏差は dcerror
で指定され、peakerror
は全周波数でのピーク相対偏差を指定します。
inputname
または outputname
に信号名あるいは複数の信号名の cell 配列を指定することによって、MIMO 追従要件を指定できます。MIMO 追従要件の場合は、InputScaling
プロパティを使用して相互干渉を制限します。プロパティを参照してください。
は、最大相対誤差を周波数の関数として指定します。ターゲット誤差プロファイル (基準信号から追従誤差信号への最大ゲイン) を滑らかな伝達関数として指定できます。あるいは、Req
= TuningGoal.Tracking(inputname
,outputname
,maxerror
)frd
モデルを使用して区分的な誤差プロファイルをスケッチできます。
入力引数
|
調整目標の入力信号。文字ベクトル、または多入力調整目標の場合は文字ベクトルの cell 配列として指定します。
制御システム モデル内の解析ポイントの詳細については、制御システムの解析と設計における対象信号のマークを参照してください。 |
|
調整目標の出力信号。文字ベクトル、または多出力調整目標の場合は文字ベクトルの cell 配列として指定します。
制御システム モデル内の解析ポイントの詳細については、制御システムの解析と設計における対象信号のマークを参照してください。 |
|
ターゲット応答時間。正のスカラー値として指定します。追従帯域幅は ωc = 2/ |
|
定常状態の非整数の最大追従誤差。正のスカラー値として指定します。たとえば、
既定値: 0.001 |
|
全周波数での非整数の最大追従誤差。1 より大きい正のスカラー値として指定します。 既定値: 1 |
|
周波数の関数としてのターゲット追従誤差プロファイル。SISO 数値 LTI モデルとして指定します。
離散時間で調整する場合 (つまり |
プロパティ
|
周波数の関数としての最大誤差。SISO 構文 構文
|
|
調整目標が適用される周波数帯域。
Req.Focus = [1,100]; 既定値: 連続時間の場合は |
|
基準信号のスケーリング。正の実数値のベクトルとして指定します。 MIMO 追従要件で、単位の選択によって異なるチャネルの応答に小さい信号と大きい信号が混合される結果となる場合、このプロパティを使用して各エントリの相対的な振幅をベクトル値のステップ入力で指定します。この情報は、追従誤差の参照によって伝達関数の非対角項をスケーリングするために使用されます。このスケーリングは、それぞれの基準信号の振幅に比例して相互干渉が測定されるようにします。 たとえば、 Req.InputScaling = [100,1]; これにより、1 番目の基準信号は 2 番目の基準信号より 100 倍大きいことを考慮に入れるようにソフトウェアに指示します。 既定値の 既定値: |
|
基準信号名。追従される信号の名前を指定する文字ベクトルまたは文字ベクトルの cell 配列として指定します。 |
|
出力信号名。基準信号に追従しなければならない信号の名前を指定する文字ベクトルまたは文字ベクトルの cell 配列として指定します。引数 |
|
調整目標を適用するモデル。インデックスのベクトルとして指定します。 制御システム モデルの配列を Req.Models = 2:4;
既定値: |
|
調整目標を評価するときに開くフィードバック ループ。ループ開始点の位置を特定する文字ベクトルの cell 配列として指定します。調整目標は、特定した位置でフィードバック ループを開くことにより作成される開ループの構成に対して評価されます。 調整目標を使用して制御システムの Simulink モデルを調整する場合、 調整目標を使用して制御システムの一般化状態空間 ( たとえば、 既定値: |
|
調整目標の名前。文字ベクトルとして指定します。 たとえば、 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)
破線は MaxError
に格納されているターゲット誤差プロファイルで、影付きの領域は調整目標に違反する範囲を示しています。
ヒント
この調整目標は、
Openings
で特定されたポイントでループが開いた状態で評価される、Input
からOutput
への閉ループ伝達関数に暗黙的な安定性の制約を課します。この暗黙的な制約に影響を受けるダイナミクスは、この調整目標の "安定ダイナミクス" です。systuneOptions
のMinDecay
およびMaxRadius
オプションは、これらの暗黙的に制約されたダイナミクスの範囲を制御します。最適化で既定の範囲が満たされない場合や、既定の範囲が他の要件と競合する場合は、systuneOptions
を使用してこれらの既定値を変更します。
アルゴリズム
TuningGoal
を使用して制御システムを調整する場合、ソフトウェアは調整目標を正規化されたスカラー値 f(x) に変換します。ここで x は、制御システムの自由 (調整可能) パラメーターのベクトルです。その後、ソフトウェアはパラメーター値を調整して f(x) を最小化するか、調整目標が厳密な制約値の場合、f(x) が 1 より小さくなるようにします。
TuningGoal.Tracking
の場合、f(x) は次のようになります。
またはその離散時間の等価物です。ここで、T(s,x) は Input
から Output
への閉ループ伝達関数で、 は、H∞ ノルムを示します (getPeakGain
を参照)。WF は、調整目標で指定する誤差プロファイルから導出された周波数重み付け関数です。WF と 1/MaxError
のゲインは、–20 dB から 60 dB の範囲のゲイン値に対してほぼ一致します。数値的な理由から、この範囲の外で勾配が変化する参照モデルを指定しない限り、重み付け関数はこの範囲の外では平坦になります。この調整は、"正則化" と呼ばれます。s = 0 または s = Inf
に近い WF の極の場合、systune
の最適化問題の数値的な調整が難しくなることがあるため、周波数が極度に低い、あるいは極度に高いダイナミクスで誤差プロファイルを指定することは推奨されません。
WF を取得するには、以下を使用します。
WF = getWeight(Req,Ts)
ここで Req
は調整目標、Ts
は調整を行うサンプル時間です (連続時間の場合は Ts = 0
)。正則化とその効果の詳細については、調整目標の可視化を参照してください。
バージョン履歴
R2016a で導入参考
looptune
| systune
| systune
(for slTuner)
(Simulink Control Design) | looptune (for slTuner)
(Simulink Control Design) | viewGoal
| evalGoal
| TuningGoal.Gain
| TuningGoal.LoopShape
| slTuner
(Simulink Control Design)