Main Content

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

after

イベント ブロードキャスト後または指定時間後にチャートを実行

説明

after(n,E) は、関連付けられたステートがアクティブになってからのイベント E の発生回数が n 回以上である場合に true を返します。それ以外の場合、演算子は false を返します。

after(n,tick) は、関連付けられたステートがアクティブになってからのチャートの起動回数が n 回以上である場合に true を返します。それ以外の場合、演算子は false を返します。

Simulink® モデル内の Stateflow® チャートに入力イベントがある場合、暗黙的イベント tick はサポートされません。

after(n,time_unit) は、関連付けられたステートがアクティブになってから少なくとも n 単位の時間が経過した場合に true を返します。それ以外の場合、演算子は false を返します。

Simulink モデルのチャートで、time_unit を秒 (sec)、ミリ秒 (msec)、マイクロ秒 (usec) のいずれかとして指定します。n を式として指定する場合、シミュレーション中に式の値が変化すると、チャートは時間遅延を調整します。

MATLAB® のスタンドアロン チャートで、n0.001 以上の値を指定し、time_unit に秒 (sec) を指定します。演算子は、チャートを起動するための暗黙的イベントを生成する MATLAB timer オブジェクトを作成します。MATLAB timer オブジェクトの精度は 1 ミリ秒に制限されます。詳細については、スタンドアロン チャートのイベントを参照してください。

  • timer オブジェクトは、関連付けられたステートとそのサブステートの entry アクションをチャートが実行すると作成されます。チャートの実行中に値が変化する式を n に指定した場合、チャートは timer オブジェクトの時間遅延を調整しません。

  • timer オブジェクトは、関連付けられたステートがアクティブになっている場合、チャート ステップの最後に実行を開始します。このステップには、チャート内にある他のパラレル ステートの実行が含まれることがあります。

  • チャートが timer オブジェクトからの暗黙的イベントを受け取ったときに他の演算を処理している場合、チャートはこのイベントをキューに入れます。現在のステップが完了すると、チャートはこのイベントを処理します。

  • 時相論理演算子に関連付けられたステートが、チャートによる暗黙的イベントの処理より前に非アクティブになった場合、このイベントはチャートを起動しません。

すべて展開する

チャートがイベント E のブロードキャストを処理すると、ステータス メッセージを表示します。この処理はステートがアクティブになってから 3 番目以降の E のブロードキャストで実行されます。

on after(3,E):
   disp('ON');

Stateflow chart that uses the after operator in a state.

チャートがイベント E のブロードキャストを処理すると、関連付けられたステートから遷移します。この処理はステートがアクティブになってから 5 番目以降の E のブロードキャストで実行されます。

after(5,E)

Stateflow chart that uses the after operator in a transition.

イベント E の 5 回以上のブロードキャストでステートが非アクティブだった場合に、関連付けられたステートから遷移します。

Simulink モデルのチャートで、次のように入力します。

[after(5,E)]

Stateflow chart that uses the after operator in a transition.

時相論理演算子の条件表記法は、MATLAB のスタンドアロンのチャートではサポートされていません。

関連付けられたステートがアクティブになってからチャートが 7 回以上起動すると、このステートから遷移します。ただし、変数 temp が 98.6 より大きい場合に限られます。

after(7,tick)[temp > 98.6]

Stateflow chart that uses the after operator in a transition.

関連付けられたステートが 12.3 秒以上アクティブになった時点から、チャートが起動するたびに変数 tempLOW に設定します。

on after(12.3,sec):
   temp = LOW;

Stateflow chart that uses the after operator in a state.

ヒント

  • 引用符を使用してキーワード 'tick''sec''msec' および 'usec' を囲むことができます。たとえば、after(5,'tick')after(5,tick) と同じです。

  • Stateflow チャートは、関連付けられたステートが再びアクティブになるたびに、after 演算子で使用されるカウンターをリセットします。

  • 絶対時間の時相論理演算子のタイミングは Stateflow チャートのタイプによって異なります。

    • Simulink モデル内のチャートは、絶対時間時相論理をシミュレーション時間で定義します。

    • MATLAB のスタンドアロン チャートは、絶対時間時相論理を時計時間で定義します。この時間の精度は 1 ミリ秒に制限されています。

    タイミングの差はチャートの動作に影響する場合があります。たとえば、次のチャートはステート Aduring アクションを実行しているとします。

    Stateflow chart with two states. The during action in state A calls a function f. The transition to state B uses the expression after(2,sec). The entry action in state B displays the elapsed time.

    • Simulink モデルでは、f への関数呼び出しが 1 つのタイム ステップで実行され、シミュレーション時間に寄与しません。ステート A からステート B への遷移は、最初にチャートが起動し A が 2 秒以上アクティブになったときに発生します。ステート Bentry アクションにより表示される値は、Simulink ソルバーにより使用されるステップ サイズのみに依存します。

    • スタンドアロン チャートでは、f への関数呼び出しが完了するまでに時計時間で数秒間かかる可能性があります。呼び出しが 2 秒より長く続く場合、チャートは after 演算子に関連付けられた暗黙的イベントをキューに入れます。ステート A からステート B への遷移は、関数 f の実行が完了すると発生します。ステート Bentry アクションにより表示される値は、f の呼び出しが完了するまでの時間に依存します。

R2014b で導入