Main Content

リアルタイム システムのビルド プロセス ワークフロー

ビルド プロセスには、モデルからの C または C++ でのコード生成と、生成されたコードからの実行可能プログラムのビルドが含まれます。この例では、コード生成用の汎用リアルタイム (GRT) または組み込みリアルタイム (ERT) のシステム ターゲット ファイル (STF) を使用できます。結果として得られるスタンドアロン プログラムは、外部のタイミングやイベントとは無関係に開発用コンピューター上で実行されます。

作業フォルダー

この例では、slexAircraftExample モデルのローカル コピーを使用しており、それは自身のフォルダー aircraftexample に保存されています。"作業フォルダー" を次のように設定します。

  1. MATLAB® の現在のフォルダー ブラウザーで、書き込みアクセス権があるフォルダーに移動します。

  2. 作業フォルダーを作成するには、以下の MATLAB コマンドを入力します。

    mkdir aircraftexample
  3. aircraftexample を作業フォルダーにします。

    cd aircraftexample
  4. slexAircraftExample モデルを開きます。

    openExample('slexAircraftExample')

    モデルがSimulink® エディターのモデル ウィンドウに表示されます。

  5. モデル ウィンドウで、[ファイル][名前を付けて保存] を選択します。作業フォルダー aircraftexample に移動します。slexAircraftExample モデルのコピーを myAircraftExample として保存します。

ビルド フォルダーとコード生成フォルダー

コードを生成する際、コード ジェネレーターは作業フォルダー内に "ビルド フォルダー" を作成します。ビルド フォルダーの名前は model_target_rtw で、ソース モデルと選択したシステム ターゲット ファイルの名前に基づいています。ビルド フォルダーには、生成されたソース コードとビルド プロセス中に作成されたその他のファイルが格納されます。この例の最後に、ビルド フォルダーの内容を確認します。

モデルに Model ブロック (他のモデルに対する参照) が含まれている場合、参照モデルのコードを整理するために、モデル ビルドはCode generation folderに特殊なサブフォルダーを作成します。これらのコード生成フォルダーは製品のビルド フォルダーと併設され、slprj と命名されます。詳細については、モデル参照階層向けのコードの生成を参照してください。

slprj フォルダーの下にある _sharedutils という名前のサブフォルダーに、モデル間で共有できる生成されたコードが含まれます。

コード生成のためのモデル パラメーターの設定

モデルからコードを生成するには、一部のモデル コンフィギュレーション パラメーターを変更しなければなりません。特に、汎用リアルタイム (GRT) システム ターゲット ファイルと他の大部分のシステム ターゲット ファイルでは、モデルで固定ステップ ソルバーを指定する必要があります。

メモ

可変ステップ ソルバーを指定するモデルについて、モデルでもラピッド シミュレーション (rsim) または S-Function システム ターゲット ファイルが指定されている場合のみ、コード ジェネレーターはコードを作成します。

  1. myAircraftExample モデルがまだ開かれていなければ、開きます。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスで、ソルバーのコンフィギュレーション パラメーターの値を指定します。

    • 開始時間: 0.0

    • 終了時間: 60

    • タイプ: 固定ステップ

    • ソルバー: [ode5 (Dormand-Prince)]

    • 固定ステップ サイズ (基本サンプル時間): 0.1

    • 各離散レートを個別のタスクとして扱う: Off

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

  4. モデルを保存します。

ビルド プロセスの構成

モデルのビルド プロセスを構成するには、システム ターゲット ファイル、ツールチェーンまたはテンプレート makefile、make コマンドを選択します。

これらの例とほとんどのアプリケーションでは、これらのパラメーターを個々に指定する必要はありません。この例では、すぐ実行できる汎用リアルタイム ターゲット (GRT) のコンフィギュレーションを使用します。GRT システム ターゲット ファイルは、デスクトップ コンピューターで実行されるスタンドアロンの実行可能プログラムをビルドします。

GRT システム ターゲット ファイルを選択するには、以下を行います。

  1. myAircraftExample モデルがまだ開かれていなければ、開きます。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスの [システム ターゲット ファイル] フィールドで、grt.tlc と入力します。[適用] をクリックします。

    [ツールチェーン] ([Automatically locate an installed toolchain]) および [ビルド構成] ([Faster Builds]) の選択肢が表示されます。

  3. モデルを保存します。

メモ

[参照] をクリックすると、システム ターゲット ファイル ブラウザーが開き、MATLAB パス上のシステム ターゲット ファイルが表示されます。一部のシステム ターゲット ファイルには、追加製品が必要です。たとえば、ert.tlc には Embedded Coder® が必要です。

コード生成パラメーターの設定

  1. myAircraftExample モデルがまだ開かれていなければ、開きます。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスで、設定を指定します。

    1. [コード生成] のビルドの詳細とデバッグを制御する詳細設定パラメーターについては、既定の設定を使用します。

      • [詳細なビルド (コマンド表示)] (RTWVerbose)

      • [.rtw ファイルを残す] (RetainRTWFile)

      • [TLC プロファイル] (ProfileTLC)

      • [コード生成時に TLC デバッガーを実行] (TLCDebug)

      • [コード生成時に TLC カバレッジを実行] (TLCCoverage)

      • [TLC アサーションを有効にする] (TLCAssert)

    2. 既定の [コード生成][コメント] 設定を使用します。

    3. [コード生成][識別子] のオプションは、生成コードの外観を制御します。既定の設定を使用します。

    4. [コード生成][インターフェイス] を選択します。

      1. [共有コードの配置] リストから、[共有場所] を選択します。ビルド プロセスによって、ユーティリティの生成コードがCode generation folder内のサブフォルダーに配置されます。

      2. [詳細設定パラメーター] の下で、[クラシック コール インターフェイス] チェック ボックスをオフにします。

      3. [詳細設定パラメーター] の下で、[1 つの出力/更新関数] チェック ボックスをオンにします。

    5. [コード生成][レポート] で、[コード生成レポートを作成] および [レポートを自動的に開く] を選択します。このアクションにより、ソフトウェアは myAircraftExample モデルのコード生成レポートを作成し、表示できるようになります。

  3. [適用] をクリックしてモデルを保存します。

プログラムのビルドおよび実行

ビルド プロセスは、モデルから C コードを生成します。次にそれをコンパイルし、生成したプログラムにリンクして実行可能なイメージを生成します。プログラムをビルドおよび実行するには、次の手順に従います。

  1. myAircraftExample モデルを開いたまま、次のいずれかの手順を実行します。

    • [アプリ] タブで、[Simulink Coder] アプリを開きます。[C コード] タブで、[ビルド] をクリックします。

    • Ctrl+B キーを押します。

    • MATLAB コマンド ラインから slbuild コマンドを実行します。

    コード生成とコンパイルのメッセージがコマンド ウィンドウに表示されます。初期のメッセージは以下のとおりです。

    ### Starting build procedure for model: myAircraftExample

    その後の多くのメッセージの内容は、コンパイラとオペレーティング システムによって異なります。最終メッセージは、以下のとおりです。

    ### Created executable myAircraftExample.exe
    ### Successful completion of build procedure for model: myAircraftExample
    ### Creating HTML report file index.html

    これで、コード生成フォルダーに実行可能ファイル myAircraftExample.exe (Microsoft® Windows® プラットフォーム) または myAircraftExample (UNIX® プラットフォーム) が格納されます。さらにビルド プロセスによって、Code generation folder内に slprj フォルダーと myAircraftExample_grt_rtw フォルダーが作成されています。

    メモ

    myAircraftExample モデルのコード生成後、ビルド プロセスでコード生成レポートが表示されます。コード生成レポートの作成および使用方法の詳細については、レポート生成を参照してください。

  2. ビルド後に作業フォルダーの内容を確認するには、dir または ls コマンドを入力してください。

    >> dir
    
    .                               myAircraftExample.slx           slprj
    ..                              myAircraftExample.slx.autosave
    myAircraftExample.exe           myAircraftExample_grt_rtw
  3. コマンド ウィンドウから実行可能プログラムを実行するには、「!myAircraftExample」と入力します。「!」では、後続のコマンドがオペレーティング システムに渡され、オペレーティング システムによってスタンドアロンの myAircraftExample プログラムが実行されます。

    >> !myAircraftExample
    
    ** starting the model **
    ** created myAircraftExample.mat **
  4. ビルド フォルダーに生成されたファイルを表示するには、dir または ls コマンドを再び使用します。生成されるファイルの一覧は、MATLAB のプラットフォームとバージョンによって異なります。次に Windows プラットフォームの一覧の例を示します。

    >> dir myAircraftExample_grt_rtw
    
    .                     rt_main.obj                  myAircraftExample_data.c
    ..                    rtmodel.h                    myAircraftExample_data.obj
    buildInfo.mat         rtw_proj.tmw                 myAircraftExample_private.h
    codeInfo.mat          myAircraftExample.bat        myAircraftExample_ref.rsp
    myAircraftExample.c   myAircraftExample_types.h    html 
    myAircraftExample.h   myAircraftExample.mk
    rt_logging.obj        myAircraftExample.obj

ビルド フォルダーの内容

ビルド プロセスでは、ビルド フォルダーが作成され、model_target_rtw という名前が付けられます。ここで、model はソース モデルの名前で、target はモデルに対して選択されたシステム ターゲット ファイルです。この例では、ビルド フォルダーに myAircraftExample_grt_rtw という名前が付けられています。

ビルド フォルダーには以下の生成ファイルが含まれます。

ファイル説明

myAircraftExample.c

モデルを実装するスタンドアロンの C コード

myAircraftExample.h

パラメーターと状態変数の定義を含む include ヘッダー ファイル

myAircraftExample_private.h

共通の include 定義を含むヘッダー ファイル

myAircraftExample_types.h

コードで使用されるデータ型の事前宣言

rtmodel.h

静的メイン プログラムに生成コードをインクルードするためのヘッダー ファイル (名前は不変で、単に myAircraftExample.h をインクルードする)

myAircraftExample モデルに作成したコード生成レポートで、各ファイルのリンクが表示されます。リンクをクリックしてファイルの内容を確認できます。

ビルド フォルダーには、ビルド プロセスで使用された他のファイルが含まれています。次のようなものがあります。

  • myAircraftExample.mk — 指定されたツールチェーンを使用して実行可能ファイルをビルドするための makefile

  • オブジェクト (.obj) ファイル

  • myAircraftExample.bat — バッチ コントロール ファイル

  • rtw_proj.tmw — マーカー ファイル

  • buildInfo.mat — 生成コードを別の開発環境に再配置するためのビルド情報

  • myAircraftExample_ref.rsp — コマンド ライン引数を mex に含めるためのデータ (Windows システムのみ)

ビルド フォルダーには、html サブフォルダーも含まれています。このサブフォルダーには、コード生成レポートを構成するファイルが格納されています。詳細については、コード生成レポートを参照してください。

カスタム makefile の生成

コードの生成後、コード ジェネレーターはカスタマイズされた makefile model.mk を生成します。生成された makefile は、モデルやハーネス プログラム、ライブラリ、ユーザー提供のモジュールから生成されたソース コードのコンパイルとリンクを make システム ユーティリティに指示します。コード ジェネレーターは、ビルド プロセスの制御に使用するアプローチに関係なく、ファイル model.mk を生成します。

  • ツールチェーン アプローチを使用する場合、コード ジェネレーターはモデルの [ツールチェーン設定] に基づいて model.mk を作成します。makefile の生成は rtwmakecfg.m API から変更できます。

  • テンプレート makefile アプローチを使用する場合、コード ジェネレーターは model.mk をシステム テンプレート ファイル system.tmf (ここで system は選択したシステム ターゲット ファイルの名前) から作成します。システム テンプレート makefile はシステム ターゲット ファイルに合わせて設計されています。テンプレート makefile を変更して、コンパイラ、コンパイラのオプション、および実行可能ファイルの作成に使用する追加の情報を指定することができます。

詳細については、ツールチェーン (ToolchainInfo) またはテンプレート makefile のビルド プロセスの設定を参照してください。

関連するトピック