Main Content

システムの複雑度を管理する階層の作成

入れ子にされたステートの "階層" を作成することにより、サブコンポーネントごとにモデルに構造を追加します。その後、Stateflow® チャートで複数レベルの複雑度を制御できるようになります。詳細については、有限ステート マシンのモデル化を参照してください。

ステートの階層

ステートの階層を作成するには、1 つ以上のステートを別のステートの境界内に配置します。内側のステートは、外側のステートの子ステート (サブステート) です。外側のステートは、内側のステートの親 (スーパーステート) です。

Stateflow chart with a hierarchy of states. The outer state is called Parent. It contains two inner states called Child1 and Child2.

親ステートの内容は、小さなチャートのように動作します。親ステートがアクティブになると、そのいずれかの子ステートもアクティブになります。親ステートが非アクティブになると、その子ステートのすべてが非アクティブになります。

階層の例

この例は、AM ラジオ、FM ラジオ、および CD プレーヤーで構成されるステレオ システムをモデル化したものです。シミュレーション中は、Media Player Helper ユーザー インターフェイスのボタンをクリックしてステレオ システムを制御します。

ステレオは最初スタンバイ モード (OFF) になっています。[Radio Request] ボタンのいずれかを選択すると、ステレオの対応するサブコンポーネントがオンになります。CD プレーヤーを選択した場合、[CD Request] ボタンのいずれかをクリックして再生、巻き戻し、早送り、または停止を選択できます。ディスクの挿入や取り出しはシミュレーション中にいつでも行えます。

ステートの階層を使用した動作の実装

一見して、このステレオ システムの完全実装はかなり複雑に見えます。しかし、一度に 1 つのアクティビティ レベルだけに注目することで、システム全体の段階的な設計が可能になります。たとえば、CD プレーヤーが早送り再生モードに入るには、以下の条件が必要です。

  1. ステレオがオンになっている。

  2. CD プレーヤーがオンになっている。

  3. ディスクを再生している。

  4. UI で [FF] ボタンがクリックされた。

これらの各条件を一度に 1 つずつ検討する階層的なモデルを作成することができます。たとえば、一番外側のレベルではステレオのオンとオフ間の遷移を定義できます。中間レベルでは、さまざまなステレオ サブコンポーネント間の遷移と、CD プレーヤーの停止モードと再生モード間の遷移を定義します。最下位レベルでは、ディスク再生の他の条件がすべて満たされる場合の [CD Request] ボタンへの応答が定義されます。

ステレオ システムの動作を実装するため、sf_mediaplayer は、モデル エクスプローラーの Mode Manager チャートの下に一覧表示される、入れ子にされたステートの階層を使用します。モデル エクスプローラーを開くには、[モデル化] タブで [モデル エクスプローラー] を選択します。

Hierarchy of nested states, as listed by the Model Explorer.

次の表では、階層内における各ステートの役割をまとめています。

階層レベルステート説明
最上位 (Mode Manager チャート)Ejectディスク取り出しモード (他のすべてのステレオ機能を中断)
NormalOperationステレオ システムの標準動作モード

ステレオ システム アクティビティ (NormalOperation の子ステート)

Standbyステレオ システムがスタンバイ モード (OFF)
ONステレオ システムがアクティブ (ON)

ステレオ サブコンポーネント (On の子ステート)

CDModeCD プレーヤー サブコンポーネントがアクティブ
AMModeAM ラジオ サブコンポーネントがアクティブ
FMModeFM ラジオ サブコンポーネントがアクティブ

CD プレーヤー アクティビティ (CDMode の子ステート)

StopCD プレーヤーが停止中
PlayCD プレーヤーがディスクを再生中

ディスク再生モード (Play の子ステート)

Normal標準再生モード
Rewind逆再生モード
FastForward早送り再生モード

次の図は、チャート内のステートの完全なレイアウトを示しています。

Arrangement of states in the Mode Manager chart.

NormalOperation ステートと ON ステート内のヒストリ ジャンクション は、ディスクが取り出されるかシステムがオフになる前に、動作モード (Standby または ON) とメディア プレーヤーのアクティブなサブコンポーネント (CD プレーヤー、AM ラジオ、または FM ラジオ) を記録します。

例の確認

sf_mediaplayer には、他に 2 つの Stateflow チャートが含まれています。

  • App Interface は UI とのインターフェイスを管理して、入力を Mode Manager チャートと CD Player チャートに渡します。

  • CD PlayerApp Interface チャートと Mode Manager チャートからの出力を受け取って CD プレーヤーの機械動作を模倣します。

Simulink model that simulates a media player. The model contains the chart Media Player Mode Manager and two additional charts, User Request and CD Player Behavior Model.

シミュレーション時に、各チャートが Media Player Helper アプリとのやり取りにどのように応答するかを調査できます。チャート間をすばやく切り替えるには、Stateflow エディターの上部にあるタブを使用します。

関連するトピック