バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回は、これまでの状態空間モデルの構成と今回の構成を確認を確認。
これまではオープンループ制御になっていたのに対し、
今回はPID制御器を入れることでクローズループ制御になる。
というわけで、今回はPID制御の数式について。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
PID制御の基本式

今回から数式まみれになるのか・・・。

まぁここはうまく呑み込んでもらうしかないな。

というわけでPID制御の基本式を出そう。
実はいろいろバリエーションはあるのだけど、私の中の認識ではこれが基本式だ。
\(
u(t)=K_p e(t) + K_i \int e(t)dt + K_d \dot{e}(t)\dots(基本式)
\)

まぁこれは良く見るからなんとなくはわかるけど、
これを変形したり、離散化したり、ブロック図にしたりってのがイメージ湧かないな。

それならば一個ずつ片付けて行こう。
PID制御の変形の動機

ここでPID制御器を変形する。
いわゆる位置型PIDから速度型PIDに変えるって話だな。

どう違うの?

挙動としては全く一緒だな。

なら、なぜ変形するのか・・・。

後々ブロック図にしたときにわかるんだけど、
積分器を最終段に追い出したいんだよね。
積分器が最終段にあると、制御の乗り換えとかが楽になる。
実はほぼ同じ話をかなり前にしてたりする。

そういえばこんなことあったねー。

・・・って言うとでも思ったか?!
こんなん覚えてないよ!

まぁワインドアップ対策で速度型PIDの方が望ましい程度で考えておけば良いよ。
PID制御の変形式

で、変形だが、以下になる。
\(
u(t)=\int\{K_p \dot{e}(t) + K_i e(t)dt + K_d \ddot{e}(t)\}dt\dots(変形式)
\)

以前の話と同じく積分を外に追い出して、その代わり内側の微分階数が増えるってところだね。たぶん。

この式をベースに離散化の計算を進めることになる。

(カオスな予感しかしない・・・。)
まとめ

まとめだよ。
- PID制御の基本式を確認。
- 上記の積分を外側に追いやった変形式を確認。
- 積分を外側に追いやる方がワインドアップ対策がし易いので、こちらが使用されることが多い。
バックナンバーはこちら。
コメント