【PID制御とは?】
自動制御方式の中でもっとも良く使われる制御方式にPID制御
という方式があります。
このPIDとは
P:Proportinal(比例)
I:Integral(積分)
D:Differential(微分)
の3つの組み合わせで制御するもので木目細かな制御を実現でき、
スムーズな制御が可能となります。
【単純On/Off制御】
単純なOn/Off制御の場合には、制御操作量は0%と100%の間を
行ったり来たりするので、操作量の変化が大きすぎ、実際の目標値
に対し、行き過ぎを繰り返すため、目標値の近くで、凸凹を繰り返す
制御となってしまいます。
この様子を図にすると下図のようになります。
【比例制御】
これに対し、操作量を目標値と現在地との差に比例した大きさとする
ようにして、徐々に調節する制御方法が比例制御と言われる方式です。
こうすると、目標値に近づくと微妙な制御を加えることが出来るので
細かく目標値に近づけることが可能となります。
この様子は下図の様に表すことができます。
![]()
【PI制御】
比例制御でうまく制御出来るように考えられますが、実際には、制御量
が目標値に近づくと問題がおきます。
それは、操作量が小さくなりすぎ、それ以上細かくは制御出来ない状態
が発生します。結果は、目標値に極めて近い制御量の状態で安定した
状態になってしまいます。
こうなると、目標値に近くはなるのですが、いつまでたっても制御量に
ピッタリとはならない状態となってしまいます。
このわずかの誤差のことを「残留偏差」といいます。この残留偏差を
無くすために使われるのが積分制御です。
つまり、わずかの残留偏差を時間的に累積し、ある大きさになった所で
操作量を増して偏差を無くすように動作させます。
このように、比例動作に積分動作を加えた制御を「PI制御」と呼びます。
これを図で示すと下図のようになります。
![]()
【微分制御とPID制御】
PI制御で実際の目標値に近づける制御は完璧に出来ます。しかしもう
一つ改善の余地があります。
それは、制御応答の速さです。PI制御では確かに目標値に制御できます
が、一定の時間(時定数)が必要です。
この時定数が大きいと、外乱があった時の応答性能が悪くなります。
つまり、外乱に対しすばやく反応できず、すぐには元の目標値には戻せ
ないということになります。
そこで、必要になるのが微分動作です。
これは、急激に起きる外乱に対し、偏差を見て、前回偏差との差が大きい
時には、思い切って操作量を多くし機敏に反応する様にします。
この前回との偏差の変化差をみることが「微分」に相当します。
この微分動作を加えたPID制御の場合の制御特性は下図の様になります。
これで分かるように最初はかなりオーバードライブ気味に制御し、早く
目標値になるように積極的に制御して行きます。
![]()
【コンピュータによるPID制御アルゴリズム】
もともとPID制御は、連続したアナログ量を制御することが基本になって
います。しかし、コンピュータのプログラムでPID制御を実現しようとする
時には、連続した量を扱うことができません。なぜなら、コンピュータの
データの入出力は一定時間間隔でしか出来ないからです。
しかも微積分演算をまともにやっていては、演算に要する能力のために
高性能のコンピュータが必要になってしまいます。
そこで考えられたのが、サンプリング方式(離散値)に適したPID演算
方式です。
まず、サンプリング方式のPID制御の基本の式は下記で表されます。
操作量=Kp×偏差+Ki×偏差の累積値+Kd×前回偏差との差
(比例項) (積分項) (微分項)
記号で表すと
MVn = MVn-1 + ΔMVn
ΔMVn = Kp(en-en-1) + Ki en + Kd((en-en-1) - (en-1-en-2))MVn、MVn-1:今回、前回操作量 ΔMVn:今回操作量差分
en,en-1,en-2:今回、前回、前々回の偏差
これをプログラムで実現するには、今回と前回の偏差値さえ測定でき
れば操作量を求めることが出来ます。
【パラメータの求め方】
PID制御方式での課題は、各項に付く定数、Kp、Ki、Kd の決め方です。
これの最適値を求める方法は幾つかありますが、いずれも難解で、小型
のマイコンで実現するにはやっかいなものです。
(チューニングと呼ばれる)
そこで、このパラメータはカットアンドトライで実際に制御した結果から
最適な値を求め、その値を設定するようにします。
参考までにチューニングの手法を紹介しておくと、 ステップ応答法 と
限界感度法 が有名な手法です。
またプロセス制御の分野では、このチューニングを自動的に実行する
オートチューニング機能を持つ自動制御ユニットもあります。これには
制御結果を学習し、その結果から常に最適なパラメータ値を求め、次の
制御サイクルに反映するような機能も実装されています。
ここでステップ応答法でのパラメータの求め方を紹介します。
まず、制御系の入力にステップ信号を加え、その出力結果が下図だと
します。(パラメータは適当に設定しておく)
上図のように立ち上がりの曲線に接線を引き、それと軸との交点、定常値
の63%に当たる値になった所の2点から、
L:無駄時間 T:時定数 K:定常値 の3つの値を求めます。
この値から、各パラメータは下表の様に求めることが出来ます。
制御動作種別 Kpの値
Kiの値
Kdの値
比例制御 0.3〜0.7T/KL
0
0
PI制御 0.35〜0.6T/KL
0.3〜0.6/KL
0
PID制御 0.6〜0.95T/KL
0.6〜0.7/KL
0.3〜0.45T/K
このパラメータに範囲が有りますが、この大きさによる違いは特性の違いに
現われ、下図の様に、パラメータが多きい方の時には、微分、積分効果が
早めに効きますから、下図の赤い特性の様にオーバーシュートが大き目に
なります。パラメータが小さい方の時は、下側のオレンジ色の特性の様に
なります。