Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

条件付きシステムのあるバリアント システム

EnableTriggerReset、および Function-Call Subsystems などの条件付きで実行されるシステム (制御端子) を Variant Subsystem ブロック内で使用できます。[ブロック パラメーター] ダイアログ ボックスで [バリアントのアクティベーションのタイミング] パラメーターが [コードのコンパイル] に設定されている場合、Variant Subsystem ブロック内の制御端子をバリアントの選択肢として混在させることはサポートされません。また、すべての制御端子のタイプは同じ名前でなければなりません。条件付きで実行されるサブシステムの詳細については、条件付き実行サブシステムの概要を参照してください。

Variant Subsystem をもつエクスポート関数モデル

Variant Subsystem ブロックを含む Variant モデルについて考えます。Function-Call システムを Linear Subsystem ブロックのバリアントの選択肢として使用する場合、Variant Subsystem ブロック内の他の Subsystem ブロック (Nonlinear) でも Function-Call システムがバリアントの選択肢でなくてはなりません。さらに、Linear ブロックおよび Nonlinear ブロック内の制御端子、および対応する inport ブロックは、同じ名前 (fcn) でなければなりません。

生成されたコードにおいて、fcn 定義内のコードはエクスポート関数内の C プリプロセッサの条件によって保護されます。

fcn() {
#if VSSMODE==0
// code for Linear choice
.......
#endif 
#if VSSMODE==1
// code for Nonlinear choice
.......
#endif 

Model ブロックを使用するマルチポイント エントリ関数をもつ類似のモデル化パターンも使用できます。例は次のとおりです。

上記の例では、fcln1fcln2、および fcln3Model ブロックをバリアントの選択肢として使用して、Variant Subsystem を通るようルーティングされています。

これらの条件は、バリアントの選択肢としての Variant Subsystem ブロック内で条件付きで実行されるシステムを使用するときにはサポートされません。

  • バリアントの選択肢としての Action 端子

  • [プリプロセッサの条件を生成] が [オン] に設定されている Iterator 端子を含むバリアントの選択肢

  • InitializeResetTerminate、および Simulink 関数のあるモデル

    メモ

    初期化イベント端子と終了イベント端子は、参照モデルの初期化イベントおよび終了イベントを、モデルの既定値とブロック固有値両方について制御しているため、常に無条件です。参照モデルに Initialize Function ブロックを定義した場合、それは明示的な初期化イベントに対応します。

Enable Subsystem を選択肢としてもつ Variant Subsystem

Variant Subsystem ブロックを含む Variant モデルについて考えます。Enable SubsystemLinear Subsystem ブロックのバリアントの選択肢として使用する場合、Variant Subsystem ブロック内の他の Subsystem ブロック (Nonlinear) でも Enable Subsystem がバリアントの選択肢でなければなりません。

このモデルは、VSSMODE の値に基づいてシミュレーションとコード生成を行います。

生成コードのスニペットを以下に示します。

step() {
#if VSSMODE==0
// code for Linear choice
.......
#elif VSSMODE==1
// code for Nonlinear choice
.......
#endif

関連するトピック