暗黙的イベントを使用したチャート動作の制御
"暗黙的イベント" は、次の場合にチャートの実行中に発生する組み込みイベントです。
チャートが起動する。
チャートがステートに入り、そのステートがアクティブになる。
チャートがステートから出て、そのステートが非アクティブになる。
チャートが内部データ オブジェクトに値を代入する。
これらのイベントは、明示的に定義またはトリガーされることのない暗黙的イベントです。暗黙的イベントはチャートの子に該当し、親チャートでのみ発生および認識されます。
チャートの実行に基づく暗黙的イベント
キーワード tick は、離散時間シミュレーションでのチャートの起動時に生成される暗黙的イベントを指定します。
たとえば、次のチャートでは、Fan と Heater はパラレル (AND) ステートです。各ステートにはサブステートのペア (On と Off) があります。初期状態では、サブステート Fan.Off および Heater.Off はアクティブです。チャートが起動するたびに、tick イベントが生成されます。3 番目の tick は、Heater.Off から Heater.On への遷移をトリガーします。同様に、4 番目の tick は Fan.Off から Fan.On への遷移をトリガーします。8 番目の tick では、チャートは Fan.Off および Heater.Off に遷移して戻ります。

時相論理演算子 after の詳細については、時相論理を使用したチャート実行の制御を参照してください。
メモ
tick イベントは、評価対象のアクションを含むチャートを参照しています。イベントは、異なるチャートを参照できません。
データとステートに基づく暗黙的イベント
Simulink® モデルの Stateflow® チャートでは、次の演算子は、チャートが変数の値を設定した時点、またはチャートがステートに入るかステートから出た時点で、暗黙的イベントを生成します。
| 演算子 | 構文 | 説明 | 例 |
|---|---|---|---|
change |
| チャートが変数 data_name の値を設定すると、暗黙的ローカル イベントを生成します。 | ステートまたは遷移アクションにより値が変数 change(Engine.rpm) |
enter |
| 指定したステート state_name がアクティブになると、暗黙的ローカル イベントを生成します。 | チャートの実行がステート enter(Fan.On) |
exit |
| 指定したステート state_name が非アクティブになると、暗黙的ローカル イベントを生成します。 | チャートの実行がステート exit(Fan.Off) |
複数のステートまたはデータ オブジェクトの名前が同じである場合は、ドット表記を使用してステート名を修飾します。詳細については、ドット表記を使用したデータの識別を参照してください。
たとえば、次のチャートでは、Fan と Heater はパラレル (AND) ステートです。各ステートにはサブステートのペア (On と Off) があります。初期状態では、サブステート Fan.Off および Heater.Off はアクティブです。チャートが起動すると、Fan.Off から Fan.On への遷移をトリガーする tick イベントが生成されます。Fan.Off が非アクティブになると、Heater.Off から Heater.On への遷移をトリガーする別の暗黙的イベントが生成されます。チャートの実行が終了すると、サブステート Fan.On および Heater.On はアクティブになります。

メモ
パラレル ステートで同じ暗黙的イベントが複数の遷移をトリガーする場合、遷移の実行順序はパラレル ステートの実行順序と一致するとは限りません。予期しない動作を回避し、パラレル ステートに対して指定された順序と同じ順序で遷移を実行するには、暗黙的イベントを使用しないでください。代わりに、in や hasChanged などの演算子を呼び出す遷移条件を使用してください。詳細については、in 演算子を使用したステート アクティビティのチェックおよびデータと式の値の変化の検出を参照してください。
参考
after | change | enter | exit | hasChanged | in