
前回までは「内部にModelicaコードを含む」ブロックをScilab/Xcosのフロー内に配置して実行。Modelicaといいつつその片鱗は裏で1体化されてコンパイルされる時のメッセージくらいでした。しかし今回のブロックは内部のModelicaコードがアカラサマに見えるもの。いよいよModelicaのお勉強が必要?
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11の パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。
Scilab 2024.0.0
「台の上のボール」デモ
今回動かしてみるデモは、Scilabのデモ選択ウインドウから以下の選択肢で起動できるものです。
過去回の「Modelicaブロック」に特有だった黒と白の四角のModelicaのデータポートは上記には登場しません。左側のModelica genericというユーザ定義ブロックの内部にModelicaのコードが押し込まれており、結果だけが通常のXcos(Scico)の三角ポートから流れ出てくる形のようです。
Modelica genericユーザ定義ブロックの内部を開いたところが以下に。
ここで、OKボタンを押すと、Modelicaソースを入力可能なウインドウがあらわれます。こんな感じ。
上記で、Modelica言語を使って上からおちるボールと、それをうけるバネで支えられたプラットフォームの動きを計算しているみたい。しかし Modelica素人老人にはわからんぞなもし。
一方、もう一つの丸描いて四角描いてのブロックはオデンじゃありません。ボールとそれを受け止めるプラットフォームをアニメーション表示するための専用ブロックみたいです。設定値は以下のごとし。
シミュレーション結果
上記のフローを実行すると、例によってModelicaのソースコードは裏側でC言語のソースに変換され、ビルドされてからScilab/Xcosから呼び出され実行されているみたい。結果、上から青色のボールが落ちてきて、赤のプラットフォームに衝突し、バネで支えられているプラットフォームが振動し、その後ボールはプラットフォームから転げ落ちます。
ちょうどプラットフォーム上でボールが止まってみえる「レア」なスクリーンショット?が以下に。
やっぱり、Modelicaブロックを学習するためにはModelica言語の取得は必須よのう。どうする?