みなさん,こんにちは
おかしょです.
以前,マス・スプリング・ダンパーの運動方程式を導出しました.
このシステムは非常に単純でシミュレーションをしやすいため,制御器の性能評価によく利用されています.
そこで,この記事では制御器は搭載せずに数値シミュレーションを行って,そのやり方と結果を記録しています.
この記事を読むと以下のようなことがわかる・できるようになります.
- 数値シミュレーションのやり方
- マス・スプリング・ダンパーの数値シミュレーション結果
この記事を読む前に
この記事では数値シミュレーションのやり方などは解説しますが,数値シミュレーションで利用している運動方程式は以下の記事で解説しているので,ここでは解説しません.
なので,以下の記事を先に読んでおくことをおすすめします.
状態変数の格納庫作成
まずは状態変数のデータを入れる格納庫を作成しておきます.
そのプログラムは,以下のように行列を定義することでできます.
v = zeros(time/dt,1);
x = zeros(time/dt,1);
u = zeros(time/dt,1);
t = zeros(time/dt,1);
vは台車の速度,xは台車の位置,uは制御入力,tは時間を格納できます.
今回は制御入力は加えないので,すべての要素は0のままとなります.
プログラム中のtimeはシミュレーション時間,dtは積分の刻み幅を表しています.
シミュレーション時間は自由の設定できますが,dtは注意して決定する必要があります.
システムの応答は周波数によって異なります.
そのため,積分の刻み幅が大きすぎる場合は高周波数の応答を表現することができない可能性があります.
なので,積分の刻み幅dtは計算に時間がかかってしまいますができるだけ小さくしておけば大丈夫です.
システムの応答が周波数によって異なる理由はボード線図について学習すればわかると思うので,以下の記事を参考にしてみてください.
[ボード線図] ゲイン線図とは・書き方から学んで理解する
[ボード線図] 位相線図とは・書き方から学んで理解する
運動方程式を解く
運動方程式は微分方程式で表されているため,それを解くには積分をする必要があります.
ここでは運動方程式として,以下の記事で求めた状態方程式を用います.
マス・スプリング・ダンパーシステムの運動方程式の導出
ここで求められた状態方程式を簡単に表すと以下のようになります.
\[
\dot{x} = Ax+bu \tag{1}
\]
この表現は制御の参考書でもよく用いられるので覚えておきましょう
上式において,\(A\)はシステム行列,\(b\)は入力行列と呼ばれます.
さらに,センサーで取得できるデータが限られている場合などは以下の式も使用します.
\[
y = Cx \tag{2}
\]
このような式を出力方程式と言い,\(C\)を出力行列と呼びます.
今回はすべての状態量が取得できるとするので,この出力方程式は利用していません.
上の微分方程式だけを数値シミュレーションでは使用します.
パラメータの設定
数値シミュレーションで使用するパラメータは,実際にこのようなマス・スプリング・ダンパーシステムを作成したわけではないので,テキトーです.
ここで,設定するパラメータというのはこのシステムの質量・弾性係数・減衰係数の3つです.
今回の数値シミュレーションでは以下のように設定しています.
m = 0.1;
k = 0.1;
c = 0.01;
制御性能を解析したい場合は,このパラメータを調整することで周波数特性を変えて解析すると良いと思います.
微分方程式の積分
以上のような設定ができたら,いよいよ積分して数値シミュレーションを行います.
この積分方法はさまざまな方法がありますが,今回はルンゲ・クッタを使用しました.
数値シミュレーション結果
数値シミュレーションを行うにあたって,初期値は以下のようにしました.
\begin{array}{c|c|c}
\hline
パラメータ & 単位 & 初期値\\
\hline
v & m/s & 1.00\\
\hline
x & m & 0.00\\
\hline
\end{array}
速度のみ少しだけついているようにしました.
数値シミュレーションを行ったところ,以下のような結果になりました.
シミュレーション結果を見ると,ばねによる復元力と,ダンパーによる減衰力で徐々に速度が落ちていき,台車の位置もどんどん元の位置に戻っていっています.
ダンパー係数やばね係数を変更すれば,応答が変化するのでボード線図などと見比べながらやると非常に勉強になります.
まとめ
この記事では,マス・スプリング・ダンパーの数値シミュレーションを行う方法とその結果を示しました.
この数値シミュレーションを用いれば,簡単に制御器の性能を評価することができるので皆さんもぜひ試してみてください.
続けて読む
この記事で解説した数値シミュレーション結果をビジュアライズ化するためにProcessingでアニメーションを作りました.
以下の記事でそのProcessingのプログラムを公開しているので続けて読んでみてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント