コード生成のセットアップ
はじめる前に
Simscape™ Multibody™ ソフトウェアでは、Simulink® 環境で高速なシミュレーションを実行したり、外部ターゲットにモデルを展開したりするためのコード生成をサポートしています。外部ターゲットでリアルタイム シミュレーションのためのスタンドアロン C/C++ コードを得るのが目的の場合、アクティブな Simulink Coder™ インストールを所有していなければなりません。
ソルバーの選択
Simscape Multibody モデルは連続的な状態をもっているため、連続またはハイブリッド型の Simulink ソルバーが必要です。[モデル コンフィギュレーション パラメーター] ウィンドウの [ソルバー] ペインからソルバーを変更できます。[離散 (連続状態なし)]
とマークされているソルバー以外を選択してください。離散ソルバーの動作を近似する必要がある場合は、固定ステップ ソルバーを [ODE1]
にすることを検討してください。
ターゲットの選択
コード生成ターゲットの選択は、使用する Simulink ソルバーによって異なります。可変ステップ ソルバーを選択した場合、システム ターゲット ファイルとして [rsim.tlc]
を設定しなければなりません。システム ターゲット ファイルは、[モデル コンフィギュレーション パラメーター] ウィンドウから指定できます。[コード生成] ペインの [ターゲット選択] 領域で、[システム ターゲット ファイル] パラメーターを探します。
実行時パラメーター
構成可能なパラメーターの横に表示されたドロップダウン リストを使用すると、ほとんどの数値ブロック パラメーターを [Compile-time]
(既定) または [Run-time]
として構成できます。次の図は、固体ブロックのダイアログ ボックスの実行時ドロップダウン リストを示しています。すべてのパラメーターが、既定では [Compile-time]
になっています。モデルが高速リスタート モードの場合、ドロップダウン リストは無効になります。
モデルを再コンパイルすると、[Compile-time]
のパラメーターの値が更新されます。モデルの最適化など、インライン パラメーターに依存するタスクを実行する場合は、パラメーターを [Compile-time]
のままにしておきます。[Run-time]
のパラメーターは、追加のコンパイルを行わなくても値が更新されます。高速リスタート モードでパラメーターの値を調整する場合、または生成された C コードに部分的にでも依存するモデルをシミュレートする場合は、パラメーターを [Run-time]
に設定します。
ブロックのダイアログ ボックスからパラメーターを [Run-time]
として設定するには、Simscape 基本設定を構成しなければなりません。MATLAB® の [基本設定] ウィンドウを開き、[Simscape] ノードを選択して [実行時パラメーターの設定を表示] チェック ボックスをオンにします。実行時オプションのないパラメーターや実行時オプションが非アクティブ (つまり、"グレー表示") のパラメーターは構成できません。次の図の [Length] パラメーターは一例です。
Simscape 実行時パラメーターの詳細については、Simscape 実行時パラメーターについてを参照してください。
コンパイラの最適化
C/C++ コンパイラは、生成されたコードを最適化するように設定できます。最適化されたコードは実行速度が上がりますが、コンパイルは遅くなります。多くのボディをもつ大規模なモデルでは、コンパイルが特に遅くなる可能性があります。コンパイラの選択によっては、コンパイル時間の低速化が深刻になることがあります。Microsoft Visual C++ の特定のバージョンを使用すると、モデルのコンパイル中に Simulink ソフトウェアがハングアップしているように見える場合があります。
モデルのコンパイルに異常に時間がかかる場合は、インストールされている別のコンパイラに切り替えるか、コンパイラによるモデルの最適化を無効にすることを検討してください。Clang コンパイラは Microsoft Visual C++ の適切な代替手段となります。どちらのタスクも [モデル コンフィギュレーション パラメーター] ウィンドウの [コード生成] メニューから実行できます。
コンパイラを切り替えるには、[コード生成] メニューの [ツールチェーン設定] 領域で、[ツールチェーン] パラメーターを別のコンパイラに設定します。コードの最適化を無効にするには、[ビルド構成] パラメーターを [高速なビルド]
に設定します。