バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回はDCモータに於ける、状態方程式を導出した。
というわけで今回は出力方程式
登場人物
博識フクロウのフクさん
イラスト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
出力方程式
残りは出力方程式だけど、
こっちはチョロそうだね。
微分方程式とは無関係な感じだし。
その認識でOKだ。
よって、組み上げて見て。
マジか・・・。
まぁそれほど難しい話じゃなくて、
出力したい状態を行列で指定するだけだもんね。
とりあえず、角度\(\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モータの状態空間モデルは完成だね。
これを元にシミュレーションしないと確からしさは分からないけどね。
それが残ってたか・・・。
まぁ以前作った状態空間モデルのシミュレーションコードをベースで割とそのままうごくとは思うよ。
なるほど。
そこが状態空間モデルの良いところだね。
まとめ
まとめだよ。
- 出力方程式を導出。
- 基本は、出力させたい項を出力行列で指定するだけ。
- 実験段階では全状態を見たいことが多いので全部出力指定にすることが多い。
- 各種行列を列挙。
- シミュレーションしないと確からしさはわからないが、以前のシミュレーションコード使い回しでいけそう。
- これが状態空間モデルの良いところ。
バックナンバーはこちら。
コメント