Functional Mock-Up Interface(FMI)のサポート
Functional Mock-Up Interface(FMI)は様々なツール間のインターフェースを作成するための新たな規準です。
FMI規準は、2つの主要なインターフェースソリューション:モデル交換と連成シミュレーションを定義します。あるツールから別のツールへのエクスポートは、FMUファイルを通して行われます。Twin Activateは、FMI-1.0、2.0、および3.0からのFMUブロックをシミュレートでき、モデル交換と連成シミュレーションの両方のブロックタイプをサポートしています。
FMU Import
FMUブロックは、FMUブロックのインポートとシミュレートを可能にします。
このブロックは、パレットの
にあります。
FMUブロックは、FMIバージョン(1.0、2.0、または3.0)とFMIタイプ(モデル交換または連成シミュレーション)を自動検出し、対応するシミュレーション方法を適用します。FMU Importブロックをダブルクリックすると、ブロックダイアログが表示されます。

このブロックダイアログでは、FMUブロックの選択とロードが可能です。入力数、出力数、状態変数の数などの値を各フィールドに入力するか、ReloadをクリックしてFMUブロックを読み取り、フィールドに自動入力します。パラメーターテーブルには、FMU変数変数が表示されており、その開始値は編集可能です。値の変更は、シミュレーション開始前に考慮されます。
ダイアログに値が入力されると、FMUブロックをモデルダイアグラムに追加できるようになります。次の例は、水力学ソフトウェア製品による連成シミュレーションを実施するダイアグラムのFMUブロックを示しています。

FMUエクスポート
FMUエクスポート機能では、Twin ActivateのスーパーブロックをFMUモジュールとしてエクスポートできます。
- FMI-2.00または3.0としてエクスポートします。
- モデル交換または連成シミュレーション、あるいはその両方としてFMUをエクスポートします。
- スーパーブロックの内部情報がIP保護のために秘匿されます。
- 内部ブロックのパラメータがFMUに表示されます。
- いくつかの固定ステップソルバーと可変ステップソルバーを、連成シミュレーション向けにFMIへエクスポートできます。
- エクスポートしたFMUを、Twin ActivateなどのFMI互換ツールにインポートできます。
- ReadfromMatやSignalInなどの信号インポートブロック。
- WritetoMatやSignalOutなどの信号エクスポートブロック。
- ScopeやDisplayなどの信号ビューアブロック。
- MotionSolve、Spiceなどの連成シミュレーションブロック。
- メモリブロックはサポートされていません。
-
FMUにエクスポートするには、ダイアグラムの中でエクスポートする領域を選択し、それをスーパーブロックに変換します。
たとえば、以下のモデルでは、スーパーブロックcontroller_to_exportを選択できます。
controller-to-export スーパーブロックは線形システムとマトリックスゲインブロックを有し、1つのスカラー入力と2つのベクトル出力を備えています。
-
このスーパーブロックの作成後、リボンで
の順に選択します。スーパーブロックを右クリックし、コードの生成とエクスポート(Code Generation and Export)を選択することもできます。
- ターゲット(Target)でFMUを選択します。
-
コード生成ツール:標準コード生成(Standard code generation)またはインラインコード生成(Inlined code generation)。
- 標準コード生成(Standard code generation):Twin Activateで使われているのと同じライブラリがFMUの中にパッケージされています。この方法は、FMUエクスポート用により多くのTwin Activateブロックをサポートますが、すべての必要なライブラリのバイナリがFMUに含まれるため、FMUサイズが大きくなる可能性があります。
- インラインコード生成(Inlined code generation):Twin Activate ブロックに対して最適化されたCコードが生成されます。生成されたCコードはFMUでエクスポートし、別のOS用に再コンパイルすることができます。 注: Modelicaブロックは、連成シミュレーション用のインラインコード生成だけでなく、標準コード生成でもエクスポートできます。注: Modelicaブロックなど、Twin Activateブロックの中には、モデル交換用のインラインコード生成でエクスポートできないものがあります。注: インラインコード生成はFMI-3.0としてもエクスポートでき、配列とクロックをサポートします。
-
FMUタイプ:モデル交換(Model Exchange)、連成シミュレーション(CoSimulation)、または連成シミュレーションとモデル変換(CoSimulation and Model Exhange)。
エクスポートしたFMUの名前と識別子では、スーパーブロックの名前が保持されています。したがって、スーパーブロックの名前にサポート対象外の文字を使用していると、それはASCII文字に変換されます。例えば、スーパーブロックの名前がSuperB !\%lockの場合、この名前はsb_SuperB32339237lockに変換されます。
エクスポート方式として連成シミュレーションを選択した場合は、Twin Activateのシミュレーターのほか、シミュレーションパラメータもモデルとともにエクスポートされます。
注:FMIエクスポート機能には、C/ C++コンパイラーが必要です。
Windowsプラットフォームでは、Microsoft Visual Studio C/C++コンパイラーが必要です。作成したCコードをコンパイルするには、システムに正しいコンパイラーがインストールされていることを確認します。コンパイラーがないと、FMUに対応したバイナリが存在しないのでFMIエクスポートができません。
Linuxプラットフォームでは、Twin Activateはシステム上のGCCコンパイラーを使用します。
注:Twin Activateによって、システム上のCコンパイラーが自動的に検出されます。OMLコマンド
vssGetCompilerName()
を使用すると、Twin Activateで認識されたCコンパイラーが表示されます。 - エクスポート方式を選択すると、によってスーパーブロックがエクスポートされ、FMUの保存先を指定するように求められます。デフォルトの保存場所は、元のモデルファイルが保存されているフォルダです。
FMUドキュメントのエクスポート
OML コマンドを発行して、FMU情報を .html ファイルで出力します。
FMUをエクスポートする際に、FMU内のスーパーブロックの説明を記載した.htmlファイルを生成して含めることができます。エクスポートされる記述は、スーパーブロックダイアグラムのモデルレポートです。
デフォルトでは、.html ページは生成されません。この機能を有効にするには、OMLコマンドウィンドウで、次のように入力します:setenv('Activate_FMU_export_DOC','true')
LinuxプラットフォームでのFMUエクスポート
LinuxでFMUのエクスポートを行うには、ldバージョン2.27以上が必要です。
LinuxプラットフォームでFMUをTwin Activateにエクスポートするには、Cコードのコンパイルとリンクにldバージョン2.27以降が必要です。Binutilsをコマンドでインストールまたはアップデートすることにより、互換性のあるバージョンのldで作業していることを確認することができます。yum install binutils
.
FMUエディター
FMUエディターでは、FMUの階層の操作、変数や属性の表示/非表示、カスタマイズされたFMUの保存とエクスポートが可能です。
- リボン上で を選択します。
-
FMUエディターで、
を選択し、FMUに移動します。
FMUエディターには、 FMU 変数とFMU属性 タブがあります。 -
FMU変数タブを選択すると、複数のオプションで変数をカスタマイズできます:
- FMU内をツリービューで移動します。
- 表示する変数を選択します。
- 非表示にする変数の選択を解除します。
- 変数の記述を修正します。
- FMUのエディターツールを使って、変数の操作を行います:すべて選択/選択解除、順番の反転、検索。
-
FMU属性タブを選択すると、これらのオプションを使用してFMUをカスタマイズすることができます。
- FMU属性の説明を修正します。
- 編集可能な属性フィールドを変更する。グレーアウトした項目は、変更できません。
-
名前をつけてFMUを保存(Save FMU A)ボタンをクリックし、カスタマイズしたFMUに名前を付けて保存します。
これで、カスタマイズしたFMUの共有が可能になります。元のFMUは変更されません。