みなさん,こんにちは
おかしょです.
大学で制御工学を学ぶときは,最初に古典制御を学ぶと思います.
古典制御では伝達関数やボード線図などを使用して,システムの解析や制御器の設計を行います.
しかし,対象とするシステムは1入力1出力系です.多入力多出力系を扱うには現代制御の理論を取り入れる必要があります.
現代制御工学では伝達関数ではなく,状態方程式を用いてシステムの入出力関係を表現します.
この記事では伝達関数を状態方程式に変換する方法と,その逆の状態方程式を伝達関数に変換する方法を解説します.
伝達関数を状態方程式に変換することで古典制御から現代制御へと適用できるようになります.
この記事を読むと以下のようなことがわかる・できるようになります.
- 伝達関数から状態方程式への変換方法
- 状態方程式から伝達関数への変換方法
この記事を読む前に
この記事では伝達関数や状態方程式に関しては解説をしていません.
それらの変換方法を解説します.
なので,伝達関数について知りたい方や知らない方は以下の記事を先に読んでおくことをおすすめします.
伝達関数を状態方程式へ変換する方法
上記の記事でも解説をしていますが,伝達関数というのはシステムの入力と出力の関係を表し,ラプラス変換された形で表されます.
それに対して状態方程式は,行列形式の微分方程式で表されます.
そのため,伝達関数から状態方程式に変換するためには逆ラプラス変換を最初にする必要があります.
例えば,以下のような2次遅れ系の伝達関数があったとします.
$$ \frac{Y(s)}{R(s)} = \frac{\omega^2}{s^2+2\zeta \omega s+\omega^2} $$
これを逆ラプラス変換します.
\begin{eqnarray}
Y(s)\cdot (s^2+2\zeta \omega s+\omega^2) &=& R(s) \cdot \omega^2 \\
\ddot{y}(t)+2\zeta \omega \dot{y}(t)+\omega^2 y(t) &=& \omega^2 r(t) \\
\ddot{y}(t) &=& -2\zeta \omega \dot{y}(t)-\omega^2 y(t)+\omega^2 r(t)
\end{eqnarray}
この時,初期値はすべて0としています.
これで微分方程式を求めることができました.
次は行列形式にして状態方程式を求めます.
この時のポイントは,最高階数の微分よりも一つ少ない微分回数の変数ともう一つ少ない微分回数の変数を状態量とすることです.
上の二次遅れ系の例で言うと,最高階数の微分は左辺の出力の2階微分\(\ddot{y}(t)\)です.
それの一つ少ない微分回数,つまり1階微分の出力\(\dot{y}(t)\).
さらに一つ少ない微分回数の出力\(y(t)\)の二つを状態量として扱います.
この二つの状態量を用いて,状態方程式を求めます.
状態量の並べ方は自由に決めて構いませんが,一般的には上の方が微分回数が多くなるようにします.
今回の場合は,状態量\(x=\left[\dot{y}(t)\ y(t)\right]^T\)となります.
状態方程式は以下のような形で書かれます.
$$ \frac{d}{dt} x = Ax+bu $$
このように状態量を微分した方程式を求めます.
先程の状態量の並べ方の場合,一番上の行には1階微分の\(\dot{y}(t)\)が入っています.
これをさらに微分すると二回微分になるので,この時の右辺は伝達関数を逆ラプラス変換した式と一致する必要があります.
そして,2行目は左辺は出力を1階微分したものなので状態量の1行目となるようにすればいいです.
つまり,2行目は入力の項である右辺の第2項が影響しないようにします.
上記のようにして状態方程式を求めると,以下のようになります.
\begin{eqnarray}
\frac{d}{dt}
\begin{bmatrix}
\dot{y} \\
y
\end{bmatrix}
=
\begin{bmatrix}
-2\zeta \omega & -\omega^2 \\
1 & 0
\end{bmatrix}
\begin{bmatrix}
\dot{y} \\
y
\end{bmatrix}
+
\begin{bmatrix}
\omega^2 \\
0
\end{bmatrix}
r
\end{eqnarray}
上式が2次遅れ系の伝達関数を状態方程式に変換した結果になります.
状態方程式を伝達関数に変換する方法
状態方程式を伝達関数に変換するには,最初に状態方程式から一つの式を取り出す必要があります.
伝達関数を扱う古典制御工学では1入力1出力のシステムを取り扱います.
それに対して,状態方程式で表現する現代制御工学では多入出力系も扱うことができます.
状態方程式は多入出力を扱っているため,伝達関数に変換する場合は1部の出力や入力を切り捨てる必要があります.
これが古典制御工学の欠点でもあります.
古典制御工学ではすべての状態量や入力を保証することはできないので,多入出力のシステムでは現代制御工学が好まれます.
ここで,以下のように1入力2出力のシステムが状態方程式で表されていたとします.
\begin{eqnarray}
\frac{d}{dt}
\begin{bmatrix}
\dot{x} \\
x
\end{bmatrix}
=
\begin{bmatrix}
a_{11} & a_{12}\\
a_{21} & a_{22}
\end{bmatrix}
\begin{bmatrix}
\dot{x} \\
x
\end{bmatrix}
+
\begin{bmatrix}
b_1 \\
b_2
\end{bmatrix}
r
\end{eqnarray}
この式で使用している状態量の中から,伝達関数の出力として使用するものを選択します.
ここでは1行目の\(\dot{x}\)を出力として伝達関数を求めます.
\(\dot{x}\)の微分方程式を上の状態方程式から取り出すと以下のようになります.
$$ \ddot{x} = a_{11} \dot{x} +a_{12} x +b_1 r $$
状態方程式から一つの式を取り出せたら,この式をラプラス変換します.
$$ s^2 X(s) = a_{11} s X(s) + a_{12} X(s) +b_1 R(s) $$
この式を整理して伝達関数の形にすると以下のようになります.
\begin{eqnarray}
(s^2 +a_{11} s+ a_{12}) X(s) &=& b_1 R(s) \\
\frac{X(s)}{R(s)} &=& \frac{b_1}{ s^2 +a_{11} s+ a_{12}}
\end{eqnarray}
以上のようにして状態方程式を伝達関数に変換することができます.
まとめ
この記事では伝達関数から状態方程式への変換方法とその逆の変換方法を解説しました.
古典制御では1入出力のシステムしか扱うことができず現代制御工学の方が優れているように感じてしまうかもしれませんが,古典制御でやるような周波数での解析は制御工学において非常に大切です.
そのため,状態方程式から伝達関数への変換方法も解説しました.
続けて読む
この記事で,伝達関数から状態方程式への変換方法が理解できた方は,そのシステムが制御可能かどうかを調べてみましょう.
制御可能でない場合はシステムを見直さなければならないので,ロボットを作る前に必ず確認をしておく必要があります.
可制御性については以下の記事で解説していますので,参考にしてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので,気が向いたらフォローしてください.
それでは,最後まで読んでいただきありがとうございました.
コメント