ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Mealy のセマンティクスを使用した自動販売機のモデル化

以下のチャートは、Mealy のセマンティクスに基づいて自動販売機をモデル化しています。

モデルを開く

Mealy の自動販売機のモデルを開くには、sf_mealy_vending_machinesf_mealy_vending_machine をクリックするか、MATLAB® コマンド プロンプトで「sf_mealy_vending_machine」と入力します。

Mealy の自動販売機ロジック

この例では、自動販売機は飲料缶の代価として 15 セントを要求します。購入者は 5 セント硬貨または 10 セント硬貨を 1 枚ずつ自動販売機に投入して、飲料缶を購入します。以下のように出力値 soda は入力値 coin と現在のステートによって確定するため、このチャートの動作は Mealy マシンと同様になります。

初期状態 got_0 がアクティブな場合-  硬貨は投入されていないか、残っていない状態です。

  • 5 セント硬貨が投入された場合は (coin == 1)、出力値 soda は 0 のままですが、ステート got_nickel がアクティブになります。

  • 10 セント硬貨が投入された場合は (coin == 2)、出力値 soda は 0 のままですが、ステート got_dime がアクティブになります。

  • 入力値 coin が 10 セント硬貨または 5 セント硬貨でない場合は、ステート got_0 がアクティブなままであり、飲料缶は排出されません (出力値 soda = 0)。

アクティブなステート got_nickel の場合-  5 セント硬貨が投入されました。

  • 別の 5 セント硬貨が投入されると (coin == 1)、ステート got_dime がアクティブになりますが、飲料缶は排出されません (soda は 0 のまま)。

  • 10 セント硬貨が投入された場合は (coin == 2)、飲料缶が排出されます (soda = 1)。硬貨は保管され、残りの硬貨は存在しないため、アクティブなステートは got_0 になります。

  • 入力値 coin が 10 セント硬貨または 5 セント硬貨でない場合は、ステート got_nickel がアクティブなままであり、飲料缶は排出されません (出力値 soda = 0)。

アクティブなステート got_dime の場合-  10 セント硬貨が投入されました。

  • 5 セント硬貨が投入された場合は (coin == 1)、飲料缶が排出されます (soda = 1)。硬貨は保管され、残りの硬貨は存在しないため、アクティブなステートは got_0 になります。

  • 10 セント硬貨が投入された場合は (coin == 2)、飲料缶が排出されます (soda = 1)。15 セント分の硬貨が保管され、5 セント硬貨 (釣り銭) が存在するため、アクティブなステートは got_nickel になります。

  • 入力値 coin が 10 セント硬貨または 5 セント硬貨でない場合は、ステート got_dime がアクティブなままであり、飲料缶は排出されません (出力値 soda = 0)。

Mealy の自動販売機の設計ルール

上記の Mealy 自動販売機の例は、以下の Mealy の設計ルールを図示したものです。

  • チャートは、条件アクションに基づいて出力値を計算する。

  • ステート アクションまたは遷移アクションは存在しない。

  • チャートは、入力値 (coin) と出力値 (soda) を定義する。

  • 入力値 coin に基づいて、出力値 (飲料缶が排出されるかどうか) が判定される。

この情報は役に立ちましたか?