Sistemas Informáticos de Tiempo Real

Módulo de simulación de un ascensor

Esta documentación describe el funcionamiento del módulo de software que simula un ascensor, las funciones de programación disponibles para controlarlo, los argumentos pasados y las restricciones al comportamiento tras cada función.

El enunciado de la práctica de construcción de un sistema de control para dicho ascensor se puede encontrar aquí.

Descarga del código

El codigo del simulador en versión texto se encuentra en los ficheros simusor.c y simusor.h
El código del simulador con interfaz gráfico se encuentra en simusor.tgz.
Además, hay un esquema de un gestor de eventos para hacer el simulador basado en procesamiento de eventos en gestor_eventos.c.

Indice

Forma de integrar el código del simulador de texto

El código del simulador consta de varios threads de simulación que corren en paralelo a nuestro programa y de varias funciones de programación que podremos invocar en nuestros threads para controlar la maquinaria del ascensor. La forma de integrar este código en nuestra aplicación consta de dos partes:
Una vez que se ponen en marcha los threads de simulación del ascensor, nos comunicamos con el sistema simulado mediantes el conjunto de funciones que se describe más adelante. Los threads de simulación son un programa sin fin que continua hasta que terminemos con el proceso que los ha creado (el programa que contiene la función main).

Forma de integrar el código del simulador gráfico

El código es totalmente compatible con un programa que use el simulador de texto. De hecho, los ficheros simusor.c y simusor.h son los mismos, excepto por el símbolo GFX_ASCENSOR, que está definido al comienzo de simusor.h. Para usarlo debemos preparar el programa de control (main.c) siguiendo el esquema del apartado anterior
Una vez tengamos en marcha el simulador podemos seguir usando los comandos de texto en el terminal de texto donde vemos los mensajes o usar los botones correspondientes a estos mismos comandos en el interfaz gráfico.

Parámetros del sistema

El fichero simusor.h define una serie de constantes que especifican los parámetros de funcionamiento y dimensiones del sistema. Al usar estos parámetros es conveniente usar la constante dada en lugar de poner su valor, de forma que podamos cambiar la simulación con solo editar los valores de este fichero. Los símbolos definidos son los siguientes (su valor actual está entre paréntesis):
VELOCIDAD: Velocidad máxima en m/s  (1,0 m/s).
TIME_STEP: Paso de tiempo de la simulación del ascensor en seg  (0,100 s).
N_PISOS: Numero de plantas  (10).
H_PISO: Altura de cada planta en metros  (3,0 m).
H_INI: Altura de la planta baja en metros  (0 m).
H_FIN: Altura de la ultima planta en metros  (H_INI+N_PISOS*H_PISO).
H_MIN: Limite inferior del recorrido del ascensor en metros  (H_INI-0,5 m).
H_MAX: Limite superior del recorrido del ascensor en metros  (H_FIN+0,5 m).
TOLERANCIA_SENSOR: Radio alrededor de la planta en que el sensor de planta está activado  (0,1 m).
RETRASO_PUERTA: Tiempo que tarda la puerta en abrirse o en cerrarse completamente.  (2 s).
H_FRENADA: Distancia a recorrer a velocidad lenta tras dejar una planta y antes de llegar a la de destino en metros  (0,3 m).

Comandos de las botoneras

El simulador está leyendo el teclado continuamente a la espera de que entremos comandos que equivalen a pulsar un botón de la botonera. Los comandos disponibles son:

Funciones disponibles

Actuación sobre el sistema

Consulta del estado del sistema

Manipulación de timeval

Estas funciones permiten operar comodamente con intervalos de tiempo o referencias a instantes absolutos expresados en formato timeval.

Signals

Aunque existen 32 signals distintos, no es posible usar todos ellos para nuestros propios fines de programación ya que muchos de ellos están asociados con eventos del propio sistema operativo, de modo que podría ocurrir que se dispare uno de estos signals por un envento del sistema mientras estamos usándolo como mecanismo de comunicación. Por esta razón, hay que estar seguro de qué signals podemos usar para nuestro propio programa. Los signals sugeridos para usar en el programa son:

© 2003 Guillermo Pérez Trabado
Departamento de Arquitectura de Computadores
Universidad de Málaga