Modelar un semáforo utilizando la semántica de Moore
Este ejemplo muestra cómo utilizar la semántica de Moore para modelar un controlador de semáforos. Los diagramas de Moore calculan las salidas solo en estados, no en transiciones. Para obtener más información, consulte Design Considerations for Moore Charts.
Lógica de Moore aplicada a un semáforo
En este ejemplo, el modelo de semáforo contiene un diagrama de Moore denominado Light_Controller, que funciona en cinco estados de tráfico. Cada estado representa el color del semáforo en dos direcciones opuestas, norte-sur y este-oeste, y la duración de cada color. El nombre de cada estado representa el funcionamiento de la luz vista desde la dirección norte-sur.
Este diagrama utiliza lógica temporal para regular las transiciones de estado. El operador after
implementa un temporizador de cuenta regresiva, que se inicializa cuando se introduce el estado de origen. De forma predeterminada, el temporizador proporciona una luz verde más larga en la dirección este-oeste que en la dirección norte-sur porque el volumen de tráfico es mayor en la carretera este-oeste. El semáforo en la dirección este-oeste permanece en verde por lo menos 20 pulsos de reloj, pero puede permanecer en verde siempre y cuando no haya tráfico en el sentido norte-sur. Un sensor detecta si hay automóviles esperando en el semáforo en rojo en la dirección norte-sur. Si es así, el semáforo se pone en verde en la dirección norte-sur para mantener el tráfico en movimiento.
El gráfico Light_Controller se comporta como una máquina de Moore porque actualiza sus salidas en función del estado actual antes de pasar a un nuevo estado:
Stop
: el semáforo está en rojo para el norte-sur y en verde para el este-oeste.
Establece la salida
y1 = RED
(norte-sur) en función del estado actual.Establece la salida
y2 = GREEN
(este-oeste) en función del estado actual.Después de 20 tics de reloj, el estado activo se convierte en
StopForTraffic
.
StopForTraffic
: el semáforo ha estado en rojo para el norte-sur y en verde para el este-oeste por lo menos 20 tics de reloj.
Establece la salida
y1 = RED
(norte-sur) en función del estado actual.Establece la salida
y2 = GREEN
(este-oeste) en función del estado actual.Comprueba el sensor.
Si el sensor indica que hay automóviles esperando (
[sens]
es verdadera) en la dirección norte-sur, el estado activo se convierte enStopToGo
.
StopToGo
: el semáforo debe invertir el flujo de tráfico en respuesta al sensor.
Establece la salida
y1 = RED
(norte-sur) en función del estado actual.Establece la salida
y2 = YELLOW
(este-oeste) en función del estado actual.Después de 3 tics de reloj, el estado activo se convierte en
Go
.
Go
: el semáforo ha estado en rojo para el norte-sur y en amarillo para el este-oeste durante 3 tics de reloj.
Establece la salida
y1 = GREEN
(norte-sur) en función del estado actual.Establece la salida
y2 = RED
(este-oeste) en función del estado actual.Después de 10 tics de reloj, el estado activo se convierte en
GoToStop
.
GoToStop
: el semáforo ha estado en verde para el norte-sur y en rojo para el este-oeste durante 10 tics de reloj.
Establece la salida
y1 = YELLOW
(norte-sur) en función del estado actual.Establece la salida
y2 = RED
(este-oeste) en función del estado actual.Después de 3 tics de reloj, el estado activo se convierte en
Stop
.
Reglas de diseño de Moore aplicadas a un semáforo
Este ejemplo ilustra las siguientes reglas de diseño de Moore aplicadas a un semáforo:
El diagrama calcula las salidas
y1
ey2
en acciones de estado.El diagrama prueba la entrada
sens
en condiciones en las transiciones.El diagrama aplica lógica temporal, pero no eventos asíncronos.