Main Content

Mealy チャートを設計する際の注意事項

Mealy マシンは、クロック エッジで遷移が発生する有限ステート マシンです。Mealy チャートでは、出力は入力とステートの関数です。タイム ステップごとに、Mealy チャートが起動し、入力を評価して、アクティブ ステートの新しい構成 ("次のステート") に遷移します。チャートは、次のステートへ遷移するときに出力を計算します。Mealy のセマンティクスは、MATLAB® 内のスタンドアロンの Stateflow® チャートではサポートされません。

Mealy のセマンティクス

出力が確実に入力とステートの関数となるように、Mealy ステート マシンは、以下のセマンティクスを適用します。

  • 出力は次のステートに依存しない。

  • チャートは、ステートではなく、遷移でのみ出力を計算する。

  • チャートはシステム クロックに基づいて定期的に起動する。

    メモ

    チャートは、入力とクロックに対して単一の時間ベースを提供します (単一の時間ベースによる出力とステートの計算 を参照)。

Mealy チャートの設計ガイドライン

ステート マシンの Mealy 定義に準拠するためには、入力端子に変化が発生するたびにチャートで出力が確実に計算されるよう設定します。

条件アクションのみの出力の計算

外部遷移と内部遷移の条件アクションのみに基づいて、出力を計算できます。条件の入力をテストして、関連するアクションの出力を計算するというモデリング スタイルは、Mealy マシンで共通のものです。

ステート アクションまたは遷移アクションを使用しない

Mealy チャートでは、ステート アクションまたは遷移アクションは使用できません。この制限は、以下に基づいて Mealy のセマンティクスに適用されます。

  • チャートでの出力の計算時には入力端子の変化を考慮する。

  • 出力は次のステートではなく現在のステートに基づいて判定する。

データ ストア メモリを使用しない

チャート外部のオブジェクトによってデータ ストア メモリ (DSM) を修正できるため、Mealy チャートでは DSM を使用できません。Stateflow チャートは、データ ストア メモリを使用して Simulink® モデルとデータを共有します。データ ストア メモリはグローバル データとして動作します。チャートが含まれる Simulink 階層では、その他のブロックとモデルは DSM を修正できます。予期しない形で変更される可能性があるデータに Mealy チャートがアクセスしてはなりません。

イベントの使用を制限する

Mealy チャートで、イベントの使用を以下のように制限します。

  • 有効な使用:

    • 入力イベントを使用して、チャートをトリガーする。

    • イベントベースの時相論理を使用して、遷移をガードする。

      時相論理条件の値の変化は、Mealy チャートが内部的にスケジューリングしたイベントと同様に動作します。各タイム ステップで、時相イベント実行前の目盛りの数は、チャートのステートのみに依存します。詳細については、時相論理演算子を参照してください。

      メモ

      Mealy チャートでは、時相論理演算子の基本イベントは、tick (データとステートに基づく暗黙的イベントを参照) などの事前定義イベントでなければなりません。

  • 無効な使用:

    • どのようなタイプのイベントもブロードキャストできません。

    • ローカル イベントを使用して、遷移をガードできません。ローカル イベントは、不確定であり、チャートが出力を計算中に発生する可能性があるため、Mealy のセマンティクスに違反します。

    • chg(data_name)en(state_name) または ex(state_name) などの暗黙的イベントは使用できません。

単一の時間ベースによる出力とステートの計算

クロックと入力に対して、Simulink ソルバーによって判定される単一の時間ベースを使用できます。Simulink ソルバーは、入力の変化を捕捉するのに十分な速さのクロック レートを設定します。結果として、Mealy チャートは通常、同じタイム ステップで出力を計算してステートを変更します。詳細については、ソルバーの比較 (Simulink)を参照してください。

関連するトピック