状態量と各種微分方程式
各種微分方程式が導出されたので、これらを組み合わせるのみ。
状態量と、これまでの微分方程式を再掲
状態量
\(
\boldsymbol{x}=
\begin{bmatrix}
\theta(t) \\
\omega(t) \\
I(t)
\end{bmatrix}
\)
各種微分方程式
\(\dot{\theta}(t)=\omega(t)\dots(1)\)
\(\dot{\omega}(t)=\displaystyle \frac{K}{J}I(t)\dots(2)\)
\(\dot{I}(t)=\displaystyle -\frac{K}{L}\omega(t)-\frac{R}{L}I(t)+\frac{1}{L}E(t)\dots(3)
\)
状態方程式
上記の式より状態方程式を組み上げる。
\(
\begin{bmatrix}
\dot{\theta}(t) \\
\dot{\omega}(t) \\
\dot{I}(t)
\end{bmatrix}=
\begin{bmatrix}
0 && 1 && 0 \\
0 && 0 && K/J \\
0 && -K/L && -R/L
\end{bmatrix}
\begin{bmatrix}
\theta(t) \\
\omega(t) \\
I(t)
\end{bmatrix}+
\begin{bmatrix}
0 \\
0 \\
1/L
\end{bmatrix}
E(t)
\)
表現がベクトル、行列になっただけで、微分方程式のままであるとがわかると思う。
出力方程式
出力方程式は、状態量から出力したい要素を選択するのみ。
角度\(\theta\)だけを出力する場合は以下になる。
\(
\boldsymbol{y}=
\begin{bmatrix}
1 && 0 && 0
\end{bmatrix}
\begin{bmatrix}
\theta(t) \\
\omega(t) \\
I(t)
\end{bmatrix}+
\begin{bmatrix}
0
\end{bmatrix}
E(t)
\)
実験段階だと全部見たいことが多いため、以下にしておく。
\(
\boldsymbol{y}=
\begin{bmatrix}
1 && 0 && 0 \\
0 && 1 && 0 \\
0 && 0 && 1 \\
\end{bmatrix}
\begin{bmatrix}
\theta(t) \\
\omega(t) \\
I(t)
\end{bmatrix}+
\begin{bmatrix}
0 \\
0 \\
0
\end{bmatrix}
E(t)
\)
各行列
これにより各行列が定義される。
状態行列
\(
A=
\begin{bmatrix}
0 && 1 && 0 \\
0 && 0 && K/J \\
0 && -K/L && -R/L
\end{bmatrix}
\)
入力行列
\(
B=
\begin{bmatrix}
0 \\
0 \\
1/L
\end{bmatrix}
\)
出力行列
\(
C=
\begin{bmatrix}
1 && 0 && 0 \\
0 && 1 && 0 \\
0 && 0 && 1 \\
\end{bmatrix}
\)
直達行列
\(
D=
\begin{bmatrix}
0 \\
0 \\
0
\end{bmatrix}
\)
これでDCモータの状態空間モデルは完成。
だたし、正しさの証明はシミュレーションを行うしかない。
※ MATLAB、Python、Scilab、Juliaによるシミュレーション実施予定。
まとめ
- DCモータ状態空間モデルを導出するため以下を実施。
- 状態量の定義。
- 各種微分方程式。
- 微分方程式の変形。
- 状態方程式の作成。
- 出力方程式の作成。
- 確からしさはシミュレーションで確認。
MATLAB、Python、Scilab、Julia比較ページはこちら
コメント