Este es mi primer post aquí. Encantado de conocerlos a todos!
He leído una pregunta relacionada Aquí y todavía tengo problemas.
La tarea:
Hay un edificio que consta de 7 pisos (indexado 0-6). Diseñe un sistema que controle el ascensor en este edificio.
Detalles de diseño:
-
Hay botones de navegación en cada piso (arriba / abajo).
-
Dentro del ascensor hay botones para seleccionar el destino. (Para simplificar, puedo asumir que solo se puede seleccionar un destino)
-
Las siete pantallas de segmentos indican la posición del elevador. Estos están presentes en cada piso y dentro del ascensor.
-
Hay indicadores LED que indican la dirección de movimiento del elevador en cada piso. (flechas, supongo?)
-
Hay botones dentro del ascensor para controlar el ventilador y las luces. (Los ventiladores y las luces están apagados de forma predeterminada. Se encienden automáticamente si el elevador está en movimiento).
Lo que he hecho hasta ahora :
Sistema # 1 : control de la pantalla de siete segmentos
Deja que el ascensor esté en el piso 'x'. Para la selección de destino (por ejemplo, y) desde el interior del ascensor, usamos un codificador para obtener el piso de destino en binario. Luego lo pasamos al controlador, que compara x e y, y decide la dirección del movimiento. A medida que se mueva, siga actualizando x y envíelo a las pantallas de siete segmentos en cada piso y dentro del elevador.
Sistema # 2 : ventiladores y luces. Estado por defecto: OFF. Si se selecciona el destino, enciéndalo. Encienda / apague según la elección del pasajero.
Sistema # 3 : la unidad de control de movimiento (aquí es donde tengo problemas):
Ya que estamos modelando el ascensor como una máquina de estados finitos, tengo los siguientes estados.
-
Resto: ( RST )
-
Subiendo ( UP )
-
Bajando ( ABAJO )
Los siguientes cambios causan transiciones de estado:
1.El ascensor se llama desde uno de los pisos.
2.El destino ha sido alcanzado.
3.El destino ha sido seleccionado.
Caso # 1: El destino ha sido seleccionado (y). Si y > x (piso actual) luego ARRIBA. más si y
Caso # 2: El ascensor se está moviendo de, por ejemplo, el 3er piso al 6to piso. Alguien en el cuarto piso quiere bajar. En el quinto piso, alguien quiere subir. La solución obvia, deténgase en el piso 5. vaya al piso 6 y luego vaya al cuarto piso.
Problema # 1 : ¿Cómo manejo las prioridades?
Problema # 2 : ¿Cómo almaceno la información? (Soy consciente de los flip-flops y los elementos de memoria relacionados. No estoy seguro de los detalles más precisos de la implementación)
Problema nº 3 : ¿Cómo puedo codificar los estados y crear la tabla de transición de estado? (No puedo visualizarlo).
PD: Dado que la pregunta estaba redactada de manera ambigua, creo que es seguro hacer algunas suposiciones para simplificar el problema.
La ayuda sería muy apreciada. Gracias de antemano.
EDIT 1 : para la unidad de control de movimiento, hay 19 entradas (1 cada una desde los pisos 0 y 6, 2 cada una desde los pisos 1-5, 7 desde el interior del ascensor) y 1 salida señal al motor (ARRIBA, ABAJO).