Main Content

モデルをツール結合 FMU としてエクスポート

Simulink® コンポーネントをサードパーティ ソフトウェアに統合するには、Simulink モデルをツール結合 Functional Mockup Unit (FMU) としてエクスポートします。サードパーティ製ツールは FMU を実行する際に、必要なライセンスをチェックアウトし、Simulink のローカル インストールを開始してモデルを起動します。ツール結合 FMU は、FMU によってカプセル化される固定ステップ ソルバーと可変ステップ ソルバーをサポートします。

プロジェクトを使用して FMU をエクスポートします。モデルを開き、[新規][プロジェクト][このモデルからの新規プロジェクト] を選択してモデルからプロジェクトを作成します。この例では、vdp モデルを使用します。

プロジェクトから FMU を対話的にエクスポートできます。

  1. プロジェクトで、[共有]、[ツール結合 FMU] を選択します。

  2. [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 にエクスポートすることもできます。

>> 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

モデルは、エクスポートについて以下の条件を満たさなければなりません。

  • モデルはノーマル モードまたはアクセラレータ シミュレーション モードでなければならない。

  • ルートの入力端子と出力端子は次のいずれかの数値データ型でなければならない。

    • double

    • int32

    • Boolean

    • すべての要素が doubleint32、または Boolean のいずれかである Simulink バス オブジェクト

    • 基本データ型が doubleint32、または Boolean のいずれかに解決される Simulink.AliasType

Simulink からエクスポートされたコシミュレーション コンポーネントである場合、FMU のローカルのサンプル時間は元のモデルのサンプル時間です。

ツール結合 FMU に調整可能なパラメーターを含める

調整可能なパラメーターを含めるには、以下を行います。

  1. 関連する Simulink プロジェクトからモデルを開きます。

  2. Simulink モデルから、[モデル化] タブをクリックし、モデル エクスプローラーを起動します。

  3. [モデル ワークスペース] を選択し、変数 MATLAB® または Simulink パラメーターを追加します。

  4. 追加する調整可能なパラメーターのそれぞれについて、[データ プロパティ] または [Simulink.Parameter] ペインで [引数] チェック ボックスをオンにします。

  5. [適用] をクリックします。

  6. モデル内の調整可能なパラメーターを参照します。

  7. ツール結合 FMU をエクスポートします。

コンテンツを隠すための保護モデルの使用

エクスポートされたツール結合 FMU は zip パッケージで、このパッケージには元の Simulink プロジェクトとそのリソース フォルダー内のモデル ファイルが含まれています。知的所有権を保護するには、保護モデルのワークフローを使用します。モデルを保護モデルとして保存し、[シミュレーション] チェック ボックスをオンにしてコンテンツを隠します。モデル参照ブロックをもつ新しいモデルを作成して 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 などの新しいプロセスを開始するアプリケーションで機能しません。DYLD_LIBRARY_PATH<InstallationFolder>/bin/maci64:<InstallationFolder>/extern/bin/maci64 に設定するには、Append library path to "DYLD_LIBRARY_PATH" in MAC に従ってください。

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 管理ツールのみ実行しなければなりません。

参考

関連するトピック