オープンソースの活用(平成 24 年度「モデルベースース開発」人材養成研修)
大野修一

1 Scilab
1.1 起動と初期設定(起動時に [Scilab 5] が書いてあるロゴが消えない場合は再起動してください．)• コンソール• プロンプト• コマンドライン• SCIHOME と SCI• scilab.start
SciNotes では，起動時に読み込むファイルを scilab.start にするよう help には書いていますが，これまでどおり scilab.ini でないとダメのようです．

1. pwd
2. cd SCIHOME
3. ls
4. cd SCI
5. pwd, ls
6. cd SCIHOME

1.2 エディタ SciNotes• Windows で SciNotes の日本語文字化けは，たとえば「設定」の「フォントを指定」で日本語のフォントを指定• コメント• スクリプトの拡張子 sce，関数のの拡張子 sci
1. 「アプリケーション」の SciNotes
2. 「ワーキングディレクトリ」(Working directories) の「ディレクトリを追加」(Add a directory)
3. 「ファイルをオープン」(Open ﬁle in)，「ファイルをセーブ」(Save ﬁle in)
フォルダは作成できるが削除できない。

4. exit, start
5. scilab.ini の作成

1

1.3 ヘルプ
1.4 Scilab と Matlab との違い
• 特殊変数 (4.4 節：p. 37〜) は変更不可• 配列の終わり：$ (p.55) と end(Matlab)• 変数の入れ替え
x=1;y=2;[x,y]=(y,x)• 注意-->x= 1./[1 2 3]x =0.0714286
0.1428571
0.2142857
1-->x=1 ./[1 2 3]x =1. 0.5 0.3333333• 同じ関数名で結果の異なるものの一部– int8– max min (p.81)– gsort– ﬀt• 図はデフォルトで上書き (p.124)• 新しい Figure Window は，scf(n)1.5 スクリプトと関数• スクリプト，関数の実行方法 (明示的にロードしなくてはいけない) (p.114)
ただし，関数 getf は，少なくとも 5.3.x では利用できなくなってるようです．

• 関数の動作 (p.115)• pause (p.120)
1. Test1 (p.115) の作成
2. 「エコーバックなしのファイル」で実行
3. 「エコーバック付きのファイル」で実行
4. Test6 (p.120) の作成と実行
2

1.6 制御関連• Demo : CASD Inverted pendulum (PID は動かない)• Scilab 入門―フリーソフトで始める数値シミュレーション第 13 章 (p.161〜)• システムの定義• システムの応答• ボード線図• ナイキスト線図s=poly(0,’s’);
H=1/(20*s^2+10*s+80);
S1=syslin(’c’,H)bode(S1)
t=0:0.01:25;
y=csim(’step’,t,S1);
f1=scf(1);plot(t,y)xtitle(’Step Response’,’Time (sec)’,’Amplitude’)f2=scf(2);nyquist(S1)

演習 1
s+2
1. 伝達関数が s2 +2s+3の連続時間システムに単位インパルスを入力したときの出力を表示しなさい．

2. (線形) 連続時間システムが与えられたとき，そのシステムが安定かどうか調べる関数を書きなさい．

3

2 Xcos
Xcos は GUI を用いてシステムを定義しシミュレーションを行うことができる Scilab のアプリケーションです．

2.1 Xcos の起動
Xcos は Scilab コンソールメニューの「アプリケーション」の「Xcos」を指定するか，アイコンをクリックすると起動します．
起動すると通常画面左側にパレットブラウザが，右側にエディタがあらわれます．

2.2 Xcos と Simulink との主な違い• パレットブラウザー (Simulink ライブラリブラウザー)• アクティベーションの概念– 上側にアクティベーション入力を持つブロックが存在– 下側にアクティベーション出力を持つブロックが存在• ブロックを右クロックすると Block help (Simulink ダブルクリック)• ブロックの接続方法• 引き出し点の作成方法

2.3 パレットブラウザ
Xcos はある機能を持ったブロックを線でつなげることでシステムを構築します．結線された複数のブロッ
クをブロック線図あるいはダイアグラムとよびます．
パレットブラウザは，利用しやすいようにブロックをそのブロックの属性に対応するカテゴリーに分類しています．たとえば，カテゴリー「連続時間システム」は連続時間システムに関連するブロックがひとつのパレットとなっています．

4

図 1 Simple Demo

図2

パレットブラウザ

5

2.4 ブロック
ブロックは，入力ポート，出力ポート，アクティベーション入力ポート，アクティベーション出力ポートを持つことができます．たとえば，ブロック DLRADAPT_f はふたつの入力ポート，ひとつの出力ポートとアクティベーション入力ポートを持っています．

図3

DLRADAPT fブロックへの入力信号を入力ポートに接続し，ブロックの出力信号を出力ポートから出力します．
ブロックはアクティベーション入力ポートからのアクティベーション信号で制御されます．また，他のブロックの動作を制御するアクティベーション信号をアクティベーション出力ポートから出力することができます．

2.5 エディタ
エディタでは，構築したいシステムに必要なブロックをパレットブラウザからエディタのダイアグラムにコピーし，ブロック間を接続し，パラメータなどを設定します．

図4

エディタ

6

パレットブラウザからエディタのダイアグラムへのコピーは，以下のふたつがあります．

1. パレットブラウザでブロック上で左クリックし，そのままダイアグラムへドラッグしドロップ
2. パレットブラウザでブロック上で右クリックすると，「追加」のプルダウンメニューがでるのでコピーしたいダイアグラムを選択

2.6 ブロックパラメータブロックのパラメータを設定することができます．設定したしブロックを右クリックすると，パラメータ変更のメニューがでてきます．

図 5 ブロックパラメータ7

たとえば，CLOCK c のブロックパラメータを指定すると，Period と Initialisation Time があり，その数値を変更することができます．

図6

ブロックパラメータを指定ブロックのパラメータの値は，ブロックにマウスをあわせると表示されます．

図7

ブロックのパラメータ値8エディタでブロックをクリックすると，緑の□を用いて選択したことが示されます．選択した後，頂点をクリックしドラッグするとブロックの大きさがかわります．

図8ブロックの変形ブロックは色は文字などを変更・追加することができます．まず，エディタでブロックをクリックし，でてきたメニューの 「Format」 の「詳細」を選択します．たとえば色を変える場合は「色を塗る」を選択します．

図9「Format」 の「詳細」

9

色を変更した結果です．

図 10ブロックの色の変更

なお，キャンバスの何もないところで右クリックすると編集メニューが表示されます．

図 11

編集メニュー10

2.7 ブロックの接続方法
ポートを右クリックし，緑の□から右クリックしたままドラッグします．

図 12 ブロックの接続方法 1

なお，折点が必要な場所ではクリック (既存の線に折点を追加したい場合はその場でダブルクリック) します．
接続したいポートまでドラッグし，緑の□でドロップすると接続します．

図 13 ブロックの接続方法 211

2.8 引き出し点の作成方法
引き出し点の作成方法はつぎのふたつがあります．

2.8.1 引き出し点の作成方法 1
引き出し点をとりたい線をマウスで指定 (線が直線じゃないとダメのよう) すると，線が緑に変化します．

図 14

引き出し点の作成方法 1-1クリックで引き出しを開始し，そのままドラッグしポートでドロップすることで接続します．

図 15

引き出し点の作成方法 1-212

必要に応じて整形します．

図 16

引き出し点の作成方法 1-3

2.8.2 引き出し点の作成方法 2
ポートから引き出し点をとりたい線をマウスで指定すると線が緑に変化します．クリックで引き出し点を作成し，必要に応じて整形します．

図 17

引き出し点の作成方法 213

2.9 ファイル
エディタの「ファイル」のメニューは，作成したダイアグラムの保存などに関連する項目から構成されています．

Xcos のダイアグラムには拡張子 xcos を付けます．たとえば，test.xcos です．
「エクスポート」はダイアグラムを指定する画像フォーマットで出力します．また，「印刷」を指定するとダイアグラムが印刷されます．

図 18 「ファイル」メニュー

14

2.10 編集 (Edit)
エディタの「編集」のメニューには，ダイアグラムの編集に関する項目があります．

図 19 「編集」メニュー

全てを選択を選択すると以下のようになります．

図 20

全てを選択

これをひとつのブロックにするには「選択範囲をスーパーブロックに変換」とします．
スーパーブロックはひとつのブロックとして扱うことができます．

15

図 21

選択範囲をスーパーブロックに変換

2.11 View
メニュー「View」 には，ダイアグラムの拡大や縮小などに関する項目があります．

図 22 「View」メニュー

16

2.12 シミュレーション (Simulation)
メニュー「シミュレーション」には，シミュレーションの実行に関する項目があります．「開始」を指定す
るとシミュレーションが始まり，「停止」をシミュレーションが止まります．

図 23「シミュレーション」メニュー「設定」でダイアグラムのシミュレーションの終了時間，誤差，時間感覚などのが設定できます．

図 24

シミュレーションの設定

17

「コンテキスト」では変数を設定することができます．この変数はダイアグラムの各ブロックから参照することができます．たとえば，ブロックの共通パラメータとして利用することができます．

図 25

コンテキストの設定

Modelica とは、フリーのオブジェクト指向のモデリング言語です．非営利国際組織の Modelica 協会が開発しており，その成果は標準ライブラリとして公開されています．Xcos には Modelica を用いるブロック(Modelica Block) を利用することができます．ただし，Fortran または C++ コンパイラが必要となります．
RWindows では Microsoft⃝
Visual C++ をインストールすれば Modelica ブロックを使用できるようになります．

18

2.13 Format「Format」では，ブロックのなどの整列などが行えます．

図 26「Format」メニュー

たとえば のブロックの縦横を整列したいとします．

図 27 整形の手順 1

19

まず，ある点からドラッグし Clock と CSCOPE を選択します．

図 28 整形の手順 2選択されるとつぎのようになります．

図 29 整形の手順 3

20

ここで，「ブロックを整列」の中央を選択すると Clock と CSCOPE が中央揃いで垂直に整列します．

図 30 整形の手順 4同様に水平方向を整列すると となります．

図 31 整形の手順 521

2.14 ?
「?」 はヘルプなどに関する項目があります．

図 32「?」メニュー

演習 2s+2
1. 伝達関数が s2 +2s+3の連続時間システムに単位ステップを入力したときの出力を表示しなさい．

2. 1 の場合において単位ステップの出力も表示するようにしなさい．
s+2
3. 2 の場合において伝達関数が s2 +2s+3e−s としたときの結果を示しなさい．

4. 3 において，ブロック PID を使用してシステムが入力に追従するようパラメータを設定しなさい．

22