みなさん、こんにちは。今回は、お客様からお問い合わせをいただくことのある、”PID制御”について触れたいと思います。
PID制御ってなに?制御ってなに?
「PID制御」を説明する前に、そもそも「制御」とは何でしょうか? かなり大雑把な表現で説明しますと、あるシステム(「系」とも言います)を目標値に向かって近づける動作です。
ここでは、古くからある「古典制御」の中の、PID制御を紹介します。PID制御によって、システムを目標値に向かって素早く反応させ、オーバシュートなくソフトランディングさせることができます。
たとえば、モーターの制御を考える
センサーから得られた値に応じて、アクチュエータへの制御量を変化させ、システムを目標値に近づけるシステムを考えます。ここでは、回転角度を検出できるエンコーダーが取り付けられたモーターのPID制御を例に挙げます。
下図のような絵(「ブロック線図」と言います)で説明します。細かな記号の意味は割愛します。
エンコーダが付属したモーターの回転を考えます。上の図において、アクチュエータをモーター、センサーをエンコーダと置き換えて考えてみてください。目標の回転速度でローターを回転させる際、ローターにはイナーシャ(慣性力)や外力(外乱)があり、目標値と現在値の間には差(偏差)が発生してしまいます。
この偏差を小さくし、できるだけ早く目標値に近づけるために、PID制御の出番となります。
回転速度[rad/s]を目標値して、コントローラへ入力します。コントローラでは、今回説明するPID制御による演算処理を行います。
操作部(アンプ)では、においてによって演算された値によって電流[A]を出力します。
アクチュエータは、ここではモーターを意味します。電流値[A]に応じて、回転速度[rad/s]を出力します。
センサーは、ここではエンコーダーを意味します。回転速度[rad/s]をコントローラへフィードバックします。
PID制御すると
ここでは、①P制御、②I制御、③D制御の順にゲインパラメタKを変化させたと考えます。
説明のため、下図のようなグラフをつかって説明します。横軸が時間t、縦軸が回転速度Vとしてください。
P制御(比例制御)
まず、P制御をおこなった場合を考えます。P制御とは、設定値と現在値の偏差𝑒(𝑡)が操作量に比例する制御です。負荷変動や系の固有特性によって、偏差𝑒(𝑡) が残ることがあります。これでは、目標値には収束しません。
I制御(積分制御)
I制御とは、オフセットしている時間積分(時間と速度を乗じた面積に相当)に比例する制御です。P制御にI制御を組み合わせた、PI制御を行うと偏差𝑒(𝑡)を解消できますが、目標値𝑉𝑑 に対して現在値𝑉が大きく変動する“ハンチング”が発生しやすくなります。
D制御(微分制御)
外乱など急激な変化である偏差𝑒(𝑡)の微分成分𝑑/𝑑𝑡 𝑒(𝑡)に比例する制御です。PI制御に加えてPID制御を行うと、変化の傾向(偏差の微分成分)に対応する制御が加わるため、現在値𝑉が目標値𝑉𝑑 に収束するまでの時間が短くなり、なおかつ偏差𝑒(𝑡)も抑えられます。
このようなPIDの制御を組み合わせ、最適なゲインを特定することで、いち早く目標値に近づけることができます。
KeiganALIでのPID制御は?
KeiganALIの走行でPID制御について説明します。
KeiganALIでは、ライントレースモードでの走行時、今回説明しましたPIDゲインをユーザーが調整することができます。
例えば、KeiganALIに台車を連結した場合や、搬送ワークを積載した場合、トレースするラインの曲率を変えた場合に、KeiganALIがラインを逸脱したりオーバーシュートすることがあります。このような場合は、PIDゲインを調整すると、KeiganALIの走行を安定させることができます。
用途に応じて、最適なPIDゲインを設定いただくようにお願いします。
今回は、「PID制御」についてお話ししました。
次 → KeiganALI・"PTP制御とCP制御"のはなし