システムの複雑度を管理する階層の作成
入れ子にされたステートの "階層" を作成することにより、サブコンポーネントごとにモデルに構造を追加します。その後、Stateflow® チャートで複数レベルの複雑度を制御できるようになります。詳細については、有限ステート マシンのモデル化を参照してください。
ステートの階層
ステートの階層を作成するには、1 つ以上のステートを別のステートの境界内に配置します。内側のステートは、外側のステートの子ステート (サブステート) です。外側のステートは、内側のステートの親 (スーパーステート) です。
親ステートの内容は、小さなチャートのように動作します。親ステートがアクティブになると、そのいずれかの子ステートもアクティブになります。親ステートが非アクティブになると、その子ステートのすべてが非アクティブになります。
階層の例
この例は、AM ラジオ、FM ラジオ、および CD プレーヤーで構成されるステレオ システムをモデル化したものです。シミュレーション中は、Media Player Helper ユーザー インターフェイスのボタンをクリックしてステレオ システムを制御します。
ステレオは最初スタンバイ モード (OFF) になっています。[Radio Request] ボタンのいずれかを選択すると、ステレオの対応するサブコンポーネントがオンになります。CD プレーヤーを選択した場合、[CD Request] ボタンのいずれかをクリックして再生、巻き戻し、早送り、または停止を選択できます。ディスクの挿入や取り出しはシミュレーション中にいつでも行えます。
ステートの階層を使用した動作の実装
一見して、このステレオ システムの完全実装はかなり複雑に見えます。しかし、一度に 1 つのアクティビティ レベルだけに注目することで、システム全体の段階的な設計が可能になります。たとえば、CD プレーヤーが早送り再生モードに入るには、以下の条件が必要です。
ステレオがオンになっている。
CD プレーヤーがオンになっている。
ディスクを再生している。
UI で [FF] ボタンがクリックされた。
これらの各条件を一度に 1 つずつ検討する階層的なモデルを作成することができます。たとえば、一番外側のレベルではステレオのオンとオフ間の遷移を定義できます。中間レベルでは、さまざまなステレオ サブコンポーネント間の遷移と、CD プレーヤーの停止モードと再生モード間の遷移を定義します。最下位レベルでは、ディスク再生の他の条件がすべて満たされる場合の [CD Request] ボタンへの応答が定義されます。
ステレオ システムの動作を実装するため、sf_mediaplayer
は、モデル エクスプローラーの Mode Manager
チャートの下に一覧表示される、入れ子にされたステートの階層を使用します。モデル エクスプローラーを開くには、[モデル化] タブで [モデル エクスプローラー] を選択します。
次の表では、階層内における各ステートの役割をまとめています。
階層レベル | ステート | 説明 |
---|---|---|
最上位 (Mode Manager チャート) | Eject | ディスク取り出しモード (他のすべてのステレオ機能を中断) |
NormalOperation | ステレオ システムの標準動作モード | |
ステレオ システム アクティビティ ( | Standby | ステレオ システムがスタンバイ モード (OFF) |
ON | ステレオ システムがアクティブ (ON) | |
ステレオ サブコンポーネント ( | CDMode | CD プレーヤー サブコンポーネントがアクティブ |
AMMode | AM ラジオ サブコンポーネントがアクティブ | |
FMMode | FM ラジオ サブコンポーネントがアクティブ | |
CD プレーヤー アクティビティ ( | Stop | CD プレーヤーが停止中 |
Play | CD プレーヤーがディスクを再生中 | |
ディスク再生モード ( | Normal | 標準再生モード |
Rewind | 逆再生モード | |
FastForward | 早送り再生モード |
次の図は、チャート内のステートの完全なレイアウトを示しています。
NormalOperation
ステートと ON
ステート内のヒストリ ジャンクション は、ディスクが取り出されるかシステムがオフになる前に、動作モード (Standby または ON) とメディア プレーヤーのアクティブなサブコンポーネント (CD プレーヤー、AM ラジオ、または FM ラジオ) を記録します。
例の確認
例 sf_mediaplayer
には、他に 2 つの Stateflow チャートが含まれています。
App Interface
は UI とのインターフェイスを管理して、入力をMode Manager
チャートとCD Player
チャートに渡します。CD Player
はApp Interface
チャートとMode Manager
チャートからの出力を受け取って CD プレーヤーの機械動作を模倣します。
シミュレーション時に、各チャートが Media Player Helper アプリとのやり取りにどのように応答するかを調査できます。チャート間をすばやく切り替えるには、Stateflow エディターの上部にあるタブを使用します。