数値計算

数値計算

MATLAB,Python,Scilab,Julia比較 その78【PID制御⑦】

MATLABでやったDCモータ状態空間モデルをPID制御をPython(Numpy)で実施。 Pythonの場合、構造体はclassで実現。 事前にclassを定義する必要はある。 MATLABと同様の結果が得られた。
数値計算

MATLAB,Python,Scilab,Julia比較 その77【PID制御⑥】

PID制御器のブロック線図と全体構成を再掲。 上記をMATLABで実現。 接続に関してはコード上では分かり難いので全体構成図と見比べながら確認した方が良い。 シミュレーション実施。 u(t)の挙動と見るとPID制御っぽい挙動になっている。 各PIDゲインを調整すると挙動が変わるはず。
数値計算

【入門】状態空間モデルをPID制御【数値計算】

DCモータの状態空間モデルを制御するためPID制御器を追加する。 上記を実現するためPID制御器の離散化を行う必要がある。 PID制御器は速度型PIDとする。 ワインドアップ対策の都合、速度型PIDを使うことが多い。 数式は複雑っぽく見えるがブロック線図としてはシンプル。
数値計算

MATLAB,Python,Scilab,Julia比較 その76【PID制御⑤】

PID制御離散化式からブロック線図を作成。 同一の数式が埋まっている箇所は同一の信号線を参照できる。 よって、比較的にシンプルになる。 正しさの証明はやはりシミュレーション。 構成図、ブロック線図、ソースコードの3点セットで見て行けばそれほど混乱はしない。(たぶん)
数値計算

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

PID制御の数式をオイラー法で微分解決して離散化。 一見するとカオスには見えるが、似たような式が並んではいる。 上記がブロック線図にする際にいい感じに効いてくる。(たぶん)
数値計算

MATLAB,Python,Scilab,Julia比較 その74【PID制御③】

PID制御の基本式を確認。 上記の積分を外側に追いやった変形式を確認。 積分を外側に追いやる方がワインドアップ対策がし易いので、こちらが使用されることが多い。
数値計算

MATLAB,Python,Scilab,Julia比較 その73【PID制御②】

これまでの状態空間モデルの構成を確認。 オープンループ制御になっている。 今回の構成を確認。 PID制御でクローズループにする。 角速度ωをフィードバックすることで角速度制御をすることが分かる。
数値計算

MATLAB,Python,Scilab,Julia比較 その72【PID制御①】

DCモータ状態空間モデルを制御すべくPID制御器を追加予定。 上記に至るロードマップ提示。 「PID制御器の離散化」がやや数式まみれになるためちょっと鬼門。 オイラー法による微分解法するだけなので比較的簡単にするつもり。
数値計算

【入門】状態空間モデル(DCモータ)Julia【数値計算】

DCモータ状態空間モデルをJuliaでシミュレーション。 かなりMATLABと近似のコードになる。 linspaceがrangeになってるくらい。 シミュレーションも同一であり、想定通り。
数値計算

【入門】状態空間モデル(DCモータ)Scilab【数値計算】

DCモータ状態空間モデルをScilabでシミュレーション。 演算自体はMATLABと同一。 差はグラフ表示の微調整のところ。 シミュレーションも同一であり、想定通り。