メインコンテンツ

setTunedValue

slTuner インターフェイスにおける調整された変数の現在の値の設定

説明

setTunedValue を使うと、slTuner インターフェイス内で調整された変数の現在の値を初期化あるいは変更できるようになります。

slTuner インターフェイスは、各調整ブロック制御設計ブロックとして、または genmat タイプか genss タイプの一般化されたパラメトリック モデルとしてパラメーター化します。このパラメーター化では、systune などのコマンドに対し、調整された変数が指定されます。

setTunedValue(st,var,value) は、slTuner インターフェイス st における調整された変数 var の現在の値を設定します。

setTunedValue(st,varValues) は、st における複数の調整された変数の値を、構造体 varValues を使用して設定します。

setTunedValue(st,model)st における調整された変数の値を更新し、一般化モデル model にある値と一致させます。調整された値を 1 つのモデルから別のモデルに伝播するには、この構文を使用します。

すべて折りたたむ

scdcascade モデルの slTuner インターフェイスを作成します。

open_system('scdcascade')
st = slTuner('scdcascade',{'C1','C2'});

調整可能なブロックの 1 つについて、カスタム パラメーター化を設定します。

C1CustParam = realp('Kp',1) + tf(1,[1 0]) * realp('Ki',1);
setBlockParam(st,'C1',C1CustParam);

これらのコマンドにより、C1 コントローラー ブロックのパラメーター化が、2 つの調整可能なパラメーター Ki および Kp を含む一般化状態空間 (genss) モデルに設定されます。

Kp の値は変更せず、Ki の値を 10 に初期化します。

setTunedValue(st,'Ki',10);

scdcascade モデルの slTuner インターフェイスを作成します。

open_system('scdcascade')
st = slTuner('scdcascade',{'C1','C2'});

調整可能なブロックの 1 つについて、カスタム パラメーター化を設定します。

C1CustParam = realp('Kp',1) + tf(1,[1 0]) * realp('Ki',1);
setBlockParam(st,'C1',C1CustParam);

これらのコマンドにより、C1 コントローラー ブロックのパラメーター化が、2 つの調整可能なパラメーター Ki および Kp を含む一般化状態空間 (genss) モデルに設定されます。

調整可能な要素の値の構造体を作成し、Kp5 に、Ki10 に設定します。

S = struct('Kp',5,'Ki',10);

st における調整可能な要素の値を設定します。

setTunedValue(st,S);

Simulink® モデル rct_diskdriveslTuner インターフェイスを genss モデルに変換し、モデル ブロックを hinfstruct を使用して調整します。調整の後、調整パラメーターを用いて slTuner インターフェイスを更新し、パラメーター値を Simulink モデルに書き込んで検証します。

hinfstruct の使用には、Robust Control Toolbox™ のライセンスが必要です。

rct_diskdrive に対して slTuner インターフェイスを作成します。C および F をインターフェイスの調整ブロックとして追加します。

open_system('rct_diskdrive');
st = slTuner('rct_diskdrive',{'C','F'});

伝達関数ブロック F の既定のパラメーター化は、2 つの自由パラメーターをもつ伝達関数です。F はローパス フィルターであるため、その係数を制約しなければなりません。そのためには、F のカスタム パラメーター化をフィルター係数 a を使って指定します。

a = realp('a',1);
setBlockParam(st,'F',tf(a,[1 a]));

stgenss モデルに変換します。

m = getIOTransfer(st,{'r','n'},{'y','e'});

通常、hinfstruct での調整には、設計要件に依存する重み付け関数を genss モデルに追加します。続いて、拡張されたモデルを調整します。詳細については、Fixed-Structure H-infinity Synthesis with hinfstruct (Robust Control Toolbox)を参照してください。

この例では、モデルを調整する代わりに、変数の調整値を手動で調整します。

m.Blocks.C.Kp.Value = 0.00085;
m.Blocks.C.Ki.Value = 0.01;
m.Blocks.a.Value = 5500;

調整の後、st におけるブロック パラメーター化の値を更新します。

setTunedValue(st,m);

これは、setBlockValue(st,m.Blocks) と等価です。

調整結果を Simulink で検証するには、まず調整した値で Simulink モデルを更新します。

writeBlockValue(st);

入力引数

すべて折りたたむ

Simulink でモデル化された制御システムを調整するためのインターフェイス。slTuner インターフェイスとして指定します。

st 内の調整された変数。文字ベクトルまたは string として指定します。調整された変数は、調整された Simulink ブロックのパラメーター化に直接関与する、あるいは一般化されたパラメトリック モデルを通して関与する任意の制御設計ブロック (realptunableSStunableGain など) です。st 内のすべての調整された変数のリストを取得するには、getTunedValue(st) を使用します。

var は以下を参照できます。

  • 制御設計ブロックでパラメーター化されたブロックでは、そのブロックの名前。たとえば、ブロックのパラメーター化が次のようであるとします。

    C = tunableSS('C')

    この場合は、var = 'C' と設定します。

  • genmat または genss モデル M でパラメーター化されたブロックでは、M.Blocks にリストされている任意の制御設計ブロックの名前。たとえば、ブロックのパラメーター化が次のようであるとします。

    a = realp('a',1);
    C = tf(a,[1 a]);

    この場合は、var = 'a' と設定します。

st における調整された変数の値。調整された変数に対応する数値スカラー、数値配列または状態空間モデルとして指定します。たとえば、var が PID ゲインなどのスカラー要素である場合、value はスカラーでなければなりません。var が 2 行 2 列の tunableGain である場合、value は 2 行 2 列のスカラー配列でなければなりません。

st における複数の調整された変数の値。数値スカラー、数値配列または状態空間モデルとして指定されたフィールドをもつ構造体として指定します。フィールド名は、st における調整された変数の名前です。stvarValues に共通のブロックのみが更新され、st における他のすべてのブロックは変更されないままとなります。

varValues を指定するには、st から調整された変数の構造体を取得して変更します。

varValues = getTunedValue(st);
varValues.Ki = 10;

st と共通のパラメーターをいくつかもつ調整モデル。一般化 LTI モデルとして指定します。stmodel に共通の変数のみが更新され、st における他のすべての変数は変更されないままとなります。

詳細

すべて折りたたむ

バージョン履歴

R2015b で導入