FMU(Functional Mockup Unit)としたMotionSolveモデル

FMU(Functional Mockup Unit)を活用してMBSモデルを外部のソルバーやプロセスと結合し、連成シミュレーションの実行やシステムの結合を実現する方法を説明します。

FMUは、FMI(Functional Mockup Interface)を実装したスタンドアロンのモデリング単位と考えることができます。3D MotionSolveモデルをFMUに変換することで、T/Activateなどの1Dブロック環境シミュレーターでMBSシステムを表現できます。



図 1. 1Dブロックのシミュレーション環境に置いたMotionSolveモデル

FMUの一般的な使用シナリオは、図1のような1DシミュレーターにFMUをインポートし、制御システム、油圧システム、熱システムなどの他のシステムと結合して連成シミュレーションを実現することです。FMIの詳細については、www.fmi-standard.org/をご参照ください。

FMUには次の2種類があります:
モデル交換
簡単にいうと、プログラムを呼び出して解決する必要がある一連の式を記述したFMUなどが該当します。
連成シミュレーション
呼び出し元プログラムとは無関係にモデル方程式を解決し、そのプログラムとは特定の信号で通信するにすぎないFMUなどが該当します。


図 2. 1D環境における連成シミュレーションFMUと他のシステムとの結合
MotionSolveで実装するFMUは連成シミュレーション専用で、その標準のバージョン2.0に準拠しています。さらに、MotionSolveで生成する連成シミュレーションFMUは、“ツール結合型”FMUです。つまり、このFMUは、MotionSolveを呼び出し元プログラムと“結合”するためのすべての情報を収めていますが、MotionSolveソルバーは呼び出し元プログラムとは独立して存在し、そのプログラムとは独立して実行されて、シミュレーション結果を生成します。


図 3. 1D環境での“ツール結合”に基づくMotionSolveFMU

“ツール結合型”FMUは、連成シミュレーションが要求されたときに、MotionSolveソルバーが存在する場所を認識している必要があります。

現在のところ、MotionSolveには、MBSモデルを次のようなシステムに結合するために、ネイティブな連成シミュレーションインターフェースがいくつか用意されています。
  • 制御システム(Simulink、Activate)
  • 油圧システム(Simulink、Activate、DSHPlus)
  • 熱システム(Simulink、Activate)
  • 流体システム(AcuSolve
これらの観点から、FMIの連成シミュレーションによるアプローチで得られる利点を検討してみます。
普遍性
FMIは、CAE業界での採用が年々進んでいる標準であることから、その明らかな利点として普遍性が挙げられます。FMIを実装しているソルバーであれば、他の多彩なソルバー、システム、プロセスと結合できます。これにより、連成シミュレーションのパイプライン作業の作成と管理が容易になります。
移植性
FMUは自己記述型なので、連成シミュレーションFMUの実行に必要なすべてのライブラリとリソースがFMU自身に収められています。このように、複数のモデル、アセンブリ、システムの間でFMUを容易に再使用できるほか、同じプラットフォームを実行しているマシンどうしで再使用することもできます。

MotionSolveモデルからのFMUの作成

MotionViewでは、任意のMotionSolveモデルからFMUを容易に作成できます連成向けにモデルを設定するプロセスは、他のインターフェースの場合と同様です。
  • MotionView(MBS)モデルには、プラント出力タイプのソルバー配列が1つ以上必要です。このソルバー配列では、FMUからの出力チャンネルとして機能するソルバー変数を1つ以上参照している必要があります。このFMUからのソルバー変数チャンネル出力は、外部システムにある他のコンポーネントへの入力になります。

    外部システムからの入力をMBSモデルで受け取るには、プラント入力タイプのソルバー配列が必要ですが、FMUの生成では、この配列は必須ではありません。このソルバー配列も、1つ以上のソルバー変数を参照します。

モデルをFMUとしてエクスポートする方法については、MotionViewユーザーガイドのモデルのインポートとエクスポートをご参照ください。

生成したFMUには以下の情報が記述されています:
  1. FMUの説明。“modelDescription.xml”に収録されています。
  2. MotionSolve固有のFMUライブラリ。“bin”フォルダーに保存されています。
  3. MDL形式によるMotionSolveモデルファイル。補足のプロパティファイルやユーザーサブルーチンファイルがあるモデルでは、それらも共に圧縮ファイルに収録されます。
    注: ハードウエアのインストール環境にあるユーザーサブルーチンファイルやプロパティファイルは圧縮されません。これは、FMUのサイズを管理し、ソフトウエアのバージョンに伴う問題を回避することを目的とした措置です。

MotionSolve FMUと他のシステムとの結合と連成シミュレーション

このMotionSolve FMUは、連成シミュレーションのFMUをインポートできるあらゆるソフトウエアで使用できます。このようなソフトウエアの一例として、Altairの1Dシミュレーション環境であるsT/Activateがあります。他のシミュレーション環境と共に連成シミュレーションが動作するには、次の要件を満足する必要があります。
  1. バージョン2017.1以降のHyperWorksをインストールした環境が必要です。
  2. 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/2021Linuxの場合は /homes/applications/2021

この項の以降の説明では、1DシミュレーターとしてActivateを使用してワークフローを紹介します。

Activateでは、PaletteブラウザのCoSimulationパレットに用意されているFMU Importブロックを使用して、MotionSolve FMUを読み込むことができます。


図 4.
メインウィンドウにドロップしたブロックをダブルクリックして、以下の手順に従います:
  1. エクスポートした.fmuファイルを参照します。
  2. 入力ポートの値を設定します。

    Activateでは、出力の数に基づいて、デフォルトで依存性ベクトルが設定されます。

  3. .mrfファイル(MotionSolveの結果ファイル)の出力ファイルの場所を文字列で指定します。


図 5.
注: Projectブラウザで“Make Designable”オプションを使用して、指定可能としたエンティティデータメンバー、またはMotionViewの最適化ウィザードを使用して設計変数として宣言したエンティティデータメンバーが、Parametersセクションに一覧表示されます。これらのパラメータは、シミュレーションによって異なることがあります。解析の際、MotionViewによって、これらのパラメータの新しい値に従ってモデルが変更され、変更後のモデルに対応するMotionSolveのXMLがエクスポートされます。
このほか、Advancedタブで、FMUの展開先とするディレクトリを指定できます。このディレクトリを指定しない場合、Activateではデフォルトでtempディレクトリが使用されます。MotionSolveの出力ファイルの場所を相対パスで指定した場合、展開先ディレクトリが基準ディレクトリになります。


図 6.
MotionSolveモデルで指定した入力数と出力数に応じて、MotionSolve FMUの入力と出力を、制御システムの空いている部分に接続できます。


図 7.

MotionSolveのシミュレーション設定はMotionSolveモデルで制御されていますが、呼び出し元プログラム側のシミュレーション終了時間に応じて、シミュレーションの終了時間が自動的に変更されることがあります。

画面上部のActivateリボンにある、シミュレーションの実行(再生)ボタンをクリックします。


図 8.

連成シミュレーションが始まると、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)をご参照ください。