私がボイラーマンだ

3度の飯よりボイラー好き。ボイラーをこよなく愛する火力発電所勤務の変態ボイラーマンの日常を綴ったブログ

どこまで弄るか?PID制御について

プラントの温度や圧力を調整するバルブは基本的に自動で制御されており、我々運転員が普段手動で介入することはありません。

 

ただ、肝心の制御がうまくいっておらずその原因が制御パラメータの応答性に問題がある場合は、PID制御の各パラメータ自体を自分たちで調整することがあります。

 

PID制御について

それぞれProportional(比例)、Integral(積分)、Derivative(微分)の略称で、それぞれの動作をP動作、I動作、D動作と言い、この3つの制御は単体では使用されず、常にPI制御やPID制御と言ったようにそれぞれを組み合わせて使用します。

 

私は制御関係は専門分野ではありませんので簡単に説明します。

・P動作

目標値と現在値の差に比例した動作を行う制御のこと。

入力値は比例ゲイン(Kp)と呼ばれ、大きい値だと目標と現在値の偏差が小さくても大きな操作量を得ますが、その分操作がオン・オフ制御に近い動作となりオーバーシュートやハンチングが起こりやすくなります。

※オーバーシュート:目標値から大きく行き過ぎてしまう現象

ハンチング:現在値が目標値に対して上下し続けてしまう現象

 

逆に小さくすると目標から離れた値から操作を変更しだすので目標値に中々辿り着かないオフセットという現象が起こります。

 

操作量の計算式は

MV:操作量、Kp:比例ゲイン、e:偏差量とすると

MV=Kp・e

となります。

例:目標温度SV=100℃ 現在値PV=80℃で、Kp=0.5に設定した場合の操作量は

MV=0.5×(100-80)=10によりMV=10%出力となります。

Kpを上げていって5以上の数値にしても、MVは100%以上の数値にはなりません。

 

・I動作

P動作のみの制御で起こるオフセットという現象に対して、それを無くすように微調整を行うための制御です。

値が小さいほど短時間で制御するようになりますがその分オーバーシュートやハンチングも起こりやすくなります。

 

値が大きいとオーバーシュートは少なくなりますが目標への到達時間が遅くなります。

 

I動作による操作量の計算式は

MV:操作量、Kp:比例ゲイン、e:偏差量、Ti:積分時間とすると

MV=Kp/Ti∫e dt

となります。

P動作と組み合わせた時のPI動作による操作量の計算式は

MV=Kp(e+1/Ti∫e dt)

となります。

計算式からも分かる通り、P動作と違って比例ゲインに対して積分時間は反比例するので、積分時間が小さいほど大きな操作量を得るという感じです。

 

・D動作

外乱などによる現在値の変化に対してそれを抑えるような動作を行ったり、制御応答速度を向上させたりするために付加される制御です。

 

例えば、圧力や流量制御のようにバルブの操作量変化に対してすぐ温度・流量の変化として現れるような制御であれば、通常はPI制御だけでも問題ありません。

しかし温度制御やボイラーの蒸気圧力制御のように、操作量変化に対して現在値の変化に遅延が生じる制御に関してはこのD動作を組み合わせることで制御の応答性を高めることが出来ます。

 

D動作は値が大きいほど強く作用し、外乱による変動を素早く制御しますが、オーバーシュートやハンチングは起こりやすくなります。

値を小さくするとオーバーシュートやハンチングは抑えられますが外乱を抑制する速度は遅くなります。

 

D動作による操作量の計算式は

MV:操作量、Kp:比例ゲイン、e:偏差量、Td:微分時間とすると

MV=Kp・Td de/dt

となります。

PI動作と組み合わせた時のPID動作による操作量の計算式は

MV=Kp(e+1/Ti∫e dt+Td de/dt)

となります。

D動作はP動作と同じくKpに対して比例した操作量となります。

ちなみにD動作とP動作を組み合わせたPD動作だとオフセットを無くすことが出来ない為、必然的にD動作を組み合わせた制御はPID制御となります。

 

PID制御の例にはよく、車のアクセルやブレーキによる速度の制御や鍋で水の温度を管理するものがよく使われています。

水の温度管理を例に考えると

①鍋に水を入れて火をつける。水を沸騰させたいので目標値SVは100℃。最初は水が20℃と冷たいので火を強めにかけ、水温が上がるにつれて火加減を調整する(現在値と目標値の偏差を見ながら操作量を変えるP動作)

 

②水温が100℃に近づいてきたので火を弱めるが、P動作のみでは水温を95℃前後でずっと制御してしまい、いつまでも100℃に到達できないオフセットが生じてしまう。

 

③オフセットが現れた場合、更に火加減を微調整することで水温を100℃に合わせに行く(I動作)

 

④100℃に到達した後で、鍋の中に風が吹きつけられたり氷などの異物が入ったりと水温に変化が生じる場合(外乱)、その変化量を見て素早く火加減を調整にかかる(D動作)

こんな感じで、自分たちが無意識化でPID制御を行ってたりします。

 

現場ではこのPゲイン、Iゲイン、Dゲインの値をそれぞれ調整していくことになります。

 

チューニング方法

エネルギー管理士や電験にも出てくるPID制御の調整方法には「限界感度法」や「ステップ応答法」といった方法があります。

 

具体的な内容は・・・分かりません(笑)

 

制御関係は得意といったわけでもないし専門的に勉強してきたわけでもないので、あまりちゃんと勉強しておりません・・・

 

そんなレベルでPID弄って大丈夫なん?

って思われるかもしれませんが心配ご無用。

 

そもそもプラントの制御は専門職の人が予め調整してくれているので0から全てパラメータを調整することはまず無いです。

 

我々はその人たちが調整したパラメータをちょっと変えるだけなので、厳密に計算して数値を決めなくても前述したPID動作の計算式の特性さえ知っていれば、後は適当に変更するだけでも案外うまくいったりします。

それにこういったパラメータ調整を行う時ちゃんと計算をした数値にしたとしても、うまくいくことってあんまり無いんですよね。

それよか、数値変化を見ながら人力で調整する方が実用的ですし、人によってはこの方法を推奨してたりします。

 

 

これは私の前職で使用していたPIDチューニング管理用の表の一部になります。

前述したように制御遅れの大きいボイラーマスタや温度制御にはD動作が使用されています。

 

これはプラント建設試運転で初めにメーカーが設定した値で、この値をプラントの運転状況の変化や設備更新等の際に自分たちで変更することがありました。

 

私は制御素人なので正攻法のやり方はわかりませんが、問題となっているのがオーバーシュートやハンチングなのか、制御の応答性なのか等によりPID動作のどれを弄るかを決定し、値を少しづつ上下させていってバルブ応答性を確認しながら最適な値に合わせていくといった感じです。

 

こんなふんわりとした感じでもまぁまぁうまく制御出来るのがPID制御の良い所ですね。

本当ならちゃんと専門の業者を呼んで調整してもらった方が安全・確実なのですが、こういった計装・制御関係は非常に高額になることが多く、メーカー来社して確認してもらうだけの作業で100万単位掛かることすらあります。(前職でポンプにインバータを取り付けて回転制御のPID調整をやってもらおうとした際の見積もりが300万だったと聞いたことも・・・)

 

だったら多少ポンコツ制御でも良いから自分達で調整しよう、と言う所は決して少なくないんじゃないでしょうか。

 

最後に

はっきり言ってPIDの調整なんて年に1度あるかどうかだし、そもそも運転員レベルでこの調整を頻繁に行うことはないと思います。

 

また、制御に不具合があった時の原因は経験的にPID制御が悪いのではなく大半が発信機やバルブ本体、プロセスに異常がある場合がほとんどです。

よって制御が乱れていた場合でもむやみにPIDを弄るのではなく、まずは現場の異常の有無を確認し、すべて正常であることを確認したうえで最終的にPIDチューニングを行った方が良いかと思います。