tdse-tp1_00-problem_approach

Index Commits Files Refs
tdse-tp1_00-problem_approach.md (5498B)
   1 # TP 01-00 Problem Approach
   2 
   3 Sebastian Branda - sbranda@fi.uba.ar  
   4 Martin Klöckner - mklockner@fi.uba.ar
   5 
   6 ## Requerimientos
   7 
   8 Se debe contar con un sensor electromagnético que detecte la proximidad de un
   9 vehículo a la barrera
  10 
  11 Un sensor que detecte que un vehículo esta atravesando la barrera, para evitar
  12 que la barrera se cierre cuando el vehículo esta "pasando"
  13 
  14 Un botón para que el conductor del vehículo indique al sistema que abra la
  15 barrera
  16 
  17 Un actuador o barrera que permita o indique al vehículo que esta habilitado o no
  18 para circular.
  19 
  20 ## Modelos de comportamiento
  21 
  22 El sistema se puede dividir en tres módulos que se encargan de escrutar,
  23 procesar y actuar, y se modelan como Sensor, System y Actuator, respectivamente.
  24 
  25 ### Escrutar
  26 
  27 En el modulo de escrutar, se captura información o sucesos del entorno, como ser
  28 la proximidad de un vehículo, o que se ha presionado el botón para abrir la
  29 barrera. Luego esta información se comparte con el modulo de procesar.
  30 
  31 ### Procesar
  32 
  33 En el modulo de procesar se analiza la información obtenida en el modulo
  34 escrutar y en base a eso se decide que acciones tomar en el modulo actuador.
  35 
  36 ### Actuar
  37 
  38 En el modulo actuador se ejecutan las acciones de acuerdo a la información
  39 analizada en el modulo procesar, en el ejemplo de la barrera seria el control de
  40 la misma, si se abre o se cierra, si se detiene o si se mueve en una dirección,
  41 etc.
  42 
  43 ## Eventos y Acciones del modelo Sensor
  44 
  45 Para el sensor electromagnético que detecta si un auto se aproxima a la barrera
  46 se utiliza como modelo un botón, de acuerdo al estado del botón (presionado o
  47 no) se modela como si un vehículo estuviera próximo a la barrera.
  48 
  49 ### Estados
  50 
  51 Los estados del botón que modelan el sensor pueden ser:
  52 
  53 * `ST_BTN_HIGH`: cuando el botón no se encuentra presionado
  54 * `ST_BTN_LOW`: cuando el botón esta presionado
  55 * `ST_BTN_FALLING`: estado intermedio entre no presionado y presionado
  56 * `ST_BTN_RISING`: estado intermedio entre presionado y no presionado
  57 
  58 ### Eventos
  59 
  60 * `EV_BTN_UP`: se detecta que el botón se dejó de presionar
  61 * `EV_BTN_DOWN`: se detecta que el botón se presiona
  62 
  63 ### Señales
  64 
  65 * `EV_SYS_BTN_DOWN`: se emite cuando el botón se detecta que ha sido presionado
  66   y no hubo un glitch o bounce
  67 * `EV_SYS_BTN_UP`: se emite cuando el botón se detecta que ha sido presionado
  68   y no hubo un glitch o bounce
  69 
  70 ### Acciones
  71 
  72 * `start_timer_debounce`: se inicializa una variable como TICK la cual se
  73   utiliza para evitar el proceder erróneo como consecuencias de glitch.
  74 * `decrement_timer_debounce`: se decrementa la variable TICK en una unidad.
  75 * `raise_down_signal`: en caso que la variable TICK llegue a cierto valor (0),
  76   se detecta que el botón fue realmente presionado.
  77 * `raise_up_signal`: en caso que la variable TICK llegue al valor deseado (0),
  78   se detecta que el botón no está siendo apretado.
  79 
  80 ## Eventos y Acciones del modelo System
  81 
  82 El modelo System modela el modulo de procesar, este modelo lleva una cuenta de
  83 todos los estados de los sensores y actuadores.
  84 
  85 ### Estados
  86 
  87 * `ST_SYS_LOOP_IN`: un vehículo se encuentra próximo a la barrera.
  88 * `ST_SYS_LOOP_OUT`: el vehículo esta saliendo de la barrera.
  89 * `ST_SYS_IR_PASSING`: un vehículo se encuentra atravesando la barrera
  90 * `ST_SYS_BTN_WAITING`: un vehículo se encuentra en la barrera pero no ha
  91   presionado aún el botón
  92 * `ST_SYS_DELAY`: estado intermedio para evitar cerrar la barrera encima del
  93   vehículo
  94 
  95 ### Eventos
  96 
  97 * `EV_SYS_LOOP_CAR_IN`: ocurre cuando ingresa un auto al sensor
  98 * `EV_SYS_LOOP_CAR_OUT`: ocurre cuando sale un auto del sensor
  99 * `EV_SYS_IR_CAR_PASSING`: el auto esta atravesando la barrera
 100 * `EV_SYS_DELAY_TIMEOUT`: cuando el tiempo de espera termina
 101 * `EV_SYS_BTN_PRESSED`: ocurre cuando el botón ha sido presionado
 102 
 103 ### Señales
 104 
 105 * `EV_ACT_BARRIER_RAISE`: se emite cuando se debe abrir la barrera
 106 * `EV_ACT_BARRIER_LOWER`: se emite cuando se debe cerrar la barrera
 107 
 108 ### Acciones
 109 
 110 * `raise_barrier`: se notifica al modulo actuador que abra la barrera
 111 * `lower_barrier`: se notifica al modulo actuador que cierre la barrera
 112 * `start_delay`: se inicia un timer con un tiempo determinado y envía el evento
 113   `EV_SYS_DELAY_TIMEOUT` cuando finaliza
 114 
 115 ## Eventos y Acciones del modelo Actuator
 116 
 117 El modelo Actuator modela el modulo actuador, en este caso se modela la barrera.
 118 
 119 ### Estados
 120 
 121 Estados en los que se puede encontrar la barrera
 122 
 123 * `ST_ACT_OPEN`: la barrera se encuentra abierta
 124 * `ST_ACT_CLOSED`: la barrera se encuentra cerrada
 125 * `ST_ACT_OPENING`: la barrera se encuentra en estado de transición entre
 126   abierta y cerrada
 127 * `ST_ACT_CLOSING`: la barrera se encuentra en estado de transición entre
 128   cerrada y abierta
 129 
 130 ### Eventos
 131 
 132 Eventos que se obtienen del modelo System
 133 
 134 * `EV_ACT_RAISE`: este evento se obtiene cuando se debe abrir la barrera
 135 * `EV_ACT_LOWER`: este evento se obtiene cuando se debe cerrar la barrera
 136 
 137 Eventos que se obtienen del final de carrera de la barrera
 138 
 139 * `EV_ACT_OPENING_END`: este evento se obtiene cuando la barrera se estaba
 140   abriendo y llega a la posición maxima o final.
 141 * `EV_ACT_CLOSING_END`: este evento se obtiene cuando la barrera se estaba
 142   cerrando y llega a la posición minima o de reposo.
 143 
 144 ### Acciones
 145 
 146 * `raise_barrier`: se comienza a mover la barrera desde la posición inicial
 147 * `lower_barrier`: se comienza a mover la barrera desde la posición final
 148 * `stop_barrier`: se detiene el movimiento de la barrera, esto ocurre cuando se
 149   llega a las posiciones de los extremos