Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

列挙データを使用したメディア プレーヤーのモデル化

この例では、Stateflow® で列挙データを使用してメディア プレーヤーをモデル化する方法を説明します。メディア プレーヤーは Simulink® モデルと MATLAB® ユーザー インターフェイス (UI) で構成されています。モデルには以下のコンポーネントがあります。

  • User Request。UI からのユーザー入力が読み取られ、保存される Stateflow チャートです。

  • Media Player Mode Manager。メディア プレーヤーが AM ラジオ、FM ラジオ、CD プレーヤーのどのモードで動作するかを決定する Stateflow チャートです。

  • CD Player Behavior Model。CD プレーヤー コンポーネントの動作を記述する Stateflow チャートです。

これらのチャートは列挙データを使用して、関連する値を個別のデータ型にグループ化し、データ量を減らして読み取りやすさを改善します。詳細については、列挙データを使用した名前による値の参照を参照してください。

関連するデータ値のグループの作成

モデルは 2 つの列挙データ型を使用して、メディア プレーヤー コンポーネントと CD プレーヤー コンポーネントの可能な動作モードをグループ化します。Media Player Helper UI は、これらのモードを 2 つのボタン グループに分けます。

[Radio Request] セクションにはメディア プレーヤーの動作モードを選択するためのボタンが含まれています。データ型 RadioRequestMode の列挙値はメディア プレーヤーの次の動作モードに対応します。

  • OFF(0)

  • CD(1)

  • FM(2)

  • AM(3)

[CD Request] セクションには CD プレーヤー コンポーネントの動作モードを選択するためのボタンが含まれています。[Insert Disc] ボタンと [Eject Disc] ボタンもこの動作モードに影響します。データ型 CdRequestMode の列挙値は CD プレーヤーの次の動作モードに対応します。

  • EMPTY(-2)

  • DISCINSERT(-1)

  • STOP(0)

  • PLAY(1)

  • REW(3)

  • FF(4)

  • EJECT(5)

モデル シミュレーションの開始に際し、Display ブロックによってメディア プレーヤーの既定の設定が表示されます。Display ブロックの列挙値を変更するには、Media Player Helper を使用して他の動作モードを選択します。以下に例を示します。

  1. [Radio Request] セクションで、[CD] をクリックします。列挙型データ RRCurrentRadioMode の Display ブロックが OFF から CD に変わります。

  2. [Insert Disc] をクリックします。列挙型データ CdStatus の Display ブロックが EMPTY から DISCINSERT に、さらに STOP に変わります。

  3. [CD Request] セクションで、[PLAY] をクリックします。列挙型データ CRMechCmd、および CdStatus の Display ブロックが STOP から PLAY に変わります。

ユーザー インターフェイスからの入力の読み取り

User Request チャートは Media Player Helper UI からのリクエストを読み取ってその情報を以下の出力として保存します。

  • RR: [Radio Request] ボタンを表す列挙型データ。

  • CR: [CD Request] ボタンを表す列挙型データ。

  • DiscInsert: [Insert Disc] ボタンを表す boolean データ。

  • DiscEject: [Eject Disc] ボタンを表す boolean データ。

UI から入力を読み取るため、チャートは ml 名前空間演算子を使用して MATLAB パス上の関数 sfcdplayerhelper を呼び出します。詳細については、C チャート内の MATLAB 関数およびワークスペース データへのアクセスを参照してください。

列挙型データの変化に基づいたモードの選択

Media Player Mode Manager チャートは、User Request チャートからの入力に応じてメディア プレーヤーのサブコンポーネントをアクティブにします。

モデル シミュレーションの開始に際し、ModeManager ステートはアクティブです。boolean 入力データ DiscEjecttrue になると、Eject ステートへの遷移が発生し、続いて ModeManager ステートに戻る遷移が発生します。

ModeManager がアクティブになると、以前アクティブであったサブステート (ヒストリ ジャンクションによる記録に従い Standby または ON) がアクティブになります。Standby サブステートと ON サブステート間のその後の遷移は、列挙型入力データ RadioReq によって決まります。

  • RadioReqOFF の場合、Standby サブステートがアクティブになる。

  • RadioReqOFF でない場合、ON サブステートがアクティブになる。

ON サブステートでは、3 つのサブチャートがメディア プレーヤーの動作モードを表します。すなわち、CD プレーヤー、AM ラジオ、および FM ラジオです。各サブチャートは、列挙型入力データ RadioReq のさまざまな値に対応します。

  • RadioReqCD の場合、CDMode サブチャートはアクティブになります。サブチャートは CD Player Behavior Model チャートに PLAYREWFF、および STOP のコマンドを出力します。

  • RadioReqAM の場合、AMMode サブチャートはアクティブになります。サブチャートは CD Player Behavior Model チャートに STOP コマンドを出力します。

  • RadioReqFM の場合、FMMode サブチャートはアクティブになります。サブチャートは CD Player Behavior Model チャートに STOP コマンドを出力します。

RadioReq の値の変化をスキャンするため、ON ステート内の内部遷移は各タイム ステップで変化検出演算子hasChangedを呼び出します。

遷移のタイミングの制御

CD Player Behavior Model チャートは、User Request チャートと Media Player Mode Manager チャートからの入力に基づいて CD プレーヤーのメカニズムの動作を実装します。CD プレーヤーの機械的な遅延をモデル化するため、チャートは絶対時間の時相論理演算子 after を使用します。たとえば、次のようになります。

  • モデル シミュレーションの開始に際し、Empty ステートがアクティブになります。boolean 入力データ DiscInserttrue の場合、Inserting ステートへの遷移が発生します。1 秒間の遅延の後、DiscPresent ステートへの遷移が発生します。

  • DiscPresent ステートは、入力データ CMDEJECT になるまでアクティブなままです。この時点で Ejecting ステートへの遷移が発生します。1 秒間の遅延の後、Empty ステートへの遷移が発生します。

ステート遷移が発生するたびに、CD プレーヤーのステータスを反映して列挙型出力データ CdStatus の値が変わります。

  • アクティブなサブステートが Empty (CD プレーヤーが空) の場合、CdStatus = EMPTY

  • アクティブなサブステートが Inserting (CD プレーヤーがディスクを読み込み中) の場合、CdStatus = DISCINSERT

  • アクティブなサブステートが Ejecting (CD プレーヤーがディスクを取り出し中) の場合、CdStatus = EJECT

  • アクティブなサブステートが DiscPresent.STOP (CD プレーヤーが停止中) の場合、CdStatus = STOP

  • アクティブなサブステートが DiscPresent.PLAY (CD プレーヤーが再生中) の場合、CdStatus = PLAY

  • アクティブなサブステートが DiscPresent.REW (CD プレーヤーが巻き戻し中) の場合、CdStatus = REW

  • アクティブなサブステートが DiscPresent.FF (CD プレーヤーが早送り中) の場合、CdStatus = FF

参考

|

関連するトピック