MV-7011:Functional Mockup Interface(FMI)を介したActivateとの連成

本チュートリアルでは、FMIを介してActivateと連成するためにMBSモデルをセットアップするプロセスについて学びます。

この演習では、mbd_modeling\motionsolve\cosimulation\activate>フォルダーにあるQuadrotor_complete.mdlrotor.h3dshaft.h3dsuperblade.h3dおよびQuadrotor_Control_fmu.scmファイルを使用します。

FMIを活用した連成は、異なるソフトウェアがインタラクティブに互いにデータ交換を行うための1つのプロトコルを定めるもので、これにより、複数のソルバーが互いに連成することが可能となります。

このインターフェースの活用によって、MotionSolveがActivateもしくはFMIスタンダードをサポートするその他のソフトウェアと連成することができます。これを行うために、MotionSolveモデルはまず、MotionSolveモデルを表すスタンドアローンモデリングユニットであるFunctional Mockup Unit(FMU)に変換される必要があります。FMUは、FMIに定められているプロトコルに含まれ、このインターフェースをサポートするソフトウェアによってインポートまたはエクスポートすることが可能です。

MotionSolveは、1-Dシミュレーターなど他のソフトウェアにインポート可能なタイプ“co-simulation”(連成)のFMUをエクスポートすることができます。タイプ“co-simulation”は、MotionSolve FMUがソリューションのそのパートの計算を担う、すなわち、連成が開始された時点でMotionSolveが起動されることを意味します。

本チュートリアルは、下記に必要な手順を説明しています:

  1. MBSモデルのオープンと検証
  2. MotionViewからのFMUのエクスポート
  3. FMUを使用し、Activateを用いた連成解析の実行
  4. 連成結果のActivateでの確認

本チュートリアルには、クワッドローター(回転翼機)を表すモデルが使用されます。モデルの構造、ローターブレードなどはMotionView/MotionSolveでモデル化され、ローターの水平方向の動きと推力をコントロールするためにローターの回転数を制御するにはActivateが用いられます。風の影響を模倣するために、回転翼機にはロール力が付与されます。シミュレーションの狙いは、ローターがターゲットの高さを達成するよう推力をコントロールすることにあります。

本チュートリアルを首尾よく完了するために、以下のソフトウェアが必要です:

  • HyperWorks 2017.1以降
  • sT/Activate 2017.1以降

モデルの確認

  1. MotionViewの新しいセッションを開始します。
  2. Model-MainツールバーからOpen Modelアイコンをクリックします。
    ヒント: または、File > Open > Modelを選択することもできます。
  3. Open modelダイアログで、 <作業ディレクトリ>にあるファイルQuadrotor_complete.mdlを選択し、Openをクリックします。
  4. モデルを確認します。


    図 1.
    注: このモデルは、入力(ControlInput)と出力(PlantOutput)を含んで用意されています。出力は、MotionSolveによって環境(Activate)に送られる信号です。入力は、環境からMotionSolveにより受け入れられる信号です。
    この例では、下記の出力がMotionSolveによって計算され、外部ソルバー(Activate)に渡されます:
    名称 説明
    Roll Angle 全体フレームでの回転翼機のロール角
    Altitude 全体フレームでの回転翼機の高さ
    Pitch Angle 全体フレームでの回転翼機のピッチ角
    PosX 全体フレームでの回転翼機のX座標
    PosY 全体フレームでの回転翼機のY座標
    VX 全体フレームでの回転翼機のX速度
    VY 全体フレームでの回転翼機のY速度
    MotionSolveにより、外部ソルバーからの以下の入力が期待されます:
    名称 説明
    Roll_Command 回転翼機のロールを制御するための制御信号
    Throttle_Command 回転翼機のスロットルを制御するための制御信号
    Pitch_Command 回転翼機のピッチを制御するための制御信号

MDLのFMUとしてのエクスポート

  1. Standardツールバーから、Export Modelアイコンをクリックします。
    ヒント: または、File > Export > Modelを選択することもできます。
    Export Modelダイアログが表示されます。
  2. Export as Functional Mockup Unit (FMU)オプションを選択し、Select FMU fileブラウザを使って、FMUのファイル名を Quadrotor.fmuと設定します。


    図 2.
  3. Export ボタンをクリックします。
    注: エクスポートされる前にモデルを保存するようプロンプトが出されたら、この時点でOKをクリックします。
    MotionViewは、完全なMotionViewモデルとFMIスタンダードに準拠したその他のライブラリを含むアーカイブ(またはジップ)パッケージ(*.fmuタイプのもの)を生成します。エクスポートが完了すると、FMUが作業ディレクトリに作成されます。FMUは基本的にZIPファイルであるため、このファイルを開いて内容を検証することができます。1つのMotionSolve FMUは下記のファイルのセットで構成されています:
    modelDescription.xml
    このファイルはFMUおよびソフトウェア(ここではActivate)にインポートするコンテンツを記述します。
    "binaries"フォルダー
    このフォルダーには、FMUを使用してMotionSolveと連成するために必要なプラットフォーム固有のバイナリが含まれます。
    "resources"フォルダー
    このフォルダーには、アーカイブされたMDLモデル、およびモデルの実行に必要なすべてのファイルが含まれます。また、連成の実行に必要な一部の予備ファイルも含まれています。

ActivateでのFMUのインポート

  1. FMUがActivateにインポートされる前に、HyperWorksのインストール位置を示す環境変数を設定する必要があります。環境変数は、オペレーティングシステムによって異なります。
    オペレーティングシステム 環境変数
    Windows ALTAIR_FMU_ROOT=altair_install
    Linux ALTAIR_FMU_ROOT=altair_install/altair

    LD_LIBRARY_PATH= altair_install/altair/hwsolvers/motionsolve/bin/linux64:$LD_LIBRARY_PATH

    (MotionSolveソルバーの場所は、LD_LIBRARY_PATH 環境変数に追加されます)

    RADFLEX_PATH= altair_install/altair/hwsolvers/common/bin/linux64

  2. Activateを起動し、Open Modelボタンを使って<作業ディレクトリ>からQuadrotor_Control_fmu.scmファイルを開きます。
    ヒント: File > Openメニューオプションを使ってQuadrotor_Control_fmu.scm ファイルを選択することも可能です。


    図 3.
  3. 右側のPaletteブラウザでActivate > CoSimulationをダブルクリックし、FMUブロックをモデルGUIにドラッグ&ドロップします。


    図 4.
    注: 右側にPaletteブラウザが見つからない場合、Menu内のView > Palette Browser をクリックしてONにします。
  4. FMUブロック上をダブルクリックし、FMUを指定します。


    図 5.
  5. ファイルブラウズボタンをクリックし、MotionViewからエクスポートしたFMUを選択します。
    注: FMUが読み込まれると、このダイアログ内の他のいくつかの欄が自動的に満たされます。


    図 6.
    ヒント: “Output file location”という名称のパラメータ内のテキストを変更することによって、MotionSolveからの出力ファイル(.mrf.abf.h3dなど)を指定することができます。
  6. ダイアログボックス内のInfoボタンは、インポートされるFMUについての情報を提供します。これをクリックして詳細を確認し、Closeをクリックして終了します。
  7. OKをクリックし、FMUを選択して閉じます。
    FMUブロックは、FMUに基づいて、入力および出力の正しい数を反映するよう変わります。


    図 7.
    ヒント: 入力名と出力名が見えるようになるまで、FMUブロックのサイズを変更することができます。


    図 8.
  8. コネクターポートを介してFMUブロックをモデルの残りに接続します。
    接続後、モデルは下図に示すようになるはずです。


    図 9.


    図 10.

Activateモデルの実行

  1. File > Preferencesをクリックします。
    注: Activateは、実行が成功裏に完了するために、MotionSolveライセンスユーティリティの場所を知っている必要があります。Preferencesダイアログでこれを設定できます。
  2. Activate > Paths > Cosimulation with MotionSolveオプションを使用し、MotionSolveライセンスをMotionSolveライセンスモジュールの場所に設定します。たとえば、C:/Program Files/Altair/2020/hwsolvers/common/bin/win64


    図 11.
  3. Run the Simulationボタンをクリックし、シミュレーションを開始します。
    注: ActivateがFMUを起動し、FMUはパッケージ化されたMDLからXMLを生成し、それを用いて連成シミュレーションを開始します。連成シミュレーションは、プロセス間通信(IPC)をベースとするため、MotionSolveは新しいスレッドで開始されます。

結果の確認

Scopeブロックのいずれかをダブルクリックし、このモデルについてのシミュレーション結果を確認します。


図 12.
注: スコープは、リアルタイムでのMotionSolve FMUブロックへの入力およびそこからの出力を監視するために使用できます。

altittude1スコープは、回転翼機の高さを示します。約8秒後、クワッドローターは目標とした高さで安定したと見受けられます。

ScopeXYはクワッドローターのターゲットのX、Yパス(赤色) vs. 実際のX、Yパス(ピンク色)を示します。

MotionSolve出力ファイル群(MRF、ABF、PLT、H3Dなど)から結果を取得することができます。また、システムの監視のみに使用する式をMotionSolveモデル内に作成することも可能です。