Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

getComponents

2-DOF PID コントローラーからの SISO 制御コンポーネントの抽出

説明

[C,X] = getComponents(C2,looptype) は 2-DOF PID コントローラー C2 を 2 つの SISO 制御コンポーネントに分解します。制御コンポーネントの 1 つである C は、1-DOF PID コントローラーです。もう一方の X は SISO 動的システムです。CX とが looptype で指定されるループ構造で接続されている場合、結果として得られる閉ループ システムは 2-DOF 制御ループと等価です。

2-DOF PID 制御アーキテクチャについての詳細は、2 自由度 PID コントローラーを参照してください。

すべて折りたたむ

フィードフォワード構成、フィードバック構成およびフィルター構成のそれぞれを使用して、2-DOF PID コントローラーを SISO 制御コンポーネントに分解します。

まず、2-DOF PID コントローラーを取得します。この例では、プラント モデルを作成し、それに合わせて 2-DOF PID コントローラーを調整します。

G = tf(1,[1 0.5 0.1]);
C2 = pidtune(G,'pidf2',1.5)
C2 =
 
                       1                s    
  u = Kp (b*r-y) + Ki --- (r-y) + Kd -------- (c*r-y)
                       s              Tf*s+1 

  with Kp = 1.12, Ki = 0.23, Kd = 1.3, Tf = 0.122, b = 0.664, c = 0.0136
 
Continuous-time 2-DOF PIDF controller in parallel form.

C2 は 2 つの入力と 1 つの出力をもつ pid2 コントローラー オブジェクトです。フィードフォワード構成を使用して、C2 を SISO 制御コンポーネントに分解します。

[Cff,Xff] = getComponents(C2,'feedforward')
Cff =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 1.12, Ki = 0.23, Kd = 1.3, Tf = 0.122
 
Continuous-time PIDF controller in parallel form.


Xff =
 
  -10.898 (s+0.2838)
  ------------------
      (s+8.181)
 
Continuous-time zero/pole/gain model.

表示からわかるように、このコマンドは SISO PID コントローラー Cffpid オブジェクトとして返します。フィードフォワード補償器 Xzpk オブジェクトとして返されます。

フィードバック構成を使用して C2 を分解します。この場合もまた、Cfbpid コントローラー オブジェクト、フィードバック補償器 Xzpk モデルです。

[Cfb,Xfb] = getComponents(C2,'feedback');

フィルター構成を使用して C2 を分解します。ここでも、コンポーネントは SISO pid コントローラーと、プレフィルターを表す zpk モデルです。

[Cfr,Xfr] = getComponents(C2,'filter');

入力引数

すべて折りたたむ

分解対象の 2-DOF PID コントローラー。コントローラー オブジェクト pid2 または pidstd2 として指定します。

2-DOF コントローラーを分解するためのループ構造。'feedforward''feedback' または 'filter' として指定します。これらは、以下に述べる制御構造とアーキテクチャに対応しています。

  • 'feedforward'C はエラー信号を入力とする通常の SISO PID コントローラーです。X は次に示すフィードフォワード コントローラーです。

    C2 が連続時間の並列形式コントローラーである場合、コンポーネントは次の式で与えられます。

    C(s)=Kp+Kis+KdsTfs+1,X(s)=(b1)Kp+(c1)KdsTfs+1.

    次のコマンドは、フィードフォワード構成に合わせて r から y までの閉ループ システムを構成します。

    T = G*(C+X)*feedback(1,G*C);
  • 'feedback'C はエラー信号を入力とする通常の SISO PID コントローラーです。X は、次に示すような y から u へのフィードバック コントローラーです。

    C2 が連続時間の並列形式コントローラーである場合、コンポーネントは次の式で与えられます。

    C(s)=bKp+Kis+cKdsTfs+1,X(s)=(1b)Kp+(1c)KdsTfs+1.

    次のコマンドは、フィードバック構成に合わせて r から y までの閉ループ システムを構成します。

    T = G*C*feedback(1,G*(C+X));
  • 'filter'X は基準信号のプレフィルターです。C は、次に示すような、フィルター処理された基準と出力との差を入力とする通常の SISO PID コントローラーです。

    C2 が連続時間の並列形式コントローラーである場合、コンポーネントは次の式で与えられます。

    C(s)=Kp+Kis+KdsTfs+1,X(s)=(bKpTf+cKd)s2+(bKp+KiTf)s+Ki(KpTf+Kd)s2+(Kp+KiTf)s+Ki.

    次のコマンドは、フィルター構成に合わせて r から y までの閉ループ システムを構成します。

    T = X*feedback(G*C,1);

上述の式は連続時間の並列形式コントローラーについてのものです。標準形式のコントローラーや離散時間のコントローラーは、類似の構成に分解できます。getComponents コマンドは、すべての 2-DOF PID コントローラー オブジェクトで機能します。

出力引数

すべて折りたたむ

SISO PID コントローラー。コントローラー オブジェクト pid または pidstd として返されます。C の形式は、入力コントローラー C2 の形式に対応します。たとえば、C2 が標準形式の pidstd2 コントローラーである場合、Cpidstd オブジェクトとなります。

C の正確な関数形式は、入力引数で説明されているように、引数 looptype で指定されるループ構造に依存します。

SISO 制御コンポーネント。零点-極-ゲイン (zpk) モデルとして指定します。X の正確な関数形式は、入力引数で説明されているように、引数 looptype で指定されるループ構造に依存します。

R2015b で導入