モデルの構成とコードの生成
この例について
学習目的
コードを生成するためにモデルを構成します。
モデル チェック ツールを使用し、不正確または不十分なコードを生成する条件とコンフィギュレーションを検出します。
モデルからコードを生成します。
生成コードのファイルの位置を特定し、識別します。
生成コードをレビューします。
前提条件
Simulink® モデルとサブシステムを開いて変更する技能。
モデルのコンフィギュレーション パラメーターを構成する技能。
コード生成アドバイザーを使用する技能。
C コードを読む技能。
サポートされている C コンパイラがインストール済み。
必要なファイル
ThrottleControl
モデル ファイル
モデル例を開く
この例では、単純でも機能としては完全なスロットル コントローラーのモデルを使用します。このモデルには冗長制御アルゴリズムがあります。このモデルでは、アルゴリズム設計の標準的なモデル構造と基本ブロックのセットが強調されています。
モデル ThrottleControl
を開きます。
open_system('ThrottleControl')
コード生成のためのモデルの構成
モデル コンフィギュレーション パラメーターは、コード生成手法と結果の形式を決定します。
[Simulink Coder] アプリを開きます。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [ソルバー] ペインを開きます。モデルのコードを生成するには、固定ステップ ソルバーを使用するようにモデルを構成しなければなりません。次の表では、この例のソルバー コンフィギュレーションを説明します。
パラメーター 設定 生成コードへの影響 タイプ 固定ステップ
コード生成に必要な一定の (固定) ステップ サイズを維持します。 ソルバー 離散 (連続状態なし)
モデルの状態導関数を計算するための固定ステップの積分手法の適用 固定ステップ サイズ .001
基本レートの設定。システム内のレートの最小公倍数でなければならない モデル コンフィギュレーション パラメーター [システム ターゲット ファイル] を
[grt.tlc]
に設定します。メモ
汎用リアルタイム ターゲット (GRT) のコンフィギュレーションには固定ステップ ソルバーが必要です。ただし、
rsim.tlc
システム ターゲット ファイルは可変ステップのコード生成をサポートします。システム ターゲット ファイルは、特定のハードウェアまたはオペレーティング システム プラットフォーム上で実行されるコードの生成およびビルド環境を定義します。たとえば、システム ターゲット ファイルのプロパティの 1 つに TLC 変数
CodeFormat
の値があります。GRT の構成は固定ステップ ソルバーを必要とし、rsim.tlc は可変ステップのコード生成をサポートします。[モデル コンフィギュレーション パラメーター] ダイアログ ボックスを閉じます。
MATLAB 関数としてモデル コンフィギュレーションを保存
モデルのコンフィギュレーション パラメーターの設定を、getActiveConfigSet
関数を使用して、MATLAB® 関数として保存することができます。MATLAB コマンド ウィンドウで次のように入力します。
thcntrlAcs = getActiveConfigSet('ThrottleControl'); thcntrlAcs.saveAs('throttleControlModelConfig');
出力された関数 (たとえば、throttleControlModelConfig
) を、以下に使用できます。
モデル コンフィギュレーションのアーカイブ。
差分ツールによる異なるモデル コンフィギュレーションの比較。
他のモデルのコンフィギュレーション設定。
たとえば、モデル myModel
のコンフィギュレーションを、スロットル コントローラーのモデルのコンフィギュレーションと一致するように設定できます。これは、myModel
を開いて以下を入力することによって実行できます。
myModelAcs = throttleControlModelConfig; attachConfigSet('myModel', myModelAcs, true); setActiveConfigSet('myModel', myModelAcs.Name);
詳細については、コンフィギュレーション セットを保存するおよび保存したコンフィギュレーション セットを読み込むを参照してください。
モデルの条件とコンフィギュレーション設定のチェック
モデルのコードを生成する前に、コード生成アドバイザーを使用して、モデルの条件とコンフィギュレーション設定をチェックします。このチェックでは、不正確または不十分なコードの原因になる問題を特定します。
[Simulink Coder] アプリを開きます。
[C コード] タブで、[C/C++ コード アドバイザー] をクリックします。ダイアログ ボックスが開き、モデル階層が表示されます。
ThrottleControl
をクリックし、[OK] をクリックします。[コード生成アドバイザー] ウィンドウが開きます。[コード生成アドバイザー] フォルダーを右クリックして、[選択したチェックを実行] を選択します。
[コード生成の目的に対するモデル コンフィギュレーションをチェック] チェックの結果を確認するには、左側のペインでこのチェックを選択します。結果は右ペインに表示されます。
チェック結果を確認したら、モデル アドバイザー チェックの警告またはエラーの修正で説明されているように、警告やエラーを修正できます。
モデルのコード生成
[Simulink Coder] アプリを開きます。
モデル コンフィギュレーション パラメーター [コード生成のみ] を選択します。
モデル コンフィギュレーション パラメーター [コード生成レポートを作成] を選択し、[適用] をクリックします。
コードを生成します。
診断ビューアーにメッセージが表示されます。コード ジェネレーターは、標準 C とヘッダー ファイル、および HTML コード生成レポートを生成します。コード ジェネレーターは、ファイルを [ビルド フォルダー] に配置します。このフォルダーは、現在の作業フォルダーの配下にある
ThrottleControl_grt_rtw
という名前のサブフォルダーです。
生成コードのレビュー
コード生成レポートで、生成された C モデル ファイルのリンクをクリックし、生成コードを確認します。レポートの次の項目を確認します。
同定、バージョン、タイムスタンプ、およびコンフィギュレーションのコメント。
ファイル内およびファイル間での移動を可能にするリンク
データ定義
スケジューラ コード
コントローラー コード
モデルの初期化および終了関数
GRT システム ターゲット ファイルの呼び出しインターフェイス — output、update、initialization、start、および terminate
次のフィアルの調査を検討してください。コード生成レポートの [コンテンツ] ペインでリンクをクリックします。
ファイル | 説明 |
---|---|
ThrottleControl.c | スケジューラ、コントローラー、初期化、およびインターフェイス コードを含む C ファイル |
ThrottleControl_data.c | 生成されたデータ構造に値を割り当てる C ファイル |
ThrottleControl.h | データ構造を定義するヘッダー ファイル |
ThrottleControl_private.h | 生成したコードでだけ使用するデータを定義するヘッダー ファイル |
ThrottleControl_types.h | モデル データ構造を定義するヘッダー ファイル |
詳細は、ビルド プロセスのファイルの依存関係の管理を参照してください。
この時点でデータを MAT ファイルに記録することを検討してください。例については、解析のためのログ データを参照してください。
実行可能ファイルの生成
[Simulink Coder] アプリを開きます。
モデル コンフィギュレーション パラメーター [コード生成のみ] をオフにして、[適用] をクリックします。
モデルを作成します。診断ビューアーのメッセージを確認します。コード ジェネレーターはシステム ターゲット ファイルの選択に関連付けられているテンプレート makefile を使用して実行可能ファイルを作成します。外部のタイミングやイベントに依存せずに、ワークステーション上でこのプログラムを実行できます。
ファイル
ThrottleControl.exe
の作業フォルダーをチェックします。実行可能ファイルを実行します。コマンド ウィンドウで「
!ThrottleControl
」と入力します。!
では、後続のコマンドがオペレーティング システムに渡され、オペレーティング システムによってスタンドアロンのプログラムが実行されます。このプログラムでは、コマンド ウィンドウに以下に示す 1 行が出力されます。
** starting the model **
この時点でデータを MAT ファイルに記録することを検討してください。例については、解析のためのログ データを参照してください。
ヒント
UNIX® プラットフォームの場合、コマンド ウィンドウで構文 !./
executable_name
を使用して実行可能プログラムを実行します。必要に応じて、構文 ./
executable_name
を使用して OS シェルから実行可能プログラムを実行します。詳細については、外部コマンド、スクリプト、プログラムの実行を参照してください。
重要なポイント
コードを生成するには、固定ステップ ソルバーを指定するようにモデル コンフィギュレーションを変更し、システム ターゲット ファイルを選択します。
grt.tlc
ファイルの使用には固定ステップ ソルバーが必要です。モデルに連続時間ブロックが含まれている場合、可変ステップ ソルバーをrsim.tlc
システム ターゲット ファイルとともに使用できます。モデルのデバッグが終わったら、パラメーターのインライン化が有効になるようにモデルを構成することを検討してください。
getActiveConfigSet
関数を使用して、今後の使用のためにモデル コンフィギュレーションを保存するか、あるいは他のモデルに適用します。コードを生成する前に、コード生成アドバイザーでモデルをチェックすることを検討してください。
コード ジェネレーターは、ファイルを作業フォルダーの配下にあるサブフォルダー (model
_grt_rtw
) に配置します。