状態空間法と相変数

この記事は3分で読めます


状態空間法と相変数

MATLABや古典制御の入門で最初に扱うのが”伝達関数”です。
システムの特性を見るのにきわめて重要だから学ぶのですが、
1自由度以外は実際使えないですよね。

多自由度連成系に便利なのが状態空間法と相変数です。
状態空間法はいわゆる現代制御という扱いです。
相変数はなかなか聞かないかも知れません。
が、Simulinkでモデリングするときは一番よく使う手法です。

状態空間法でもSimulinkで扱う場合はLTIモデル、線型時不変系と言われるものでそうしたLTIのブロックもあります、非線形系や時変系が扱えません。
だからLTI(linear time-invariant system)になるのですが、相変数はPhaseVariableということです。初等力学で見られる運動方程式を相ごとに表記したものが相変数で、Simulink上では非線形も扱えるのでおそらくもっとも強力な方法でないかと思います。

各表現方法の特徴

伝達関数:1自由度系(SISO)をラプラス変換してその入出力関係を表したもの。
内部状態を表現できない。
状態方程式:多自由度連成系(MIMO)でも使える。内部状態も表現できる。
ただSimulinkではLTIモデルに限定される。
相変数:多自由度連成系(MIMO)でも使える。内部状態も表現できる。
さらに、非線形、時変系も扱える強力な方法。
実は、運動方程式をラプラス変換したものから状態方程式のマトリクスを作り上げる中間の生成物。

基礎式:a{\ddot{x}} + b{\dot{x}} + c x= f
基礎式のラプラス変換:as^2 X(s) + bs X(s) + c X(s)= F(s)
伝達関数:G(s) ={\frac{X(s)}{F(s)} }= {\frac{1}{as^2 + bs+ c} }
状態方程式:    \left[      \begin{array}{rrr}        {\dot{X_1}(s)}  \\        {\dot{X_2}(s)}      \end{array}    \right]  =    \left[      \begin{array}{rrr}        0 & -1/a\\        -c/m & -k/m      \end{array}    \right]    \left[      \begin{array}{rrr}        X_{1}(s)  \\        X_{2}(s)      \end{array}    \right]+    \left[      \begin{array}{rrr}        0  \\        1      \end{array}    \right]  F(s)  ただしX_{1}(s)=X(s),X_{2}(s)=s{X_1}(s)

ちなみに、状態方程式を作る過程で基礎式をラプラス変換したものはこんな感じです。
相変数表示:as X_{2}(s) + bX_{2}(s) + c X_{1}(s)= F(s)
これが相変数を使った場合の運動方程式です。
相変数ってのはつまり、変数の微分値を新たな中間変数に置いたものなんですね。
結局相変数はX_{1}(s)=X(s),X_{2}(s)=s{X_1}(s) です。

めんどくさいので最初からラプラス変換してしまいましたが、ラプラス変換に慣れてない人のために
相変数:x_{1}=x,x_{2}={\dot{x_1}}
です。2階微分だとこんな感じですが3階の場合だと新たに
x_{1}=x,x_{2}={\dot{x_1}}, x_{3}={\dot{x_2}}={\ddot{x_1}}
となります。

Simulinkを使い慣れてる方は”これって普通に使ってるやつじゃん!”ってなります。
こうしたアイデアからSimulinkでのモデリングに入るより、使って慣れるのがいいかなと思います。

デジタルシミュレーションとは

昔は、OPアンプ使ってアナログの電子回路で等価回路を作ってアナログシミュレーションってこともあったらしいです。たぶん35年くらい前かと思いますが、それくらいだとコンピュータはあったにしてもメモリ含めた記憶デバイスも今思えば貧弱でプログラムやデータはパンチカードでプログラムを走らせていた時代もありました。
そなんな時代ならアナログシミュレーションもデジタルシミュレーションもさほど変わらないかも知れません。

話ずれてしまいましたがデジタルシミュレーションでも特にSimulink使ったダイナミックシミュレーションの場合はコンピュータシミュレーション、数値シミュレーションという言い方もします。

そのシミュレーションのコア部分って何をやってるかというと微分方程式を数値的に解く”数値積分”をしているわけです。
ですからSimulinkでモデリングをするときに伝達関数やLTIモデルなどの便利なものもありますが、デジタルシミュレーションの本質という意味では数値積分なので、”相変数”を使ってステップバイステップで計算をとくことなんですね。

だから、相変数って当たり前のように使うものかも知れませんが、こうした理解があるとより面白いかと思います。

  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2014 02.10

    Hello world!

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。