6.状態方程式の2自由度シミュレーション

公開日: 2016/05/06 基礎編


Continuous state-space system (CLSS) block diagram
Fig 6.1 Continuous state-space system block diagram


Scilab/XcosのCLSSブロックを用いて、2自由度振動系のシミュレーションをしてみる。

CLSSブロックは状態方程式の計算を行うブロックである。

状態方程式はこれまで力のつり合いから作成してきたような、運動方程式から導き出すことができる。

CLSSブロックに状態方程式を定義することで、図6.1のようなブロックひとつで、これまでの図2.2の運動方程式の計算と同じことがができる。

Equation of motion block diagram
Fig 2.2 Equation of motion block diagram


ここでは、運動方程式から状態方程式を導き出し、CLSSブロックを用いてシミュレーションを行い、運動方程式のシミュレーション結果と比較して、計算に誤りがないか検証してみたいと思う。


運動方程式から状態方程式をつくる


2 DOF model
Fig 2.1  2 DOF model


対象の運動モデルは、2自由度のシミュレーションの図2.1を用いる。力のつり合いから運動方程式は式(2.1)となる。


まず運動方程式から状態方程式を導き出す。


これを状態方程式の一般形の式(6.1)の形に導く。

ここで、u は入力であり、 y は出力である。

今回はばね上の変位と、ばね下の変位を出力したいので、 xx'uy を、式(6.2)のように設定すると、

状態方程式は式(6.3)となる(1)

ゆえに定数行列 ABC は式(6.4)となる。





これをコンテキスト設定に以下のように記述し、


//車両諸元
m1=30; //ばね下重量[kg]
m2=300; //ばね上重量[kg]
c2=3000; //ダンパー減衰比[N/m/s]
k2=30000; //ばね定数[N/m]
k1=300000; //タイヤばね定数[N/m]

//状態方程式の定数行列
A=[0 1 0 0;-(k1+k2)/m1 -c2/m1 k2/m1 c2/m1;
   0 0 0 1;k2/m2 c2/m2 -k2/m2 -c2/m2]; //システム行列
B=[0;k1/m1;0;0]; //入力行列
C=[1 0 0 0;0 0 1 0]; //出力行列





ブロックパラメータには図6.2のように設定することで、シミュレーションを行う。

Fig 6.2 Continuous state-space system parameters



入力について


路面 z からの入力は、2自由度のシミュレーションと同じものを用いた。



結果を比較してみる


図6.1と図2.2のブロック線図を結合してシミュレーションを行うと、図6.3のように出力グラフが完全に重なることを確認できた。(CLSSブロックからの出力でグラフが上書きされている)


Fig 6.3 Displacement graph (overwritten with CLSS graph)




CLSSブロックを使ってみて


シミュレーションにかかる時間が、これまでの運動方程式のブロック線図より早くなることを、実は期待していたが、計算時間は同じだった。

また、CLSSブロックは線形モデルしか記述できないようなので、非線形モデルを扱うには、近似式を導くことになる。特別に必要がなければこれまで通り、運動方程式のブロック線図を使っても、支障はないのではと感じる。

ただし、現代制御理論では対象となるモデルを状態方程式で表現するので(2)、ロバスト制御などの複雑な制御を行う際には、CLSSブロックを使う必要がでてくるだろうと思う。




◆参考文献
(1)吉田和信,現代制御理論ノート2000年度後期(制御工学III), 島根大学総合理工学部電子制御システム工学科
(2)橋本洋志, 石井千春, Scilab/Scicosで学ぶシミュレーションの基礎, オーム社

◆使用アプリケーションおよびモデル
 Simulation: Scilab 5.5.2

  • ?±??G???g???[?d????u?b?N?}?[?N???A