Main Content

FMU ブロックの実装

ブロックを実装し、Functional Mockup Unit (FMU) をブロックに割り当てます。その後、ブロックを調べて FMU を確認できます。この例では、車両の FMU を備えたFMUブロックを使用します。

  1. モデルを作成し、FMUブロックを追加します。

  2. ブロックのダイアログ ボックスの[FMU 名]パラメーターに FMU ファイルのパス名を入力し、[OK]または[適用]をクリックします。ファイルの拡張子.fmuはオプションです。

    [OK]または[適用]の初回クリック時に、FMU に設定する FMU モード (コシミュレーションまたはモデル交換) がブロックによって特定されます。

    また、ブロックによってslprj/_fmu/fmu_nameフォルダーが作成され、FMU ファイルの内容がこのフォルダーにアンパックされます。このフォルダーには必要に応じて次を含めることができます。

    • binaries——FMUのバイナリファイル

    • documentation— FMU のドキュメンテーションの HTML ファイル

    • resources— FMU のソース ファイル

    • sources— FMU のソース ファイル

    • ブロック マスク ファイルや記述ファイルなど、その他のサポート ファイル

FMU ブロックのアイコンと端子ラベルは、対応する FMU のラベルに更新されます。ブロックを FMU に関連付けた後で FMU を変更する場合は、FMU ブロックを右クリックして[ブロック パラメーター]を選択し、[FMU 名]に新しい FMU 名を入力します。このトピックの節ではFMU Import ブロックによる構造化データのインターフェイスの簡略化の例からの FMU を使用します。

FMU ブロックの確認

ブロックをダブルクリックします。現在のフォルダーからfmuVehicAOB.fmuという名前のFMUを入力したと仮定します。FMUブロックのダイアログ ボックスにはfmuVehicAOB.fmuファイルで定義された FMU パラメーターが反映されます。

[パラメーター] タブ

FMU ブロック パラメーターのリストが表示されます。必要に応じて値を編集します。ツリー ビューを展開して構造体パラメーターの要素を編集できます。

[シミュレーション] タブ

ログ記録と関連付けられたカスタマイズを有効にします。

  • 相対許容誤差を入力するには、[FMU 許容誤差の有効化]を選択し、それを設定します。

  • モデル内のブロックのサンプル時間を決定するには、[通信ステップ サイズ]を設定します。Simulink®ソルバーからステップ サイズを継承するには、-1に設定します。このオプションは、FMU がコシミュレーション FMU である場合のみ利用できます。

  • ログ記録を有効にするには、[FMU のデバッグ ログを有効にする]を選択します。

  • [デバッグ ログのリダイレクト先]でログのリダイレクト先を選択します。

    • [ファイル]slprj\_fmu\_logs_modelname\modelname_blockname.txtに保存されます。

    • [Display]。MATLAB®コマンド ウィンドウに表示されます。

    [FMU のデバッグ ログを有効にする]チェック ボックスが選択されており、[デバッグ ログのリダイレクト先]パラメーターがDisplayに設定されている FMU ブロックは、コシミュレーションに利用できません。コシミュレーションと複数のコアの詳細については、複数のコアにおけるコシミュレーション コンポーネントの実行を参照してください。

  • [戻りステータスでログをフィルター処理]で、希望する戻りステータスのチェック ボックスをオンにします。

[入力バス] タブと [出力バス] タブ

これらの 2 つのタブには、ブロックが定義する入出力のバス オブジェクトが示されます。

[バス オブジェクト名]パラメーターでは、ワークスペースで定義されたバス オブジェクトに一致するようにバス オブジェクト名を変更できます。

ワークスペースでバス オブジェクトを作成するには、次を実行します。

fmudialog.createBusType(gcb)

ブロックの入力、出力、およびパラメーター構造体の変更

FMU ブロックの入力端子、出力端子、およびパラメーターのレイアウトを以下のパラメーターを使用して変更できます。

パラメーター 動作 設定
FMUInputMapping 入力端子の階層を変更します。

'Flat'— 入力を個々の信号に分割します。

'Structured'— 入力を組み合わせて信号の構造体 (バス) を作成します。

FMUOutputMapping 出力端子の階層を変更します。

'Flat'— 出力を個々の信号に分割します。

'Structured'— 出力を組み合わせて信号の構造体 (バス) を作成します。

FMUParamMapping パラメーターの階層を変更します。

'Flat'— パラメーターを個々のパラメーターに分割し、パラメーター名と値でリストします。

'Structured'— パラメーターを組み合わせてパラメーター値の構造体 (struct) を作成します。

関数get_paramset_paramを使用してこれらの値を設定します。たとえば、以下のような構造体の構成を示す [ブロック パラメーター] タブがあると仮定します。

パラメーターはstructに含まれています。パラメーターを個別にリストするには、FMUParamMappingプロパティを'Flat'に設定します。

set_param(gcb,'FMUParamMapping', 'Flat')

タイミングに関する考慮事項

[通信ステップ サイズ]パラメーターで FMU ブロックのサンプル時間を設定できます。このブロックのサンプル時間設定 tCは、すべての Simulink ブロックと同様に、モデルのサンプル時間 tMの整数倍でなければなりません。Simulink では、通信ステップ サイズ tCがモデル ステップ サイズ tMの倍数でない場合エラーが発生します。

一方、FMU tLのローカル ステップ サイズは FMU 指定の一部で、FMU でのみ内部で認識されます。適切に動作させるために、通信ステップ サイズ tCは tLの整数倍でもなければなりません。モデルのサンプル時間 tMまたはブロックのサンプル時間 tCが FMU ローカル ステップ サイズ tLと互換しない場合、FMU では、実装に応じて実行時にエラーが発生する場合としない場合があります。

FMU のトラブルシューティング

FMU の使用に関して問題が発生した場合は、以下のことを行ってください。

  • FMI 標準に対する FMU の準拠性を確認する。FMU 準拠性チェッカーを使用する。

  • FMU ブロックの [シミュレーション] タブで[FMU のデバッグ ログを有効にする]チェック ボックスをオンにする。

  • FMU のサプライヤに問い合わせる。

参考

|

関連するトピック

外部の Web サイト