Modelar una máquina expendedora utilizando la semántica de Mealy
Este ejemplo muestra cómo utilizar la semántica de Mealy para modelar una máquina expendedora. Los diagramas de Mealy calculan las salidas solo en las transiciones, no en los estados. Para obtener más información, consulte Design Considerations for Mealy Charts.
Lógica de la máquina expendedora de Mealy
En este ejemplo, la máquina expendedora solicita 15 centavos para dispensar una lata de refresco. El comprador puede introducir una moneda de 5 centavos o una de 10 centavos, una a la vez, para comprar el refresco. El gráfico se comporta como una máquina de Mealy porque su salida soda
depende tanto de la entrada de moneda como del estado actual:
got_0
: no se ha recibido ninguna moneda o no se requieren más monedas.
Si se recibe una moneda de 5 centavos (
coin == 1
), la salidasoda
permanece en 0, pero el estadogot_nickel
se convierte en activo.Si se recibe una moneda de 10 centavos (
coin == 2
), la salidasoda
permanece en 0, pero el estadogot_dime
se convierte en activo.Si la entrada de moneda no es una moneda de 10 centavos o 5 centavos, el estado
got_0
permanece activo y no se dispensa ningún refresco (salidasoda = 0
).
got_nickel
: se ha recibido una moneda de 5 centavos.
Si se recibe otra moneda de 5 centavos (
coin == 1
), el estadogot_dime
se convierte en activo, pero no se dispensa una lata (soda
permanece en 0).Si se recibe una moneda de 10 centavos (
coin == 2
), se dispensa una lata (soda = 1
), las monedas se depositan y el estado activo se convierte engot_0
porque no se requieren más monedas.Si la entrada de moneda no es una moneda de 10 centavos o 5 centavos, el estado
got_nickel
permanece activo y no se dispensa una lata (salidasoda = 0
).
got_dime
: se ha recibido una moneda de 10 centavos.
Si se recibe una moneda de 5 centavos (
coin == 1
), se dispensa una lata (soda = 1
), las monedas se depositan y el estado activo se convierte engot_0
porque no se requieren más monedas.Si se recibe una moneda de 10 centavos (
coin == 2
), se dispensa una lata (soda = 1
), se depositan 15 centavos y el estado activo se convierte engot_nickel
porque se requiere una moneda de 5 centavos (cambio).Si la entrada de moneda no es una moneda de 10 centavos o 5 centavos, el estado
got_dime
permanece activo y no se dispensa una lata (salidasoda = 0
).
Reglas de diseño en una máquina expendedora de Mealy
Este ejemplo de una máquina expendedora de Mealy ilustra las siguientes reglas de diseño de Mealy:
El gráfico calcula las salidas en las acciones de condición.
No hay acciones de estado o acciones de transición.
El valor de entrada
coin
determina el valor de salidasoda
.