最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

every

every 演算子でチャートの実行を制御する

説明

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

入力イベントが設定されていないチャートでは、every(n,tick) は、関連付けられたステートがアクティブになってからのチャートの起動回数が n の整数倍である場合に true を返します。

関連付けられたステートが再びアクティブになるたびに、every 演算子は E のカウンターを 0 にリセットします。

every(n,time_unit) は、関連付けられたステートがアクティブになってから、n 単位の時間ごとに true を返します。それ以外の場合、演算子は false を返します。time_unit は、秒 (sec)、ミリ秒 (msec) またはマイクロ秒 (usec) として指定します。

関連付けられたステートが再びアクティブになるたびに、every 演算子は secmsec および usec のカウンターを 0 にリセットします。

every を絶対時間の時相論理演算子として使用することは、スタンドアロン チャートでのみ、MATLAB® オブジェクトとして実行するためにサポートされています。

すべて展開する

ステートがアクティブになってから 5 CLK サイクルごとにステータス メッセージ on が表示されます。

on every(5,CLK): status('on');

ステートがアクティブになってから 2 秒ごとにステータス メッセージが表示されます。

on every(2,sec): disp('Hello!');

ヒント

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

  • every を絶対時間の時相論理演算子として使用することは、スタンドアロン チャートでのみ、MATLAB オブジェクトとして実行するためにサポートされています。Simulink® モデルでは、代わりに after 演算子を含む外部自己ループ遷移を使用してください。詳細については、after 演算子を含む外部自己ループ遷移による every 演算子の置き換えを参照してください。

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

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

    • MATLAB のスタンドアロン チャートは時相論理を時計時間で定義します。

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

    • Simulink モデルでは、f への関数呼び出しが 1 つのタイム ステップで実行され、シミュレーション時間に寄与しません。チャートは f への関数呼び出しを完了した後でステート A からステート B に遷移し、関数 g を呼び出します。

    • スタンドアロン チャートでは、f への関数呼び出しが完了するまでに時計時間で数秒間かかる可能性があります。呼び出しが 2 秒より長く続く場合、チャートはステート B に遷移し、関数 f の実行が完了する前に関数 g を呼び出します。

R2014b で導入