2022-11

数値計算

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

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

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

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

MATLAB,Python,Scilab,Julia比較【バックナンバー】

はじめに MATLAB,Python,Scilab,Julia比較するシリーズ。 といっても基本はベクトル行列ベースの演算に留め、各環境独自の機能はあまり使わない方針。あくまでベクトル&行列でどこまでできて、ベクトル&行列に留めているが故に...
数値計算

MATLAB,Python,Scilab,Julia比較 その80【PID制御⑨】

JuliaでDCモータ状態空間モデルをPID制御シミュレーション。 Juliaも構造体を定義できるが、structだと更新不可になる。よってmutableを使って更新可能な構造体にする必要がある。 シミュレーション結果は他のツール言語と同じ結果が得られた。
数値計算

MATLAB,Python,Scilab,Julia比較 その79【PID制御⑧】

ScilabでDCモータ状態空間モデルをPID制御シミュレーション実施。 コード自体はMATLABと一緒。 構造体の生成の仕方も一緒だが、内部的には連想配列で実現されている。 シミュレーション結果もOK。
数値計算

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