ドキュメンテーション

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

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('sfcn_makecfg_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、および指定されたコンパイラのオプションに基づいて行われます。コンパイラ オプションは MEX (MATLAB) 関数によりサポートされていなければなりません。

legacy_code('generate_for_sim', specs, modelname) は S-Function の生成、コンパイル、リンクをまとめて 1 ステップで行います。レガシ コード ツール データ構造体の Options.useTlcWithAccel フィールドが logical 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 ファイルを生成します。このオプションは、以下を行う場合に設定します。

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

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

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 — コンパイルに必要となるヘッダー ファイル名を指定する文字ベクトルの cell 配列。

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

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

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

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

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

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

サンプル時間の指定

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) です。

  • convertNDArrayToRowMajor - 行列の列優先の形式と行優先の形式の自動変換を指定する論理値。MATLAB、Simulink、生成コードでは列優先の形式が使用されます。C では行優先の形式が使用されます。既定値は false (0) です。現在、このオプションの以前のバージョン convert2DMatrixToRowMajor を指定している場合、この関数によって自動的に新しい convertNDArrayToRowMajor オプションが指定されます。

    メモ

    このオプションでは複素数データの 2 次元行列はサポートされません。

  • supportCoverage — 生成された S-Function がモデル カバレッジと互換性がなければならないかどうかを指定する論理値。既定の設定では、値は false (0) です。

  • supportCoverageAndDesignVerifier - 生成された S-Function がモデル カバレッジおよび Simulink Design Verifier™ に対応していなければならないかどうかを指定する論理値。既定の設定では、値は false (0) です。

  • outputsConditionallyWritten — レガシ コードが条件付きで出力端子を記述するかどうかを指定する論理値。true の場合、生成された S-Function は、各出力端子に関連付けられたメモリは上書きできず、グローバルである (SS_NOT_REUSABLE_AND_GLOBAL) ことを指定します。false の場合、各出力端子に関連付けられたメモリは再利用可能でローカルです (SS_REUSABLE_AND_LOCAL)。既定の設定では、値は false (0) です。詳細については、ssSetOutputPortOptimOpts を参照してください。

modelname

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

R2006b で導入