Main Content

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

シミュレーションとコード生成のための関数呼び出し信号の受信または出力

この例では、Variant Source ブロックで関数呼び出し信号をマージする方法を示します。

モデルの確認

モデル slexVariantSourceFunctionCall.slx を開きます。モデルには、入力端子における条件が A==1 および A==2 の Variant Source ブロックが含まれます。A は、[ファイル]、[モデル プロパティ]、[コールバック]PostLoadFcn に定義されているバリアント制御変数です。Variant Source ブロックの入力端子と出力端子におけるバリアント条件によって、それに接続されたブロックのアクティベーションおよびアクティベーション停止が決定されます。

Sine Wave ブロックが 2 つの MATLAB® 関数呼び出しブロックに接続されています。Sine Wave ブロックの値が正の場合、Filter Positive input という名前の関数呼び出しブロックがトリガーされます。Sine Wave ブロックの値が 0 または負の場合、Filter Negative input という名前の関数呼び出しブロックがトリガーされます。Variant Source ブロックの出力端子は、counter という名前の Function-Call Subsystem に接続されます。A==1 で、かつ Sine Wave ブロックが正の値を出力する場合、および A==2 で、かつ Sine Wave ブロックが負の値を出力する場合に、サブシステムがトリガーされます。

open_system('slexVariantSourceFunctionCall.slx')

モデルのシミュレーション

1 Variant Source ブロックの [パラメーター] ダイアログ ボックスで [関数呼び出しの出力] オプションを有効にします。このオプションをプログラムにより有効にするには、以下のコマンドを使用します。

set_param(slexVariantSourceFunctionCall/Variant Source,'OutputFunctionCall','On')

2 [シミュレーション]、[ブロック線図の更新] を実行してモデルをシミュレーションします。バリアント条件の伝播によって、非アクティブなバリアントの選択が決まります。

  • A==1 で、かつ Sine Wave ブロック出力が正の場合、Filter Positive input という名前の関数呼び出しブロックがアクティブになります。

  • A==2 で、かつ Sine Wave ブロック出力が 0 または負の場合、Filter Negative input という名前の関数呼び出しブロックがアクティブになります。

どちらの場合も、Counter という名前の Function-Call Subsystem のカウント値はインクリメントされます。A~=1 および A~=2 の場合、'Counter' は実行されず、Sine Wave ブロックは非アクティブになります。

sim('slexVariantSourceFunctionCall.slx')
load_system('slexVariantSourceFunctionCall/Counter')