FMU(Functional Mockup Unit)としたMotionSolveモデル
FMU(Functional Mockup Unit)を活用してMBSモデルを外部のソルバーやプロセスと結合し、連成シミュレーションの実行やシステムの結合を実現する方法を説明します。
FMUは、FMI(Functional Mockup Interface)を実装したスタンドアロンのモデリング単位と考えることができます。3D MotionSolveモデルをFMUに変換することで、T/Activateなどの1Dブロック環境シミュレーターでMBSシステムを表現できます。
FMUの一般的な使用シナリオは、図1のような1DシミュレーターにFMUをインポートし、制御システム、油圧システム、熱システムなどの他のシステムと結合して連成シミュレーションを実現することです。FMIの詳細については、www.fmi-standard.org/をご参照ください。
- モデル交換
- 簡単にいうと、プログラムを呼び出して解決する必要がある一連の式を記述したFMUなどが該当します。
- 連成シミュレーション
- 呼び出し元プログラムとは無関係にモデル方程式を解決し、そのプログラムとは特定の信号で通信するにすぎないFMUなどが該当します。
“ツール結合型”FMUは、連成シミュレーションが要求されたときに、MotionSolveソルバーが存在する場所を認識している必要があります。
- 制御システム(Simulink、Activate)
- 油圧システム(Simulink、Activate、DSHPlus)
- 熱システム(Simulink、Activate)
- 流体システム(AcuSolve)
- 普遍性
- FMIは、CAE業界での採用が年々進んでいる標準であることから、その明らかな利点として普遍性が挙げられます。FMIを実装しているソルバーであれば、他の多彩なソルバー、システム、プロセスと結合できます。これにより、連成シミュレーションのパイプライン作業の作成と管理が容易になります。
- 移植性
- FMUは自己記述型なので、連成シミュレーションFMUの実行に必要なすべてのライブラリとリソースがFMU自身に収められています。このように、複数のモデル、アセンブリ、システムの間でFMUを容易に再使用できるほか、同じプラットフォームを実行しているマシンどうしで再使用することもできます。
MotionSolveモデルからのFMUの作成
- MotionView(MBS)モデルには、プラント出力タイプのソルバー配列が1つ以上必要です。このソルバー配列では、FMUからの出力チャンネルとして機能するソルバー変数を1つ以上参照している必要があります。このFMUからのソルバー変数チャンネル出力は、外部システムにある他のコンポーネントへの入力になります。
外部システムからの入力をMBSモデルで受け取るには、プラント入力タイプのソルバー配列が必要ですが、FMUの生成では、この配列は必須ではありません。このソルバー配列も、1つ以上のソルバー変数を参照します。
モデルをFMUとしてエクスポートする方法については、MotionViewユーザーガイドのモデルのインポートとエクスポートをご参照ください。
- FMUの説明。“modelDescription.xml”に収録されています。
- MotionSolve固有のFMUライブラリ。“bin”フォルダーに保存されています。
- MDL形式によるMotionSolveモデルファイル。補足のプロパティファイルやユーザーサブルーチンファイルがあるモデルでは、それらも共に圧縮ファイルに収録されます。注: ハードウエアのインストール環境にあるユーザーサブルーチンファイルやプロパティファイルは圧縮されません。これは、FMUのサイズを管理し、ソフトウエアのバージョンに伴う問題を回避することを目的とした措置です。
MotionSolve FMUと他のシステムとの結合と連成シミュレーション
- バージョン2017.1以降のHyperWorksをインストールした環境が必要です。
- HyperWorksライセンスが必要です。
ライセンスファイルALTAIR_LIC.datを、altair_install/security(Windowsの場合、v2017用のaltair_installのデフォルトの場所はC:/Program Files/2017)に保存することで設定できます。または、環境変数ALTAIR_LICENSE_PATHにて、ライセンスファイルの保存先パスを指定することもできます。この環境変数を使用して、サーバーからライセンスを入手することもできます。詳細については、HyperWorks LicensingオンラインヘルプのConnecting to the Altair License Managerをご参照ください。
HyperWorksのバージョンとOSに応じて、以下の環境変数を設定します。HyperWorksバージョン Windows Linux 2017/2018 ALTAIR_FMU_ROOT=altair_install NUSOL_DLL_DIR= altair_install/hwsolvers/motionsolve/bin/win64
使用不可 2019 ALTAIR_FMU_ROOT=altair_install 使用不可 2020以降 ALTAIR_FMU_ROOT=altair_install ALTAIR_FMU_ROOT=altair_install/altair LD_LIBRARY_PATH= altair_install/altair/hwsolvers/motionsolve/bin/linux64: altair_install/altair/hwsolvers/common/bin/linux64: $LD_LIBRARY_PATH
(MotionSolveソルバーとライセンスの場所は、LD_LIBRARY_PATH 環境変数に追加されます)
altair_install (v2021の例)。Windowsの場合はC:/Program Files/Altair/2021 、Linuxの場合は /homes/applications/2021。
この項の以降の説明では、1DシミュレーターとしてActivateを使用してワークフローを紹介します。
- エクスポートした.fmuファイルを参照します。
- 入力ポートの値を設定します。
Activateでは、出力の数に基づいて、デフォルトで依存性ベクトルが設定されます。
- .mrfファイル(MotionSolveの結果ファイル)の出力ファイルの場所を文字列で指定します。
MotionSolveのシミュレーション設定はMotionSolveモデルで制御されていますが、呼び出し元プログラム側のシミュレーション終了時間に応じて、シミュレーションの終了時間が自動的に変更されることがあります。
連成シミュレーションが始まると、MotionSolveが連成シミュレーションFMUによって呼び出されます。現在のところ、FMUを使用しているマシンにMotionSolveがインストールされていることが前提となっています。呼び出されたMotionSolveは呼び出し元プログラムにアクセスし、そのプログラムと通信します。
MotionSolveの他の連成シミュレーションインターフェースと同様に、精度とパフォーマンスとの間で妥当なトレードオフを選択することによって、結果の品質を制御します。したがって、シミュレーションに使用する時間ステップが桁数のオーダーで短いほど、得られる結果の精度は高くなりますが、シミュレーション実行のパフォーマンスは犠牲になります。
MBSモデルをFMUとして抽象化する独自の機能により、複数のMotionSolveモデルどうしを結合できるようになります。
この機能を使用すると、別々のMotionSolveモデルに取り入れたシステムどうしを結合できます。MotionSolve FMUから得られた信号を接続する方法に制約はないので、例えば、スタンドアロンのMotionSolve FMUを複数実行して設計を比較できます。
詳細については、MV-7011: Co-Simulation with Activate via Function Mockup Interface (FMI)をご参照ください。