5 s領域でのPID制御(PID制御)
PID制御は、プロセス制御系を中心に最も現場で多く使われているフィードバック制御のほうしきである。
PIDはそれぞれ、Propotional(比例)、Integral(積分)、Derivative(微分)の頭文字であり、
つまり、現在(比例)、過去(積分)、未来(微分)の情報を操作量に反映させるものである。
5.1 PID制御
ココにはないが、図5.1で示されているコントローラには3つの要素があり、それらが並列結合されている。
・比例動作(P動作):制御量y(t)とその目標量r(t)との偏差e(t):r(t)-y(t)が大きければ操作量u(t)を大きくし、小さければ小さくする。
これは、現在の情報を反映している。
・積分動作(I動作):偏差の積分値を反映する。過去の情報を反映する制御を行ない、定常偏差を改善する。
・微分動作(D動作):偏差の変化量を反映する。偏差の動向を予測するような制御を行い、安定性を改善する。
これを式で表すと
u(t) = kp*(e(t) + 1/TI*int[0-t]{e(γ)}dγ + TD*de(t)/dt)
= kp*e(t) + kI*int[0-t]{e(γ)}dγ + KD*de(t)/dt
となる。この時、
kp = 比例ゲイン
kI = kp/TI = 積分ゲイン
kD = kp*TD = 微分ゲイン
TI = 積分時間
TD = 微分時間
と呼ぶ。
また、プロセス制御でよく用いられる100/kpを比例帯と呼び、PBで表す。
そして、PBは一定の目標値rとしてP制御を行った時の定常偏差e_∞=r-y_∞を用いると
PB = e_∞/u_∞ * 100 [%]
で表すことが出来る。また、PIDの式をラプラス演算子sを用いて表すと
u(s) = C(s)e(s)
C(s) = kp(1+1/TIs+TDs) = kp + kI/s + kDs
となる。しかし実際には、微分動作をそのまま用いるとノイズに敏感になりすぎるので、不完全微分を用いた
C(s) = kp(1+1/TIs+TDs) = kp + kI/s + kD*s/(1+γs)
が用いられることが多い。この時、γはTD/10程度に選ばれる事が多い。
また、PIDのうちのいくつかの係数を0にすることによって、PIDは以下の様々な制御形式に変化させることが出来る。
・P制御
kI = KD = 0とするとPだけ残る。この時のコントローラをPコントローラと呼ぶ。これは最も単純なフィードバック制御である。
・PI制御
kD = 0とすることでPI制御にすることが出来る。この時のコントローラをPIコントローラと呼ぶ。
PIコントローラには積分器が含まれているのでステップ状の目標値に定常偏差なく追従し、
また、ステップ状の外乱の影響を完全に除去することができる。そのため、PI制御はモータなどのサーボ系の制御に使われることが多い。
・PD制御
kI = 0とすることでPD制御にすることが出来る。この時のコントローラをPDコントローラと呼ぶ。
ロボットのマニピュレータでは後述する微分先行型のPD制御が使われることが多い。
PID制御の三つのパラメータkp,TI,TDを決定する方法には様々なものがある。
例えば、プロセス制御の現場では、臨海制御法がよく用いられる。
まず、Pコントローラを用いた予備実験で安定限界となる比例ゲインkpcを小さな値からだんだん大きくすることで調べ、
その後その時の持続周期Tcを用いて、kp,TI,TDを以下の則を用いて決定する。
・パラメータ決定のための指標
P制御の場合 : 比例ゲイン=0.5*kpc
PI制御の場合 : 比例ゲイン=0.45*kpc 積分時間=0.83*Tc
PID制御の場合 : 比例ゲイン=0.6*kpc 積分時間=0.5*Tc 微分時間=0.125*Tc
5.2 改良型PID制御
5.2.1 PI-D制御 (微分先行型PID制御)
通常のPID制御では、偏差の微分値を用いるため、目標がステップ関数など急激に変わる場合は、大きな操作量u(t)を必要としてしまう。
このような場合、偏差の微分値の代わりに、制御量をそのまま用いる事が多い。
このような制御を微分先行型PID制御と呼ぶ。
コントローラを式で表すと、e'(t) = r'(t) - y'(t)の代わりに-y'(t)を用いるので
u(t) = kp*e(t) + kI*int[0-t]{e(γ)}dγ - KD*dy(t)/dt
u(s) = kp*e(s) + kI/s*e(s) - kDs*y(s)
となる。さらに、kIを0とすると、微分先行型PD制御となる。
5.2.2 I-PD制御 (比例微分先行型PID制御)
PI-D制御からさらに比例動作も制御量y(t)に対して働くようにしたものを
比例微分先行型PID制御と呼ぶ。
コントローラを式で表すと、e'(t) = r'(t) - y'(t)の代わりに-y'(t)を用いるので
u(t) = -kp*y(t) + kI*int[0-t]{e(γ)}dγ - KD*dy(t)/dt
u(s) = -kp*y(s) + kI/s*e(s) - kDs*y(s)
ここで、kDを0としたときI-P制御と呼ぶ。
先のI-PD制御の式を書き換えると
u(s) = -kp*y(s) + kI/s*e(s) - kDs*y(s)
= kI/s*(r(s)-y(s)) - (kp+kDs)*y(s)
= kI/s*r(s) - (kp+kI/s+kDs)*y(s)
=(kp+kI/s+kDs)*(kI/(kDs^2+kps+kI))*r(s) - y(s))
となるので、これは2自由度制御系と等価である。
ここで
C1 = kp+kI/s+kDs
C2 = kI/(kDs^2+kps+kI)
とすれば、
入力r(s),d(s)から出力y(s)への伝達関数は
G_yr = P(s)C1(s)C2(s)/(1+P(s)C1(s))
G_yd = P(s)/(1+P(s)C1(s))
となる。つまり、I-PD制御では、目標値信号を二次遅れ要素のフィルタC2に通すことによって滑らかにし、
通常のPID制御を行うことになる。
また、入力外乱抑制特性も通常のPID制御と同じである。
まとめ
5.1
PID制御は3つの要素から成り立つ。
・比例動作(P動作):制御量y(t)とその目標量r(t)との偏差e(t):r(t)-y(t)が大きければ操作量u(t)を大きくし、小さければ小さくする。
これは、現在の情報を反映している。
・積分動作(I動作):偏差の積分値を反映する。過去の情報を反映する制御を行ない、定常偏差を改善する。
・微分動作(D動作):偏差の変化量を反映する。偏差の動向を予測するような制御を行い、安定性を改善する。
式で表すと
u(t) = kp*(e(t) + 1/TI*int[0-t]{e(γ)}dγ + TD*de(t)/dt)
= kp*e(t) + kI*int[0-t]{e(γ)}dγ + KD*de(t)/dt
となる。
また、各パラメータは
kp = 比例ゲイン
kI = kp/TI = 積分ゲイン
kD = kp*TD = 微分ゲイン
TI = 積分時間
TD = 微分時間
と呼ぶ。
さらに。プロセス制御でよく用いられる100/kpを比例帯と呼び、PBで表す。
また、PIDのうちのいくつかの係数を0にすることによって、PIDはP制御、PD制御、PI制御など様々な制御形式に変化させることが出来る。
PID制御には原始パラメータが三つあり、決定する方法には臨界制御法がよく用いられる。
5.2
PID制御は現実にはもう少し進歩していて、コントローラへの入力に偏差を使うのではなく、いくつかは制御量-y(t)を直接使う制御法がある。
微分動作のみに-y(t)を用いるとPI-D制御となり、さらに比例動作にも-y(t)を用いるとI-PD制御となる。
I-PD制御は2自由度制御系と等価である。
わからないところ
ひさびさにわからん語が出てきた。
1.不完全微分てなに
2.自由度制御系てなに