Main Content

Target Language Compiler プロセス

S-Function 用の TLC コードを記述するには、コード生成用の Target Language Compiler プロセスを理解する必要があります。前述のように、Simulink® ソフトウェアでは、ブロック線図の実行セマンティクスの部分的表現を含む model.rtw ファイルを生成します。model.rtw ファイルは、TLC レコードの入れ子セットの形式でデータ構造体を含む ASCII ファイルです。レコードはプロパティ名とプロパティ値のペアで構成されます。Target Language Compiler は 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 {
        ...
      }
    }
  }
}

動作シーケンス

モデル内の所定のブロックの発生ごとに、対応するブロック レコードが model.rtw ファイルに存在します。システム ターゲット ファイルの TLC コードはブロック レコードをループ処理し、該当するブロック タイプの対応するブロック ターゲット ファイルにある関数を呼び出します。インライン化された S-Function の場合、インライン化 TLC ファイルが呼び出されます。

ブロックの C MEX 関数で関数 mdlRTW を使用することで、ブロック固有の情報 (入力、出力、パラメーターなどではなく、内部ブロック情報) をブロックの model.rtw ファイル内のブロック レコードに取り込む方法があります。

特に、関数 mdlRTW を使用すれば、パラメーター設定 (ParamSettings)、すなわち当該ブロックに関係する固有の情報を書き出すことができます。ブロック TLC ファイル内のパラメーター設定では、ブロック TLC コードからこれらのフィールドに直接アクセスされ、それによって目的に応じて生成コードを変更できます。

関連するトピック