Main Content

2-DOF PID コントローラーの SISO コンポーネントへの分解

この例では、フィードフォワード構成、フィードバック構成、フィルター構成のそれぞれについて、2-DOF PID コントローラーから SISO 制御コンポーネントを抽出する方法を示します。例では、すべての構成について閉ループ システムを比較することで、これらがすべて等価であることを確認します。

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

G = tf(1,[1 0.5 0.1]);
C2 = pidtune(G,'pidf2',1.5);

C2pid2 コントローラー オブジェクトです。C2 の制御アーキテクチャは、次の図に示すとおりです。

この制御システムは、SISO コンポーネントのみを使用する他のいくつかのアーキテクチャでも同等に表現できます。フィードフォワード構成では、2-DOF コントローラーが SISO PID コントローラーおよびフィードフォワード補償器として表現されます。

フィードフォワード構成を使用して、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 オブジェクトとして返されます。

フィードフォワード構成用の閉ループ システムを構築します。

Tff = G*(Cff+Xff)*feedback(1,G*Cff);

フィードバック構成では、2-DOF コントローラーが SISO PID コントローラーおよび追加のフィードバック補償器として表現されます。

フィードバック構成を使用して C2 を分解し、その閉ループ システムを構築します。

[Cfb, Xfb] = getComponents(C2,'feedback');
Tfb = G*Cfb*feedback(1,G*(Cfb+Xfb));

フィルター構成では、2-DOF コントローラーが SISO PID コントローラーおよび基準信号のプレフィルターとして表現されます。

フィルター構成を使用して C2 を分解します。その閉ループ システムも構築します。

[Cfr, Xfr] = getComponents(C2,'filter');
Tfr = Xfr*feedback(G*Cfr,1);

元の 2-DOF コントローラー C2 の閉ループ システムを構築します。これを行うには、C2 を 2 入力 1 出力の伝達関数に変換し、配列のインデックスを使用してチャネルにアクセスします。

Ctf = tf(C2);
Cr = Ctf(1);
Cy = Ctf(2);
T = Cr*feedback(G,Cy,+1);

すべての閉ループ システムのステップ応答を比較します。

stepplot(T,Tff,Tfb,Tfr)
legend('2-DOF','feedforward','feedback','filter','Location','Southeast')

プロットは一致し、すべてのシステムが等価であることが示されます。

2-DOF PID コントローラーを使用すると、1-DOF コントローラーに比べて性能が向上することがあります。詳細については、2-DOF PID コントローラーの調整 (コマンド ライン)を参照してください。

参考

| |

関連するトピック