
さて、過去記事でちょっと触ったことがありますが、世の中にはModelicaというモデリング環境があります。そしてScilab/XcosはこのModelica上で実行されるモデル・ブロックを含めることができる、ことになってます。しかし当方環境にて実行すると途中で落ちます。”c_pass1: なんちゃら”などと言われます。
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11の パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。
Scilab 2024.0.0
Modelica
以下にModelica御本家へのURLを掲げます。
上記のページに行くと冒頭のページにOrganizational Membersとして研究機関となど一緒に著名な自動車会社、航空会社、電子部品メーカなど見慣れたロゴがなならんでます。いろいろ支持されている環境なのねえ。
Scilab/XcosにおけるModelicaブロック
Scilab/Xcos環境においては、「ネイティブ」Xcosのブロックとは「ちょっと毛色の違う」ブロックとしてModelica を使って走るブロックどもの一群が含まれてます。白か黒の「四角」の入出力ブロックがあるやつらです。通常のXcosの入出力ポートは三角なので判別がつきます。使い方はおいおい見ていきたいと思いますが、そいつらは裏でModelica言語に翻訳されてコンパイルされた後に実行されるみたいです。フツーのXcosブロックとも混在可能みたいですが。
今まで避けてきたのは、手元の環境では、以下のようなエラーメッセージが出てModelicaブロックのシミュレーションができなかったからです。
c_pass1: build the modelica meta-block failed
なんやらCコンパイラの設定が悪いの? 違いました。以下のScilabのディスカッション・グループにその答えがありましたです。
https://scilab.discourse.group/t/modelica-compiler-error/692/9
https://scilab.discourse.group/t/modelica-compiler-error/692/11
Scilab素人老人がかいつまんでいうとこんな感じです。ホントか?
-
- modelicaブロックをコンパイルして実行するときに modelicat.exe というプログラムが必要とされる。
- modelicat.exe 自体は、ScilabのインストールパスのBIN内にある
- しかし、modelicat.exe が必要とする マイクロソフト社の 32-bit DLL はWin11(64ビット版)には含まれていない
- よって、MSの再配布ページから、 vcredist_x86.exe という再配布用パッケージをダウンロードしてインストール
- 上記インストール後、ScilabのインストールパスのBIN内にあるmodelicat.exeを「管理者として実行」しておく
なお、再配布パッケージは以下のお名前です。
Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update
まあ、上記の手順にて手元環境では Modelica ブロックの実行できるようになりましたぞ。vincent.couvert様、ありがとう。
動作確認
Xcosのデモの中に、Modelicaブロックを使用したものがいくつかあるので、そのうちの一つ「RLC回路」のデモを動かしてみましたぞ。デモの選択画面が以下にロードされたモデルが以下に。
いつものXcosブロックとは別に、白と黒の四角のポートを持ったModelicaブロックがあることが分かりますなあ。
さて上記んもフローを実行すると、下記のようなインフォメーション・ウインドウが現れます。
また、Scilabのコンソールにも、Modelicaをコンパイルしてます的なメッセージがいろいろ出力されます。
その後はいつものXcosシミュレーション同様、CSCOPEで波形表示ができました。こんな感じ。
Modelicaブロック、動作するようになった。よかった。