バックナンバーはこちら。
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制御の離散化か・・・。

まぁ覚えるとかじゃなくて、考え方とその過程をしっていれば良いと思うよ。
そんなに頻繁にやることでもないしね。

そういうことなら少し気が楽になった。
離散化

ざっと解法を貼ってしまおう。
微分解法はオイラー法だ。
注意点は[Nsec]という単位時間を最終的には\(T_1\)に置き換えて単位時間も調整可能にしている点だな。
\(
u(t)=\int\{K_p \dot{e}(t) + K_i e(t)dt + K_d \ddot{e}(t)\}\dots(変形式)
\)
\(\dot{e}(t)\)と\(\ddot{e}(t)\)をオイラー法で解決する。
\(
\eqalign{
\dot{e}(t)&=&\frac{e(t)-e(t-\Delta T)}{\Delta T[Nsec]}\cr
&=&\frac{e(t)-e(t-\Delta T)}{\Delta T/T_1}\cr
&=&\frac{\{e(t)-e(t-\Delta T)\}T_1}{\Delta T}\cr
}
\)
上記の\(e(t)\)に\(\dot{e}(t)\)を代入することで2階微分となるため、
\(
\eqalign{
\ddot{e}(t)&=&\frac{\{\dot{e}(t)-\dot{e}(t-\Delta T)\}T_1}{\Delta T}\cr
&=&\frac{\displaystyle\frac{\{e(t)-e(t-\Delta T)\}T_1}{\Delta T}-\frac{\{e(t-\Delta T)-e(t-\Delta T-\Delta T)\}T_1}{\Delta T}}{\Delta T}\cr
&=&\frac{T_1}{\Delta T}\{\frac{T_1}{\Delta T}\{e(t)-e(t-\Delta T)\}-\frac{T_1}{\Delta T}\{e(t-\Delta T)-e(t-2\Delta T)\}\}
}
\)
積分に関しては以下で近似
\(
\displaystyle\int x(t)dt=\sum x(t-\Delta T)+x(t)\frac{\Delta T}{T_1}
\)
それぞれをPID制御の変形式に代入する
\(
\eqalign{
u(t)&=&\int\{K_p \dot{e}(t) + K_i e(t)dt + K_d \ddot{e}(t)\}dt\cr
&=&\int\{\color{red}{\{K_p\frac{T_1}{\Delta T}\{e(t)-e(t-\Delta T)\}}\color{black}+K_ie(t)\cr
&+&K_d\frac{T_1}{\Delta T}\{\color{blue}{\{\frac{T_1}{\Delta T}\{e(t)-e(t-\Delta T)\}}\cr
&-&\color{blue}{\frac{T_1}{\Delta T}\{e(t-\Delta T)-e(t-2\Delta T)\}}\color{black}\}\}dt
}
\)
離散化した結果と見て

やっぱりカオス化したぁぁぁ!!

それほどカオスってこともないけど・・・。

最後の式の色分けしたところを見ると分かるけど、ある程度パターン化はされてはいる。
これはブロック線図にしたときに効果を発揮するところだな。

つまりブロック線図にしたら、実は思ったほど複雑にはならないってこと?

端的に言うとそうだね。
まぁ次回作成するブロック線図と今回の数式を見比べれて、
どこがどこに対応してるかだけでも把握しておけば良いと思うよ。
まとめ

まとめだよ。
- PID制御の数式をオイラー法で微分解決して離散化。
- 一見するとカオスには見えるが、似たような式が並んではいる。
- 上記がブロック線図にする際にいい感じに効いてくる。(たぶん)
バックナンバーはこちら。
コメント