第9回 数値処理ソフトウェア2 - SIMULINK

MATLABの第2回目として,SIMULINKを体験する.SIMULINKは,MATLABの追加モジュールの一つとして,MATLABと連携して動くソフトウェアであり,様々なブロックをつなぎ合わせてブロック線図をつくり,シミュレーションを行うものである.特に信号処理や制御の分野では無くてはならないツールである.

本講義で身につけた知識が役立つ科目等:

機械工学実験,メカトロニクス実習,制御工学1・2,機械力学,メカトロニクス,ロボット工学,ゼミ及び卒業研究,大学院での研究等.

9.0 SIMULINKの起動方法

MATLABワークスペースの中で,

>> simulink

とタイプすると起動できる.MATLAB自体の起動方法は,第8回を参照せよ.

9.1 SIMULINKの基礎

SIMULINKでは,様々なブロックをつなぎ合わせることでブロック線図を作る.ブロック線図を作る作業はマウスを使ってでき,スクリプトを書くよりも相互的(interactive)かつ直観的(intuiteve)でわかりやすい.

ブロックは,様々なものが既に用意されている.例えば,何らかの値を発生させるブロックは,Sourcesとして,値を読み込んで表示させたりするブロックは,Sinksとしてまとめられている.

例えば,以下の例はまず,SourcesよりSine Waveを,SinksよりScopeをドラッグドロップ*する.

次に,ブロック同士を線で繋ぐには,Sine Waveの右側にある出力ポート(>の部分)をマウスでポイントして線を引き出し,そのままドラッグして行き,

Scopeの左側にある入力ポート(>の部分)上でドロップする.

これで最初のSIMULINKのブロック線図は完成である.メニューにある,(実行ボタン)を押して,シミュレーションをしてみよう.

【ヒント】 Scopeブロックをダブルクリックするとグラフが表示できる.

グラフには以下のような波形が表示される.

ここで,Sine Waveブロックをダブルクリックして,出力される波形を変更してみよう.例えば,振幅(Amplitude)を3に,周波数(Frequency)を2 (rad/sec)にしてみる.

【ヒント】 Sine Waveブロックをダブルクリックするとパラメータ入力ができる.

ApplyまたはOKを押して確定してからシミュレーションを実行すると,グラフは以下のようになる.振幅と周波数が変更されていることに注意しよう.

*ドラッグドロップ(drag & drop:マウスの操作で,左ボタンを使って行うやり方の一つ.あるものを掴んで引きずっていき(drag),所望の場所で落っことす(drop)こと.WindowsやMacのファイル操作で,コピーをするときに行う操作)

9.2 分岐

それでは,Sine WaveとScopeをもう一つずつ追加してみよう.

また,わかりやすくするために,ブロックを追加した後に名前を変更してみよう.名前の部分をクリックすると変更できる.

また,Cos波形が出力されるようにCos Waveのブロックパラメータを変更する.Sinを使ってCosを出力するには,位相(Phase)をπ/2進ませて,

cosθ=sin(θ+pi/2)

とすれば良いから,パラメータの設定は以下のようになる.

Sine WaveのAmplitudeとFrequencyも元の1に戻しておく.これでもう一度シミュレーションを実行すると,CosとSinの両方の波形が出力される.

【ヒント】 AutoScaleボタンを押すと,自動で綺麗にスケールされる.
【ヒント】 グラフ中をクリックするとその部分が拡大表示される.元に戻すには右クリックしてZoom out若しくはAutoscaleを選ぶ.

次にSinksからXY Graphを追加してみよう.

ここで,2つの矢印線からそれぞれ,分岐線を引き出してXY Graphに繋ぐ.分岐線を引き出すには,線の上でマウスの右ボタンを押すことでできる.

この状態でシミュレーションを再度実行すると,XY Graphが描かれる.

このグラフは円であるはずなので,円に見えるように,ウィンドウを上下に拡大して,円に見えるようにしよう.

Sine Waveの位相を,pi/4, pi/2とするとどうなるか? また,-pi/4とするとどうなるか?
Sine Waveの周波数を1.1にするとどうなるか? シミュレーション時間を変化させてみるとわかりやすい.
シミュレーション結果が折れ線になってしまうときは,Max Step Size を 0.1 程度にすると良い.SimulationメニューのParametersを参照のこと.
【ヒント】 この様な波形の事をリサージュ波形などと言う.位相や周期の異なる2つの波形が発生するような振動問題などで良く現れる波形である.

9.3 演算子

それでは次に以下のブロックを作ってみよう.

1/s は積分(Integrate)を表す演算子(積分子:Integrator)であり,Continuousグループの中にある.

また,Pulse Genaratorはパルスを発生器である.ここでは周期(Period)を10,デューティ比(Duty ratio)を20%にしてみよう.設定は以下のようになる.

【ヒント】 シミュレーション時間等の設定は,SimulationメニューのParametersで行う.
【ヒント】 ブロックを繋ぐ線の名前は,線をダブルクリックすると入力できる.

以上の設定で,シミュレーションを行うと,以下のようなグラフが得られる.

これらは,上から順に,加速度,速度,変位(位置,または移動距離)を表している.

例えば,自動車を例に取ると,2秒間アクセルを踏んだ時の車速と移動距離に対応する.速度のグラフでは,最初の2秒間,等加速度運動をしたあと,等速になっている様子がわかる.加速度1m/s2を2秒間続けたのであるから,速度は2m/sになる.

また,移動距離のグラフでは,最初の2秒間は曲線に,その後は直線的に移動していることが読み取れる.スタートから2秒後の移動量は2mであり,速度のグラフの三角形部分の面積に等しい.

或いはロボットの場合,ロボットの腕の関節のモータを2秒間加速したときの腕の回転角速度と回転角に相当する.

以上の様に,SIMULINKは様々な現象のシミュレーションを行うのに大変便利なツールであることがわかる.

積分子以外にも様々な演算子があるので試してみよ.

9.4 その他のブロック

その他にも様々なブロックがある.例えば,以下の例の様に,Constantは定数,Gainは係数のかけ算である.その他いろいろあるブロックを試してみると良い.

9.5 モデルファイルの保存

SIMULINKで作成したモデルはモデルファイル*.mdlとして保存することが出来る.ファイルメニューより保存するか,ディスクアイコンをクリックすればよい.

課題

  1. 9.2節のリサージュ波形を描くモデルファイルを提出せよ.
  2. 質量mの質点が初速v0,水平からの迎角θで発射されたときの運動をシミュレーションし,質点の飛行軌跡を描け.質点には常に鉛直方向に重力加速度g=9.81が作用するものとする.各変数には適当な数値を当てはめよ.

【ヒント】 数学関数としてのsin(), cos()は,Mathグループの中にTrigonometric Functionとして存在する.

ファイル名命名規則

  1. R9-1-年組番号.mdl
  2. R9-2-年組番号.mdl

とする.ファイル名はすべて半角英数字であることに注意せよ.

提出期限は来週月曜午後5時までとする.

修正情報 6/14

ファイル名を-(マイナス)から_(アンダースコア)に変更した.


Further Readings

SIMULINK単体の説明書はあまり無いのが現状である.これはSIMULINKが単体のソフトウェアではなく,MATLABの拡張モジュールであることに起因している.従って,本を探すときにはMATLABの解説書の中を見る他はない.またSIMULINKは一般的に,制御理論の学習や研究に最も良く用いられるので,その例題は多くの場合,制御理論である.従って,将来,制御の勉強を行うときに各自で実習をしてみると制御理論の理解がしやすくなるだろう.

次週予告

次回はUNIXを用いたソフトウェア開発に関する演習を行う.UNIXについての必要最小限度の説明は行うが,細かな使用方法についての説明をすることはしないので,情報科学センターのテキストやインターネット等で予習をしておくこと.