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);C2 は pid2 コントローラー オブジェクトです。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.
Model Properties
Xff =
-10.898 (s+0.2838)
------------------
(s+8.181)
Continuous-time zero/pole/gain model.
Model Properties
このコマンドでは、SISO PID コントローラー Cff が pid オブジェクトとして返されます。フィードフォワード補償器 X は zpk オブジェクトとして返されます。
フィードフォワード構成用の閉ループ システムを構築します。
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 コントローラーの調整 (コマンド ライン)を参照してください。
参考
pid2 | pidstd2 | getComponents