Main Content

piddata2

並列形式 2-DOF PID コントローラーのアクセス係数

説明

[Kp,Ki,Kd,Tf,b,c] = piddata2(sys) は、動的システム sys で表される並列形式 2-DOF PID コントローラーの PID ゲイン KpKiKd、フィルター時定数 Tf、および設定点の重み bc を返します。

syspid2 コントローラー オブジェクトである場合、各出力引数は sys の対応する係数となります。

syspid2 オブジェクトではない場合、各出力引数は sys と等価の並列形式 2-DOF PID コントローラーの対応する係数となります。

sys が動的システムの配列の場合、各出力引数は sys と同じ次元の配列となります。

[Kp,Ki,Kd,Tf,b,c,Ts] = piddata2(sys) はサンプル時間 Ts も返します。pid2 オブジェクトではない離散時間 sys では、piddata2 が、既定の離散積分器の式 ForwardEulerIFormulaDFormula の両方に使用して係数値を計算します。離散積分器の式の詳細は、pid2 のリファレンス ページを参照してください。

[Kp,Ki,Kd,Tf,b,c,Ts] = piddata2(sys,J1,...,JN) は、sys におけるエントリのサブセットのデータを抽出します。ここで、sys は動的システムの N 次元配列です。インデックス J は、抽出する配列エントリを指定します。

すべて折りたたむ

通常は、pidtunegetBlockValue などの別の関数によって取得したコントローラーから係数を抽出します。この例では、乱数の係数をもつ 2-DOF PID コントローラーを作成します。

rng('default');    % for reproducibility
C2 = pid2(rand,rand,rand,rand,rand,rand);

PID 係数、フィルター時定数および設定点の重みを抽出します。

[Kp,Ki,Kd,Tf,b,c] = piddata2(C2);

2-DOF PID コントローラーを標準形式で作成します。

C2 = pidstd2(2,3,4,10,0.5,0.5)
C2 =
 
                       1      1                      s      
  u = Kp * [(b*r-y) + ---- * --- * (r-y) + Td * ------------ * (c*r-y)]
                       Ti     s                  (Td/N)*s+1 

  with Kp = 2, Ti = 3, Td = 4, N = 10, b = 0.5, c = 0.5
 
Continuous-time 2-DOF PIDF controller in standard form

等価な並列形式 PID コントローラーの係数を計算します。

[Kp,Ki,Kd,Tf,b,c] = piddata2(C2);

いくつかの係数を調べ、これらが標準形式の係数と異なることを確認します。

Ki
Ki = 0.6667
Kd
Kd = 8

有効な並列形式 2-DOF PID コントローラーを表す 2 入力 1 出力の動的システムから係数を抽出します。

次の行列 A、B、C、D は、2-DOF PID コントローラーを表す離散時間状態空間モデルを形成します。

A = [1,0;0.09975,0.995];
B = [0.00625,-0.00625;0.1245,-0.1241];
C = [0,4];
D = [2.875,-5.75];
sys = ss(A,B,C,D,0.1)
sys =
 
  A = 
            x1       x2
   x1        1        0
   x2  0.09975    0.995
 
  B = 
             u1        u2
   x1   0.00625  -0.00625
   x2    0.1245   -0.1241
 
  C = 
       x1  x2
   y1   0   4
 
  D = 
          u1     u2
   y1  2.875  -5.75
 
Sample time: 0.1 seconds
Discrete-time state-space model.

モデルの PID ゲイン、フィルター時定数および設定時の重みを抽出します。

[Kp,Ki,Kd,Tf,b,c,Ts] = piddata2(sys);

離散時間システムでは、piddata2 が既定の ForwardEuler 離散積分器の式を IFormulaDFormula の両方に使用して、係数値を計算します。

通常は、プラント モデルの配列の pidtune を使用して、コントローラーの配列を取得します。この例では、2-DOF PI コントローラーの 2 行 3 列の配列を乱数値の KpKi および b で作成します。

rng('default');
C2 = pid2(rand(2,3),rand(2,3),0,0,rand(2,3),0);

配列からすべての係数を抽出します。

[Kp,Ki,Kd,Tf,b,c] = piddata2(C2);

各出力は、それ自体が 2 行 3 列の配列です。たとえば、Ki を調べます。

Ki
Ki = 2×3

    0.2785    0.9575    0.1576
    0.5469    0.9649    0.9706

配列のエントリ (2,1) の係数のみを抽出します。

[Kp21,Ki21,Kd21,Tf21,b21,c21] = piddata2(C2,2,1);

これらの各出力はスカラーです。

Ki21
Ki21 = 0.5469

入力引数

すべて折りたたむ

並列形式の 2-DOF PID コントローラー。pid2 コントローラー オブジェクト、動的システムのモデルまたは動的システムの配列として指定します。syspid2 コントローラー オブジェクトではない場合、これは、並列形式で記述できる有効な 2-DOF PID コントローラーを表す、2 入力 1 出力のモデルでなければなりません。

モデル配列 sys から抽出するエントリのインデックス。正の整数として指定します。sys における配列の次元数と同じ数のインデックスを指定します。たとえば、sys が、pid2 コントローラーの 4 行 5 列の (2 次元) 配列か、または 2-DOF PID コントローラーを表す動的システム モデルであるとします。次のコマンドは、配列のエントリ (2,3) のデータを抽出します。

[Kp,Ki,Kd,Tf,b,c,Ts] = piddata2(sys,2,3);

出力引数

すべて折りたたむ

sys で表される並列形式 2-DOF PID コントローラーの比例ゲイン。スカラーまたは配列として返されます。

syspid2 コントローラー オブジェクトである場合、KpsysKp 値となります。

syspid2 オブジェクトではない場合、Kpsys と等価の並列形式 2-DOF PID コントローラーの比例ゲインとなります。

sys が動的システムの配列の場合、Kpsys と同じ次元の配列となります。

sys で表される並列形式 2-DOF PID コントローラーの積分ゲイン。スカラーまたは配列として返されます。

sys で表される並列形式 2-DOF PID コントローラーの微分ゲイン。スカラーまたは配列として返されます。

sys で表される並列形式 2-DOF PID コントローラーのフィルター時定数。スカラーまたは配列として返されます。

sys で表される並列形式 2-DOF PID コントローラーの比例項での設定点の重み。スカラーまたは配列として返されます。

sys で表される並列形式 2-DOF PID コントローラーの微分項での設定点重み。スカラーまたは配列として返されます。

pid2 コントローラー、動的システム sys または動的システムの配列のサンプル時間。スカラーとして返されます。

バージョン履歴

R2015b で導入