モデルをツール結合 FMU としてエクスポート
Simulink® コンポーネントをサードパーティ ソフトウェアに統合するには、Simulink モデルをツール結合 Functional Mockup Unit (FMU) としてエクスポートします。サードパーティ製ツールは FMU を実行する際に、必要なライセンスをチェックアウトし、Simulink のローカル インストールを開始してモデルを起動します。ツール結合 FMU は、FMU によってカプセル化される固定ステップ ソルバーと可変ステップ ソルバーをサポートします。
プロジェクトを使用して FMU をエクスポートします。モデルを開き、[新規] 、 [プロジェクト] 、 [このモデルからの新規プロジェクト] を選択してモデルからプロジェクトを作成します。この例では、vdp モデルを使用します。
プロジェクトから FMU を対話的にエクスポートできます。
プロジェクトで、[共有]、[ツール結合 FMU] を選択します。

[Copyright]、[説明]、および [FMU アイコン] フィールドに入力します。[設定の保存と出力形式] をクリックし、名前を指定します。
生成された FMU には、モデルの実装と、エクスポート中に指定されたメタデータが含まれます。
<?xml version="1.0" encoding="utf-8"?>
<fmiModelDescription author="" copyright="" description="" fmiVersion="2.0"
generationDateAndTime="2018-08-16T15:51:48Z"
generationTool="Simulink (R2018b)"
guid="5bd096be-a08d-020e-fc96-847aa21def5b"
license=""
modelName="vdp"
variableNamingConvention="structured"
version="1.8">次のようにして、プロジェクトを作成し、コマンド ラインから FMU にエクスポートすることもできます。
% Access the vdp model vdp; p = slproject.create('vdpProject') copyfile(which('vdp'), './vdpFMU.slx') p.addFile('./vdpFMU.slx') Simulink.fmuexport.ExportSimulinkProjectToFMU(p,'vdpFMU.slx','-fmuname','vdpFMU')
コマンド ラインからその他の FMU エクスポート オプションを示すには、以下を入力します。
help Simulink.fmuexport.ExportSimulinkProjectToFMU
ツール結合 FMU にはコンパイラ要件はありません。ただし、モデルは、エクスポートについて以下の条件を満たさなければなりません。
モデルはノーマル モードまたはアクセラレータ シミュレーション モードでなければならない。
ルートの入力端子と出力端子は次のいずれかの数値データ型でなければならない。
doubleint32Booleanすべての要素が
double、int32、またはBooleanのいずれかであるSimulink.Busオブジェクト基本データ型が
double、int32、またはBooleanのいずれかに解決されるSimulink.AliasTypeオブジェクト
Simulink からエクスポートされたコシミュレーション コンポーネントである場合、FMU のローカルのサンプル時間は元のモデルのサンプル時間です。
ツール結合 FMU に調整可能なパラメーターを含める
調整可能なパラメーターを含めるには、以下を行います。
関連する Simulink プロジェクトからモデルを開きます。
Simulink モデルから、[モデル化] タブをクリックし、モデル エクスプローラーを起動します。
[モデル ワークスペース] を選択し、変数 MATLAB® または Simulink パラメーターを追加します。
追加する調整可能なパラメーターのそれぞれについて、[データ プロパティ] または [Simulink.Parameter] ペインで [引数] チェック ボックスをオンにします。
[適用] をクリックします。
モデル内の調整可能なパラメーターを参照します。
ツール結合 FMU をエクスポートします。
コンテンツを隠すための保護モデルの使用
エクスポートされたツール結合 FMU は zip パッケージで、このパッケージには元の Simulink プロジェクトとそのリソース フォルダー内のモデル ファイルが含まれています。知的所有権を保護し、モデルのコンテンツを隠すには、保護モデルを使用します。モデルを保護モデルとして保存するときは、シミュレーションなど、保護モデルでサポートする機能を選択します。Model ブロックをもつモデルを作成して SLXP ファイルを読み込みます。その後、ツール結合 FMU にエクスポートするときに、このモデルをメイン インターフェイス モデルとして使用します。詳細については、コンテンツを隠すためのモデルの保護 (Embedded Coder)を参照してください。
エクスポートされたツール結合 FMU の使用
エクスポートされた FMU には、Simulink のローカル インストールの実行が必要です。コシミュレーションに使用される MATLAB バージョンは、FMU がエクスポートされた MATLAB バージョンと同じでなければなりません。Windows® で、FMU を実行するアプリケーションは、必要なライセンスを自動的にチェックアウトできます。他のオペレーティング システムの場合は、以下の設定を適用します。
Linux® では、次のようにします。
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:<InstallationFolder>/bin/glnxa64:<InstallationFolder>/extern/bin/glnxa64 (csh/tcsh) export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<InstallationFolder>/bin/glnxa64:<InstallationFolder>/extern/bin/glnxa64 (bash)macOS では、次のようにします。
setenv DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH}:<InstallationFolder>/bin/maci64:<InstallationFolder>/extern/bin/maci64 (csh/tcsh) export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:<InstallationFolder>/bin/maci64:<InstallationFolder>/extern/bin/maci64 (bash)
macOS の場合、システム整合性保護 (SIP) により、setenv コマンドは、MATLAB などの新しいプロセスを開始するアプリケーションで機能しません。macOS システムにおけるランタイム ライブラリ パスの設定に従って DYLD_LIBRARY_PATH を <InstallationFolder>/bin/maci64:<InstallationFolder>/extern/bin/maci64 に設定します。
FMU を実行する前に、オペレーティング システム コンソールから MATLAB セッションを設定しなければなりません。このセッションを設定してから、サードパーティ製アプリケーションを開始し、ツール結合 FMU をインポートします。各 FMU インスタンスには、新しい MATLAB セッションが必要です。
MATLAB からの専用セッションの開始
FMU をインポートするアプリケーションが FMU の単一インスタンスを実行する場合、MATLAB を使用してセッションを開始できます。
>> shareMATLABForFMUCoSim
shareMATLABForFMUCoSim は、インポートされた FMU のコシミュレーションを実行するための外部ツールからの要求に利用可能な、現在の MATLAB セッション専用です。FMU がこのセッションに接続している場合、Simulink エディターおよび Simulink プロジェクトは読み込まれ、コシミュレーションは自動的に開始します。このセッションを使用して、コシミュレーションの一時停止、再開を行うことができるほか、コシミュレーションの実行中にコマンド ウィンドウからパラメーターを調整して信号をプロットできます。コシミュレーションが完了するか、ユーザーによって停止されるか、実行時エラーで中断される場合、MATLAB が閉じられ、Simulink エディターおよび Simulink プロジェクトがアンロードされて、モデルへの変更が破棄されます。エラーが発生すると、この FMU をインポートするシミュレーション ツールに表示されます。各セッションは、同時に 1 つの FMU インスタンスに接続できます。
オペレーティング システムからの専用セッションの開始
FMU をインポートするアプリケーションが複数の FMU インスタンスを起動する場合、オペレーティング システム コンソールを使用して専用の MATLAB セッションを開始します。MATLAB で matlabroot を実行し、<matlabroot> を検出します。
その後、<matlabroot> を使用します。
Windows では、次の手順を実行します。
<matlabroot>\toolbox\shared\fmu_share\script\fmu-matlab-setup.cmd [NumberOfMATLABSessions]
Linux および macOS の場合:
<matlabroot>/toolbox/shared/fmu_share/script/fmu-matlab-setup [NumberOfMATLABSessions]
入力引数 NumberOfMATLABSessions は、このスクリプトの開始時に起動される MATLAB セッションの数を表す整数です。NumberOfMATLABSessions がない場合、MATLAB セッションは起動されません。その場合、プログラムはコマンド ライン インターフェイス モードになり、コマンドを待機します。
使用可能なコマンドを確認するには、次のように help と入力します。
> help Command list: quit - Close all shared MATLABs and exit. list - List shared MATLABs. start NUMBER_OF_MATLABS - Start NUMBER_OF_MATLABS more MATLABs. stop NUMBER_OF_MATLABS - Stop NUMBER_OF_MATLABS MATLABs. ignore - Stop asking about the hardware core count when launching MATLABs. clean MATLAB_NUMBER - Clean up the MATLAB workspace for MATLAB #MATLAB_NUMBER. Use 0 for all MATLABs. help - Print the command list.
FMU ごとに 1 つのセッションを起動し、同時に実行します。1 つの FMU がある場合は、以下を入力します。
> start 1
同時に実行している FMU が 3 つある場合は、以下を入力します。
> start 3
1 台のマシンで 1 つの MATLAB 管理ツールのみ実行しなければなりません。