はじめに
制御の世界には、MPC、適応制御、ロバスト制御など、PIDより高度な制御手法がたくさんあります。
それでも、工場や設備では今もPIDが普通に使われています。
「もっと高度な制御があるのに、なんで今もPIDなんだろう?」
これは以前からちょっと気になっていました。
そこで「PIDが今も使われている理由」を調べてみたのですが、
- P・I・Dとは何か
- PIDのメリット
- PIDの応用事例
といった説明が多くて、
「じゃあ、なぜ実際の現場ではPIDからなかなか置き換わらないの?」
というところは、意外とよく分かりませんでした。
なので今回はPIDの仕組みそのものではなく、
そもそも現場では、制御に何を求めているんだろう?
というところから考えてみます。
本当に「高精度なら高精度なほどよい」のか?
制御方式を比較していると、「従来のPIDより高精度に制御できた」 という話をよく見ます。
もちろん、精度は高い方がいいです。
でも、ここで一度考えてみたいのが、 そこまで高精度になって、実際に何がうれしいの? ということです。
例えば、学生さんの研究であれば、「変位を±0.00002 m以内に制御できた」ということ自体が成果になります。
今までできなかった精度を実現できれば、それが研究としての価値になります。
でも、工場では少し事情が違います。実際の設備では、「この範囲に入っていればOK」
という許容範囲が決められていることが多いです。
例えば、温度制御の場合:
目標値:500℃
許容範囲:495~505℃
だったとします。
PIDで、
497℃ → 503℃ → 499℃ → 502℃
と多少上下していたとしても、製品品質や設備に問題がなく、ずっと許容範囲に入っているのであれば、それで十分かもしれません。
もちろん、
499.9℃ → 500.1℃ → 500.0℃
まできれいに制御できるなら、その方が気持ちはいいです。でも、「それにいくら払いますか?」 という話になります。
もし今使っているPIDを無料でアップデートするだけで、制御精度が一気に良くなるのであれば、たぶん誰でも欲しいと思います。
でもね、実際にPIDから別の制御方式へ切り替えるとなると、いろいろなところでお金や時間がかかります。
そうすると当然、「そのお金を払ってまで、その精度は必要なの?」 という話になります。
PIDですでに必要な許容範囲を守れているのに、「もっと高精度にできます」という理由だけで制御方式を変更しても、
- 品質が上がる
- 生産量が増える
- エネルギーが減る
- 設備寿命が延びる
- 不良率が下がる
といった具体的なメリットにつながらなければ、わざわざ切り替える理由はありません。
つまり、現場では 「性能が上がるか」だけではなく、「その性能向上にお金を払う価値があるか」 まで考える必要があります。
ここが、アカデミックと工業で少し違うところだと思います。
アカデミックの場合
アカデミックでは、
これまでできなかったことを、どこまで実現できたか
が重要な評価軸の一つになります。そのため、今までより高い性能を追求すること自体に意味があります。
工業の場合
一方、工業では、
その性能、本当に必要ですか?
というところから考えます。
すでにPIDで要求された許容範囲を満たしているのであれば、さらに高精度にするために追加コストを払っても、必ずしもメリットがあるとは限りません。
しかも、考えるべきコストは導入費だけではありません。
制御精度を追い込んで、小さな偏差まで細かく補正しようとすると、制御方式やチューニングによっては操作量の変動が増えることもあります。
例えば、温度を500℃ぴったりに近づけようとして、バルブを細かく動かし続けたとします。
PVのグラフはきれいになるかもしれません。
でも、そのためにバルブの動作が増えれば、今度はアクチュエータの摩耗や保守まで考える必要があります。
つまり工場では、「精度が上がった = 良い制御」 とは単純には言えません。
なので、工業では、
必要な性能を、できるだけシンプルに、安定して、安く実現する
ことがとても重要になります。
この視点で見ると、PIDが今も現場に残っている理由が少し見えてきます。
PIDは、いつでも一番高精度な制御方式というわけではありません。
でも、多くの設備ではPIDですでに必要な性能を満たせている。
それなら、わざわざお金をかけて複雑な制御に変える必要はありません。
「最高性能ではなくても、必要十分。Simple enough to meet the requirements, strong enough to keep working in the real world. That’s why we can say: Simple is Strong. 」
これが、PIDのかなり強いところなんじゃないかと思います。
PIDって、本当にP・I・Dだけ?
ここまでPIDについて「必要十分だから強い」と書いてきました。
でも、PIDにはもう一つ強いところがあります。
それは、
何か問題が出てきたときに、PIDを全部捨てなくても、その周りに必要な機能を追加できること
です。
教科書でPIDを習うと、
P:比例
I:積分
D:微分
の3つで終わることが多いです。
でも、実際の制御システムを見ると、PIDだけをそのまま置いて終わり、というケースばかりではありません。
たとえば現場では、まず「理想通りに動かない理由」がいくつか出てきます。
操作量が思ったように出せなかったり、遅れの影響で反応がワンテンポ遅れたり、こうした場合、追加の工夫が必要になります。
その代表的なものを少し広めに並べると、こんな感じです。
PIDまわりでよく使われるもの
| シチュエーション | 考えられる原因 | 手法 | 実現イメージ |
|---|---|---|---|
| 操作量が上下限に張り付く | 出力が飽和している間も積分値が蓄積する | アンチワインドアップ | MVが上限・下限に達したら、積分を止める、または実際のMVとの差を積分器へ戻す |
| センサノイズでMVが細かく動く | D動作などが高周波ノイズに反応する | ローパスフィルタ | PVやD動作にフィルタを入れて、細かいノイズをPIDへ入りにくくする |
| SVを変更するとMVが急変する | SVをステップ状に変更している | 目標値ランプ |
500℃ → 600℃ と一気に変えず、一定速度でSVを600℃まで上げる |
| SV変更時の応答を滑らかにしたい | SVの急変がそのままPIDへ入る | 目標値フィルタ | PIDへ入れる前にSVをフィルタへ通し、滑らかなSVを作る |
| SV変更時のP動作を弱くしたい | SV変化がそのままP動作へ入る | 目標値重み付け | P=Kp(SV−PV)ではなく、PをKp(αSV−PV)とする |
| SV変更時にP・Dによる急激な操作を避けたい | SV変更がP・D動作へ直接影響する | I-PD/PI-D | P・Dの入力をPV側中心にして、SV変更による急激なMV変化を抑える |
| SVを速度・加速度まで含めて滑らかに変えたい | 単純なランプだけではSVの変化が十分滑らかにならない | 追従微分器(TD) | 元のSVから、滑らかな目標軌道とその変化速度を作ってPIDへ与える |
| SV変更によってPV・MVの制約を超えたくない | PIDは将来の制約を考えずSVを追従する | 目標値ガバナー | 制約を超えそうなら、PIDへ与えるSVを一時的に緩めたり、変化速度を調整したりする |
| MVを急激に変えたくない | PID出力そのものに変化速度の制限がない | 変化率制限 | PID出力の後段で「1秒あたり○%まで」のようにMVの変化速度を制限する |
| 小さな偏差でMVが動き続ける | ノイズや微小偏差にもPIDが反応する | 不感帯 | 偏差が一定範囲内なら、PIDが動ないようにし、既存のMVをそのまま保持する |
| 手動から自動へ切り替えるとMVが飛ぶ | 手動MVとPID内部の積分値が一致していない | トラッキング | 手動MVが40%に対し、PID内部のMVが65%の場合、AUTO切替時にMVが40%→65%へ急変する。これを防ぐため、手動中に $I=MV_manual−P−D$ となるよう積分項を調整します。 |
| PIDゲインの調整に時間がかかる | Kp・Ki・Kdを試行錯誤で決めている | オートチューニング | 対象を自動的に加振したりステップ応答を取得したりして、PIDパラメータを求める |
| 取得済みの運転データからPIDを調整したい | モデル作成や再試験に時間がかかる | FRIT | 実際に取得したSV・PV・MVなどのデータから、目標応答に近づくPIDパラメータを探索する |
制御対象の特性に応じて追加するもの
| シチュエーション | 考えられる原因 | 手法 | 実現イメージ |
|---|---|---|---|
| 測定可能な外乱によってPVが変化する | PIDはPVが変化した後でしか補正できない | フィードフォワード制御 | 外乱値から補正MVを計算し、PID出力 + FF補正量 として操作する |
| 直接測定できない外乱がある | 外乱の影響をPIDは偏差としてしか認識できない | 外乱オブザーバー | PVとMVから「本来の応答との差」を見て外乱を推定し、その推定値から補正MVを作る |
| 大きなむだ時間がある | MVを変更しても、その影響がPVに現れるまで時間がかかる | スミス補償 | 制御対象のモデルをPIDの周囲に置き、むだ時間を除いた予測応答を使ってPIDを動かす |
| PIDより速く反応する中間変数を測定できる | 最終PVに外乱が現れるまで待つと補正が遅い | カスケード制御 | 外側PIDの出力を内側PIDのSVとし、内側の速いループで先に外乱を抑える |
| 運転条件によって対象特性が変わる | 低負荷・高負荷などでゲインや時定数が変化する | ゲインスケジューリング | 負荷や温度などの運転条件に応じて、使用するPIDパラメータを切り替える |
| 対象特性が運転中に徐々に変化する | 劣化、負荷変化、温度変化などで最適なPIDゲインが変わる | 適応PID | 運転データから対象特性や制御性能を評価しながら、PIDパラメータを更新する |
| 複数のPIDループが互いに影響する | MV1がPV1だけでなくPV2にも影響する | 非干渉化+PID | PIDの前後に非干渉化処理を入れ、他ループへの影響を打ち消してから各PIDで制御する |
| バルブの摩擦やバックラッシュが大きい | PIDがMVを変えても実際のアクチュエータがすぐ動かない | 摩擦・不感帯補償 | バルブ特性を考慮した補正量をPID出力へ加え、実際の操作量とのズレを補う |
こうして見ると、シンプルなPIDだけでは足りない場合でも、その問題に合った手法を追加することで解決できる可能性があります。
いきなり高度な制御方式へ置き換えるのではなく、既存のPIDを活かしながら、必要な機能だけを少しずつ追加できる。
これも、PIDが長く現場で使われ続けている理由の一つだと思います。
PIDだけでは難しくなりやすい4つのケース
ここまで見てきたように、PIDは必要に応じてさまざまな機能を追加できます。
ただ、対象の特性によっては、PIDだけでは性能を出しにくくなることもあります。ここでは4つの例を見てみます。
① 大きなむだ時間がある
工業用コークス炉で、PIDの設定値を変化させたときの実測結果です。
図1:工業用コークス炉におけるPID制御時の温度応答
緑の破線が設定値、赤線が実測温度、青線がフィルタ後の温度です。
設定値を変えても温度はすぐには追従せず、時間をかけてゆっくり変化していることが分かります。論文では、この対象に約120~150秒のむだ時間があり、元のPIDでは応答に33分以上かかったと報告されています。
出典:R. Zhang, A. Xue, F. Gao, Temperature Control of Industrial Coke Furnace Using Novel State Space Model Predictive Control, IEEE Transactions on Industrial Informatics, 2014, Fig. 4.
② 操作量の制約による積分飽和
モータ速度制御で、操作量が飽和した場合のAnti-Windup方式を比較した実験です。
図2:アンチワインドアップなしPIDで操作量が飽和したときの実験結果
左が無負荷、右が全負荷の結果です。
上段(a)がモータ速度、2段目(b)が操作量に相当するトルク電流、3段目(c)が積分項を示しています。
速度指令を変更すると、(b)のトルク電流が$ +2 / −2 pu$ の上限・下限に張り付いています。それでも偏差は残っているため、(c)を見ると、飽和中も積分項が大きく蓄積しています。
その結果、飽和が解除されたあとも積分項の影響が残り、(a)では速度が目標値を通り越して大きくオーバーシュートしています。特に左側の無負荷条件では、速度反転時に目標の約 $-0.7 pu$ を大きく超えて $-1 pu$ 以下まで下がっています。論文でも、この積分飽和によって応答が設計時の想定から大きく外れると説明されています。
出典:H.-B. Shin, J.-G. Park, Anti-Windup PID Controller With Integral State Predictor for Variable-Speed Motor Drives, IEEE Transactions on Industrial Electronics, 2012, Fig. 7.
③ 運転条件によって対象特性が変わる
実際の複合サイクル発電所で、同じPIDパラメータを低負荷運転と高負荷運転で使用した結果です。
図3:同じPIDパラメータを異なる運転条件で使用した結果
上の低負荷運転では、オレンジの水位PVが設定値付近で安定しています。
一方、下の高負荷運転では、同じPIDパラメータにもかかわらず、水位PVが設定値の上下を大きく変動しています。
高負荷になると、ガスタービンからボイラへ入る排ガス量が増え、ボイラの水位特性も変化します。そのため、低負荷時に合っていたPIDパラメータでは、うまく制御できなくなっています。論文でも、高負荷運転では水位を規定範囲内に維持できなかったと説明されています。
出典:V. Kongratana, B. Suthat, N. Wongvanich, Optimization-based PID Controller Design with Gain Scheduling for the Drum Boiler Level Control of the Industrial Combine Cycle Plant, IMECS 2021, Fig. 6, Fig. 7.
④ 複数の制御ループが強く干渉する
最後は、1つの操作量を変えると、複数の制御量が同時に変わってしまうケースです。
蒸留塔では、還流量と蒸発量のどちらを変えても、上部・下部の両方の製品組成に影響します。論文でも、各ループを個別に調整すると、ループ間の干渉を考慮できず、MIMO全体では外乱発生時に、不安定になる場合があると説明されています。
そして、実際に2つのPIで制御したシミュレーションが下の図です。
図4:相互干渉の強い蒸留塔をPIで制御した結果
左右は原料流量が異なる2つの運転条件です。実線が上部製品、一点鎖線が下部製品の組成を表しています。
t=0 hとt=20 hで外乱を与えると、上部・下部の組成がともに変化し、外乱からの回復に非常に長い時間がかかっています。 論文でも、この結果を「外乱除去が非常に遅い」と評価しています。
出典:H.-E. Musch, Robust Control of an Industrial High-Purity Distillation Column, ETH Zürich, 1994, Fig. 7.5.
ただし、この4つに当てはまるからといって、PIDが使えないわけではありません
むしろ、スミス補償、Anti-Windup、ゲインスケジューリング、デカップリングなど、問題に合った機能を追加することで改善できる場合があります。
これも、既存のPIDを活かしながら少しずつ拡張できる強さだと思います。



