【发布时间】:2015-06-29 05:18:37
【问题描述】:
我正在尝试为自动售货机绘制 FSM 图。这台机器接受镍币、硬币、硬币、半美元和美钞。有 4 个选项可供您选择。 3 是 1.15 美元,1 是 1.50 美元。如果该人插入的物品超过了物品的价值,则将给予更改。
FSM 输入
现金接收器产生一个 3 位编码值,表示没有硬币/镍/一角硬币/四分之一/半美元/美元。 比较器产生一个 2 位编码信号,指示将其输入与“钱箱”值进行比较的结果。
项目选择器生成一个 3 位编码值,表示要购买(分配)的选择。
我的问题是,我需要为每一美元的价值建立一个状态吗?现在我正在尝试它,我有接近 50 个状态,我什至不在图表的项目选择部分。有没有更简单的方法?
【问题讨论】:
-
你把这个问题复杂化了。自动售货机只关心几件事:你选择了什么项目,它花了多少钱,投入了多少钱。当你插入钱时,它并不一定会改变自动售货机的状态。如果某个操作改变了自动售货机的行为方式,那么您将转换到一个新状态。
-
所以当钱被插入时,我不改变状态?我如何跟踪机器中有多少钱才能知道是否可以购买物品?如果我处于初始状态,并且我插入了四个四分之一,一角硬币和镍,在我准备好选择一个项目之前,我是否根本不改变状态?我什么时候知道我有足够的钱搬到下一个州
-
正确,因为插入的金额不会改变机器的行为方式。您也可以将其视为转换到相同的状态。然后,一旦您做出选择,您就可以转换到下一个状态。您可以将状态视为与允许机器执行的一组操作相关联。在状态 A 中,机器只能收钱。在状态 B,机器只能分发物品。在状态C,机器只能找零。类似的东西。您的过渡条件基于投入的成本和金钱与所选项目之间的比较
标签: fsm state-machine