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® のスタンドアロン チャートで、n
に 0.001
以上の値を指定し、time_unit
に秒 (sec
) を指定します。演算子は、チャートを起動するための暗黙的イベントを生成する MATLAB timer
オブジェクトを作成します。MATLAB timer
オブジェクトの精度は 1 ミリ秒に制限されます。詳細については、スタンドアロン チャートのイベントを参照してください。
timer
オブジェクトは、関連付けられたステートとそのサブステートのentry
アクションをチャートが実行すると作成されます。チャートの実行中に値が変化する式をn
に指定した場合、チャートはtimer
オブジェクトの時間遅延を調整しません。timer
オブジェクトは、関連付けられたステートがアクティブになっている場合、チャート ステップの最後に実行を開始します。このステップには、チャート内にある他のパラレル ステートの実行が含まれることがあります。チャートが
timer
オブジェクトからの暗黙的イベントを受け取ったときに他の演算を処理している場合、チャートはこのイベントをキューに入れます。現在のステップが完了すると、チャートはこのイベントを処理します。時相論理演算子に関連付けられたステートが、チャートによる暗黙的イベントの処理より前に非アクティブになった場合、このイベントはチャートを起動しません。
例
ヒント
引用符を使用してキーワード
'tick'
、'sec'
、'msec'
および'usec'
を囲むことができます。たとえば、after(5,'tick')
はafter(5,tick)
と同じです。Stateflow チャートは、関連付けられたステートが再びアクティブになるたびに、
after
演算子で使用されるカウンターをリセットします。絶対時間の時相論理演算子のタイミングは Stateflow チャートのタイプによって異なります。
Simulink モデル内のチャートは、絶対時間時相論理をシミュレーション時間で定義します。
MATLAB のスタンドアロン チャートは、絶対時間時相論理を時計時間で定義します。この時間の精度は 1 ミリ秒に制限されています。
タイミングの差はチャートの動作に影響する場合があります。たとえば、次のチャートはステート
A
のduring
アクションを実行しているとします。Simulink モデルでは、
f
への関数呼び出しが 1 つのタイム ステップで実行され、シミュレーション時間に寄与しません。ステートA
からステートB
への遷移は、最初にチャートが起動しA
が 2 秒以上アクティブになったときに発生します。ステートB
のentry
アクションにより表示される値は、Simulink ソルバーにより使用されるステップ サイズのみに依存します。スタンドアロン チャートでは、
f
への関数呼び出しが完了するまでに時計時間で数秒間かかる可能性があります。呼び出しが 2 秒より長く続く場合、チャートはafter
演算子に関連付けられた暗黙的イベントをキューに入れます。ステートA
からステートB
への遷移は、関数f
の実行が完了すると発生します。ステートB
のentry
アクションにより表示される値は、f
の呼び出しが完了するまでの時間に依存します。
バージョン履歴
R2014b で導入