コマンド ラインでの PID コントローラーの設計
この例では、以下で与えられるプラントの PID コントローラーを設計する方法を説明します。
第 1 段階として、プラントのモデルを作成して、このモデルの単純な PI コントローラーを設計します。
sys = zpk([],[-1 -1 -1],1);
[C_pi,info] = pidtune(sys,'PI')
C_pi = 1 Kp + Ki * --- s with Kp = 1.14, Ki = 0.454 Continuous-time PI controller in parallel form.
info = struct with fields:
Stable: 1
CrossoverFrequency: 0.5205
PhaseMargin: 60.0000
C_pi
は、PI コントローラーを表す pid
コントローラー オブジェクトです。info
のフィールドは、調整アルゴリズムが約 0.52 rad/s の開ループ交差周波数を選択することを示しています。
コントローラー システムの閉ループのステップ応答 (設定値追従) を調べます。
T_pi = feedback(C_pi*sys, 1); step(T_pi)
応答時間を改善するために、pidtune
が自動的に選択する 0.52 という結果よりも高いターゲット交差周波数を設定できます。交差周波数を 1.0 に上げます。
[C_pi_fast,info] = pidtune(sys,'PI',1.0)
C_pi_fast = 1 Kp + Ki * --- s with Kp = 2.83, Ki = 0.0495 Continuous-time PI controller in parallel form.
info = struct with fields:
Stable: 1
CrossoverFrequency: 1
PhaseMargin: 43.9973
新しいコントローラーはより高い交差周波数を実現しますが、それにより位相余裕は小さくなります。
閉ループ ステップ応答を 2 つのコントローラーと比較します。
T_pi_fast = feedback(C_pi_fast*sys,1); step(T_pi,T_pi_fast) axis([0 30 0 1.4]) legend('PI','PI,fast')
この性能低下は、PI コントローラーに 1.0 rad/s の交差周波数で十分な位相余裕を得るだけの自由度がないことにより起こります。微分動作を追加することで、応答を向上させることができます。
ターゲット交差周波数 1.0 rad/s をもつ Gc
のための PIDF コントローラーを設計します。
[C_pidf_fast,info] = pidtune(sys,'PIDF',1.0)
C_pidf_fast = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = 2.72, Ki = 0.985, Kd = 1.72, Tf = 0.00875 Continuous-time PIDF controller in parallel form.
info = struct with fields:
Stable: 1
CrossoverFrequency: 1
PhaseMargin: 60.0000
info のフィールドは、調整アルゴリズムが、コントローラーの微分動作により、十分な位相余裕のあるターゲット交差周波数を達成する、アグレッシブなコントローラーを設計できることを示しています。
閉ループ ステップ応答と外乱の抑制を、PI と PIDF の高速 コントローラーで比較します。
T_pidf_fast = feedback(C_pidf_fast*sys,1); step(T_pi_fast, T_pidf_fast); axis([0 30 0 1.4]); legend('PI,fast','PIDF,fast');
コントローラー システムの入力 (読み込み) 外乱の抑制を、PI と PIDF の高速 コントローラーで比較できます。これを行うには、プラント入力からプラント出力への閉ループ伝達関数の応答をプロットします。
S_pi_fast = feedback(sys,C_pi_fast); S_pidf_fast = feedback(sys,C_pidf_fast); step(S_pi_fast,S_pidf_fast); axis([0 50 0 0.4]); legend('PI,fast','PIDF,fast');
このプロットは、PIDF コントローラーが、より速い外乱の抑制を行うことも示しています。