Main Content

setBlockValue

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

説明

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

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

M = setBlockValue(M0,Mref) は、一般化モデル Mref の制御設計ブロックの値を M0 のブロックに代入します。

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

すべて折りたたむ

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

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 = 60

一般化モデル 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)
CVal =
 
  A = 
             C0.Integ
   C0.Integ         0
 
  B = 
             u1
   C0.Integ   1
 
  C = 
       C0.Integ
   y1  0.005249
 
  D = 
              u1
   y1  0.0004327
 
Name: C0
Continuous-time state-space model.

入力引数

すべて折りたたむ

一般化 LTI モデルまたは一般化行列。genss オブジェクト、genfrd オブジェクト、または genmat オブジェクトとして指定します。一般化 LTI モデルの詳細については、一般化 LTI モデルと不確かな LTI モデルを参照してください。一般化行列の詳細については、一般化行列を参照してください。

入力モデル M に含まれる制御設計ブロックの名前。文字ベクトルとして指定します。

例: 入力モデル M0 に含まれる制御設計ブロックのリストを取得するには、コマンド プロンプトで「M0.Blocks」と入力します。

制御設計ブロック blockname に対する置換値。スカラーとして指定します。valblockname の現在値またはノミナル値に対する置換値であり、blockname のサイズ、タイプ、サンプル時間を変更しなくても blockname との互換性をもつ任意の値にすることができます。

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

入力モデル M0 の制御設計ブロックに対する置換値。構造体として指定します。構造体のフィールドは修正するブロックの名前と一致していなければなりません。各フィールドの値は、対応ブロックのための現在またはノミナルの置換値を指定します。

一般化参照モデル。genss オブジェクトまたは genmat オブジェクトとして指定します。一般化モデル Mref は、1 つ以上の制御設計ブロックを入力モデル M0 と共有していなければなりません。関数は、Mref のブロックの値を使用して M0 の対応するブロックの値を更新します。

出力引数

すべて折りたたむ

一般化 LTI モデル。入力モデル M0 から取得された、更新後のブロック値を含む genss オブジェクトとして返されます。

バージョン履歴

R2011b で導入

参考

| | | | | | (Robust Control Toolbox)