最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
レガシ コード ツールの使用
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',
は、レガシ コード ツールにより生成される S-Function のコンパイルとリンクを行います。コンパイルとリンクは、データ構造体、specs
, compilerOptions
)specs
、および指定されたコンパイラのオプションに基づいて行われます。コンパイラ オプションは MEX 関数によりサポートされていなければなりません。
legacy_code('generate_for_sim',
は S-Function の生成、コンパイル、リンクをまとめて 1 ステップで行います。レガシ コード ツール データ構造体の specs
, modelname
)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 ファイルを生成します。このオプションは、以下を行う場合に設定します。
Simulink のアクセラレータ モードで、生成された S-Function の TLC インライン コードを使用する場合。詳細については、関数 SimStruct の ssSetOptions
と S-Function のオプション SS_OPTION_USE_TLC_WITH_ACCELERATOR
の説明を参照してください。
Simulink モデルからコードを生成するために Simulink Coder™ を使用する場合。詳細については、レガシ コード ツールによって外部コードへの呼び出しを生成コードにインポート (Simulink Coder)を参照してください。
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
- 以下のいずれかにすることができます。
このフィールドを指定する場合、最後に指定しなければなりません。
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を参照してください。
singleCPPMexFile
- true
の場合に生成コードが以下の条件を満たす論理値。
拡張子が .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 モデルの名前。この引数を省略すると、空のモデル エディター ウィンドウにブロックが表示されます。