このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
入れ子にされたステートの"階層"を作成することにより,サブコンポーネントごとにモデルに構造を追加します。その後Stateflow®チャートで複数レベルの複雑度を制御できるようになります。詳細については,有限ステートマシンのモデル化を参照してください。
ステートの階層を作成するには,1つ以上のステートを別のステートの境界内に配置します。内側のステートは,外側のステートの子ステート(サブステート)です。外側のステートは,内側のステートの親(スーパーステート)です。
親ステートの内容は,小さなチャートのように動作します。親ステートがアクティブになると,そのいずれかの子ステートもアクティブになります。親ステートが非アクティブになると,その子ステートのすべてが非アクティブになります。
この例は,ラジオ,FMラジオ,およびCDプレーヤーで構成されるステレオシステムをモデル化したものです。シミュレーション中は,媒体播放器助手ユーザーインターフェイスのボタンをクリックしてステレオシステムを制御します。
ステレオは最初スタンバイモード(关上)になっています。(无线电请求)ボタンのいずれかを選択すると,ステレオの対応するサブコンポーネントがオンになります。CDプレーヤーを選択した場合,[CD请求]ボタンのいずれかをクリックして再生,巻き戻し,早送り,または停止を選択できます。ディスクの挿入や取り出しはシミュレーション中にいつでも行えます。
一見して,このステレオシステムの完全実装はかなり複雑に見えます。しかし,一度に1つのアクティビティレベルだけに注目することで,システム全体の段階的な設計が可能になります。たとえば、CDプレーヤーが早送り再生モードに入るには,以下の条件が必要です。
ステレオがオンになっている。
CDプレーヤーがオンになっている。
ディスクを再生している。
UIで(FF)ボタンがクリックされた。
これらの各条件を一度に1つずつ検討する階層的なモデルを作成することができます。たとえば,一番外側のレベルではステレオのオンとオフ間の遷移を定義できます。中間レベルでは,さまざまなステレオサブコンポーネント間の遷移と,CDプレーヤーの停止モードと再生モード間の遷移を定義します。最下位レベルでは,ディスク再生の他の条件がすべて満たされる場合の[CD请求]ボタンへの応答が定義されます。
ステレオシステムの動作を実装するため,sf_mediaplayer
は,モデルエクスプローラーの模式管理器
チャートの下に一覧表示される,入れ子にされたステートの階層を使用します。モデルエクスプローラーを開くには,[モデル化)タブで[モデルエクスプローラー]を選択します。
次の表では,階層内における各ステートの役割をまとめています。
階層レベル | ステート | 説明 |
---|---|---|
最上位 (模式管理器 チャート) |
喷射 |
ディスク取り出しモード(他のすべてのステレオ機能を中断) |
NormalOperation |
ステレオシステムの標準動作モード | |
ステレオシステムアクティビティ( |
备用 |
ステレオシステムがスタンバイモード(下) |
在 |
ステレオシステムがアクティブ(上) | |
ステレオサブコンポーネント( |
CDMode |
CDプレーヤーサブコンポーネントがアクティブ |
AMMode |
我ラジオサブコンポーネントがアクティブ吗 | |
FMMode |
调频ラジオサブコンポーネントがアクティブ | |
CDプレーヤーアクティビティ( |
停止 |
CDプレーヤーが停止中 |
玩 |
CDプレーヤーがディスクを再生中 | |
ディスク再生モード( |
正常的 |
標準再生モード |
倒带 |
逆再生モード | |
fastforwar |
早送り再生モード |
次の図は,チャート内のステートの完全なレイアウトを示しています。
NormalOperation
ステートと在
ステート内のヒストリジャンクションは,ディスクが取り出されるかシステムがオフになる前に,動作モード(スタンバイまたは)とメディアプレーヤーのアクティブなサブコンポーネント(CDプレーヤー,是ラジオ,または调频ラジオ)を記録します。
例sf_mediaplayer
には,他に2つのStateflowチャートが含まれています。
应用程序接口
はUIとのインターフェイスを管理して,入力を模式管理器
チャートとCD播放器
チャートに渡します。
CD播放器
は应用程序接口
チャートと模式管理器
チャートからの出力を受け取ってCDプレーヤーの機械動作を模倣します。
シミュレーション時に,各チャートが媒体播放器助手アプリとのやり取りにどのように応答するかを調査できます。チャート間をすばやく切り替えるには,Stateflowエディターの上部にあるタブを使用します。