MATLAB,Python,Scilab,Julia比較 その75【PID制御④】

MATLAB,Python,Scilab,Julia比較 その75【PID制御④】 数値計算
MATLAB,Python,Scilab,Julia比較 その75【PID制御④】

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

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました