この記事 に引き続き、Modelicaでinteractive simulation を行うための路をまた一歩進む。

例によって記事を通して言いたい事は冒頭、導入のすぐ後で述べる。

  •  Modelicaでsimulation中に、任意のvariableの値をテキストデータに書き出し、一定の時間間隔で書き出す値を逐次アップデートするコンポーネントを作成した。本コンポーネントと この記事 で紹介したシミュレーション時間の進行を実時間に合わせるコンポーネントと この記事 で作成したリアルタイム表示ツールを組み合わせることで、シミュレーション中にvariableの値をリアルタイムに表示させられる。
実は、上記の機能を実装するために、ModelicaとC言語のインターフェイスという手段を用いている(実際には”インターフェイシング”ではなく、指定したCコードを一緒にコンパイルしているらしい。)が、その詳細は本記事では触れない。別途、TIPSとして記事を設けようと思う。

作成したコンポーネントの外観は下図の通り。

インターフェイスはvariableを受け取るportが1つ有るのみ。複数のvariableを出力させるのに対応するために、portは単一のrealではなく、real vectorにしている。



受け取るvariableの数、書き出すcsvファイルの名前、csvファイルのパス、各variableの名前、値をアップデートする時間間隔をparametersから設定する。

なお、ファイル名はlibraryに用意したこれ専用のcsvファイルの名前が、csvのファイルパスはlibrary内の場所を相対パスで、それぞれデフォルト設定されているので、各々環境に合わせて設定し直す必要は無い。library内の相対パスから絶対パスを自動で取得する機能(このテクニックも需要があれば別途TIPS記事に出来ればと思う。)を搭載してある。



そして、下図が機能確認用のexampleモデル。使い方は、表示させたいvariableのreal信号をportに繋ぐだけ。尚、左上のsynchronizeRealtimeコンポーネント(DeviceDrivers library内のもの)とセットで使う事を前提としている。使う場合は、 この記事 で紹介したようにDeviceDrivers libraryもロードして使って頂きたい。



動作確認の様子(静止画)。先にspyderからpyConsole01.pyスクリプトを実行しておき、次にModelicaのシミュレーションを実行する(コンパイルに時間がかかるので、先にコンパイル・実行してからre-simulateした方がスムーズ)。そして、隠れてしまったpyConsoleのウィンドウを前に持って来る。

PrintCSV_overwriting01_ex01_01

静止画だけ見ても面白く無いし、何が行われているかも掴み難いので、動作させた様子を収めた動画をご覧頂きたい(画質が悪いのはお許しを。。。)。

意図通り動作している。刻々と、2行目から4行目の、time(in Modelica), sin(time), cos(time)の値がシミュレーション進行と共に変化している。そして、シミュレーションが終わった後は、値の動きは止まる。 *表示の1列目はpyConsole実行開始からの経過時刻を表示しているもので、シミュレーションとは無関係のもの。

 

こうして完成品を見せておいて難だが、pyCosole01.py同様に、これだけ有っても恐らく何の役にも立たない(interactive simulation以外に何か使い道有ります??)。


本記事で用いたコンポーネント、動作確認用モデルの情報を載せておく。総てgithubにオープンソース公開しているので是非活用して欲しい。

  • リアルタイムデータ書き出しコンポーネント: InteractiveSimulation.Output.PrintCSV_overwriting01
  • 動作確認用モデル: InteractiveSimulation.Examples.Output.PrintCSV_overwriting01_ex01
  • InteractiveSimulation library のgithubページ


かくして、interactive simulationに必要な最低限の機能の大部分が実現出来た(pythonスクリプトを実行可能な環境は必要だが)。最低限必要な機能を完備するのに必要なステップは残り一つ。

  • ModelicaのSimulation開始時に、Modelicaから、spyderなどを使わずにpyConsoleスクリプトを起動する。
この機能は、Modelica standard libraryにコマンドを実行するfunctionが有る筈で、それを使いこなせれば実現可能な筈だ。実現出来れば、OpenModelicaからの操作だけでinteractive simulationを気軽に実行できるようになる。

以上




ブログ移転の案内

この記事 でお知らせしたとおり、本ブログはブログサービス下での運営を止め、個人サーバー上のwebページに引越しします。livedoorブログが存続している限り本ブログは閉鎖せず残り続けますが、 この記事 以降の記事は総て こちらの新ブログ にて公開してゆきますので、これからもよろしくお願いします。

文献紹介

Modelica, Model-based degign

Modelicaによるシステムシミュレーション入門

入門者に最適の書。Modelicaって何?という導入から、簡単なコードベースやGUIベースの例モデルまで解説。筆者も入門時に手に取った。訳に少し癖が有る印象だが、英語書物がハードルになる方には確かな助けになる筈。


[amazon、紙面・電子]
[楽天、紙面書籍版] [AU payマーケット、紙面書籍版]
[honto、電子版] [楽天、電子書籍版] [AU payマーケット、電子書籍版] [7ネットショッピング、電子書籍版]

Introduction to Modeling and Simulation of Technical and Physical Systems with Modelica

「Modelicaによるシステムシミュレーション入門」の英語版原書。英語に抵抗がなければこちらを入手したら良いと思う。


[amazon、電子版・紙面版]
[Yahoo、紙面書籍版]

Principles of Object-Oriented Modeling and Simulation with Modelica 3.3 A Cyber-Physical Approach (Wiley-IEEE Press)

本格的にModelicaを使い込むなら必携の書。辞書的に適宜調べものをするような形で手元に有ると頼もしい武器。量が多いので電子版もお勧め。筆者もKindle版を所有し、かなりの頻度で参照している。


[amazon、電子版・紙面版]
[楽天、電子書籍版]

はじめてのModelicaプログラミング -1日で読める わかる Modelica入門-


[amazon、紙面版]

Modelicaによるモデルベースシステム開発入門-ModelicaとFMIの活用による実践的モデルベース開発-


[amazon、電子版・紙面版]

Introduction to Physical Modeling With Modelica


[amazon、紙面版] [楽天、紙面書籍版]

Development of Modelica Library for Dynamics Simulation of CHP Plant: Modelica library structure design and modeling for transient simulation of Combined Heat and Power (CHP) plant


[amazon、紙面版]

Python

入門 Python 3


[amazon、紙面版]

かんたん Python


[honto、電子版]

スッキリわかるPython入門 (スッキリシリーズ)


[amazon、電子版・紙面版]

ゲームを作りながら楽しく学べるPythonプログラミング


[amazon, 紙面版・電子版] [honto、電子版]

流体力学(Fluid Mechanics)

Fundamentals of Fluid Mechanics


[amazon、紙面版] [Yahoo、紙面書籍版]

[amazon、紙面版]

[Yahoo、紙面書籍版]


熱力学(Thermodynamics), 熱機関(Engine, power system)

Fundamentals of Engineering Thermodynamics


[amazon, 紙面版]

Fundamentals of Jet Propulsion with Applications


[amazon、電子版・紙面版]
[amazon、紙面版]


航空力学/飛行力学(Aerodynamics/Flight Dynamics)

航空機の飛行力学と制御


[amazon, 紙面版]

Flight Stability and Automatic Control


[amazon, 紙面版]


------------------------------