Main Content

model.rtw ファイルとスコープ

コード生成ソフトウェアによって、Simulink® モデルから model.rtw ファイルが作成されます。model.rtw ファイルは、Target Language Compiler で使用するためにビルド プロセスで生成されるモデルの部分表現です。これには、対応するモデル ファイルから、ブロック、入力、出力、パラメーター、状態、ストレージなどのモデル コンポーネントとそのプロパティが記述されます。

生成された model.rtw ファイルは、Target Language Compiler に対する入力になります。[コンフィギュレーション パラメーター][コード生成] ペインから [.rtw ファイルを残す] を選択すると、モデルのビルド後に生成された model.rtw ファイルを表示できます。

model.rtw ファイルは、パラメーターと値のペアをレコードの階層に格納した ASCII ファイルとして実装されます。パラメーター名とパラメーター値のペアは次のように指定されます。

ParameterName  value

ここで、ParameterName ("識別子") は TLC 識別子の名前、value は文字列、スカラー、ベクトル、または行列です。たとえば、パラメーター名とパラメーター値のペアは次のようになります。

     NumDataOutputPorts 1    

NumDataOutputPorts が識別子で、1 がその値です。

"レコード" は次のように指定されます。

RecordName {
     .
     .
     .
}

レコードには、パラメーター名とパラメーター値のペア、下位レコード、またはその両方が格納されます。たとえば、次のレコードにはパラメーター名とパラメーター値のペアが 1 つ格納されています。

DataStores {
    NumDataStores	    0
}

メモ

model.rtw ファイルの構造は、リリースごとにやむを得ない理由で変更されることがよくあります。これは、model.rtw へのアクセスをライブラリ関数 (Target Language Compiler の「TLC 関数ライブラリ リファレンス」に記載) に限定するためです。詳細については、Exception to Using the Library Functions that Access model.rtwを参照してください。

model.rtw ファイルのスコープ

レコードごとに新しい "スコープ" が作成されます。model.rtw ファイルでは、中かっこの {} を使用してレコードの開始と終了 (スコープ) を示します。スコープを使用して model.rtw ファイル内の値にアクセスできます。

次の例のスコープは、CompiledModel で始まっています。特定のスコープ内の値にアクセスするにはピリオド (.) を使用します。model.rtw の形式は次のとおりです。

CompiledModel {
  Name   "modelname"           -- Example of a parameter-value
  ...                             pair (record field).
  System {                     -- There is one system for each
                                  nonvirtual subsystem.
    Block {                    -- Block records for each
      Type     "S-Function"       nonvirtual block in the
                                  system.
      Name     "<S3>/S-Function"
      ...
      Parameter {
       Name "P1"
       Value Matrix(1,2) [[1, 2];]
    }
    ...
    Block {
    }
  }
  ...
  System {                     -- The last system is for the
                                  root of your model.
}

たとえば、CompiledModel 内の Name にアクセスするには次を使用します。

CompiledModel.Name

同じ名前のレコードが複数ある場合は、最初のレコードのインデックスを 0 とするリストが形成されます。上記の S-Function ブロックのレコードにアクセスするには次を使用します。

CompiledModel.System[0].Block[0]

このブロックの名前のフィールドにアクセスするには次を使用します。

CompiledModel.System[0].Block[0].Name

このプロセスを簡略化するために、%with 命令を使用して現在のスコープを変更できます。次に例を示します。

%with CompiledModel.System[0].Block[0]
%assign blockName = Name
%endwith

blockName の値は "<S3>/S-Function" になります。

S-Function ブロックをインライン化する場合、S-Function ブロックのレコードのスコープは上記の %with 命令の場合と同じようになります。インライン化された .tlc ファイルでは、完全修飾パスなしでフィールドにアクセスしなければなりません。

次のコードは、さらに詳しいスコープの例を示しています。Block レコードに、パラメーターと値の複数のペア (TypeNameIdentifier など) と Parameter という 3 つの下位レコードがあります。Block は、CompiledModel の下位レコードである System の下位レコードです。このファイルのパラメーター名はリリースごとに変わることに注意してください。

関連するトピック