PID制御

**PID制御**（ピーアイディーせいぎょ、Proportional-Integral-Derivative Controller、PID Controller）は、制御工学におけるフィードバック制御の一種である。出力値と目標値との偏差、その積分、および微分の3つの要素によって、入力値の制御を行う方法である。古典制御論の枠組みで体系化されたもので長い歴史を持っており、これを基に様々なフィードバック制御手法が開発・提案され続けている。過去の実績や技術者の経験則の蓄積により調整を行いやすいため、産業界では主力の制御手法であると言われている。

## P制御
基本的なフィードバック制御として**比例制御**（**P制御**）がある。これは操作量を制御量と目標値の偏差の一次関数として制御するものである。

ここで、ある制御対象の制御する量を**制御量**、**出力**などと呼び、制御量に追従させたい希望の値を**目標値**と呼び、目標値を得るため制御対象を操作する量あるいは制御対象に入力する量を**操作量**、**入力**などと呼ぶ。なお、ある時刻*t*での操作量を*u*(*t*)、出力値を*y*(*t*)、目標値を*r*(*t*)とする。このとき、目標値と現状の制御量との差を、**制御偏差**、**偏差**などと呼び*e*(*t*)で表し、*r*(*t*) - *y*(*t*)である。ここでラプラス変換にもとづく伝達関数で上記の式を表現すると、
:E(s) = R(s) - Y(s)
となる。ただし、*s*は複素数である。

この時、P制御による制御入力は
:u(t) = K_p e(t) = K_p (r(t) - y(t))
および
:U(s) = K_p E(s) = K_p (R(s) - Y(s))
と表される。よって、P制御を行う調節器の伝達関数を*C*(s)とすれば、
:C(s) = K_p 
となる。

PID制御では、この偏差に比例して操作量を変化させる動作を、**比例動作**あるいは**P動作**（PはProportionalの略）という。定数*K*pは**比例ゲイン**、**Pゲイン**と呼ばれる。

### 問題点
比例制御においては*K*pを変えない限り、入力値に対して出力値は常に決まっている。
しかし、実際に制御を行う場合には同じ入力値に対しても周囲の環境などによって出力値を変えなければならないことがある。
例えばある装置の温度を60℃に保ちたいときにその外気温が10℃のときと30℃のときでは加熱に必要な熱量を変えなければならない。
このような状況下で外気温が10℃の時に、外気温が30℃の時に60℃に到達するKpの値を使用して比例制御を行うと、熱量が足りず目標値に到達することができない。
このようにして生じる制御結果と目標値との偏差を**定常偏差**または**オフセット**または残留偏差という。

## PI制御
P制御において、周囲の環境が変わるたびに残留偏差をなくすよう、*K*pを決定しなおすのは難しい。そこで、2つ目の項を付け加える。
:u(t) = K_p e(t) + K_i \int_{0}^{t} e(\tau)\, d\tau
この項は残留偏差が存在する場合、その偏差の時間積分に比例して入力値を変化させる動作をする。
つまり偏差のある状態が長い時間続けばそれだけ入力値の変化を大きくして目標値に近づけようとする役目を果たす。定数*K*iは**積分ゲイン**、**Iゲイン**と呼ばれる。

また、積分ゲインを*K*i = *K*p / *T*iで表し、上式に代入すると、
:u(t) = K_p \left( e(t) + {1 \over T_i} \int_{0}^{t} e(\tau)\, d\tau \right)
この*T*iは**積分時間**と呼ばれる。
積分時間の物理的意味は、ある一定の大きさのオフセットが継続した（つまり*e*(*t*)が一定）のときにP動作とI動作の項が同じになるのに要する時間である。

P制御と同じく、PI制御を伝達関数で表現すれば、
:U(s) = \left( K_p + \frac{K_i}{s} \right) E(s) = K_p \left( 1 + \frac{1}{T_i s} \right) E(s)
となる。PI制御の伝達関数*C*(s)は以下のようになる。
:C(s) = K_p + \frac{K_i}{s} = K_p \left( 1 + \frac{1}{T_I s} \right) 

この偏差の積分に比例して入力値を変化させる動作を**積分動作**あるいは**I動作**（IはIntegralの略）という。上記のように比例動作と積分動作を組み合わせた制御方法は**PI制御**という。

### 問題点
積分時間が小さいほどI動作の寄与が大きくなり残留偏差の矯正が迅速に行われるが、小さすぎると目標値を行き過ぎたり（**オーバーシュート**）、目標値の前後を出力値が振動したり（**ハンチング**）する現象を起こすことがある。積分動作は制御系の位相を遅らせる効果を持つので系を不安定にしやすい。

一方、周囲の環境が変化したり制御対象に撹乱が加わったりすることで出力値が急に変動することがある。
このような場合にもPI制御は出力値を目標値に常に近づけようとする。
しかし、I動作はある程度時間が経過しないと働かないため、どうしても出力値を目標値に戻すために時間がかかる。

## PID制御
上記のようなPI制御の問題点を解決するために、
:u(t) = K_p e(t) + K_i \int_{0}^{t} e(\tau)\, d\tau + K_d {{d} e(t) \over dt}
と3つ目の項を付け加える。
この項は急激な出力値の変化が起こった場合、その変化の大きさに比例した入力を行うことで、その変化に抗しようとする役目を果たす。定数*K*dは**微分ゲイン**、**Dゲイン**と呼ばれる。

また、微分ゲインを*K*d = *K*p・*T*dで表し、上式に代入すると、
:\Delta x(t) = K_p (\Delta y(t) + {1 \over T_i} \int_{0}^{t} \Delta y(\tau)\, d\tau + T_d {{d \Delta y(t)} \over dt})
この*T*dは**微分時間**と呼ばれる。
微分時間の物理的意味は、ある一定の変化率の出力値の変動が継続した（つまりd*e*(*t*)/d*t*が一定）のときにP動作とD動作の項が同じになるのに要する時間である。
微分時間が大きいほどD動作の寄与が大きくなり変動へ対処が迅速に行われるが、大きすぎると今度は逆方向へ変動したりすることになり制御が不安定になる。

PID制御を伝達関数で表現すれば、
:U(s) = \left( K_p + \frac{K_i}{s} + K_D s \right) E(s) = K_p \left( 1 + \frac{1}{T_i s} + T_d s \right) E(s)
となる。PID制御の伝達関数*C*(s)は以下のようになる。
:C(s) = K_p + \frac{K_i}{s} + K_D s = K_p \left( 1 + \frac{1}{T_i s} + T_d s \right) 

この偏差の微分に比例して入力値を変化させる動作を**微分動作**あるいは**D動作**（DはDerivativeまたはDifferentialの略）という。
上記のように比例動作、積分動作、微分動作を組み合わせた制御方法を**PID制御**という。操作量*U*が比例項、積分項、微分項の3つの和となることから、**3項制御**とも呼ぶ。

PID制御において適切な比例ゲイン、積分ゲイン（または積分時間）、微分ゲイン（または微分時間）を決定するには制御対象の入力に対する応答を調べておく必要がある。
このためには入力値を階段状に変動させた時に出力値が応答しはじめるまでに要する時間（**無駄時間**）、応答しはじめてからの変化の速度（**時定数**）、入力値の変化量と出力値の変化量の比（**プロセスゲイン**）などを測定し、その値から設定する方法がある。
無駄時間が長く時定数が小さい（応答開始に時間がかかるが、応答がはじまると急激に変化する）制御対象にはPID制御は不向きである。

## パラメータ調整
PID制御の各パラメータの値（*K*p、*K*i、*K*d）あるいは（*K*p、*T*i、*T*d）は設計値なので、制御対象とは独立に自由に与えることができ、要求を満たす最適な値を決定する必要がある。しかし、一般的な制御対象に対して、最適なゲイン値を与える代数的な方法は存在せず、実際の調整は、数値シミュレーションを行ったり、実際の対象物に調整器を繋いで試行錯誤的に最適値を得ている。

### ジーグラ・ニコルス法
パラメータ調整の経験則として、1942年にジョン・ジーグラ(John G. Ziegler)とナサニエル・ニコルス(Nathaniel B. Nichols)らによりに提案された

2つの調整法が知られている。彼らの調整法には**ジーグラ・ニコルスの限界感度法**(Ziegler-Nichols' Ultimate Gain method, Ziegler-Nichols’Closed-Loop Method)と**ジーグラ・ニコルスのステップ応答法（過渡応答法）**(Ziegler-Nichols' Process Reaction Curve method, Ziegler-Nichols’Open-Loop Method)がある。

ジーグラ・ニコルスの限界感度法では以下のような手順でゲイン値を決定する。
まず、*T*i→∞（あるいは最大）、Td→0として、調節器がP動作だけを行うようにする。次に、比例ゲイン*K*Pを0から徐々に大きくしていき、制御量が安定限界に達して一定振幅振動を持続するようになったところで*K*Pの増加を止める。このときの比例ゲインを*K*u（限界感度）、振動周期を*P*u として、これらの値から調節器の各パラメータを下の表のように決める。限界感度法は最初のオーバーシュート量と次のオーバーシュート量の比を1/4程度にすることを目安とした方法で、このような調整を1/4減衰の制御などと呼ぶ。

ジーグラ・ニコルスのステップ応答法では以下のような手順でゲイン値を決定する。
まず、調整器を介さずに制御対象単体にステップ入力を加える。これにより得られたステップ応答曲線から、曲線の勾配が最も急なところに接線を引き、その勾配を*R=K/T*（ここで*K*は定常ゲイン、*T*は時定数）とする。この接線が横軸（時間軸）と交わる時刻と入力を加えた時刻との差を取り、この時間を*L*とする。これらの値から調節器の各パラメータを下の表のように決める。

### CHR法
ジーグラ・ニコルス法以外にも多くの調整則が提案されており、それらの中の一つとして1952年に発表された**CHR法**が知られている。ステップ応答法の1種で、提案者のチェン(Chien)、フローネス(Hrones)、レスウィック(Reswick)の3名の頭文字からCHR法と呼ばれる。CHR法には、目標値追従を目的にする場合と外乱効果抑制を目的にする場合、さらにオーバーシュート量0の場合と20%の場合があり、各パラメータを下の表のように決める。

## 歴史

制御技術と理論の起源は、蒸気機関の調速機から始まった。PID制御は、その後、特に船の自動操舵の開発の中で発達していった。1911年、エルマー・アンブローズ・スペリー(:en:Elmer Ambrose Sperry)が、PID制御器の構成を成した船の自動操舵機構を開発した。1922年には、ニコラス・マイノースキー(Nicolas Minorsky)が船の自動操舵に関して数式化された制御理論の発表を行い、これがPID制御の最初の着想とされている。

その後1936年、テイラー社(Taylor Instruments)のカレンダー(Callender)らにより、空気式PID調整器の原型が製作された。しかしPIDパラメータの調整の仕方が不明であったため、この調整器の売れ行きは不調に終わった。これを受けて、1942年に同テイラー社のジョン・ジーグラ(John G. Ziegler)とナサニエル・ニコルス(Nathaniel B. Nichols)らにより、実用的なPIDパラメータの調整則が考案された。さらに、この調整則は同テイラー社のジェラルディン・クーン(Geraldine Coon)により広められ、良く知られるようになった。

## 脚注

## 参考文献
* 
* 
* 
* 
* 
* 
* ／第2版、2005年、。
* 
* 志水清孝：「PID制御 現代制御論の視点から」、オーム社、ISBN 978-4-274-22630-4（2020年11月）。

## 関連項目
* 制御工学
* 古典制御論
* 航空魚雷 - 九一式魚雷

## 外部リンク
* 
* 
* 
* 
* 
* 
* 
* 
* 
*