比例積分微分(PID)コントローラ、または3項コントローラは、継続的な制御と自動調整を必要とする機械やプロセスを管理するために一般的に使用されるフィードバックベースの制御ループ機構です。これは通常、産業用制御システムや、人間の介入なしに変調による一定の制御が必要なその他のさまざまなアプリケーションで使用されます。PIDコントローラは、目標値(設定値またはSP)とシステムの実際の値(プロセス変数またはPV)を自動的に比較します。これら2つの値の差は誤差値と呼ばれ、次のように表されます。。
次に、3 つの方法を使用して PV を SP と同じ値にするために自動的に補正動作を適用します。比例 ( P ) コンポーネントは、現在のエラー値に応答して、エラーの大きさに直接比例する出力を生成します。これにより、システムが目標設定値からどれだけ離れているかに基づいて即座に補正が行われます。積分 ( I ) コンポーネントは、過去のエラーの累積合計を考慮して、時間の経過とともに残る残留定常状態エラーに対処し、残存する不一致を解消します。最後に、微分 ( D ) コンポーネントは、エラーの変化率を評価することによって将来のエラー傾向を予測し、特にシステムが急激に変化する場合に、オーバーシュートを軽減し、システムの安定性を向上させるのに役立ちます。PID 出力信号は、アプリケーションに応じて、電圧、電流、またはその他の変調方法を介してアクチュエータを直接制御できます。PID コントローラは、ヒューマンエラーの可能性を減らし、自動化を向上させます。
一般的な例として、自動車のクルーズコントロールシステムが挙げられます。例えば、車両が坂道に差し掛かった際、エンジンの出力が一定に保たれていると速度が低下します。PIDコントローラーは、エンジンの出力を調整することで、車両を目標速度に効率的に戻し、遅延やオーバーシュートを最小限に抑えます。
PID制御器の理論的基礎は、1920年代初頭の船舶用自動操舵システムの開発に遡ります。この概念は後に製造業における自動プロセス制御に採用され、最初は空気圧アクチュエータに用いられ、その後電子制御器へと発展しました。PID制御器は、温度制御、モータ速度制御、産業プロセス管理など、正確で安定した最適化された自動制御を必要とする数多くの用途で広く使用されています。

PIDコントローラの最も特徴的な点は、比例、積分、微分という3つの制御項をコントローラ出力に作用させることで、正確かつ最適な制御を実現できることです。右側のブロック図は、これらの項がどのように生成され、適用されるかの原理を示しています。この図は、誤差値を継続的に計算するPIDコントローラを示しています。目標設定値との差としてそして測定されたプロセス変数:比例項、積分項、微分項に基づいて補正を適用します。コントローラは、制御変数を調整することで、時間経過に伴う誤差を最小限に抑えようとします。制御弁の開度などに応じて、制御項の加重和によって決定される新しい値に制御信号が設定されます。PIDコントローラは、離散的な変調を行わずに、誤差に基づいて連続的な制御信号を直接生成します。
このモデルでは:
チューニング– これらの効果のバランスは、ループチューニングによって実現され、最適な制御関数が生成されます。チューニング定数は、以下に「K」として示されており、コントローラ外部の物理システムの応答特性に依存するため、各制御アプリケーションごとに導出する必要があります。これらは、測定センサ、最終制御要素(制御弁など)、制御信号の遅延、およびプロセス自体の動作に依存します。通常、アプリケーションの種類がわかっている場合は、定数の概算値を最初に入力できますが、通常は設定値の変更を導入してシステムの応答を観察することによって、それらを改良またはチューニングします。[ 2 ]
制御動作– 上記の数学モデルと実用ループはどちらも、すべての項に対して直接制御動作を使用しています。これは、正の誤差が増加すると、正の制御出力補正が増加することを意味します。これは、「誤差」項が設定値からの偏差(実際値-目標値)ではなく、実際には必要な補正(目標値-実際値)であるためです。負の補正動作を適用する必要がある場合、システムは逆動作と呼ばれます。たとえば、フロー ループのバルブが 0~100% の制御出力に対して 100~0% のバルブ開度である場合、コントローラの動作を反転させる必要があります。一部のプロセス制御方式と最終制御要素では、この逆動作が必要です。たとえば、冷却水用のバルブでは、信号が失われた場合のフェイルセーフモードはバルブの 100% 開度になります。したがって、0% のコントローラ出力でバルブが 100% 開度になる必要があります。
全体的な制御機能は
どこ、、 そして、すべて非負であり、それぞれ比例項、積分項、微分項の係数を表します(P、I、Dと表記されることもあります)。
方程式の標準形では(記事の後半を参照)、そしてそれぞれに置き換えられるそして;この利点は、そしてこれらはそれぞれ積分時間と微分時間を表しているため、ある程度理解できる物理的な意味を持っています。これは、コントローラが設定値に近づこうとする際の時定数です。 コントローラが、出力が設定値より継続的に高い、または低い状態をどのくらいの期間許容するかを決定します。
どこ
PIDコントローラは3つの制御項を持ちますが、アプリケーションによっては、適切な制御を行うために1つまたは2つの項のみで十分な場合もあります。これは、使用しないパラメータをゼロに設定することで実現され、他の制御動作がない場合、PI、PD、P、またはIコントローラと呼ばれます。PIコントローラは、微分動作が測定ノイズに敏感なアプリケーションでよく使用されますが、システムが目標値に到達するためには積分項が必要となる場合がよくあります。
PIDアルゴリズムを使用しても、システムの最適制御や制御の安定性が保証されるわけではありません。プロセス値の測定が遅れたり、制御動作が十分に速く適用されなかったりするなど、過度の遅延が発生する場合があります。このような場合、リード・ラグ補償を効果的に行う必要があります。コントローラの応答は、エラーに対する応答性、システムが設定値をオーバーシュートする度合い、およびシステムの振動の度合いによって説明できます。しかし、PIDコントローラは、基礎となるプロセスの知識やモデルではなく、測定されたプロセス変数の応答のみに依存するため、幅広い用途に適用できます。


遠心調速機は、 17世紀にクリスティアーン・ホイヘンスによって発明され、風車の回転速度に応じて石臼間の間隔を調整し、穀物供給速度の変動を補償するものでした。[ 3 ] [ 4 ]
低圧定置式蒸気機関の発明に伴い、自動速度制御の必要性が生じ、ジェームズ・ワットが自ら設計した「円錐振り子」調速機(リンクアームで垂直スピンドルに取り付けられた一連の回転する鋼球)が業界標準となった。これは、ミルストーンギャップ制御の概念に基づいていた。[ 5 ]
しかし、回転ガバナーの速度制御は、負荷が変動する条件下では依然として不安定であり、現在比例制御のみとして知られるものの欠点が明らかでした。目標速度と実際の速度の誤差は、負荷が増加するにつれて大きくなります。19 世紀には、ガバナーの動作の理論的基礎が、 1868 年にジェームズ クラーク マクスウェルによって、現在では有名な論文「ガバナーについて」で初めて記述されました。彼は制御安定性の数学的基礎を探求し、解決策に向けてかなり進歩しましたが、数学者にこの問題を調査するよう呼びかけました。[ 6 ] [ 5 ]この問題は、1874 年にエドワード ラウス、チャールズ シュトゥルム、1895 年にアドルフ フルヴィッツ によってさらに調査され、彼らは皆、制御安定性基準の確立に貢献しました。[ 5 ] その後の応用では、速度調整器はさらに改良され、特にアメリカの科学者ウィラード・ギブスは1872年にワットの円錐振り子式速度調整器を理論的に解析した。
この頃、ホワイトヘッド魚雷の発明により、航行深度の正確な制御を必要とする制御上の問題が生じた。深度圧力センサーのみの使用では不十分であることが判明し、魚雷の前後ピッチを測定する振り子が深度測定と組み合わされて、振り子とハイドロスタット制御が生まれた。圧力制御は比例制御しか提供せず、制御ゲインが高すぎると不安定になり、深度保持が著しく不安定なオーバーシュートが発生した。振り子は、魚雷の潜航/上昇角度、ひいては深度の変化率を検出することによって振動を減衰させる、現在微分制御として知られる機能を追加した。[ 7 ]この開発(ホワイトヘッドは、その動作の手がかりを与えないように「秘密」と名付けた)は1868年頃であった。[ 8 ]
PID型コントローラーの初期の例としては、 1911年にエルマー・スペリーが船舶操舵用に開発したものがあるが、彼の研究は数学に基づいたものではなく直感的なものであった。[ 9 ]
しかし、現在PID制御または3項制御と呼ばれるものの正式な制御法則が、ロシア系アメリカ人のエンジニア、ニコラス・ミノルスキーによって理論解析を用いて初めて開発されたのは1922年のことでした。[ 10 ]ミノルスキーはアメリカ海軍の自動操舵装置を研究・設計しており、操舵手の観察に基づいて解析を行いました。操舵手は現在の針路誤差だけでなく、過去の誤差や現在の変化率に基づいて操舵していることにミノルスキーは気づきました。[ 11 ]その後、ミノルスキーはこれを数学的に扱いました。[ 5 ] 彼の目標は一般的な制御ではなく安定性であり、これにより問題が大幅に単純化されました。比例制御は小さな外乱に対しては安定性を提供しましたが、定常的な外乱、特に強風(定常状態誤差による)に対処するには不十分であり、積分項を追加する必要がありました。最後に、安定性と制御を改善するために微分項が追加されました。
USSニューメキシコで試験が行われ、制御装置は舵の角速度(角度ではなく)を制御した。PI制御では、持続的なヨー(角度誤差)は±2°であった。D要素を追加すると、ヨー誤差は±1/6°となり、ほとんどの操舵手が達成できるよりも優れていた。[ 12 ]
海軍は最終的に、職員の抵抗によりこのシステムを採用しなかった。同様の研究は1930年代に他の複数の研究者によって行われ、発表されている。

フィードバックコントローラの広範な使用は、負帰還の概念を使用する広帯域高利得アンプの開発まで実現不可能でした。これは、1920 年代後半にハロルド ブラックによって電話工学の電子工学で開発されましたが、1934 年まで発表されませんでした。 [ 5 ]独立して、フォックスボロ社のクレソン E メイソンは、1914 年に発明されたノズルとフラッパーの高利得空気圧アンプとコントローラ出力からの負帰還を組み合わせることにより、1930 年に広帯域空気圧コントローラを発明しました。これにより、ノズルとフラッパーアンプの線形動作範囲が劇的に増加し、精密ブリードバルブと積分項を生成するベローズを使用することで積分制御も追加できました。その結果、フィードバックベローズを使用して比例機能と積分機能の両方を提供する「スタビログ」コントローラが誕生しました。[ 5 ]積分項はリセットと呼ばれました。[ 13 ] 後に、さらにベローズと調整可能なオリフィスによって微分項が追加された。
1932年頃から、広帯域空気圧コントローラは様々な制御用途で急速に普及しました。空気圧はコントローラの出力生成だけでなく、ダイヤフラム式制御弁などのプロセス変調装置の動力源としても利用されました。これらはシンプルでメンテナンスの手間が少なく、過酷な産業環境でも良好に動作し、危険場所でも爆発の危険性がありませんでした。ディスクリート電子コントローラや分散制御システム(DCS)が登場するまで、数十年にわたり業界標準として広く用いられました。
これらの制御装置により、 3~15psi (0.2~1.0bar)の空気圧産業信号規格が確立されました。この規格では、機器が線形特性の範囲内で動作することを保証するためにゼロ点が高く設定されており、制御範囲は0~100%となっています。

1950年代、高利得電子増幅器が安価で信頼性の高いものになると、電子式PIDコントローラが普及し、空気圧式制御の標準は10~50mAおよび4~20mAの電流ループ信号で代替されるようになった(後者が業界標準となった)。空気圧式フィールドアクチュエータは、プラント環境における制御弁への空気圧エネルギーの活用という利点から、現在でも広く使用されている。


産業界における最新のPID制御のほとんどは、DCS、プログラマブルロジックコントローラ(PLC)、またはディスクリートコンパクトコントローラのコンピュータソフトウェアとして実装されています。
電子アナログPID制御ループは、ディスクドライブのヘッド位置決め、電源の電力調整、あるいは最新の地震計の動き検出回路など、より複雑な電子システム内でよく見られます。ディスクリート電子アナログコントローラは、マイクロコントローラやFPGAを使用してPIDアルゴリズムを実装するデジタルコントローラにほぼ置き換えられました。しかし、ディスクリートアナログPIDコントローラは、レーザーダイオードコントローラなど、高帯域幅と低ノイズ性能を必要とするニッチなアプリケーションではまだ使用されています。[ 14 ]
制御ループによって移動および位置決めが可能なロボットアーム[ 15 ]を考えてみましょう。電動モーターは、印加される順方向または逆方向の動力に応じてアームを持ち上げたり下げたりできますが、アームの慣性質量、重力による力、持ち上げる荷物や外部物体に対して行う仕事などのアームにかかる外力のため、動力は位置の単純な関数にはなりません。
PIDコントローラーは、滑らかな動作を実現するために入力電流を継続的に調整します。
位置(PV)を測定し、それを設定値(SP)から差し引くことで誤差(e)が求められ、コントローラはこの誤差からモータに供給すべき電流(MV)を計算します。ここでも「誤差」とは設定値からのずれではなく、必要な補正量のことです。
最も分かりやすい方法は比例制御です。モーター電流を既存の誤差に比例して設定します。しかし、例えばアームが異なる重量を持ち上げる必要がある場合、この方法はうまくいきません。重量が大きいほど、下方向の誤差が同じであればより大きな力が必要になりますが、上方向の誤差が小さい場合はより小さな力で済みます。そこで、積分項と微分項が重要な役割を果たします。
積分項は、誤差だけでなく、誤差が持続している時間にも比例して動作を増加させます。したがって、加えた力が誤差をゼロにするのに十分でない場合、時間の経過とともにこの力は増加します。純粋な「I」コントローラは誤差をゼロにすることができますが、開始時には反応が弱く(動作は開始時には小さく、時間が経つにつれて顕著になるため)、終了時にはより積極的になります(誤差がゼロに近い場合でも、誤差が正である限り動作は増加します)。
誤差が小さく減少しているときに積分値を過剰に適用すると、オーバーシュートが発生します。オーバーシュート後、コントローラが反対方向に大きな補正を適用して目標位置を繰り返しオーバーシュートすると、出力は設定値を中心に一定の正弦波、増加する正弦波、または減少する正弦波のいずれかで振動します。振動の振幅が時間とともに増加する場合、システムは不安定です。減少する場合は、システムは安定です。振動の大きさが一定のままの場合、システムはぎりぎり安定です。
微分項は誤差の大きさ(つまり、誤差をゼロにすることはできない。純粋なDコントローラではシステムを目標値に到達させることはできない)ではなく、誤差の変化率を考慮し、この変化率をゼロに近づけようとします。誤差の軌跡を水平線に平坦化し、加える力を減衰させることで、オーバーシュート(加える力が大きすぎるために反対側に生じる誤差)を低減することを目指します。
目標位置(SP)への制御された到達をタイムリーかつ正確に実現するためには、制御システムは臨界減衰されている必要があります。適切に調整された位置制御システムは、制御対象モーターに必要な電流を供給し、アームが外部からの力に抵抗して必要な押し引き動作を行うようにします。設定値自体は、PLCやその他のコンピュータシステムなどの外部システムによって生成され、ロボットアームが行う作業に応じて連続的に変化します。適切に調整されたPID制御システムにより、アームはこれらの変化する要求に最大限対応できるようになります。
コントローラが誤差ゼロの安定状態(PV = SP)から開始する場合、コントローラによるその後の変更は、プロセスに影響を与える、測定済みまたは未測定の他の入力の変化、ひいてはPVの変化に応じて行われます。MV以外のプロセスに影響を与える変数は、外乱と呼ばれます。一般的に、コントローラは外乱を抑制し、設定値の変更を実行するために使用されます。アームにかかる負荷の変化は、ロボットアーム制御プロセスに対する外乱となります。
理論的には、コントローラは、測定可能な出力(PV)、その出力の既知の理想値(SP)、および関連するPVに影響を与えるプロセスへの入力(MV)を持つあらゆるプロセスを制御するために使用できます。コントローラは、温度、圧力、力、供給速度、[ 16 ]流量、化学組成(成分濃度)、重量、位置、速度、および測定可能な事実上その他のすべての変数を制御するために産業界で使用されています。
PID制御方式は、3つの補正項にちなんで名付けられており、それらの合計が操作変数(MV)を構成します。比例項、積分項、微分項を合計してPIDコントローラの出力を計算します。コントローラの出力として、PIDアルゴリズムの最終形式は次のようになります。
どこ
同様に、PIDコントローラのラプラス領域における伝達関数は次のようになる。
どこは複素角周波数です。

比例項は、現在の誤差値に比例した出力値を生成します。比例応答は、誤差に比例ゲイン定数と呼ばれる定数Kpを乗じることで調整できます。
比例項は次のように与えられる。
比例ゲインが大きいほど、誤差の変化に対して出力が大きく変化します。比例ゲインが高すぎると、システムが不安定になる可能性があります(ループチューニングの項を参照)。一方、ゲインが小さいと、入力誤差が大きい場合の出力応答が小さくなり、コントローラの応答性や感度が低下します。比例ゲインが低すぎると、システムの外乱に対する制御動作が小さくなりすぎる可能性があります。チューニング理論と実際の運用では、出力変化の大部分は比例項によって決定されるべきだとされています。
定常状態誤差は、目標とする最終出力と実際の出力との差です。[ 17 ]比例コントローラは、駆動するためにゼロでない誤差が必要なため、一般的に定常状態誤差で動作します。[ a ]定常状態誤差(SSE)は、プロセスゲインに比例し、比例ゲインに反比例します。SSEは、設定値AND出力に補償バイアス項を追加することで軽減したり、積分項を追加することで動的に補正したりできます。

積分項の寄与は、誤差の大きさと誤差の持続時間の両方に比例します。PIDコントローラにおける積分は、時間経過に伴う瞬時誤差の合計であり、以前に補正されるべきであった累積オフセットを示します。この累積誤差は、積分ゲイン(K i)で乗算され、コントローラの出力に加算されます。
積分項は次のように与えられる。
積分項は、プロセスが設定値に近づく速度を速め、純粋な比例制御器で発生する残留定常状態誤差を解消します。ただし、積分項は過去の累積誤差に反応するため、現在の値が設定値をオーバーシュートする可能性があります(ループチューニングのセクションを参照)。

プロセス誤差の導関数は、時間に対する誤差の傾きを求め、この変化率に導関数ゲインK dを乗じることによって計算されます。導関数項が全体の制御動作に寄与する大きさは、導関数ゲインK dと呼ばれます。
導関数項は次のように与えられる。
微分動作はシステム動作を予測し、システムの整定時間と安定性を向上させます。[ 18 ] [ 19 ] ただし、実際のアプリケーションではシステムの安定性への影響が変動するため、微分動作は実際にはほとんど使用されていません。ある推定によると、展開されたコントローラのわずか25%でしか使用されていません。
制御ループのチューニングとは、制御パラメータ(比例帯域/ゲイン、積分ゲイン/リセット、微分ゲイン/レート)を、所望の制御応答が得られる最適な値に調整することです。安定性(無制限の振動がないこと)は基本的な要件ですが、それ以外にも、システムによって動作が異なり、アプリケーションによって要件が異なり、要件同士が矛盾する場合もあります。
パラメータは3つしかなく、原理的には説明も簡単ですが、PID制御の制約内で複雑な基準を満たす必要があるため、PIDチューニングは難しい問題です。そのため、ループチューニングには様々な方法があり、より高度な技術は特許の対象となっています。本節では、ループチューニングの従来型の手動方式について説明します。
PIDコントローラの設計と調整は概念的には直感的に理解しやすいように思えますが、過渡応答の短縮や高い安定性など、複数の(しばしば相反する)目標を達成しようとする場合、実際には困難になることがあります。PIDコントローラはデフォルトの設定でも十分な制御性能を発揮することが多いですが、慎重な調整によって性能を向上させることができ、逆に不適切な調整では性能が許容範囲を超える場合があります。通常、初期設計は、閉ループシステムが望ましい性能を発揮するか、あるいは妥協点を見出すまで、コンピュータシミュレーションを通して繰り返し調整する必要があります。
一部のプロセスには非線形性があるため、全負荷状態ではうまく機能するパラメータが、無負荷状態からの起動時には機能しない場合があります。これは、ゲインスケジューリング(異なる動作領域で異なるパラメータを使用する)によって修正できます。
PID制御器のパラメータ(比例項、積分項、微分項のゲイン)の選択が不適切だと、制御対象のプロセス入力が不安定になることがあります。つまり、出力が振動の有無にかかわらず発散し、飽和または機械的破損によってのみ制限されます。不安定性は、特に大きな遅延が存在する場合に、過剰なゲインによって引き起こされます。
一般的に、応答の安定化が求められ、プロセス条件と設定値のいかなる組み合わせにおいてもプロセスが振動してはならないが、場合によっては限界安定性(限定された振動)が許容または望ましい場合もある。
数学的には、不安定性の起源はラプラス領域に見出すことができる。[ 20 ]
閉ループ伝達関数は
どこはPID伝達関数であり、はプラントの伝達関数です。閉ループ伝達関数が何らかの値で発散する場合、システムは不安定です。[ 20 ]これは次のような状況で起こります。つまり、これは次のような場合に起こります。180°の位相シフトで。安定性は、位相シフトが大きい周波数の場合。この効果のより一般的な形式は、ナイキスト安定判別法として知られています。
プロセス変更や設定値変更時の最適な動作は、用途によって異なります。
基本的な要件は、制御(外乱抑制 、つまり設定値を維持すること)と指令追従(設定値の変更を実行すること)の2つです。これらの用語は、制御変数が目標値にどれだけ正確に追従するかを示します。指令追従の具体的な基準には、立ち上がり時間と整定時間などがあります。例えば、プロセス変数が設定値を超えてオーバーシュートすると危険な場合など、オーバーシュートを許容できないプロセスもあります。また、新しい設定値に到達するために消費されるエネルギーを最小限に抑える必要があるプロセスもあります。
PIDループの調整にはいくつかの方法があります。最も効果的な方法は一般的に、何らかのプロセスモデルを作成し、その動的モデルパラメータに基づいてP、I、Dを選択することです。手動による調整方法は、特にループ時間が長いシステムでは、比較的時間がかかる場合があります。
調整方法の選択は、ループをオフラインにして調整できるかどうか、およびシステムの応答時間に大きく左右されます。システムをオフラインにできる場合、最適な調整方法は、システムにステップ状の入力変化を与え、時間経過に伴う出力の変化を測定し、この応答に基づいて制御パラメータを決定することです。
システムをオンライン状態に保つ必要がある場合、調整方法の1つは、まず設定することです。そして値をゼロにします。ループの出力が振動するまで、次に設定します。「振幅が1/4に減衰する」タイプの応答の場合、その値の約半分まで上げます。次に、オフセットが処理に十分な時間内に修正されるまで、ただし値が大きすぎて不安定性を引き起こすまでは、増加します。最後に、増加します。必要に応じて、負荷変動後にループが基準値に許容できる速さで到達するまで。過剰な応答とオーバーシュートを引き起こします。高速 PID ループチューニングは通常、設定値に早く到達するためにわずかにオーバーシュートしますが、一部のシステムではオーバーシュートを許容できないため、その場合は過減衰閉ループシステムが必要となり、さらに設定は、振動を引き起こしていた設定。

別のヒューリスティックなチューニング方法は、 1940年代にジョン・G・ジーグラーとナサニエル・B・ニコルズによって導入されたジーグラー・ニコルズ法として知られています。上記の方法と同様に、そしてゲインは最初にゼロに設定されます。比例ゲインは、最終ゲインに達するまで増加されます。ループの出力が絶えず振動し始める点。そして振動周期ゲインの設定には、以下のように使用します。
振動周波数が代わりに測定されることが多く、それぞれの乗算の逆数も同じ結果をもたらす。
これらのゲインは、PIDコントローラの理想的な並列形式に適用されます。標準PID形式に適用した場合、積分ゲインと微分ゲインのみが適用されます。そして振動周期に依存する。
この方法は1953年に開発され、一次+時間遅延モデルに基づいています。ジーグラー・ニコルス法と同様に、減衰比が次の閉ループ応答が得られるように調整パラメータのセットが開発されました。おそらく、これらのパラメータの最大の問題点は、プロセスパラメータのわずかな変化によって、閉ループシステムが不安定になる可能性があることである。
1984 年にカール・ヨハン・アストロムとトーレ・ヘグルンドによって発表されたリレー方式[ 25 ]は、一時的にバンバン制御を使用してプロセスを操作し、結果として生じる振動を測定します。出力は、制御変数の 2 つの値の間で切り替えられます (リレーのように、これが名前の由来です)。値は、プロセスが設定値を超えるように選択する必要がありますが、0% と 100% である必要はありません。適切な値を選択することで、危険な振動を回避できます。
プロセス変数が設定値以下である限り、制御出力は高い値に設定されます。設定値を超えるとすぐに、制御出力は低い値に設定されます。理想的には、出力波形はほぼ方形波となり、設定値より上と下で等しい時間だけ推移します。結果として生じる振動の周期と振幅を測定し、それを用いて最終的なゲインと周期を計算し、それをジーグラー・ニコルス法に入力します。
具体的には、最終期間は観測された周期と等しいと仮定され、最終的な利得は次のように計算されます。ここで、aはプロセス変数の振動の振幅であり、bはそれを引き起こした制御出力の変化の振幅である。
リレー方式には数多くのバリエーションが存在する。[ 26 ]
むだ時間のある一次プロセスの伝達関数は
ここで、k pはプロセスゲイン、τ pは時定数、θはむだ時間、u ( s ) はステップ変化入力です。この伝達関数を時間領域に変換すると、次のようになります。
上記と同じパラメータを使用します。
この方法を用いる際には、出力が測定可能な程度に十分な大きさのステップ変化入力を加えることが重要です。ただし、ステップ変化が大きすぎると、プロセスの安定性に影響を与える可能性があります。また、ステップ変化が大きいほど、外乱による出力の変化を防ぐことができます(最良の結果を得るには、ステップテストの実施時に外乱を最小限に抑えるようにしてください)。
一次プロセスのパラメータを決定する方法の 1 つは、63.2% 法を使用することです。この方法では、プロセス ゲイン ( k p ) は、出力の変化を入力の変化で割った値に等しくなります。むだ時間θは、ステップ変化が発生してから出力が最初に変化するまでの時間です。時定数 ( τ p ) は、ステップ変化後に出力が新しい定常状態の値の 63.2% に達するまでの時間です。この方法を使用する際の欠点の 1 つは、プロセスの時定数が大きい場合、新しい定常状態の値に達するまでに時間がかかる可能性があることです。[ 27 ]
現代のほとんどの産業施設では、上記のような手動計算方法でループの調整を行うことはなくなりました。代わりに、PID制御調整ソフトウェアやループ最適化ソフトウェアを使用して、安定した結果を確保しています。これらのソフトウェアパッケージは、データを収集し、プロセスモデルを開発し、最適な調整を提案します。一部のソフトウェアパッケージは、基準値の変化からデータを収集して調整を行うことも可能です。
数学的PIDループチューニングでは、システムにインパルスを与え、制御対象システムの周波数応答を利用してPIDループ値を設計します。応答時間が数分に及ぶループでは、試行錯誤では安定したループ値を見つけるのに数日かかる場合があるため、数学的ループチューニングが推奨されます。最適な値を見つけるのはより困難です。一部のデジタルループコントローラには自己チューニング機能があり、プロセスに非常に小さな設定値の変更を送ることで、コントローラ自体が最適なチューニング値を計算します。
別のアプローチでは、ジーグラー・ニコルス法を用いて初期値を計算し、数値最適化手法を用いてより良いPID係数を見つける。[ 28 ]
さまざまな性能基準に応じてループを調整するための他の数式も利用可能です。多くの特許取得済みの数式が現在、PID調整ソフトウェアおよびハードウェアモジュールに組み込まれています。[ 29 ]
自動PIDループチューニングソフトウェアの進歩により、動的または非定常状態(NSS)シナリオでPIDループをチューニングするためのアルゴリズムも提供されるようになりました。このソフトウェアは、外乱によるプロセスのダイナミクスをモデル化し、それに応じてPID制御パラメータを計算します。[ 30 ]
PIDコントローラは多くの制御問題に適用可能であり、多くの場合、改良や大まかな調整だけで十分な性能を発揮しますが、一部のアプリケーションでは性能が低下する可能性があり、一般的には最適な制御を提供するものではありません。PID制御の根本的な難点は、パラメータが一定でプロセスを直接把握できないフィードバック制御システムであるため、全体的な性能が反応的で妥協の産物となることです。PID制御はプロセスのモデルを持たないオブザーバにとって最適なコントローラですが、オブザーバに頼らずにプロセスの作用因子を明示的にモデル化することで、より優れた性能を得ることができます。
PID制御器は単独で使用する場合、制御システムが制御設定値付近でオーバーシュート、振動、またはハンチングを起こさないようにPIDループゲインを低減する必要がある場合、性能が低下する可能性があります。また、非線形性がある場合にも問題があり、制御性と応答時間のトレードオフが生じる可能性があり、プロセス挙動の変化(例えば、プロセスが温まった後に変化する場合)に反応せず、大きな外乱に対する応答に遅延が生じます。
最も大きな改善点は、フィードフォワード制御をシステムに関する知識と組み合わせ、PID制御は誤差制御のみに用いることです。あるいは、PID制御は、パラメータの変更(用途に応じてゲインスケジューリングを行う、または性能に基づいて適応的に変更する)、測定の改善(サンプリングレート、精度、正確性の向上、必要に応じてローパスフィルタリング)、または複数のPIDコントローラのカスケード接続など、より小規模な方法で変更することも可能です。
PID制御器は、制御対象のループが線形かつ対称である場合に最も効果的に機能します。したがって、非線形システムや非対称システムでは、その性能が低下します。
例えば、流量制御アプリケーションにおいて非線形バルブを使用すると、ループ感度が変動するため、不安定性を防ぐために減衰が必要になります。その解決策の一つとして、バルブの非線形性をモデル化したものを制御アルゴリズムに組み込み、これを補償する方法があります。
例えば、非対称な応用例として、能動加熱(発熱体による加熱)のみを使用するHVACシステムにおける温度制御が挙げられます。この場合、受動冷却しか利用できません。温度上昇のオーバーシュートはゆっくりとしか補正できず、制御出力に応じて温度を強制的に下げる能動冷却は利用できません。この場合、オーバーシュートを防止または低減するためにPIDコントローラを過減衰に調整することは可能ですが、温度上昇が設定値に達するまでの時間が長くなるため、性能が低下します。このような応用における制御品質の固有の低下は、能動冷却を適用することで解決できます。
微分項の問題点は、高周波の測定ノイズやプロセスノイズを増幅し、出力に大きな変化をもたらす可能性があることです。高周波ノイズ成分を除去するために、測定値をローパスフィルタでフィルタリングすることが有効な場合が多くあります。ローパスフィルタリングと微分制御は互いに打ち消し合う可能性があるため、フィルタリングの量は制限されます。したがって、低ノイズの計測機器が重要になる場合があります。非線形メディアンフィルタを使用すると、フィルタリング効率と実用性能が向上します。[ 31 ]場合によっては、制御をほとんど損なうことなく、微分バンドをオフにすることができます。これは、PIDコントローラをPIコントローラとして使用することと同等です。
基本的なPIDアルゴリズムは、制御アプリケーションにおいていくつかの課題を抱えているが、PIDの形式に若干の修正を加えることでこれらの課題は解決されてきた。
理想的なPID制御の実装でよく発生する問題の一つに、積分ワインドアップがあります。設定値が大きく変化すると、積分項に制御変数の最大値を超える誤差(ワインドアップ)が蓄積され、システムがオーバーシュートを起こし、この蓄積された誤差が解消されるまで増加し続けます。この問題は、以下の方法で解決できます。
例えば、PID制御ループを用いて電気抵抗炉の温度を制御し、システムが安定した状態にあるとします。ここで、扉を開けて炉内に冷たいものを入れると、温度が設定値以下に低下します。コントローラの積分関数は、この誤差を補正するために、正の方向に別の誤差を導入する傾向があります。このオーバーシュートは、扉を開けた後、制御ループが炉を再加熱するのに通常必要な時間だけ積分関数を固定することで回避できます。

PIコントローラ(比例積分コントローラ)は、誤差の微分(D)を使用しないPIDコントローラの特殊なケースです。
コントローラの出力は次のように表されます。
どこは、実際の測定値 ( PV ) と設定値 ( SP )との誤差または偏差です。
PIコントローラは、ラプラス演算子を用いた「フローチャート」ボックスを使用することで、SimulinkやXcosなどのソフトウェアで簡単にモデル化できます。
どこ
値を設定するオーバーシュートの減少と整定時間の増加の間には、多くの場合トレードオフが存在する。
微分作用がないことで、ノイズの多いデータの場合、定常状態におけるシステムの安定性が向上する可能性がある。これは、微分作用が入力データの高周波成分に対してより敏感であるためである。
微分動作がない場合、PI制御システムは、実際の(ノイズではない)比較的速い状態変化に対する応答性が低くなるため、適切に調整されたPIDシステムに比べて、設定値に到達するのが遅くなり、外乱に対する応答も遅くなります。
多くのPIDループは、機械装置(例えばバルブ)を制御します。機械のメンテナンスは大きなコストとなる場合があり、摩耗は入力信号に対する機械的応答におけるスティクションまたはバックラッシュという形で制御性能の低下につながります。機械の摩耗速度は、主に装置が変化を起こすために作動する頻度によって決まります。摩耗が大きな懸念事項となる場合、PIDループには出力デッドバンドを設けて、出力(バルブ)の作動頻度を低減することができます。これは、変化が小さい場合(定義されたデッドバンド範囲内)にコントローラの出力を一定に保つように変更することで実現されます。実際の出力が変化するには、計算された出力がデッドバンドから外れる必要があります。
比例項と微分項は、大きな設定値の変更など、システムが誤差の瞬間的なステップ増加にさらされた場合に、出力に過剰な変動を引き起こす可能性があります。微分項の場合、これは誤差の微分を取るためであり、瞬間的なステップ変化の場合、誤差は非常に大きくなります。そのため、一部のPIDアルゴリズムには、次のような修正が組み込まれています。
制御システムの性能は、 PIDコントローラのフィードバック(または閉ループ)制御とフィードフォワード(または開ループ)制御を組み合わせることで向上させることができます。システムに関する情報(目標加速度や慣性など)をフィードフォワードしてPID出力と組み合わせることで、システム全体の性能を向上させることができます。フィードフォワード値だけでコントローラ出力の大部分を賄える場合も少なくありません。PIDコントローラは主に、設定値(SP)と開ループ制御に対するシステム応答との間に残る差や誤差を補償する必要があります。フィードフォワード出力はプロセスフィードバックの影響を受けないため、制御システムが振動することはなく、安定性を損なうことなくシステム応答を改善できます。フィードフォワードは、設定値と測定された外乱に基づいて行うことができます。設定値重み付けは、フィードフォワードの単純な形式です。
例えば、ほとんどのモーションコントロールシステムでは、制御された機械的負荷を加速するために、アクチュエータからより大きな力が必要となります。負荷の速度を制御し、アクチュエータによって加えられる力を指令するために速度ループPIDコントローラを使用している場合、目標とする瞬間加速度を取得し、その値を適切にスケーリングしてPID速度ループコントローラの出力に加えることが有効です。これは、負荷が加速または減速されるたびに、フィードバック値に関係なく、アクチュエータから比例した量の力が指令されることを意味します。この状況では、PIDループはフィードバック情報を使用して、プロセス設定値とフィードバック値の間の残りの差を小さくするように、合成出力を変更します。オープンループフィードフォワードコントローラとクローズドループPIDコントローラを組み合わせることで、より応答性の高い制御システムを実現できます。
PIDコントローラは、パラメータ変更を通じて一貫したプロセス出力を維持するために積分アキュムレータ項を再計算する「バンプレス」初期化機能を備えて実装されることが多い。[ 33 ]部分的な実装としては、誤差を保存して積分ゲインを右から乗算するのではなく、積分ゲインに誤差を乗じたものを保存する方法があり、これにより、Iゲインが変更されてもPゲインやDゲインが変更されない場合に不連続な出力を防ぐことができる。
フィードフォワードに加えて、PID コントローラは、PIDゲイン スケジューリング(異なる動作条件でパラメータを変更する)、ファジー ロジック、または計算動詞ロジックなどの方法によって強化されることがよくあります。[ 34 ] [ 35 ]コントローラに接続された計測機器から、さらに実用的なアプリケーションの問題が発生する可能性があります。適切な制御性能を達成するには、十分なサンプリング レート、測定精度、および測定の正確さが必要です。PID コントローラを改善するもう 1 つの新しい方法は、分数階を使用して自由度を増やすことです。積分器と微分器の次数により、コントローラの柔軟性が向上します。[ 36 ]
PIDコントローラの際立った利点の1つは、2つのPIDコントローラを組み合わせて使用することで、より優れた動的性能が得られることです。これはカスケードPID制御と呼ばれます。2つのコントローラは、一方が他方の設定値を制御するように配置されている場合にカスケード接続されます。PIDコントローラは、流体レベルや速度などの主要な物理パラメータを制御する外側ループコントローラとして機能します。もう一方のコントローラは内側ループコントローラとして機能し、外側ループコントローラの出力を設定値として読み取り、通常は流量や加速度など、より急速に変化するパラメータを制御します。カスケードPIDコントローラを使用することで、コントローラの動作周波数が増加し、対象の時定数が減少することは数学的に証明できます。
例えば、温度制御循環浴槽には、それぞれ独自の熱電対温度センサーを備えた2つのPIDコントローラーが直列に接続されています。外側のコントローラーは、ヒーターから離れた場所に設置された熱電対を使用して水の温度を制御します。この熱電対は、水の大部分の温度を正確に読み取ります。このPIDコントローラーの誤差項は、目標浴槽温度と測定温度の差です。外側のPIDコントローラーは、ヒーターを直接制御するのではなく、内側のPIDコントローラーに対してヒーターの温度目標を設定します。内側のPIDコントローラーは、ヒーターに取り付けられた熱電対を使用してヒーターの温度を制御します。内側のコントローラーの誤差項は、このヒーター温度設定値とヒーターの測定温度の差です。その出力は、実際のヒーターをこの設定値付近に維持するように制御します。
2 つのコントローラーの比例項、積分項、微分項は大きく異なります。外側の PID コントローラーは時定数が長く、タンク内のすべての水が加熱または冷却される必要があります。内側のループははるかに速く応答します。各コントローラーは、制御するシステムの物理特性(タンク全体またはヒーターのみの熱伝達と熱容量)に合わせて調整でき、全体的な応答が向上します。[ 37 ] [ 38 ]
産業界で最もよく見られるPIDコントローラの形式であり、チューニングアルゴリズムに最も関連性の高い形式は、標準形式です。この形式では、ゲインは、 そして条件は以下の通り:
どこ
この標準形式では、パラメータは明確な物理的意味を持ちます。特に、内部の総和は、将来および過去の誤差を補償する新しい単一の誤差値を生成し、比例誤差項は現在の誤差を表します。微分項は、誤差値を予測しようとします。ループ制御が変更されないと仮定すると、数秒(またはサンプル)先の未来で、積分コンポーネントは、過去のすべてのエラーの合計を補償するようにエラー値を調整し、それらを完全に排除することを目的としています。秒(またはサンプル)。結果として得られる補正された単一の誤差値は、単一のゲインでスケーリングされます。制御変数を計算する。
並列形式では、制御理論のセクションで示されています。
ゲインパラメータは、標準形式のパラメータと関連付けられています。そしてパラメータを単純なゲインとして扱うこの並列形式は、最も一般的で柔軟な形式です。しかし、この形式ではパラメータと物理的な挙動との関連性が最も弱く、一般的にはPIDコントローラの理論的な解析に用いられます。標準形式は、数学的にはやや複雑ですが、産業界ではより一般的です。
多くの場合、PIDコントローラが出力する操作変数は、ある最大値の0~100%の間の無次元分数であり、実数単位(ポンプ流量やヒーター出力など)への変換はPIDコントローラの外部で行われます。一方、プロセス変数は温度などの次元を持つ単位です。この場合、ゲインを次のように表現するのが一般的です。「度当たりの出力」としてではなく、比例帯の逆数として表される。これは「フル出力あたりの度数」であり、出力が0から1(0%から100%)まで変化する範囲を表します。この範囲を超えると、出力は飽和状態、つまり完全にオフまたは完全にオンになります。この帯域が狭いほど、比例ゲインは高くなります。
ほとんどの商用制御システムでは、微分動作は誤差ではなくプロセス変数に基づいて行われます。つまり、設定値の変更は微分動作に影響を与えません。これは、アルゴリズムのデジタル版では、設定値が変更されると大きな不要なスパイクが発生するためです。設定値が一定の場合、プロセス変数の変化は誤差の変化と同じになります。したがって、この変更は、コントローラがプロセス外乱に応答する方法に何ら影響を与えません。
ほとんどの市販制御システムでは、比例動作をプロセス変数のみに基づいて行うオプションも提供されています。これは、設定値の変化に対して積分動作のみが反応することを意味します。アルゴリズムの変更は、コントローラがプロセス外乱に反応する方法には影響しません。比例動作をプロセス変数に基づいて行うことで、設定値の急激な変化によって発生する、瞬時かつ非常に大きな出力変化を解消できます。プロセスやチューニングによっては、設定値ステップに対する応答に有利となる場合があります。
King [ 39 ]は、効果的なチャートベースの方法について述べている。
PID制御器をラプラス変換形式で記述すると便利な場合がある。
PIDコントローラをラプラス形式で記述し、制御対象システムの伝達関数が分かっている場合、システムの閉ループ伝達関数を容易に求めることができる。
PIDコントローラーの別の表現方法は、直列または相互作用形式です。
ここで、パラメータは標準形式のパラメータと関連付けられている。
と
この形式は基本的にPDコントローラとPIコントローラを直列に接続したものです。コントローラのバイアスを計算するには積分が必要となるため、この形式は外部バイアス値を追跡する機能を提供します。これは、マルチコントローラによる高度な制御方式を適切に実装するために必要な機能です。
マイクロコントローラ(MCU)またはFPGAデバイスにおけるPIDコントローラのデジタル実装を設計するための解析では、PIDコントローラの標準形式を離散化する必要がある。[ 40 ] 1階微分の近似は後方有限差分によって行われる。そしてサンプリング周期で離散化される、kはサンプルインデックスです。
PID方程式の両辺をニュートンの記法を用いて微分すると、次のようになる。
導関数項は次のように近似されます。
それで、
再び後方差分を適用すると、
上記の式の項を簡略化および再編成することにより、最終的にMCUにおける離散化PIDコントローラの実現アルゴリズムが得られる。
または:
st
注: この方法は実際にはどこは t に依存しない定数です。この定数は、制御ループの開始と停止を制御したい場合に便利です。たとえば、Kp、Ki、Kd を 0 に設定すると、u(t) は一定に保たれます。同様に、誤差がすでに 0 に近いシステムで制御を開始したい場合、null以外であれば、出力が0になるのを防ぎます。
以下に、専門知識のない人でも容易に理解できる、非常にシンプルで分かりやすい擬似コードを示します。
Kp– 比例的利益Ki– 積分ゲインKd– デリバティブゲインdt– ループ間隔時間(妥当なスケールを想定)[ b ]previous_error := 0 積分 := 0 ループ: 誤差 := 設定値 − 測定値 比例 := 誤差; 積分 := 積分 + 誤差 × dt 導関数 := (誤差 - 前の誤差) / dt 出力 := Kp × 比例項 + Ki × 積分項 + Kd × 微分項 previous_error := error wait(dt) ループへ移動
以下の擬似コードは、PIDをIIRフィルタとして考慮してPIDを実装する方法を示しています。
PIDのZ変換は次のように記述できます((サンプリング時間):
そして、IIR形式で表現すると(上記の離散的な実装と一致して):
すると、FPGA実装でよく見られる再帰的反復を推測できます[ 41 ]
A0 := Kp + Ki*dt + Kd/dt A1 := -Kp - 2*Kd/dt A2 := Kd/dt error[2] := 0 // e(t-2) error[1] := 0 // e(t-1) error[0] := 0 // e(t) output := u0 // 通常はアクチュエータの現在の値 ループ: error[2] := error[1] error[1] := error[0] error[0] := setpoint − measured_value output := output + A0 * error[0] + A1 * error[1] + A2 * error[2] wait(dt) ループへ移動
ここで、Kpは無次元数であり、はs −1Kiで表され、はsで表されます。アクチュエータと測定値が同じ単位ではない制御を行う場合(たとえば、バルブを制御するモーターを使用した温度制御)、Kd、そして単位変換係数によって補正される場合があります。また、Ki逆数(積分時間)を用いることも興味深いかもしれません。上記の実装では、Iのみのコントローラが使用可能であり、場合によっては有用です。
現実世界では、これはD-A変換されて、制御対象のプロセスに操作変数(MV)として渡されます。現在の誤差は次の微分で再利用するために別の場所に保存されます。その後、プログラムはdt開始から数秒経過するまで待機し、ループが再び開始され、 PVと設定値の新しい値を読み込み、誤差の新しい値を計算します。[ 42 ]
実際のコードでは、wait(dt)ループ中にアルゴリズム自体が要する時間や、より重要なことに、アルゴリズムを遅延させるプリエンプションを考慮していないため、この方法の使用は不適切である可能性があることに注意してください。
使用時によくある問題これは、以下に示すように、設定値の立ち上がりまたは立ち下がりエッジの微分に対する応答です。
一般的な回避策は、時定数のローパスフィルタを使用して微分動作をフィルタリングすることです。どこ:
上記アルゴリズムの変形版で、導関数に無限インパルス応答(IIR)フィルタを使用するもの:
A0 := Kp + Ki*dt A1 := -Kp error[2] := 0 // e(t-2) error[1] := 0 // e(t-1) error[0] := 0 // e(t) output := u0 // 通常はアクチュエータの現在の値 A0d := Kd/dt A1d := - 2.0*Kd/dt A2d := Kd/dt N := 5 τ := Kd / (Kp*N) // IIRフィルタの時定数 アルファ := dt / (2*τ) d0 := 0 d1 := 0 fd0 := 0 fd1 := 0 ループ: error[2] := error[1] error[1] := error[0] error[0] := setpoint − measured_value // PI output := output + A0 * error[0] + A1 * error[1] // フィルタリングされたD d1 := d0 d0 := A0d * error[0] + A1d * error[1] + A2d * error[2] fd1 := fd0 fd0 := ((alpha) / (alpha + 1)) * (d0 + d1) - ((alpha - 1) / (alpha + 1)) * fd1 出力 := 出力 + fd0 wait(dt) ループへ移動
魚魚型魚雷の秘密と呼ばれるものが記されている。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ){{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ){{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)