ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

legacy_code

レガシ コード ツールの使用

構文

legacy_code('help')
specs = legacy_code('initialize')
legacy_code('sfcn_cmex_generate', specs)
legacy_code('compile', specs, compilerOptions)
legacy_code('generate_for_sim', specs, modelname)
legacy_code('slblock_generate', specs, modelname)
legacy_code('sfcn_tlc_generate', specs)
legacy_code('rtwmakecfg_generate', specs)
legacy_code('backward_compatibility')

説明

関数 legacy_code は、既存の C または C++ コードと生成中の S-Function に対する仕様を登録するために、MATLAB® 構造体を作成します。さらに、この関数は指定した S-Function に対して、生成、コンパイルとリンク、マスク設定されたブロックを作成できます。他のオプションとして、以下を生成する機能があります。

  • アクセラレータ モードでのシミュレーションまたはコード生成のための TLC ファイル

  • 生成された S-Function のディレクトリと異なるディレクトリにある関連したソースとヘッダー ファイルを指定するために、ユーザーがカスタマイズできる rtwmakecfg.m ファイル

legacy_code('help') は、レガシ コード ツールの使い方に関するヘルプを表示します。

specs = legacy_code('initialize') は、レガシ コード ツールでデータ構造体 specs を初期化します。これは、既存の C または C++ コードの特性と、レガシ コード ツールが生成する S-Function のプロパティを登録します。

legacy_code('sfcn_cmex_generate', specs) は、レガシ コード ツールのデータ構造体 specs で指定される、S-Function ソース ファイルを生成します。

legacy_code('compile', specs, compilerOptions) は、レガシ コード ツールにより生成される S-Function のコンパイルとリンクを行います。コンパイルとリンクは、データ構造体 specs と、指定されたコンパイラのオプションに基づいて行われます。以下の例では、オプションなし、オプションが 1 つ、オプションが複数の場合を指定する方法を示します。

legacy_code('compile', s);
legacy_code('compile', s, '-DCOMPILE_VALUE1=1');
legacy_code('compile', s,...
        {'-DCOMPILE_VALUE1=1', '-DCOMPILE_VALUE2=2',...
 '-DCOMPILE_VALUE3=3'});

legacy_code('generate_for_sim', specs, modelname) は S-Function の生成、コンパイル、リンクをまとめて 1 ステップで行います。レガシ コード ツール データ構造体の Options.useTlcWithAccel フィールドが論理値 1 (true) に設定されている場合、この関数もまた、高速シミュレーション用の TLC ファイルを生成します。

legacy_code('slblock_generate', specs, modelname) は、データ構造体 specs に基づいて、レガシ コード ツールで生成される S-Function に対するマスク設定された S-Function ブロックを生成します。このブロックは、modelname で指定される Simulink® モデルに表示されます。modelname を省略すると、ブロックは空のモデル エディター ウィンドウに表示されます。

legacy_code('sfcn_tlc_generate', specs) は、データ構造体 specs に基づいて、レガシ コード ツールで生成される S-Function に対する TLC ファイルを生成します。このオプションは、以下を行う場合に設定します。

  • Simulink のアクセラレータ モードで、生成された S-Function の TLC インライン コードを使用する場合。詳細は、関数 SimStruct の ssSetOptions と S-Function のオプション SS_OPTION_USE_TLC_WITH_ACCELERATOR の説明を参照してください。

  • Simulink モデルからコードを生成するために Simulink Coder™ を使用する場合。詳細は、「レガシ コード ツールを使用した外部コードの統合」を参照してください。

legacy_code('rtwmakecfg_generate', specs) は、データ構造体 specs に基づいて、レガシ コード ツールで生成される S-Function に対する rtwmakecfg.m ファイルを生成します。このオプションは、Simulink モデルからコードを生成するために Simulink Coder を使用する場合に限って使用できます。詳細は、Simulink Coder ドキュメンテーションの「生成された makefile を rtwmakecfg.m API を使用してカスタマイズ」および「レガシ コード ツールを使用した外部コードの統合」を参照してください。

legacy_code('backward_compatibility') は、サポートされている構文 (このドキュメントのリファレンス ページおよび「Integrate C Functions Using Legacy Code Tool」で説明されている) に自動的に更新します。 

入力引数

specs

構造体には次のフィールドがあります。

S-Function の名前

SFunctionName (必要な場合) - レガシ コード ツールで生成される S-Function の名前を指定する文字列。

レガシ コード ツールでの関数指定

  • InitializeConditionsFcnSpec - S-Function が状態を初期化しリセットするために呼び出す再呼び出し可能な関数を指定する空でない文字列。「Declaring Legacy Code Tool Function Specifications」で説明されているように、Simulink が解釈できるトークンを使ってこの関数を宣言しなければなりません。

  • OutputFcnSpec - S-Function が各タイム ステップで呼び出す関数を指定する空でない文字列。「Declaring Legacy Code Tool Function Specifications」で説明されているように、Simulink が解釈できるトークンを使ってこの関数を宣言しなければなりません。

  • StartFcnSpec - S-Function が実行し始めるときに呼び出す関数を指定する文字列。この関数は、S-Function パラメーター引数のみにアクセスできます。「Declaring Legacy Code Tool Function Specifications」で説明されているように、Simulink が解釈できるトークンを使ってこの関数を宣言しなければなりません。

  • TerminateFcnSpec - S-Function が実行を停止するときに呼び出す関数を指定する文字列。この関数は、S-Function パラメーター引数のみにアクセスできます。「Declaring Legacy Code Tool Function Specifications」で説明されているように、Simulink が解釈できるトークンを使ってこの関数を宣言しなければなりません。

コンパイルのリソースの定義

  • HeaderFiles - コンパイルに必要となるヘッダー ファイル名を指定する文字列のセル配列。

  • SourceFiles - コンパイルに必要となるソース ファイルを指定する文字列のセル配列。絶対パス名または相対パス名を使ってソース ファイルを指定できます。

  • HostLibFiles - ホストのコンパイルに必要なライブラリ ファイルを指定する文字列のセル配列。絶対パス名または相対パス名を使ってライブラリ ファイルを指定できます。

  • TargetLibFiles - ターゲット (つまり、スタンドアロン) のコンパイルに必要なライブラリ ファイルを指定する文字列のセル配列。絶対パス名または相対パス名を使ってライブラリ ファイルを指定できます。

  • IncPaths - ヘッダー ファイルを含むディレクトリを指定する文字列のセル配列。絶対パス名または相対パス名を使ってディレクトリを指定できます。

  • SrcPaths - ソース ファイルを含むディレクトリを指定する文字列のセル配列。絶対パス名または相対パス名を使ってディレクトリを指定できます。

  • LibPaths - ホストやターゲットのライブラリ ファイルを含むディレクトリを指定する文字列のセル配列。絶対パス名または相対パス名を使ってディレクトリを指定できます。

サンプル時間の指定

SampleTime - 以下のいずれかにすることができます。

  • 'inherited' (既定の設定) - サンプル時間は、ソース ブロックから継承されます。

  • 'parameterized' - サンプル時間は、調整可能なパラメーターとして表されます。生成コードは、mxGetPr または mxGetData のような MEX API 関数を呼び出すことによって、パラメーターにアクセスできます。

  • Fixed - サンプル時間を明示的に指定します。サンプル時間を指定する方法の詳細は、「 サンプル時間の指定」を参照してください。

このフィールドを指定する場合、最後に指定しなければなりません。

S-Function オプションの定義

Options - S-Function オプションを制御する構造体。この構造体には、次のフィールドがあります。

  • isMacro - レガシ コードが C マクロであるかどうかを指定する論理値。既定の設定では、値は false (0) です。

  • isVolatile - S-Function の SS_OPTION_NONVOLATILE オプションの設定を指定する論理値。既定の設定では、値は true (1) です。

  • canBeCalledConditionally - S-Function の SS_OPTION_CAN_BE_CALLED_CONDITIONALLY オプションの設定を指定する論理値。既定の設定では、値は true (1) です。

  • useTlcWithAccel - S-Function の SS_OPTION_USE_TLC_WITH_ACCELERATOR オプションの設定を指定する論理値。既定の設定では、値は true (1) です。

  • language - レガシ コード ツールが生成する S-Function のターゲット言語として、'C' または 'C++' を指定する文字列。既定の設定では、値は 'C' です。

      メモ:   レガシ コード ツールは、C++ 関数とインターフェイスで接続することができますが、C++ オブジェクトとは接続できません。この問題に関しては、Simulink ドキュメンテーションの「Legacy Code Tool Limitations」を参照してください。

  • singleCPPMexFiletrue の場合に生成コードが以下の条件を満たす論理値。

    • 拡張子が .c.tlc である 2 つのファイルとしてではなく、.cpp である 1 つのファイルとして、インライン S-Function を生成して管理することが必要です。

    • モデルのコンフィギュレーション パラメーターで指定されるように、モデルのコード スタイル (式内のかっこ使用のレベル、式内のオペランドの順序の保持、if ステートメント内の条件式) を保持します。

    既定の設定では、値は false です。

      制限   以下の場合は、singleCPPMexFile フィールドを true に設定できません。

      • Options.language='C++'

      • 次の Simulink オブジェクトのいずれかを使用して、IsAlias プロパティを true に設定する場合

        • Simulink.Bus

        • Simulink.AliasType

        • Simulink.NumericType

      • レガシ コード ツールの関数の仕様で、状態引数としてスカラー作業データを表現するための void* または void** を含む場合

      • レガシ コード ツール構造体の HeaderFiles フィールドで、複数のヘッダー ファイルを指定する場合

  • supportsMultipleExecInstances— 関数 ssSupportsMultipleExecInstances への呼び出しを含めるかどうかを指定する論理値。既定の設定では、値は false (0) です。

modelname

アクション文字列 'slblock_generate' を使って関数 legacy_code を指定する場合に、レガシ コード ツールが、生成されるマスク設定された S-Function ブロックを挿入するための Simulink モデルの名前。この引数を省略すると、空のモデル エディター ウィンドウにブロックが表示されます。

この情報は役に立ちましたか?