Main Content

replaceBlock

一般化モデルの制御設計ブロックの置換または更新

説明

Mnew = replaceBlock(M,Block1,Value1,...,BlockN,ValueN) は、指定された値 Value1,...,ValueNM の制御設計ブロック Block1,...,BlockN を置き換えます。M は一般化 LTI モデルまたは一般化行列です。

Mnew = replaceBlock(M,blockvalues) は、構造体 blockvalues のフィールド名と値としてブロック名と置換値を指定します。

Mnew = replaceBlock(___,mode) は、mode で指定された代入モードを使ってモデルの配列 M に対してブロックの置き換えを実行します。

すべて折りたたむ

この例は、ゲインのみ、数値 PI コントローラー、または調整可能なコントローラーの現在の値によって一般化 LTI モデルで調整可能な PID コントローラー (tunablePID) を置き換える方法を示します。

一般化 LTI モデルを作成

次のシステムの一般化 LTI モデルを作成します。

ここで、プラントは G(s)=(s-1)(s+1)3C は調整可能な PID コントローラーです。

G = zpk(1,[-1,-1,-1],1);
C = tunablePID(C='pid');
Try = feedback(G*C,1)
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 4 states, and the following blocks:
  C: Tunable PID controller, 1 occurrences.

Type "ss(Try)" to see the current value and "Try.Blocks" to interact with the blocks.

PID コントローラーをゲイン値のみで置き換え

C をゲインのみの 5 で置き換えます。

T1 = replaceBlock(Try,C=5);

T1feedback(G*5,1) と等価のssモデルです。

PID コントローラーを数値 PI コントローラーで置き換え

5 の比例ゲインおよび 0.1 の積分ゲインのある PI コントローラーによって C を置き換えます。

C2 = pid(5,0.1);
T2 = replaceBlock(Try,C=C2);

T2feedback(G*C2,1) と等価の ss モデルです。

PID コントローラーを現在値で置き換え

現在の (ノミナル) 値によって C を置き換えます。

T3 = replaceBlock(Try,C=[]);

T3 は、CgetValue(C) によって置き換えられている ss モデルです。

以下で表される 2 次フィルターについて考えます。

F(s)=ωn2s2+2ζωns+ωn2.

減衰定数 ζ および固有振動数 ωn の値を変化させてこのフィルターをサンプリングします。ζωn の調整可能な要素を使用してフィルターの調整可能なモデルを作成します。

wn = realp('wn',3);
zeta = realp('zeta',0.8);
F = tf(wn^2,[1 2*zeta*wn wn^2])
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks:
  wn: Scalar parameter, 5 occurrences.
  zeta: Scalar parameter, 1 occurrences.

Type "ss(F)" to see the current value and "F.Blocks" to interact with the blocks.

サンプル値のグリッドを作成します。

wnvals = [3;5];
zetavals = [0.6 0.8 1.0];
[wngrid,zetagrid] = ndgrid(wnvals,zetavals);
Fsample = replaceBlock(F,'wn',wngrid,'zeta',zetagrid);
size(Fsample)
2x3 array of state-space models.
Each model has 1 outputs, 1 inputs, and 2 states.

ndgrid コマンドは、パラメーターの組み合わせから成る 2 行 3 列のフル グリッドを作成します。したがって、Fsample は状態空間モデルの 2 行 3 列の配列です。配列の各要素は、対応する (wn, zeta) ペアで評価された F を表す状態空間モデルです。たとえば、Fsample(:,:,2,3) には wn = 5 と zeta = 1.0 があります。

damp(Fsample(:,:,2,3))
                                                           
   Pole        Damping       Frequency      Time Constant  
                           (rad/seconds)      (seconds)    
                                                           
 -5.00e+00     1.00e+00       5.00e+00         2.00e-01    
 -5.00e+00     1.00e+00       5.00e+00         2.00e-01    

入力引数

すべて折りたたむ

一般化モデル。一般化 LTI モデル一般化行列、あるいはそのようなモデルの配列として指定します。

M の制御設計ブロックの名前。string または文字ベクトルとして指定します。関数 replaceBlock は、M の指定された各ブロックを Value1,...,ValueN の対応する値で置き換えます。

指定された BlockM のブロックではない場合、replaceBlock はそのブロックおよび対応する値を無視します。

Block1,...,BlockN の対応するブロックに対する置換ブロック値。ブロックのサイズと互換性のある制御設計ブロック、数値行列、または LTI モデルとして指定します。

値が [] である場合、対応するブロックはそのノミナル値 (現在の値) で置き換えられます。

ブロック置換。構造体として指定します。

blockvalues のフィールド名は M の制御設計ブロックの名前と一致します。このフィールド値を使って M の対応するブロックの置換値を指定します。置換値は、制御設計ブロック、LTI モデル、数値行列のいずれかです。

たとえば、ブロック M の値をブロック M0 の値と同期します。

M = replaceBlock(M,M0.Blocks);

M がモデル配列の場合のブロック置換モード。次の値のいずれかとして指定します。

  • '-once' (既定値) — モデル配列 M にわたってブロックの置換をベクトル化します。それぞれのブロックは単一の値で置き換えられますが、その値は配列にわたってモデル間で変わる可能性があります。

    ベクトル化されたブロック置換の場合、入力 blockvalues 用の構造体配列または Value1,...,ValueN 入力用の cell 配列を使用します。たとえば、M がモデルの 2 行 3 列の配列である場合、次のようになります。

    • Mnew = replaceBlock(M,blockvalues,'-once')、ここで blockvalues は 2 行 3 列の構造体配列であり、配列内の各モデル M(:,:,k) に対してブロック値 blockvalues(k) の 1 セットを指定します。

    • Mnew = replaceBlock(M,Block,Value,'-once')、ここで Value は 2 行 3 列の cell 配列であり、配列内のモデル M(:,:,k) 内の Value{k}Block を置き換えます。

  • '-batch' — バッチでのブロックの置換。それぞれのブロックは値の配列によって置き換えられ、値の同じ配列が M 内の各モデルに使用されます。その結果として生じるモデルの配列 Mnew のサイズは [size(M) Asize] になり、このとき、Asize は置換値のサイズを指します。

M が単一のモデルの場合、'-once' および '-batch' は同一の結果を返します。

出力引数

すべて折りたたむ

更新後のモデル。一般化 LTI モデル、一般化行列、あるいはそのようなモデルの配列として返されます。

指定されたすべての置換値が数値または数値 LTI モデルの場合、Mnew は数値配列または数値 LTI モデルになります。

ヒント

  • replaceBlock を使用して、一般化 LTI モデルをパラメーターのグリッドにわたってサンプリングすることでパラメーターの調査を実行したり、調整可能なブロックの具体的な値に対して調整可能なモデルを評価したりすることができます。

  • 同時サンプリングなどの制御設計ブロックをサンプリングする追加オプションには、sampleBlock を使用します。

  • 制御設計ブロックのサンプルをランダムに取得するには、rsampleBlock を参照してください。

バージョン履歴

R2011a で導入