この記事 に引き続き、Modelicaでinteractive simulationのお題。今回で大きな一区切りが着いた。

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

  •  OpenModelicaのみの操作でリアルタイムにシミュレーション中の値を表示するコンポーネントが完成した。本コンポーネントと この記事 で紹介したコンポーネントを組み合わせることで、テレビゲームの様にoutputを見ながらinuptの値を操作するinteractive simulationを行うことが出来る。
尚、実行環境としてはWindows10にAnaconda3をインストールしたPC+OpenModelicaを使うことを想定している。他OSでもコードの大部分は変わらない筈だが、未対応・未試験。必要な改修/追記箇所は、Modelicaからコマンドを実行する部分だと思う。いづれは対応させようと考えている。

入門 Python 3


[amazon、紙面版]

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


[amazon、電子版・紙面版]

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


[amazon, 紙面版・電子版]

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

この記事 のリアルタイムデータ出力ツールと見た目は変わらない。インターフェイスとしてvariableを受け取るportが1つ有るのみ。そして、複数のvariableを出力させるのに対応するために、portは単一のrealではなく、real vectorにしている。


pythonインタプリタがインストールされているパス、受け取るvariableの数、variableの値を一時的に書き出すcsvファイルの名前、csvファイルのパス、各variableの名前、値をアップデートする時間間隔をparametersから設定する。

尚、csvファイルのパス、csvファイルの名前は、特に必要なければデフォルトのままで良い。pythonインタプリタのパスだが、こちらも、最もメジャーなAnaconda3をデフォルト設定でインストールしていれば変更なく使える筈だ。


そして、下図が機能確認用のexampleモデル。 この記事 で紹介した DeviceDrivers library のコンポーネントを組み合わせ、リアルタイムに variable をモニターしながら input の値をキーボード操作で変化させる例としている。



動作確認の様子(静止画)。simulation をスタートすれば pyConsole のウィンドウが自動で立ち上がり、そのままシームレスにシミュレーションが行われる。 前回 と違い、 ユーザーが OpenModelica と別に python スクリプトを実行する手間を無くしている。(simulation 終了後は、pyConsole のウィンドウを手動で閉じる必要が有るがクリック1つで済むものなので手間ではない筈。)

尚、pyConsole立ち上げ時にコマンドウィンドウも現れて目障りだが、pyConsoleが自動で手前に現れ、pyConsoleを閉じると自動で消えることから利用上の実害は生じない。


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

意図通り動作している。2行目の time[s] が刻々と現実の時間と同じ速さで変化し, 3から6行目の u, 2*u, sin(u), cos(u) の値が、キーボードからの入力操作に応じて変化している。シミュレーション終了後は、pyConsole ウィンドウを閉じると OpenModelica のシミュレーション実行が完全に終了となり、plot表示モードへと移行する。

*表示の1列目は pyConsole 実行開始からの経過時刻を表示しているもので、シミュレーションとは無関係のもの。

 

地味・シンプルなツールだが、これだけでもこれまでより面白いシミュレーションが行えるモデルが数多有るのではないだろうか?過渡応答を伴うモデルや制御が入ったモデルは確実に事前入力のシミュレーションより面白くなる事と思う。

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


かくして、interactive simulation 用ツールの雛形が完成した( python スクリプトを実行可能な環境は必要だが。)。今後は、本ライブラリに関しては下記の取り組みを進めてゆく予定だ。

  • よりユーザーフレンドリーな表示ツール( python スクリプトもしくはCのUIプログラム)の開発。例えば、デジタルで数値表示するのではなく、レンジを設定してメーター型で表示するツール。
  • 一時csvファイルを介さない、より高速なGUIツールへのデータ受け渡しを行うプログラムの開発。

以上




ブログ移転の案内

この記事 でお知らせしたとおり、本ブログはブログサービス下での運営を止め、個人サーバー上の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, 紙面版]


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