ドキュメンテーション

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

PID Controller を使用したアンチワインドアップ制御

モデルの説明

この例では、アクチュエータが飽和した際にアンチワインドアップ方式を使用して PID コントローラーの積分動作によるワインドアップを防ぐ方法を示します。ここでは、Simulink® の PID Controller ブロックを使用しますが、このブロックには 2 つの組み込みアンチワインドアップ手法 (back-calculation および clamping) と、より複雑なシナリオを処理するためのトラッキング モードが備わっています。

制御対象のプラントは、むだ時間を含む飽和した 1 次プロセスです。

まず、モデルを開くことから始めます。

図 1: 入力飽和によるプラントの PID 制御の Simulink モデル

このモデルを開くには、MATLAB® 端末に「sldemo_antiwindup」と入力します。

PID Controller は、Simulink® Control Design™ の PID 調整器を使用して、飽和を無視して調整されています。

制御対象のプラントは、以下によって記述されるむだ時間を含む 1 次プロセスです。

$$P(s)=\frac{1}{10s+1}e^{-2s}$$

プラントの入力飽和限度が [-10, 10] であることがわかっています。これは、Plant Actuator というラベルの付いた Saturation ブロックで計算されています。Simulink の PID Controller ブロックには、2 つの組み込みアンチワインドアップ手法が備わっています。これにより、PID Controller ブロックで、プラント入力飽和に関する入手可能な情報を得られるようになります。

アンチワインドアップを使用しない場合の性能

まず、PID Controller ブロックで飽和モデルが考慮されない場合の閉ループに対する飽和の効果を調べます。図 1 のモデルのシミュレーションによって、以下のような結果が生成されます。

図 2: アンチワインドアップを使用しない場合の設定点と測定出力の比較

図 3: アンチワインドアップを使用しない場合のコントローラー出力と飽和入力

図 2 と図 3 では、入力飽和を使用してシステムを制御する場合に生じる 2 つの問題を強調しています。

  1. 設定点の値が 10 の場合、PID 制御信号は、アクチュエータの範囲外の約 24 で定常状態に達します。このため、制御信号の増加がシステム出力に影響しない ("ワインドアップ" として知られている状況) ような非線形領域でコントローラーが動作します。プラントの DC ゲインは 1 であるため、アクチュエータの範囲外の定常状態値をコントローラー出力がもつ理由はありません。

  2. 設定点の値が 5 になると、PID コントローラー出力がアクチュエータの範囲内に戻るまでにかなりの遅れが生じます。

飽和の影響を知ることができるように PID コントローラーを設計すると、PID コントローラーはほとんどの時間を線形領域で動作するため非線形性からすぐに回復できるようになり、性能が向上します。アンチワインドアップ回路は、これを実装するための方法の 1 つです。

逆算に基づくアンチワインドアップ向けのブロックの設定

逆算アンチワインドアップ手法では、コントローラーが指定飽和限度に達して非線形動作に入った場合に、フィードバック ループを使用してPID コントローラーの内部積分器を起動します。アンチワインドアップを有効にするには、ブロックのダイアログで [高度な PID] タブに移動して、[出力を制限する] を選択し、プラントの飽和限度を入力します。次に、[アンチワインドアップ手法] メニューから [逆算] を選択し、逆算ゲイン Kb を指定します。このゲインの逆数は、アンチワインドアップ ループの時定数です。この例では、逆算ゲインとして 1 が選択されます。この値の選択方法に関する詳細は、参照 [1] を参照してください。

図 4: 逆算アンチワインドアップ手法の有効化

逆算が有効になると、積分器の出力を起動する内部トラッキング ループをブロックがもちます。

図 5: 逆算を使用した PID Controller ブロックのマスク内表示

図 6 と図 7 は、アンチワインドアップをアクティブにしてモデルのシミュレーションを実行した結果を示しています。PID 制御信号がどれだけ素早く線形領域に戻り、ループがどれくらい速く飽和から回復するかに注意してください。

図 6: 逆算を使用した場合の設定点と測定出力の比較

図 7: 逆算を使用した場合のコントローラー出力と飽和入力

図 7 は、[出力を制限する] が有効になっているため、コントローラー出力 u(t) と飽和入力 SAT(u) が互いに一致することを示しています。

図 8 は、アンチワインドアップの効果をよく理解できるように、アンチワインドアップを使用した場合と使用しなかった場合のプラント測定出力 y(t) を示しています。

図 8: アンチワインドアップを使用した場合と使用しなかった場合の測定出力

積分器固定に基づくアンチワインドアップ向けのブロックの設定

別の一般的なアンチワインドアップ手法として、条件付き積分に基づく方法もあります。アンチワインドアップを有効にするには、ブロックのダイアログで [高度な PID] タブに移動して、[出力を制限する] を選択し、プラントの飽和限度を入力します。次に、[アンチワインドアップ手法] メニューから [固定] を選択します。

図 9: 固定を使用した場合の設定点と測定出力の比較

図 10: 固定を使用した場合のコントローラー出力と飽和入力

図 10 は、出力制限が有効になっているため、コントローラー出力 u(t) と飽和入力 SAT(u) が互いに一致することを示しています。

"固定" を使用する場合の詳細は、参照 [1] を参照してください。

複雑なアンチワインドアップ シナリオを処理するためのトラッキング モード

前述のアンチワインドアップ手法では、ブロックのダイアログを介してブロックに提供される飽和情報を処理するために組み込みの方法に頼ります。これらの組み込みの方法が正しく機能するには、以下の 2 つの条件を満たさなければなりません。

  1. プラントの飽和限度が知られており、それをブロックのダイアログに入力できる。

  2. PID Controller の出力信号が、アクチュエータに送られる唯一の信号である。

これらの条件は、一般的なアンチワインドアップ シナリオを処理する場合には制限されることがあります。PID Controller ブロックにはトラッキング モードが備わっており、ユーザーが逆算アンチワインドアップ ループを外部で設定できるようになっています。以下の 2 つの例では、アンチワインドアップを目的としてトラッキング モードを使用する方法を説明します。

  1. カスケード ダイナミクスを含む飽和アクチュエータ向けのアンチワインドアップ

  2. フィードフォワードを使用した PID 制御向けのアンチワインドアップ

カスケード ダイナミクスを含む飽和アクチュエータ向けのアンチワインドアップ回路の作成

次のモデルでは、アクチュエータのダイナミクスが複雑になっています。これは、アクチュエータが独自の閉ループ ダイナミクスをもつ場合によくあることです。PID コントローラーは外側のループにあり、アクチュエータのダイナミクスを、内側のループとして、または図 11 に示したように単なるカスケード飽和ダイナミクスとして認識します。

図 11: カスケード アクチュエータ ダイナミクスを含む PID コントローラーの Simulink モデル

このモデルを開くには、MATLAB 端末に「sldemo_antiwindupactuator」と入力します。

この場合、アンチワインドアップ手法が正しく機能するには、図 11 に示したように、アクチュエータ出力を PID Controller ブロックのトラッキング端子にフィードバックしなければなりません。PID Controller ブロックのトラッキング モードを設定するには、ブロックのダイアログで [高度な PID] タブに移動して、[トラッキング モードを有効にする] を選択し、ゲイン Kt を指定します。このゲインの逆数は、トラッキング ループの時定数です。このゲインを選択する方法の詳細は、参照 [1] を参照してください。

図 12: PID Controller ブロックのトラッキング モードの有効化

図 13 と図 14 は、プラントの測定出力 y(t) とコントローラー出力 u(t) が設定点の変化に対してほとんど即座に応答することを示しています。アンチワインドアップ回路がないと、これらの応答は大幅に遅れます。

図 13: 設定点と測定出力の比較

図 14: コントローラー出力と有効な飽和入力

フィードフォワードを使用した PID 制御向けのアンチワインドアップ回路の作成

別の一般的な制御設定では、PID 制御信号とフィードフォワード制御信号の組み合わせである制御信号をアクチュエータが受信します。

逆算アンチワインドアップ ループを正確に作成するには、トラッキング信号によってフィードフォワード信号の影響を低減しなければなりません。これにより、PID Controller ブロックが、アクチュエータに適用された有効な制御信号の持分を認識できるようになります。

次のモデルには、フィードフォワード制御が含まれています。

図 15: フィードフォワードとプラント入力飽和を使用した PID コントローラーの Simulink モデル

プラントの DC ゲインが 1 であるため、ここではフィードフォワードのゲインとして 1 が選択されています。

このモデルを開くには、MATLAB 端末に「sldemo_antiwindupfeedforward」と入力します。

図 16 と図 17 は、プラントの測定出力 y(t) とコントローラー出力 u(t) が設定点の変化に対してほとんど即座に応答することを示しています。図 17 では、設定点の値が 10 の場合、コントローラー出力 u(t) がアクチュエータの範囲内に収まるまで下がることに注意してください。

図 16: アンチワインドアップを使用しない場合の設定点と測定出力の比較

図 17: アンチワインドアップを使用した場合のコントローラー出力と飽和入力

まとめ

PID Controller ブロックがサポートしているいくつかの機能により、産業上の一般的なシナリオにおけるコントローラーのワインドアップという問題に対処できます。

参照

  1. K. Åström, T. Hägglund, Advanced PID Control, ISA, Research Triangle Park, NC, August 2005.

この情報は役に立ちましたか?