シャオミンの水を足す生活例でPIDを理解する
Thread Content
PIDの重要性は言うまでもなく、自動制御分野で広く応用されている。ジェイソンは、シャオミンが水桶に水を入れる過程を記録することで、典型的なPIDアルゴリズムの流れを示し、例を通して初心者がPIDを理解するための新たな視点を提供している。 ジェイソンは、具体的な例を通して以下の5つの概念を説明したいと考えています:1、PIDとは何か、なぜPIDが必要なのか、PIDがどのような役割を果たすのかを簡単に説明すること。2、P(比例要素)の働きを理解すること:基本的な比例要素の欠点として、定常誤差が生じること。 疑問:定常誤差とは何か、なぜ定常誤差が生じるのか。 3、I(積分ステップ)の役割を理解する:定常誤差を除去する。 欠点:オーバーシュートが増加する疑問:なぜ積分によって定常誤差が消えるのか?
4. D(微分要素)の働きを理解する:慣性応答速度を高め、オーバーシュートの傾向を弱める
疑問:なぜオーバーシュートが弱まるのか?
5. 各比例係数の働きを理解する
http://yunrun.com.cn/upload/201908/20/201908200109200498.png
ここから本題に入ります。 1、PIDとは何か、そしてなぜPIDが必要なのか? 以下はPID制御の全体ブロック図で、そのプロセスは次のように説明される。出力目標を設定し、フィードバックシステムが出力値を返す。もしそれが目標値と一致しなければ誤差が生じ、PIDはこの誤差に基づいて入力値を調整し、出力が設定値に達するまで続ける。 http://yunrun.com.cn/upload/201908/20/201908200211063978.png 質問:では、なぜPIDが必要なのでしょうか?例えば、私が温度を制御する場合、温度値を監視することはできず、温度値に達したら停止するのでしょうか?ここでまず私たちの目標について説明しなければなりません。なぜなら、私たちのあらゆる制御というのは、設定した目標を達成できる出力を得ることに他ならないからです。つまり、目標となる温度値を設定した場合、どのような温度変化を望むのかということです。 例えば、目標温度を30℃に設定する場合、目的は図1のような効果を得ることです。つまり、速やかかつ振動なく30℃に到達させたいのです。 http://yunrun.com.cn/upload/201908/20/201908200221422995.png 図1 PID制御システムの出力応答目標 これで皆さんも理解できたと思いますが、温度に達したらすぐ停止する方法を使えば、要求がそれほど高くなければ問題ないかもしれません。しかし、図1のような要求は確実に満たせません。なぜなら、温度が一定値に達しても残熱によって温度はさらに上昇し続け、また温度自体も空気を通じて熱が放散されるからです。まとめ:私たちがPIDを必要とする理由は、通常の制御手法では出力を迅速かつ安定して設定値に到達させることができないからに他なりません。 もしまだ疑問に思うなら、よく使われる例を使って具体的に説明しましょう。 2、シャオミンが水桶に水を入れる例からPIDを理解する yunrun.com.cn/tech/2683.html 始める前に、まず式を出しておきましょう: 一見すると、この式はかなり難しそうです。実は、微分と積分の基本的な定義を知っていれば理解できます。そして最終的に、私たちのあらゆる努力も、この式を理解するためのものです。そうでなければ、どんなに巧妙な比喩でも、真に理解し、使いこなすことはできません。 ここではそれを離散化します(もしこのステップが早すぎるようであれば、後ほどその説明を加えます)。式において、Kpは比例定数、Ki=(Kp×T)/Tiは積分定数、Kd=(Kp×Td)/Tは微分定数です。以下、ジェイソンが一つの例を通して、この方程式がどのように機能するかを具体的に示します。 ①シャオミンはある任務を受けました。水桶の中の水の高さを常に1mに保つ必要があり、現在その水桶には0.2mの水が入っています。そこでシャオミンはP(比例)法を用いて水を加えます。つまり、毎回1mとの誤差を測定し、その誤差に比例した量の水を加えるのです。例えば、Kp=0.5とする。最初に水を加える場合、誤差は1-0.2=0.8mとなり、加える水の量はKp×0.8=0.4mとなる; 2回目の水の添加では、誤差は1-0.4=0.6mとなり、加える水量はKp×0.6=0.3mです; ...... http://yunrun.com.cn/upload/201908/20/201908200252454737.png http://yunrun.com.cn/upload/201908/20/201908200252553253.png これは完璧だと思いました。つまり、比率の問題も完璧に解決できるはずです。しかし、結論を出す前に、シャオミンの新しい課題を見てみましょう。②シャオミンの新しい課題:バケツがあるのですが、底に穴が開いています。それでも高さ1mを保つ必要があります。現在、バケツの中には0.2mの水が入っていますが、水を加えるたびに0.1mが漏れ出してしまいます。この例は、モーターの摩擦による抵抗や損失といった、実際の工事で見られる例に近いです。 では、シャオミンの問題を解決しましょう。方案1は引き続きP(比例制御)U=Kp×eを用い、Kpを0.5とします。するとU=0.5×eとなり、L(最終水位)は今回入力されたUに前回の水位を加えたものです。 最初に水を加える際:誤差は1-0.2=0.8mなので、加える水の量はKp×0.8=0.4mとなり、最終的な水位は0.4+0.2-0.1=0.5mとなります。 2回目の水の添加:誤差は1-0.5=0.5mなので、添加する水量はKp×0.5=0.25mとなり、最終的な水位は0.5+0.25-0.1=0.65mとなる......しかし問題が見つかった。水位は最終的に0.8mで安定したのだ。これも理解しやすい。誤差が0.2mの場合、添加する水量は0.1mで、毎回添加される量がちょうど漏れ出る量に等しくなるからだ。ここで定常誤差という概念が導入されます。定常誤差とは、システムが定常状態に達したときの目標値との誤差のことです。 ではKpを大きくすると、誤差が小さくなることがわかりました; では、さらに大きくしましょう。システムが振動し始めたことがわかります。ここではExcelの折れ線グラフを使用し、パラメータを調整して変化を観察できます。結論として、比例制御によって定常誤差が生じ、それは除去できません。比例定数を大きくすると定常誤差は減少しますが、あまりに大きくなるとシステムが振動し、不安定になります。 定常誤差を除去するための案2:比例制御に積分制御を加え、PI(比例積分制御)を用いる。積分制御とは、過去の誤差をすべて合計し、積分定数で乗じるものである。 この式はどういう意味で、なぜ定常誤差を消去できるのでしょうか?まずはKp=0.5、Ki=0.3と設定しましょう(この値はここでは任意に設定したものです)。最初に水を加えると、誤差は0.8となり、比例項はKp×0.8=0.4m、積分項はKi×0.8=0.24mとなります。したがって、加える水の量uは0.4+0.24=0.64mとなり、最終的な水位は0.2+0.64-0.1=0.74mとなります。2回目に水を加えると、誤差は0.26となり、比例項はKp×0.26=0.13m、積分項はKi×0.26=0.318mとなります。よって、加える水の量uは0.13+0.318=0.448mとなります。最終水位0.74+0.448-0.1=1.088m http://yunrun.com.cn/upload/201908/20/201908201410588056.png プロセスは波乱に満ちていたものの、最終的には設定値に安定することができました。 Kiを大きくしたらどうなるでしょうか?ここではExcelの折れ線グラフを使用し、パラメータを調整して変化を観察できます。結論:①偏差がある限り、積分は絶えず累積され、誤差が0になるまで続きます。その後、積分項はもはや累加せず、定数となって定常誤差を相殺することができます。 表2からわかるように、システムが安定した後の積分項は約0.1です。 ②積分を導入することで定常誤差は除去されるが、オーバーシュートが増加し、Kiが大きくなるとオーバーシュート量も増える。 オーバーシュートを除去するために、微分作用を導入します。 現在の式は次のようになります。まずはKp=0.5、Ki=0.5、Kd=0.3と設定します。最初に水を加えると、誤差は0.8mです。比例項はKp×0.8=0.4m、積分項はKi×0.8=0.24m、微分項は0です(水を加える前の水位差が0.8mであり、加えられる水量Uが0.4+0.4=0.8mなので、最終的な水位は0.2+0.8-0.1=0.9mになります)。2回目に水を加えると、誤差は0.1mです。比例項はKp×0.1=0.1m、積分項はKi×0.1=0.1m、微分項はKd×0.1=-0.21mです。加えられる水量uは0.1+0.1-0.21=0.0mで、最終的な水位は0.9+0.0-0.1=0.8mになります。http://yunrun.com.cn/upload/201908/20/201908201501401752.png 上記のKp=0.5、Ki=0.5の場合と比べると、この図では振動が抑えられていることがわかります。これは微分作用が働いているからです。表3を見ると、2回目の誤差が0.1の時、前回の誤差が0.8の時、微分値は負の数になっており、結果の急激な変化を防いでいることがわかります。 結論:微分によってオーバーシュートの傾向を弱めることができる。 しかし、この波形は依然として振動していますね。そうです、忘れてはいけませんが、この値は適当に設定したものです。適当に値を設定しただけではPIDが完璧に動作するとは期待できません。自分でExcelを使ってシミュレーションしてみればわかりますが、KiやKdの値を大きく設定すると、このシステムは大幅に振動し始めます。 したがって、Kp、Ki、Kdを調整する必要があり、つまり出力が図1の要求を満たすようにする方法を試すわけです。もちろん、この例では実際にはPIを使えばよいのですが、ここではその動作原理を理解するために示しています。 PIDパラメータのチューニングを熟知し、自動制御システムを自動運転に切り替えることができるかどうかは、エンジニアの自動化スキルの水準を示している。しかし、実際にPID制御やPIDパラメータのチューニングを真に習得している人は多くない。昌晖計測器ネットの「PID調節器」製品ページにて、白志剛エンジニアが執筆した『自動調節システム解析とPIDチューニング』を無料で公開しています。本書には高度な理論式は含まれておらず、すべて実践的なノウハウです。この本の真髄を理解すれば、高校卒業程度の計測器技術者でもPIDパラメータをチューニングし、PID制御を徹底的にマスターすることができます!役立つ上に無料です。急いで昌晖計器網の製品ページ「PID調節器」から、この書籍を無料で入手しましょう! http://yunrun.com.cn/upload/201908/19/201908192101476884.png