このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
条件付き実行サブシステムを使ったカウンター
この例では、Enabled Subsystem および Triggered Subsystem を使用してカウンターを実装する方法を示します。この例では、モデル sldemo_counters
がタンクへの水の流れを制御し、オーバーフローの発生回数をカウンターでカウントします。タンクの水位が 30 秒以上にわたって 8 メートル以上になるとオーバーフローが発生します。
オーバーフローの発生回数のカウントに加えて、Triggered Subsystem はバルブを閉じてタンクへの水の流れを停止し、タンクの水位が最大許容限度を下回っている状態を維持します。
モデルを開きます。
open_system('sldemo_counters.slx')
Enabled Subsystem を使用したカウンター
Enabled Subsystem は、水位が 8 メートル以上の場合に実行されます。サブシステムのカウンターは Unit Delay ブロックと Bias ブロックを使用し、30 秒以上にわたってその水位になるどうかをチェックします。正の出力信号 (Overflow Detected
) 値によってオーバーフローが示されます。その値により、Triggered Subsystem Close Intake Valve
の Trigger 端子がアクティブになります。
Triggered Subsystem を使用したカウンター
モデルには 2 つの Triggered Subsystem が含まれています。
Close Intake Valve このサブシステムには、Unit Delay および Bias ブロックを使用して、オーバーフローの発生回数をカウントし、オーバーフローが検出されたときにバルブを閉じる別のカウンターを実装するアルゴリズムが含まれています。このカウンターは Unit Delay ブロックを使用し、オーバーフローが検出されるたびに値を 1 ずつ増やします。
Open Intake valve タンク内の水位が最小許容限度である 2 メートルを下回ると、このサブシステムがトリガーされます。このサブシステムには、バルブを開いて水をタンクに流入させるアルゴリズムが含まれています。
Tank Dynamics
Tank Dynamics
サブシステムには、水の流入量、流出量、タンク断面積に基づいてタンク内の水位を決定するアルゴリズムが含まれています。このアルゴリズムは次の方程式を実装します。
モデルのシミュレーションと結果の確認
モデルのシミュレーションを実行します。
sim('sldemo_counters.slx');
シミュレーション中に、次のコンポーネントを観察します。
Emergency Indicator Lamp ブロックは Enabled Subsystem ブロックの入力信号 (
control signal
) に接続されており、水位が 8 メートル以上になると赤色 (オン) になります。オーバーフローが発生していない場合、インジケーターは緑色 (オフ) です。たとえば、インジケーターは t =100s あたりで初めてオンになります。Overflow Counter このカウンターは、オーバーフローの発生回数を表す Display ブロックを使用します。たとえば、最初のオーバーフローは t =130s で記録されます。
Water Tank このコンポーネントは、タンク内の水位を表す Horizontal Gauge ブロックを使用します。シミュレーション中、タンク内の水位の変化が示されます。
Scope ブロック このコンポーネントは、Scope ブロックを使用して、シミュレーションのさまざまなタイム ステップでの水位と、対応するバルブ開閉コマンドを表します。
シミュレーション中、タンクの水位が 2 メートルまで低下すると (たとえば、t =38s)、取水バルブが開き、水がタンクに流入します。
タンク内の水位が高さ 8 メートルに達し、その後 30 秒にわたってその高さ以上の水位が続くと、オーバーフローが発生します。その後、バルブが閉じてタンクへの水の流入が止まります。例として、t =100s から t =130s までのシミュレーションを観察してください。
参考
Enabled Subsystem | Triggered Subsystem