Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

setBlockValue

一般化モデルの制御設計ブロックの値の変更

構文

M = setBlockValue(M0,blockname,val)
M = setBlockValue(M0,blockvalues)
M = setBlockValue(M0,Mref)

説明

M = setBlockValue(M0,blockname,val) は、一般化モデル M0 内の制御設計ブロック blockname の現在の値またはノミナル値を val により指定される値に変更します。

M = setBlockValue(M0,blockvalues) は、同時にいくつかの制御設計ブロックの値を変更します。構造体 blockvalues には、ブロックと置換値を指定します。blockvalues 内でリストされていない M0 のブロックは変更されません。

M = setBlockValue(M0,Mref) は、一般化モデル Mref 内の制御設計ブロックから置換値を取り出します。この構文は、M0 内の制御設計ブロックを修正して、Mref 内のすべての対応ブロックの現在の値を一致させます。

この構文を使用して、1 つのパラメトリック モデルから同じパラメーターに依存するもう 1 つのモデルへブロック値 (調整されたパラメーター値など) を伝播します。

入力引数

M0

現在の値またはノミナル値が val に変更されるブロックを含んでいる一般化モデル。構文 M = setBlockValue(M0,Mref) の場合、M0 は、その値が Mref 内の対応ブロックの値に一致するように変更される、1 つの制御設計ブロックにできます。

blockname

現在の値またはノミナル値が変更されるモデル M0制御設計ブロックの名前。

M0 内の制御設計ブロックのリストを得るには、M0.Blocks と入力します。

val

制御設計ブロック blockname の現在の値またはノミナル値のための置換値値 val は、blockname のサイズ、タイプまたはサンプル時間を変更しなくとも blockname との互換性をもつ、任意の値とすることができます。

たとえば、調整可能な PID ブロックの値 (tunablePID) を pid コントローラー モデル、または PID コントローラーを表す伝達関数 (tf) モデルに設定できます。

blockvalues

修正するための M0 の制御設計ブロックを指定する構造体と、それに対応する置換値。構造体のフィールドは修正するブロックの名前です。各フィールドの値は、対応ブロックのための現在またはノミナルの置換値を指定します。

Mref

制御設計ブロックを M0 と共有する一般化モデル。Mref のこれらのブロックの値を使用して、対応する M0 を更新します。

出力引数

M

指定されたブロックの値を更新して、M0 から取得した一般化モデル

すべて折りたたむ

調整されたパラメーターの値を他の制御設計ブロックに伝播します。

systunelooptune のような調整コマンドまたは Robust Control Toolbox™ コマンド hinfstruct を使用して、制御システムの閉ループ モデルのブロックを調整できます。その場合、調整されたコントローラー パラメーターは一般化モデルに組み込まれます。setBlockValue を使用して、それらのパラメーターをコントローラー モデルに伝播することができます。

制御システムの閉ループ応答の調整可能なモデルを作成し、systune を使用してパラメーターを調整します。

s = tf('s');
num = 33000*(s^2 - 200*s + 90000);
den = (s + 12.5)*(s^2 + 25*s + 63000);
G = num/den;

C0 = tunablePID('C0','pi');
a = realp('a',1);
F0 = tf(a,[1 a]);
T0 = feedback(G*C0,F0);
T0.InputName = 'r';
T0.OutputName = 'y';

T0 は閉ループ制御システムの一般化モデルであり、2 つの調整可能なブロックをもちます。

  • C0 - 調整可能な PID コントローラー

  • a - 調整可能な実数パラメーター

出力 y が入力 r に追従する調整要件を作成し、その要件を満たすようにシステムを調整します。

Req = TuningGoal.Tracking('r','y',0.05);
[T,fSoft,~] = systune(T0,Req);
Final: Soft = 1.43, Hard = -Inf, Iterations = 59

一般化モデル T には C0a の調整された値が含まれています。

T のコントローラーの調整された値をコントローラー モデル C0 に伝播します。

C = setBlockValue(C0,T)
Tunable continuous-time PID controller "C0" with formula:

             1 
  Kp + Ki * ---
             s 

and tunable parameters Kp, Ki.

Type "pid(C)" to see the current value.

C は引き続き tunablePID コントローラーです。C の現在の PID ゲインは T のコントローラーの値に設定されます。

getValue を使用して、調整されたコントローラーの数値 LTI モデルを取得します。

 CVal = getValue(C,T);

このコマンドは、調整されたコントローラーの数値状態空間モデルを返します。

バージョン履歴

R2011b で導入

参考

| | | | | | (Robust Control Toolbox)