2 自由度 PID コントローラー
2 自由度 (2-DOF) PID コントローラーには、比例項および微分項に設定点の重みが含まれています。2-DOF PID コントローラーでは、外乱の抑制を、設定点の追従におけるオーバーシュートを大きく増加させることなく迅速に実行できます。2-DOF PID コントローラーはまた、制御信号に対する基準信号の変化の影響を緩和するためにも有用です。
PID コントローラーは、専用のモデル オブジェクト pid2
および pidstd2
を使用して表現できます。このトピックでは、2-DOF PID コントローラーの MATLAB® での表現について説明します。PID コントローラーの自動調整についての詳細は、PID コントローラーの調整を参照してください。
連続時間 2-DOF PID コントローラーの表現
次の図では、2-DOF PID コントローラーを使用した典型的な制御アーキテクチャが示されています。
2-DOF コントローラーの出力 (u) とその 2 つの入力 (r および y) との関係は、並列形式と標準形式のいずれかで表現できます。2 つの形式の違いは、次の表に示すように、コントローラーの比例動作、積分動作および微分動作の表現に使用されるパラメーターにあります。
形式 | 式 |
---|---|
並列 (pid2 オブジェクト) |
この表現では以下のとおりです。
|
標準 (pidstd2 オブジェクト) |
この表現では以下のとおりです。
|
アプリケーションで使いやすいコントローラー形式を使用してください。たとえば、積分動作と微分動作を時定数で表現するのであれば、標準形式を使用します。並列形式コントローラーおよび標準形式コントローラーの作成方法を示す例は、それぞれ pid2
および pidstd2
のリファレンス ページを参照してください。
離散時間での PID コントローラーの表現についての詳細は、離散時間比例-積分-微分 (PID) コントローラーを参照してください。
2-DOF 制御アーキテクチャ
2-DOF PID コントローラーは、次の図で示すような、C2(s) の形式をもつ 2 入力 1 出力のコントローラーです。それぞれの入力からその出力までの伝達関数自体が PID コントローラーです。
コンポーネント Cr(s) および Cy(s) のそれぞれが、比例項および微分項に異なった重みをもつ PID コントローラーです。たとえば、連続時間において、これらのコンポーネントは次の式で与えられます。
これらのコンポーネントには、PID コントローラーを 2 入力 1 出力の伝達関数に変換することによりアクセスできます。たとえば、C2
が 2-DOF PID コントローラーであり pid2
オブジェクトとして格納されているとします。
C2tf = tf(C2); Cr = C2tf(1); Cy = C2tf(2);
Cr(s) は、C2
の 1 番目の入力から出力への伝達関数です。同様に、Cy(s) は C2
の 2 番目の入力から出力への伝達関数です。
G
が zpk
モデルなどの動的システム モデルであり、プラントを表現している、とします。r から y への閉ループ伝達関数を作成します。Cy(s) の定義により、Cy(s) ループには正のフィードバックがあることに注意してください。
T = Cr*feedback(G,Cy,+1)
あるいは、connect
コマンドを使用して、2-DOF コントローラー C2
を直接使った等価の閉ループ システムを作成します。これを行うには、G
および C2
の InputName
プロパティと OutputName
プロパティを設定します。
G.InputName = 'u'; G.OutputName = 'y'; C2.Inputname = {'r','y'}; C2.OutputName = 'u'; T = connect(G,C2,'r','y');
この他にも、2-DOF PID コントローラーを SISO コンポーネントに分解できる構成があります。特定の C(s) および X(s) を選択すると、以下に挙げる構成のそれぞれが C2(s) をもつ 2-DOF アーキテクチャと等価になります。これら各構成の C(s) と X(s) は、getComponents
コマンドを使用して取得できます。
フィードフォワード
フィードフォワード構成において、2-DOF PID コントローラーは、エラー信号を入力として取る通常の SISO PID コントローラーとフィードフォワード コントローラーとに分解されます。
連続時間の並列形式 2-DOF PID コントローラーの場合、コンポーネントは次の式で与えられます。
これらのコンポーネントには、getComponents
を使用してアクセスします。
[C,X] = getComponents(C2,'feedforward');
次のコマンドは、フィードフォワード構成に合わせて r から y までの閉ループ システムを構成します。
T = G*(C+X)*feedback(1,G*C);
フィードバック
フィードバック構成において、2-DOF PID コントローラーは通常の SISO PID コントローラーとフィードバック コントローラーとに分解されます。
連続時間の並列形式 2-DOF PID コントローラーの場合、コンポーネントは次の式で与えられます。
これらのコンポーネントには、getComponents
を使用してアクセスします。
[C,X] = getComponents(C2,'feedback');
次のコマンドは、フィードバック構成に合わせて r から y までの閉ループ システムを構成します。
T = G*C*feedback(1,G*(C+X));
フィルター
フィルター構成において、2-DOF PID コントローラーは通常の SISO PID コントローラーと基準信号のプレフィルターとに分解されます。
連続時間の並列形式 2-DOF PID コントローラーの場合、コンポーネントは次の式で与えられます。
フィルター X(s) は比率 –[Cr(s)/Cy(s)] としても表現できます。
次のコマンドは、フィルター構成に合わせて r から y までの閉ループ システムを構成します。
T = X*feedback(G*C,1);
こうした構成への 2-DOF PID コントローラーの分解を説明する例は、2-DOF PID コントローラーの SISO コンポーネントへの分解を参照してください。
上述の式は連続時間の並列形式コントローラーについてのものです。標準形式のコントローラーや離散時間のコントローラーは、類似の構成に分解できます。getComponents
コマンドは、すべての 2-DOF PID コントローラー オブジェクトで機能します。
参考
getComponents
| pid2
| pidstd2
| pidtune
| pidTuner