Para controlar adecuadamente un proceso es importante estructurar los cambios de estado con una máquina de Estados.
El funcionamiento es simple. Los estados definen una situación y permiten definir que acciones son factibles y por tanto simplifica la programación.
Este es un ejemplo de librería muy simple que puede servir para el proyecto en curso. (gracias a Igor Real por su implementación.
ver aquí fuentes y el pdf del que he extraído la información publicada
En el proyecto de las plazas, la máquina de estados se encuentra en el controlador de las dos plazas, posibles eventos/estados (depende de cómo se traten y reflejen) son:
Eventos:
- Petición de plaza (hay que definir si es genérica, corta , larga)
- Vehiculo entrando en garaje
- Vehiculo saliendo de garaje
- Vehiculo Detectado en plaza
- Detección de plaza libre (cuando se libera)
Estados
- Plaza/s libre/s (al iniciar las plazas o cuando se libera)
- Plaza/s ocupada/s. no es lo mismo reservada que ocupada. detalles a resolver sobre la implementación . Hay que definir si se refleja el estado por plaza o del garaje completo. plazas ocupadas significa que no hay ninguna plaza, plaza ocupada es un estado de la plaza no del parking.
- Vehiculo en parking.
A veces no es fácil manejar una sola máquina de estados y en necesario tener información en otras variables u otras máquinas de estados. En esta implementación la parte que debe quedar bien definida son los eventos ya que será lo que se porte a colas y posteriormente a ontologías y plataforma de IOT.
Links de interés:
http://arduining.com/2015/09/18/traffic-light-states-machine-with-arduino/ Ejemplo de implementación de un cruce de semáforos con máquina de estados
No hay comentarios:
Publicar un comentario