Real-Time Workshop User's Guide | ![]() ![]() |
Nonvirtual Subsystem Code Generationオプション
非仮想サブシステムに対して、サブシステムのBlock parametersダイアログのRTW system code ポップアップメニューから、以下のコード生成オプションを選択できます。
Auto
: これは、デフォルトオプションです。下記のAutoオプションを参照してください。Inline
: このオプションにより、Real-Time Workshop は明示的にサブシステムをインライン化します。Function
: このオプションにより、Real-Time Workshopはサブシステムに対して別々の関数とファイルを生成します。この場合、生成された関数とファイルの名前の制御のため更にオプションを選択できます。以下の節では、Auto
, Inline
, Function
オプションを説明します。
Autoオプション
現在のリリースでは、Auto
オプションにより、Real-Time Workshopはサブシステムをインライン化します。
将来のリリースでは、Auto
オプションにより、Real-Time Workshopはサブシステムをインライン化するか、サブシステムに対して別の関数や(とは別のmodel
.c
)個々のコードファイルを生成するかどうかを決定する予定です。複数のサブシステムがある場合や、サブシステムを複数が呼び出す場合、サブシステムはインライン化されません。この機能を利用するには、Auto
オプションを選択します。サブシステムを明確にインラインしたい場合、あるいは別々の関数およびコードモジュールを生成したい場合は、Inline
または Function
を選択します。
あるいは、以下のようにBlock Parameters ダイアログをオープンします。
システムが既に非仮想である場合、RTW system code オプションは既に利用可能です。
図 3-7: 非仮想サブシステムに対するAuto Code Generationオプション
Inlineオプション
上記のように、サブシステムコードは、サブシステムが非仮想である場合にのみインラインされます。
インライン化の例外 Real-Time Workshopが、Inlineオプションが選択されていても非仮想サブシステムをインラインしない場合があります。つぎのような場合です。
SS-OPTION_FORCE_NONINLINED_FCNCALL
を TRUE
に設定するS-functionブロックから呼び出される場合、インラインされません。これは、ユーザ定義Asynchronous Interrupt ブロックまたはTask Synchronization ブロックが要求される場合です。そのようなブロックは、関数として生成される必要があります。Real-Time Workshopに付属するVxWorks Asynchronous InterruptおよびTask Synchronizationブロックは、SS-OPTION_FORCE_NONINLINED_FCNCALL
オプションを利用します。あるいは、つぎのようにBlock Parameters ダイアログをオープンします。
システムが既に非仮想である場合、RTW system code ポップアップメニューは既に利用可能です。
図 3-8: 非仮想サブシステムに対するインラインコード生成
モデルからコードを生成する際に、Real-Time Workshopは、model
.c
にインラインコードを書き込んで、サブシステムの計算を実行します。このコードは、つぎのようにシステム/ブロック識別タグを使って識別できます。
/* Atomic SubSystem Block: <Root>/AtomicSubsys1 */
システム/ブロック識別タグに関する情報は、「生成コードをSimulinkモデルでトレース」を参照してください。
Functionオプション
このオプションにより、Real-Time Workshopはサブシステムに対して別々の関数とファイルを生成します。Function
オプションを選択すると、さらに2つのオプションが利用可能になります。
図 3-9は、Function
オプションが選択されたBlock Parameters ダイアログを示します。
RTW Function Name Options Menu. このメニューを使ってつぎの選択を行います。
Auto
: Real-Time Workshopは、デフォルトのネーミングの用法model
_
systemid
()
を使ってユニークなファイル名を割り当てます。ここで、systemid
はSimulinkによって割り当てられるシーケンシャルな識別子 (s0, s1,...s
n
) です。UseSubSystemName
: tReal-Time Workshopは、サブシステム名をファイル名として使います。UserSpecified
: このオプションが選択されると、Function nameテキストエントリフィールドが利用可能になります。有効な関数名を入力してください。関数名はユニークでなければなりません。RTW File Name Options Menu. このメニューを使ってつぎの選択を行います。
Auto
: Real-Time Workshopは、デフォルトのネーミングの用法model
_
systemid
.c
を使ってユニークなファイル名を割り当てます。ここで、systemid
は Simulinkによって割り当てられるシーケンシャルな識別子(s0, s1,...s
n
) です。UseSubSystemName
: Real-Time Workshopは、サブシステム名をファイル名として使います。UseFunctionName
: Real-Time Workshopは、(RTW function name オプションで指定された)関数名をファイル名として使います。UserSpecified
: このオプションが選択されると、RTW file name (no extension) テキストエントリフィールドが利用可能になります。希望する任意のファイル名を入力しますが、.c
(またはそれ以外の)拡張子は含まれません。このファイル名はユニークです。あるいは、つぎのようにBlock Parameters ダイアログをオープンします。
システムが既に非仮想である場合、RTW system code ポップアップメニューは既に利用可能です。
図 3-9: デフォルトのネーミングオプションを使ったサブシステム関数のコード生成
![]() | 非仮想サブシステムのコード生成 | サブシステムコードのモジュール性 | ![]() |