2.3 Xcos(GUI型ブロック線図入力モジュール)によるシミュレーション・ツールとしての使い方
|
|
Scilabをインストールすると、自動的にインストールされるXcos(旧Scicos)というツールによりブロック線図を作成し、シミュレーションを行います。
基本の各種のモデルが、パレット内に用意されているので、希望するブロックを選び出し、接続してブロック線図を完成させます。
各ブロックのパラメータの設定、シミュレーションの設定を行い、実行することにより、結果をグラフや数値データとして得ることができます。
|
|
Tutorial-1 |
|
|
|
 |
Scilabを起動し、Console(コンソール)よりXcosを起動します。
左図のようにツールバーのXcosボタンをクリックするか、メニューバーより[Application]-[Xcos]と選択しても同じです。
プロンプトの後ろに以下のように記入しても同じです。
-->xcos
|
|
 |
Xcosのブロック線図(ブロック・ダイアグラム)に使うブロックのパレットが開きます。
|
|
 |
同時に、ブロック線図を作成しシミュレーションを実行するダイアグラム・エディタが、開きます。
以下で、使い方の基本を簡単な例で試してみましょう。
例は、サイン波を発生させそれをグラフ表示させるだけです。
なお、まだこのファイルは、Untitled(無題)のままです。適当なタイミングで名前をつけて保存して下さい。拡張子は、必ず(ファイル名).xcosとつけます。
|
|
 |
左側のメニューリストから信号源ブロックを集めたSourcesパレットグループを選択します。
その中のGENSIN_fというブロックを選び、上図に示した空白のダイアグラム・エディタへドラッグ&ドロップします。(クリックしたまま引きずっていき、クリックを離す。)
|
|
 |
同じグループ内のCLOCK_cブロックもドラッグ&ドロップします。
ドラッグ&ドロップがやりにくいという場合またはダイアグラム・ウィンドウが前面に見えないときは、左図のように希望するブロックを選択し、右クリックして現れるメニューよりAdd
to ...を選びます。(...は配置したいダイアグラム名。この場合Untitledです。)
同様にして、Sourceグループのすぐ上のSinksグループからCSCOPEブロックもダイアグラムへ配置します。
sinkという言葉はあまりなじみがありませんが、受信側、受信装置という意味で使われているようです。
|
|
 |
上記で入力した各ブロックを左図のように配置します。
そして、各ブロック間をリンク線でつなぎます。黒い三角端子(ポートと呼ぶ)は黒同士で、赤のポートは赤同士をつなぎます。
つなぎ方は、慣れが必要です。片方のポートにカーソルを合わせ、クリックします。クリックしたままカーソルを移動し、接続したいポート上でクリックを離します(リリース)。
配線を直角に曲げたいときは、曲げたいポイントでマウスボタンを一旦リリースし、再度直角方向へ直線を引くという動作を続けます。
信号の流れを考えると、信号源とスコープの黒のポート同士を黒い配線(レギュラーリンク)でつないだだけで良いように思えますが、Xcosでは、アクティベーション(活性化)が必要です。それを示しているのが、赤のポートとリンクです。これがシミュレーションを駆動するイベント信号という役目を担っています。
|
|
 |
正弦波発生源Gen_SINブロックをダブルクリックすると左図のような設定ダイアログが開きます。
各項目の意味は
<Magnitude>: 振幅 [単位は任意]
<Frequency>: Xcosでは横軸を時間としているのでこの項目は周波数[cycle/時間]ではなく、角周波数ω=2πf [rad/時間](angular
frequency)が正しいので注意。
周期T=1/f=2π/ω[時間]であり、ここの値を1とした場合は、周期T=1/f=2π[時間]となる。
<phase>: 位相[rad]
ここでは、デフォルトのまま変更なしで閉じます。
|
|
 |
同様に、CSCOPEブロックをダブルクリックすると、左図の設定ダイアログが表示されます。
各項目の意味は
<Color or mark vector>:
スコープで表示するグラフ線の色またはマークの連続によるグラフを指定する。入力信号数にかかわらず8セットの数字が必要。数字が正のとき、連続線で色が指定でき、負のとき、マーク形状が指定できる。(plot2dコマンドに準ずる)
<Output window number>:
グラフ・ウィンドウ番号の指定。
<Output window position>:
グラフ・ウィンドウの表示位置指定。左上の位置をx,yのドットで示す。
<Output window size>:
グラフ・ウィンドウの表示サイズをドット数で指定。
<Ymin>:
グラフ・ウィンドウのY軸最小値
<Ymax>:
グラフ・ウィンドウのY軸最大値
<Refresh period>:
グラフ・ウィンドウのX軸(時間)最大値
シミュレーション設定時間がこの値より大きい場合、グラフをクリアし再度続きの時間から描画する。基本的使い方では、シミュレーション時間と一致させる。
<Buffer size>:
入力データを一時的に蓄えておくメモリ領域のサイズを指定。グラフ表示速度に大きく影響するので、変化を観察したい場合以外は、少なくともRefresh
period以上に設定する。最小は2。
<Accept herited events>: (inherited?)
継承の無効(0)・有効(1)を指定。1にするとイベント・ポート赤が削除される。アクティベーションが上流で行われる場合、継承が可能。
ここでは左図のように、Ymin=-1,Ymax=1, Refresh period=10の部分のみ変更します。
|
|
 |
3つ目のCLOCK_cブロックをダブルクリックすると、左図の設定ダイアログが表示されます。
各項目の意味は
<Period>: クロック周期 [単位は任意]
シミュレーションの分解能を決定する。
<Init time>: 初期時間(開始時間)Initial time[単位は任意] 通常は0を指定する。一定時間後からのデータのみ欲しい場合は、その時間を指定する。この場合もシミュレーションは時間0から行われる。
ここでは、左図のようにPeriod=0.1,Init time=0とします。
|
|
 |
最後に、シミュレーションの設定を行います。
メニューバーより[Simulation]-[Setup]を選択します。 |
|
 |
シミュレーション設定ダイアログが左図のように、表示されます。
各項目の意味は
<Final integration time>:
シミュレーション終了時間[単位は任意]
<Real time scaling>:
正の実数nを入力すると、シミュレーション設定単位時間tがn×t秒としてシミュレーションが実行される。n=1とした場合、シミュレーションの設定単位時間が1秒として解析表示される。
<Integrator absolute tolerance>:
ソルバーの絶対誤差公差
<Integrator relative tolerance>:
ソルバーの相対誤差公差
<Tolerance on time>:
ODE(常微分方程式)ソルバーの最小時間公差
<Max integration time interval>:
ソルバー呼び出しの最大時間間隔。"too many calls"というエラーメッセージが出た場合、値を小さくする。(解析精度を落とす。)
<Solver 0(CVODE) - 100(IDA)>:
数値ソルバーの選択。
<maximum step size>:
ソルバーがとる最大時間ステップ
ここでは、最上段の終了時間のみをデフォルトから変更して、10 (=1.0E01)と入力します。
|
|
 |
設定がすべて終了したので、シミュレーション(この場合は正弦波の表示だけ)を実行します。
左図のように、ツールバーのStartボタンをクリックするか、メニューバーから[Simulation]-[Start]と選択します。
シミュレーションを、途中で止める場合は、ツールバーのStopボタンをクリックします。
|
|
 |
グラフィック・ウィンドウが開き、正弦波が表示されました。
横軸は時間(0〜10)を表し、ω=1としたので、1周期は、2π=6.283・・となっています。
グラフィック・ウィンドウは、必要がなくなったら閉じておきます。
|
|
|
|
Tutorial-2  |
|
|
|
Scilabは最新版の5.3.3(2011.8現在)になり、Xcosも当初は多かったバグが減り、機能も追加されて、大分使えるようになってきました。
定数係数を持った線形微分方程式に従った運動をする最も簡単な例として、バネ・マス(質量)・ダンパー(制動/減衰器)の機構系が挙げられます。下図のように、バネの一方を固定し、他方におもりをつけた構造を考えます。おもりには、おもりの速度に比例して動きを妨げるダンパーもつけて、他方を固定します。計算を簡略化するために、おもりには床面との摩擦はないとします(ダンパーは摩擦を簡略化した場合ともみなすことができます)。
Xcosファイル: Damped_spring_RLC.xcos
|
|
|
おもりに対し、外力Fを一定時間加え、力を0にします。そのときにおもりがどのような動きをするかを調べたいとします。 |
|
|
このようなシステムをブロック図化してシミュレーションするには、
1)システムを方程式で表す。
おもりに加わる推力、ダンパーによる粘性力、ばねの弾性力と外力がつりあうので、左のような運動方程式が成り立ちます。
2)最高次の微分項を書き出す。
|
|
|
したがって、上の2番目の式は、左図のようなブロック図になります。 |
|
|
3)微分項は積分器で表す。 |
|
|
各種ブロックを配置し、接続線で結びます。
積分器は、「1/s」という表示のものでもかまいません。各ブロックの設定は、添付のファイルを参照願います。
|
|
|
直接数値を入力するよりも、変数を使ったほうがわかりやすく、変更時も便利です。メニューバーより、Simulation→Set Contextで開くダイアログに左記のように入力します。各行の//以下はコメントです。 |
|
|
10秒間のみ、おもりを一定の力で引っ張り、離したときのおもりの振動が変位として得られました。 |
|
|
上記の力学の方程式は、R,L,Cを直列に接続した電気回路の方程式とまったく同じかたちとなっています(Set Contextの記述を参照願います)。上記波形では、一番上が印加電圧波形、3番目が電流波形を表しています。
分野は違いますが、類似性のある現象はそのほかにもたくさん見られます。 |
|
|
|
|