Main Content

Enabled Subsystem の使用

"Enabled Subsystem" は、制御信号が正の値のときにメジャー タイム ステップごとに 1 回実行される条件付き実行サブシステムです。マイナー タイム ステップ中に信号がゼロを横切った場合、サブシステムは次のメジャー タイム ステップまでイネーブルまたはディセーブルになりません。

制御信号はスカラーまたはベクトルのいずれかになります。

  • スカラー値がゼロより大きい場合にサブシステムは実行されます。

  • ベクトル要素値のいずれかがゼロより大きい場合にサブシステムは実行されます。

Enabled Subsystem の作成

Enabled Subsystem を作成するには、次を行います。

  1. モデルに Enabled Subsystem ブロックを追加します。

    • ブロックを Simulink® Ports & Subsystems ライブラリからモデルにコピーします。

    • モデル ブロック線図をクリックし、enabled と入力してから、Enabled Subsystem を選択します。

  2. Outport ブロックの初期値とディセーブルにされた値を設定します。条件付きサブシステムの初期出力値および条件付きサブシステムが無効な場合の出力値を参照してください。

  3. サブシステムがイネーブルになっている場合にサブシステムの状態を処理する方法を指定します。

    Subsystem ブロックを開き、Enable Port ブロックのパラメーター ダイアログ ボックスを開きます。[イネーブル時の状態] ドロップダウン リストから次を選択します。

    • 保持 — 状態は最新の値を保持します。

    • リセット — サブシステムが少なくとも 1 タイム ステップでディセーブルになっている場合、状態は初期条件に戻ります。

      メモ

      サブシステムに Simulink Function ブロックを含む Stateflow® チャートが含まれる場合、Simulink Function ブロック内のブロックは初期条件に戻りません。より汎用的な再初期化機能については、Reinitialize Function ブロックの使用を検討してください。

      簡易初期化モードでは (既定)、サブシステムの経過時間は、イネーブルになった後の最初の実行中に必ずリセットされます。このリセットは、サブシステムがイネーブル時にリセットされるよう設定されているかどうかにかかわらず、発生します。Underspecified initialization detectionを参照してください。

    入れ子にされたサブシステムの Enable ブロックが異なるパラメーター設定をもつ場合、子サブシステムの設定は、親サブシステムから継承された設定をオーバーライドします。

  4. 制御信号を Enable ブロックから出力します。

    Enable ブロックのパラメーター ダイアログ ボックスで、[出力端子の表示] チェック ボックスをオンにします。

    このパラメーターをオンにすると、制御信号を Enabled Subsystem に渡すことができます。この信号は、制御信号の値に依存するアルゴリズムで使用できます。

Enabled Subsystem 内のブロック

離散ブロック

Enabled Subsystem 内の離散ブロックは、サブシステムが実行されるときのみ、かつそのサンプル時間がシミュレーション サンプル時間と同期がとれているときにのみ実行されます。

4 つの離散ブロックと 1 つの制御信号が含まれる以下のモデルを考えます。離散ブロックは次のとおりです。

  • サンプル時間が 0.25 秒の Block A

  • サンプル時間が 0.5 秒の Block B

Signal E はサンプル時間が 0.125 の Pulse Generator により生成されるイネーブル制御信号です。この出力値は 0.375 秒で 0 から 1 に変化し、0.875 秒で 0 に戻ります。

Enabled Subsystem 内の離散ブロックは次のとおりです。

  • サンプル時間が 0.125 秒の、Enabaled Subsystem 内の Block C

  • サンプル時間が 0.25 秒の、同じく Enabaled Subsystem 内の Block D

離散ブロックは示されているサンプル時間で実行されます。

Block A と Block B は、Enabled Subsystem の一部ではないため、イネーブル信号とは無関係に実行されます。イネーブル信号が正になると、Block C と D はイネーブル信号が再びゼロになるまで、割り当てられたサンプリング レートで実行されます。イネーブル制御信号がゼロに変化すると 0.875 秒では Block C が実行されません。

Goto ブロック

Enabled Subsystem は、Goto ブロックを含むことができます。ただし、状態をもつブロックの出力端子のみを Goto ブロックに接続できます。Enabled Subsystem 内で Goto ブロックを使用した例については、sldemo_clutch モデル内の Locked サブシステムを参照してください。

交互に実行される Enabled Subsystem ブロック

Merge ブロックを条件付きサブシステムと組み合わせて使うと、モデルの現在の状態に依存して交互に実行されるサブシステムの集合を作成できます。

2 つの Enabled Subsystem ブロックと 1 つの Merge ブロックを使って全波整流器 (AC 電流をパルス DC 電流に変換する装置) をモデル化するモデルについて考えます。

モデル例 ex_alternately_executing_model を開きます。

pos という名前のサブシステムを開きます。

このサブシステムは AC 波形が正のときに実行され、波形をそのまま出力します。

neg という名前のサブシステムを開きます。

このサブシステムは波形が負のときに実行され、波形を反転して出力します。

Merge ブロックは、現在実行されているサブシステムの出力をオリジナルの波形と重ね合わせて Scope ブロックに受け渡します。

モデルをシミュレートします。その後、Scope ブロックを開きます。

モデル例

モデル例については、以下を参照してください。

参考

| | |

関連するトピック