Triggered Subsystem の使用
Triggered Subsystem とは、制御信号 (トリガー信号) が以下となるたびに実行される条件付き実行 Atomic サブシステムです。
負の値から正の値またはゼロに立ち上がるか、ゼロの値から正の値に立ち上がる場合。
正の値から負の値またはゼロに立ち下がるか、ゼロの値から負の値に立ち下がる場合。
ゼロの値を通過またはゼロの値に対して立ち上がるか立ち下がる場合。
Enabled Subsystem ブロックとは異なり、Triggered Subsystem ブロックはトリガー間でその出力を常に最後の値に保持します。また、Triggered Subsystem は実行されたときにブロックの状態をリセットすることはできません。どの離散ブロックでもその状態は、トリガー間で保持されます。
Triggered Subsystem の作成
Triggered Subsystem を作成するには次を行います。
Triggered Subsystem ブロックをモデルに追加します。
ブロックを Simulink® Ports & Subsystems ライブラリからモデルにコピーします。
モデル ブロック線図をクリックし、
trigger
と入力してから、Triggered Subsystem を選択します。
Outport ブロックの初期値とディセーブルにされた値を設定します。条件付きサブシステムの初期出力値および条件付きサブシステムが無効な場合の出力値を参照してください。
制御信号が実行をトリガーする方法を設定します。
Subsystem ブロックを開き、Trigger Port ブロックのパラメーター ダイアログ ボックスを開きます。[トリガー タイプ] ドロップダウン リストで次を選択します。
立ち上がり
— 制御信号が負の値またはゼロの値から正の値に立ち上がるか、負の値からゼロの値に立ち上がると、サブシステムの実行がトリガーされます。立ち下がり
— 制御信号が正の値またはゼロの値から負の値に立ち下がるか、正の値からゼロの値に立ち下がると、サブシステムの実行がトリガーされます。両方
— 立ち上がりまたは立ち下がりのいずれかの制御信号でサブシステムの実行がトリガーされます。
Trigger ブロックと Subsystem ブロックに異なる記号が表示され、立ち上がりトリガーおよび立ち下がりトリガーを示します。
Trigger Port ブロックからイネーブル制御信号を出力します。Trigger Port ブロックを開きます。[出力端子の表示] チェック ボックスをオンにして制御信号を Triggered Subsystem に受け渡します。
この信号は、制御信号の値に依存するアルゴリズムで使用できます。
[出力データ型] ドロップダウン リストから、
auto
、int8
、double
を選択します。[
auto
] オプションを指定すると、出力信号のデータ型が信号に接続されるブロック端子のデータ型 (int8
またはdouble
) に設定されます。
離散時間システムによるトリガー
離散時間システムの場合、制御信号の信号値の 2 つの立ち上がりまたは 2 つの立ち下がりの間に 1 タイム ステップを超える差があればトリガーが発生します。
信号値の立ち上がりが 2 つ発生するのは、制御信号が負からゼロに立ち上がった後に、信号値のゼロから正への立ち上がりがある場合です。
信号値の立ち下がりが 2 つ発生するのは、制御信号が正からゼロに立ち下がった後に、信号値のゼロから負への立ち下がりがある場合です。
信号値の立ち上がりについて、次の場合を考えてみます。
t = 1 秒で信号値が -1 から 0 に立ち上がり、t = 2 秒で信号値が 0 から 1 に立ち上がります。信号値の 2 つの立ち上がりの間に 1 タイム ステップを超える差がないため、サブシステムは t = 1 秒でのみトリガーされ、t = 2 秒ではトリガーされません。
t = 4 秒で信号値が 0 から 1 に立ち上がり、サブシステムがトリガーされます。t = 4 秒での信号値の立ち上がりとその前の t = 2 秒での信号値の立ち上がりの間に 1 タイム ステップを超える差があるためです。
同様に、次の図は信号値の立ち下がりを示したものです。
t = 1 秒で信号値が 1 から 0 に立ち下がり、t = 2 秒で信号値が 0 から -1 に立ち下がります。信号値の 2 つの立ち下がりの間に 1 タイム ステップを超える差がないため、サブシステムは t = 1 秒でのみトリガーされ、t = 2 秒ではトリガーされません。
t = 4 秒で信号値が 0 から -1 に立ち下がり、サブシステムがトリガーされます。t = 4 秒での信号値の立ち下がりとその前の t = 2 秒での信号値の立ち下がりの間に 1 タイム ステップを超える差があるためです。
トリガー モデルと Triggered Subsystem
次のいずれかのブロックを使う代わりに、Trigger Port ブロックを Model ブロック (参照モデル) 内に配置し、モデル設計を簡略化できます。
Model ブロック内の Triggered Subsystem ブロック。
Triggered Subsystem ブロック内の Model ブロック。
参照モデル内で Trigger Port ブロックを使用する方法の詳細については、参照モデルの条件付き実行を参照してください。
モデル参照を使用するようにサブシステムを変換するには、サブシステムから参照モデルへの変換を参照してください。
Triggered Subsystem 内のブロック
Triggered Subsystem 内のすべてのブロックは、継承 (-1
) または定数 (inf
) に設定された [サンプル時間] をもたなければなりません。この要件により、Triggered Subsystem 自体が実行された場合にのみ Triggered Subsystem 内のブロックが実行されるように指定できます。また、この要件は、Triggered Subsystem が Integrator ブロックのような連続ブロックを含むことができないことも意味します。
モデル例
モデル例については、以下を参照してください。
参考
Enabled Subsystem | Triggered Subsystem | Enabled and Triggered Subsystem | Function-Call Subsystem