Target Language Compiler プロセス
S-Function 用の TLC コードを記述するには、コード生成用の Target Language Compiler プロセスを理解する必要があります。前述のように、Simulink® ソフトウェアでは、ブロック線図の実行セマンティクスの部分的表現を含む
ファイルを生成します。model
.rtw
ファイルは、TLC レコードの入れ子セットの形式でデータ構造体を含む ASCII ファイルです。レコードはプロパティ名とプロパティ値のペアで構成されます。Target Language Compiler は model
.rtw
ファイルを読み取って内部表現に変換します。model
.rtw
次に、Target Language Compiler は、システム ターゲット ファイル (たとえば、grt.tlc
) から順に、TLC ファイルを実行 (解釈) します。これは、システム TLC およびブロック ファイル (つまり、コマンド ラインで Target Language Compiler に渡された TLC ファイル (grt.tlc
) に含まれるかそこから生成された他の TLC ファイル) のエントリ ポイントです。システムおよびブロック ターゲット ファイル内の TLC コードが実行されると、
ファイルから最初に読み込まれた既存のプロパティ名とプロパティ値のペアおよびレコードが使用、追加、変更されます。 model
.rtw
model
.rtw の構造
ファイルの構造は、ブロック線図の構造を反映しています。model
.rtw
モデル内の非バーチャル システムごとに、
ファイル内に対応するシステム レコードがあります。model
.rtw非バーチャル システム内の非バーチャル ブロックごとに、対応するシステムの
ファイル内にブロック レコードがあります。model
.rtw
の基本的な構造は以下のとおりです。model
.rtw
CompiledModel { System { Block { DataInputPort { ... } DataOutputPort{ ... } ParamSettings { ... } Parameter { ... } } } }
動作シーケンス
モデル内の所定のブロックの発生ごとに、対応するブロック レコードが
ファイルに存在します。システム ターゲット ファイルの TLC コードはブロック レコードをループ処理し、該当するブロック タイプの対応するブロック ターゲット ファイルにある関数を呼び出します。インライン化された S-Function の場合、インライン化 TLC ファイルが呼び出されます。model
.rtw
ブロックの C MEX 関数で関数 mdlRTW
を使用することで、ブロック固有の情報 (入力、出力、パラメーターなどではなく、内部ブロック情報) をブロックの
ファイル内のブロック レコードに取り込む方法があります。model
.rtw
特に、関数 mdlRTW
を使用すれば、パラメーター設定 (ParamSettings
)、すなわち当該ブロックに関係する固有の情報を書き出すことができます。ブロック TLC ファイル内のパラメーター設定では、ブロック TLC コードからこれらのフィールドに直接アクセスされ、それによって目的に応じて生成コードを変更できます。