メインコンテンツ

Stateflow での有限ステート マシンの設計

Stateflow® は、有限ステート マシンを使用して Simulink® モデルの制御ロジックを作成できる、グラフィカル プログラミング環境です。さらに、以下のことができます。

  • モデル間でのロジックの再利用と共有。

  • MATLAB® コードまたは Simulink サブシステムの、ステート マシンの関数としての使用。

  • ライブ アニメーションによるロジックの可視化。

  • ブレークポイントの使用とシミュレーション データのログによるロジックのデバッグ。

Stateflow は、真理値表とフロー チャートもサポートしています。詳細については、真理値表を使用して組み合わせ論理をモデル化およびStateflow でのフロー チャートの作成を参照してください。

ステートと遷移を使用したロジックの定義

有限ステート マシンは "ステート" としてのシステムの動作モードをモデル化します。ステートは、データを変更したり、コードやイベントを実行したり、他のステートを格納したりすることができます。

有限ステート マシンは一連のステップで実行されます。各ステップで、それぞれのステートは "アクティブ" または "非アクティブ" のどちらかになります。アクティブ ステートはアクションを実行したりコードを実行したりできますが、非アクティブ ステートは実行できません。ステート マシンの条件が変われば、アクティブ ステートも変わります。

ギアが動作モードの、自動車のオートマチック トランスミッションがあるとします。このアニメーション イメージでは、ギアを四角形で表されたステートとしてモデル化しています。自動車の速度が変わると、トランスミッションは、青色で強調表示されているようにギアをシフトします。

Chart animation showing states and transitions activating.

ステート マシンでは、"遷移" は、あるステートから別のステートに至るパスを表します。たとえば、オートマチック トランスミッション システムは、1 速から 2 速、2 速から 1 速または 3 速、という要領で切り替えることができます。

このアニメーション イメージは、トランスミッション システムでの遷移を、ステート間の矢印として表しています。各遷移には、アクティブ ステートが変わるタイミングを判別する条件があります。たとえば、自動車の速度が 10 を超えると、自動車は 1 速から 2 速にシフトします。

状態遷移表とチャートを使用したステート マシンのモデル化

Stateflow では、ステート マシンを状態遷移表または Chart ブロックとしてモデル化できます。

状態遷移表を使用する場合

状態遷移表は、ステートと遷移を表のエントリとして表します。たとえば、この状態遷移表はオートマチック トランスミッションのギアをステートとしてモデル化しています。

State transition table that models the automatic transmission of a car.

ステートのグラフィカル レイアウトについて心配することなく、ロジックの実装に焦点を当てるには、状態遷移表の使用を検討してください。

状態遷移表の作成に関するチュートリアルについては、Model Rechargeable Battery System by Using a State Transition Tableを参照してください。

チャートを使用する場合

チャートの作成時には、前述のアニメーションのように、キャンバスにステートと遷移を表す四角形と矢印を配置して、ステート マシンをモデル化します。設計で以下の要件がある場合は、チャートの使用を検討してください。

  • 再利用可能なコンポーネント。たとえば、1 つのチャートの複数の場所でステートを再利用したり、複数のチャートで同じステートを使用したりすることができます。

  • イベントドリブンの動作モード。たとえば、チャートの 1 つのコンポーネントが異なるコンポーネントからの信号を受信したとき、ステートを変更できます。

  • 非線形なフロー。たとえば、ループや分岐パスを使用する論理的なフローを設計できます。

Stateflow チャートの作成に関するチュートリアルについては、Model Rechargeable Battery System as Chartを参照してください。

参考

トピック