Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

個別のサブシステムのコードと実行可能ファイルの生成

モデル内のサブシステムのコードを生成して実行可能ファイルを作成できます。コード生成と作成プロセスでは、コード生成を使用し、ルート モデルのパラメーターをビルドします。

  1. モデルのコード生成を設定するのと同様に、[コンフィギュレーション パラメーター] ダイアログ ボックスでコード生成およびビルドのパラメーターを作成します。

  2. Subsystem ブロックを右クリックします。コンテキスト メニューから [C/C++ コード]、[このサブシステムをビルド] を選択します。

    または、現在のモデルでサブシステムをクリックし、[C コード] タブで [ビルド] をクリックします。

    メモ:

    [このサブシステムをビルド] を選択した際に、モデルがエクスターナル モードで動作している場合は、ビルド プロセスにより、そのビルドの実行中はエクスターナル モードが自動的にオフになります。ビルドが完了すると、コード ジェネレーターはエクスターナル モードに戻ります。

  3. [サブシステムに対するコードをビルド] ウィンドウは、サブシステム パラメーターのリストを表示します。上のペインは、サブシステムでブロック パラメーターとして参照される各変数 (またはデータ オブジェクト) の名前、クラス、ストレージ クラスを表示します。上のペインでパラメーターを選択すると、そのパラメーターを参照するブロックと各ブロックの親システムが下のペインに表示されます。

    [Storage Class] 列には、各行のメニューがあります。このメニュー オプションにより、パラメーターのストレージ クラスの設定またはインライン化を行います。パラメーターを調整可能なパラメーターとして宣言するには、[Storage Class][Inlined] 以外の値に設定します。

    調整可能なパラメーターおよびインライン パラメーター、ストレージ クラスの詳細については、生成されたコードにおける調整可能なキャリブレーション パラメーターの作成を参照してください。

  4. 調整可能なパラメーターを選択したら、[ビルド] をクリックしてコード生成およびビルド プロセスを開始します。

  5. ビルド プロセスにより、MATLAB® コマンド ウィンドウにステータス メッセージが表示されます。ビルドが完了した時点で、生成された実行可能ファイルは作業フォルダーにあります。生成された実行ファイルの名前は、subsystem.exe (PC プラットフォームの場合) または subsystem (The Open Group UNIX® プラットフォームの場合) です。ここで、subsystem は、ソースの Subsystem ブロックの名前です。

    生成コードは、subsystem_target_rtw という名前のビルド サブフォルダーにあります。subsystem はソースの Subsystem ブロックの名前で、target はターゲット コンフィギュレーションの名前です。

サブシステムのコードを生成する場合、Subsystem ブロックを右クリックし、コンテキスト メニューから [C/C++ コード]、[このサブシステムをビルド] を選択して、S-Function を生成できます。S-Function についての詳細は、サブシステムからの S-Function の生成を参照してください。

サブシステムのビルドの制限

サブシステムのビルドには、次のような制限が適用されます。

  • サブシステムのビルドでは、関数呼び出しのトリガー入力または関数呼び出し出力をもつサブシステムをサポートしません。

  • Subsystem ブロックを右クリックし、[データ型] パラメーターにバス オブジェクトを指定する Outport ブロックが含まれるサブシステムをコンテキスト メニューから [C/C++ コード]、[このサブシステムをビルド] を選択してビルドするときは、信号ラベルの設定によるエラーに対処しなければなりません。これらのエラーを表示するようにソフトウェアを構成するには、親モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスの [診断][接続性] ペインで、[信号ラベルの不一致] パラメーターを [エラー] に設定します。

  • サブシステムが Triggered Subsystem または Function-Call Subsystem にある場合、サブシステムのコードがサンプル時間非依存でないと、右クリックによるビルド プロセスが失敗する可能性があります。サブシステムがサンプル時間非依存であるかどうかを判定するには、次の手順に従います。

    1. サブシステムのすべてのブロックを空のモデルにコピーします。

    2. [コンフィギュレーション パラメーター] ダイアログ ボックスの [ソルバー] ペインで、

      1. [タイプ][固定ステップ] に設定します。

      2. [周期的なサンプル時間の制約][サンプル時間に依存しない] に設定

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

    3. モデルを更新します。モデルがサンプル時間依存の場合、Simulink® では線図の更新プロセスでエラーが発生します。

  • サブシステムに右クリックによるビルド プロセスを使用すると、コード ジェネレーターは、生成されたコード ファイルにサブシステム名を使用しようとします。場合によっては、[ファイル名オプション][関数名を使用]、または [関数名オプション][サブシステム名を使用] に設定した場合などに指定した名前と競合が生じることがあります。次のエラーが表示されます。

    The subsystem 'model/subsys' 
    is trying to generate code to an reserved file (subsys) for 
    the model 'subsys'...

    このエラーを解決するには、競合しているファイルの名前のいずれかを変更して名前が一意になるようにします。

  • サブシステム ビルドの警告では、作成されたサブシステム ブロック パスのハイパーリンクは、実際のモデル ブロック パスではなく、一時モデル ブロック パスを参照しています。診断ビューアーで、サブシステム ハイパーリンクをクリックしてもブロックに移動しません。コマンド ウィンドウに、次のメッセージが表示されます。

    ...
    No system or file called 'subsystemName' found.
    ...