uacceso ( MicroControl de acceso) 
      ANALISIS DEL SISTEMA
      Por José Ricardo Otazo Torres


 
         1. División general del sistema de control de acceso.

                  El sistema de control de acceso tendrá dos componentes principales : el control central ( computador ) y el
            control de la puertas que conforman el sistema ( uno por cada puerta ) . El módulo de control de la puerta estará
            en contacto directo con el usuario del sistema y el control central con el administrador. La figura 1 muestra el
            diagrama de árbol para la división general del sistema de control de acceso.


 
            Figura 1 : División general del sistema de control de acceso.
 

            Módulos de uacceso.

          1-  CONTROL CENTRAL
 
            2-  CONTROL DE LA PUERTA
 
 

             2. Control central ( ucontrol ).

                El módulo CONTROL CENTRAL se encargará de la administración del acceso a las diferentes puertas
                que conforman el sistema. Estará en contacto directo con el operador del sistema y en ella podrán
                programarse los códigos de acceso para cada usuario, las prioridades de acceso del mismo y la configuración
                de forma de apertura de cada puerta. Además ofrecerá una interfaz gráfica para el operador en la cual indicará
                constantemente el estado de las puertas del sistema y posibles problemas con las mismas, lo cual ya he
                explicado detalladamente en las especificaciones.
 
                   CONTROL CENTRAL estará implementado en software con LABWindows en una computadora personal
                ( PC ) teniendo a Windows95 como sistema operativo.

                    En la  figura 2  se observan los módulos que componen CONTROL CENTRAL.

 

               Figura 2 : Diagrama de árbol para CONTROL CENTRAL.
 

            BASE DE DATOS.

                Descripción : unidad de almacenamiento de los códigos para cada usuario, configuración de cada puerta
                y  administración de la seguridad a su acceso estableciendo contraseñas para los operadores del sistema.

                Implementación : SyBase(Software).

                Interfaz con CONTROL CENTRAL : Para casos de consulta CONTROL CENTRAL realizará pedidos
                al administrador de la base de datos escribiendo en un archivo. El administrador de la base de datos
                responderá con el pedido hecho escribiendo en un archivo la respuesta.  En casos en que se deba escribir
                un dato en la base de datos CONTROL CENTRAL enviará los datos a escribir y la posición en la cual
                serán escritos.

                        Pedidos a la BASE DE DATOS.

                        CCP                        Cosulta de configuración de puerta
                        CCB                        Consulta de código de ibuttom
                        CCT                        Consulta de código de teclado
                        CCO                        Consulta de contraseña de operador
 
                        Respuestas a los pedidos.

                         CP                          Código de puerta
                         DB                          Datos del código de ibuttom
                         DT                          Datos del código de teclado
                        ECO                        Existe contraseña de operador.

                        Escritura en la base de datos. ( con la orden van seguidos los datos )

                          ACP                       Actualizar configuración de puerta
                          ACU                       Actualizar campo de usuario
                          INU                        Introducir nuevo usuario.

 
        TRANSPORTE_C. ( Capa de transporte en la red )

            Descripción : capa de transporte dentro del esquema de comunicación en red. Su función en brindar una
            comunicación segura de datos con las puertas y realizar un control del estado de las mismas a fin de
            constatar posibles problemas.

            Implementación : LABWindows(Software)

            Interfaz con CONTROL_CENTRAL: a través de paquetes para transmisión y recepción de mensajes.

                    CONTROL CENTRAL a TRANSPORTE_C
                        TX_PA        Paquete de transmisión
                        TX_E           Orden de transmisión

                    TRANSPORTE_C  a CONTROL_CENTRAL                    
                        RX_PA        Paquete de recepción.
                        RX_I            Aviso de paquete recibido.
                        PD                Puerta desconectada de la red por no haber respondido las últimas tres veces.

                Módulos.

                TEMPORIZADOR.

                Descripción : contador de tiempos utilizado para la espera de respuesta de la puerta.

                Implementación : LABWindows (Software)

                Interfaz con TRANPORTE_C :

                        TRANSPORTE_C a TEMPORIZADOR
                            TMAX        Valor máximo de conteo
                            HC               Habilitación de conteo

                       TEMPORIZADOR a  TRANSPORTE_C
                            TIMEOUT    Final de conteo

                ENLACE_C.

                Descripción : capa de enlace en el esquema de red. Provee una conexión física confiable y con la mínima
                probabilidad de errores.

                Implementación : LABWindows ( Software )
 
                Interfaz con TRANPORTE_C:

                    TRANSPORTE_C a ENLACE_C.
 
                        P_TX        Paquete a transmitir por la capa de enlace.
                        HTX         Habilitación para transmisión
 
                    ENLACE_C a TRANSPORTE_C.

                        P_RX        Paquete recibido correctamente
                        ERR          Error en la recepción

                        Módulos.
 
                        TRANSMISION_C
 
                        Descripción : formación del frame de transmisión con el paquete de transmisión recibido de la capa de
                        transporte y posterior secuencia de transmisión utilizando el puerto serial de la computadora.

                        Implementación : LABWindows ( Software )
 
                        Interfaz con ENLACE_C.

                                ENLACE_C a TRANSMISION_C.

                                    P_TX     Paquete de tx recibido de la capa de transporte.
                                    HAB      Habilitación de transmisión

 
                       RECEPCION_C
 
                        Descripción : formación del frame de recepción con los datos recibidos por el puerto serial de la
                        computadora.

                        Implementación : LABWindows ( Software )
 
                        Interfaz con ENLACE_C.

                                RECEPCION_C a ENLACE_C.

                                    P_RX     Paquete  recibido a través del puerto serial.
                                    A_RX    Aviso de recepción

                        CONTROL DE ERRORES.
 
                        Descripción: detección de errores en el frame recibido por RECEPCION_C utilizando el algoritmo de
                        código de redundancia cíclica CRC-16.
 
                        Implementación : LABWindows ( Software)

                        Interfaz con ENLACE_C.
 
                                CONTROL DE ERRORES a ENLACE_C.

                                    A_ERR        Aviso de error
 
 

            Conexión a la red de la computadora que actúa como control central.

                La computadora se conectará a través de su puerto serial a la red. Como el puerto serial de la computadora
            genera tensiones RS-232, se requerirá de un circuito de interface que convierta de niveles RS-232 a
            niveles RS-485.

 
                    Figura 3 : Conexión de la PC de control a la red.

 
 
 
               3. Control de la puerta.

                        Módulo del sistema encargado del control de acceso a una determinada puerta según las indicaciones
                  recibidas de CONTROL CENTRAL a través de la red de comunicaciones establecida.
 

        Figura 4 : Diagrama explicativo del módulo de control de la puerta.

                        CONTROL DE LA PUERTA ( uacceso) estará implementado con el microcontrolador AT89C52 ,
            el cual posee un  juego de instrucciones similar al MCS8051 de INTEL, así como la disposición de patillas.

            Módulos de HW.
 
                El sistema de control del módulo estará en el AT89C52, el cula dispondrá de ciertas interfaces para
            comunicarse con los elementos de la interface con el usuario y de la puerta.

        Figura 5 : Diagrama en bloques del módulo de control de la puerta.

            El TRANSCEIVER RS485  se encarga de la conversión de las señales TTL del puerto del MCS-8051 a sus
        correspondientes valores RS485 para el caso de transmisión y viceversa en el caso de recepción. También
        provee el control para poner en alta impedancia al módulo en la red ( solo está disponible la recepción ).

            La INTERFAZ DE POTENCIA provee el nivel necesario de tensión para activar al pestillo ( 12 VAC ) desde
        un pin del microcontrolador, además de un aislamiento eléctrico entre el circuito de potencia y el microcontrolador.

            El SENSOR DE LA PUERTA indica el estado de la puerta ( abierta o cerrada ).

            El CONTROLADOR de LCD se encargará de brindar todas las señales necesarias para el despliegue de
        mensajes en el LCD, liberando de tal tarea al microcontrolador.

            La INTERFAZ DE TECLADO se encarga de la correcta conexión del teclado a los pines del micro. El filtrado
        de rebotes se realiza por software.

            La INTERFAZ CON EL IBUTTOM permite la correcta interconexión del lector ibuttom con el microcontrolador.
 

         Módulos de SW.

           La figura 6 muestra la disposición de los módulos de SW dentro del MCS-8051, que se encargarán de realizar
        el sistema de control de acceso a la puerta a través de comunicación bidireccional con el control central a través de la
        red de comunicaciones establecida.


    Figura 6: Diagrama de árbol de CONTROL DE LA PUERTA.
 
 
        Rutina principal.

        upuerta

        Descripción : rutina principal donde se implementará el sistema de control de la puerta. Deberá responder a
        todas las solicitudes de control central a través de la red, para lo cual tendrá que conocer su condición en cada
        momento( puerta abierta, botón leído, pestillo accionado, etc.). Conoce en que modo de funcionamiento se
        encuentra el módulo y actúa de acuerdo a ello.

        Funciones de inicialización.

        iniciar_puerta

        Descripción : inicialización del puerto serial, de los temporizadores utilizados, interrupciones, de la capa de
        enlace de red, envío de comandos de inicialización al controlador de LCD e inicialización de todas las variables
        utilizadas en las diferentes rutinas.
        Interfaz con upuerta : al terminar de inicializar todos los parámetros citados retorna el control del programa a
        upuerta. Recibe como parámetro la dirección del módulo en la red.

        iniciar_red
 
        Descripción : inicialización del módulo en la red. Se copia el parámetro pasado al módulo en la variable que
        contendrá la dirrección de red del módulo. Se inicializa el puerto serial del microcontrolador a la velocidad
        definida, modo UART con 9°bit ( esquema multiprocesador).
        Interfaz con iniciar_puerta :  iniciar_puerta le pasa como parámetro la dirección de red del módulo.
        Al terminar de inicializar le devuelve el control .

      lcd_iniciar
 
        Descripción : envío de comandos de inicialización al controlador del LCD, tales como número de líneas, forma
        de los caracteres, ancho del bus de datos, dirección de desplazamiento.
        Interfaz con iniciar_puerta : al terminar el envío de comandos le devuelve el control a iniciar_puerta.

         Funciones de transferencia de paquetes a través de la red.
 
        enviar_condicion
 
        Descripción : se envía la condición actual del módulo utilizando los servicos de la capa de enlace, para lo cual
        se arma un frame de transmisión en el buffer de tx utilizando la información sobre condición. Son posibles
        botón leído o no leído , teclado leído o no leído, puerta abierta o cerrada y pestillo accionado o apagado.
        Interfaces :para transimitir el byte llama a a_enlace pasándole el buffer de transimisión formado con la condición
        del módulo. Luego de que a_enlace devuelva el control devuelve el control a upuerta.

     enviar_boton
 
        Descripción : se envía el buffer del código del botón leído utilizando los servicos de la capa de enlace,
        para lo cual se arma un frame de transmisión y se lo almacena en el buffer de tx.
        Interfaces :para transimitir el byte llama a a_enlace pasándole el buffer de transimisión formado con el código del
        botón. Luego de que a_enlace devuelva el control devuelve el control a upuerta.
 
     enviar_teclado
 
        Descripción : se envía el buffer del código del teclado leído utilizando los servicos de la capa de enlace,
        para lo cual se arma un frame de transmisión y se lo almacena en el buffer de tx.
        Interfaces :para transimitir el byte llama a a_enlace pasándole el buffer de transimisión formado con el código del
        teclado. Luego de que a_enlace devuelva el control devuelve el control a upuerta.
 
      a_enlace

        Descripción :   inicializa la transmisión por interrupciones a través del puerto serial del frame contenido en el
        buffer de transmisión que recibe como parámetro y transmite el primer byte ( el de dirección con 9°bit=1).
        Interfaces:  recibe como parámetro el buffer de tx y al terminar de transmitir el byte de dirrección del
        protocolo de enlace devuelve el control a quien lo llamó. Retorna  ERROR si hay otra trama transmitiéndose y
        NOEERROR si el byte de dirrección pudo transmitirse, comenzando así la transmisión del frame.

       Funciones de recepción de datos a través de la red.

       de_enlace
 
        Descripción : pregunta por la existencia de un frame de recepción, indagando a la recepción por
        interrupciones por el puerto serial que implementa el protocolo de enlace. En caso de haberse obtenido un frame
        reinicializa la recepción por interrupciones.
        Interfaces:si ya está listo un frame recibido devolverá la dirrección del buffer que contiene el frame recibido.
        En caso contrario devuelve ERROR.
 
 
       Funciones de lectura del teclado.

       leer_teclado

       Descripción : Se prueba si se puede realizar barrido de teclas utilizando a prueba_tecla_pres. En caso afirmativo busca
        una tecla a través de leer_tecla. En caso de ser capturada una tecla , la codifica en ASCII y la guarda en el buffer del
        código de teclado, en caso de que no haya sido * . Si fue *, se borra todo el buffer de teclado y se comienza de nuevo
        con el código. De esta manera se soluciona el problema de que uncódigo incompleto haya quedado almacenado en el
        buffer, y entonces llegue otra persona a intentar ingresar.
        Interfaces : devuelve el control a upuerta en dos casos : en el primero de ellos se produjo un mensaje desde control
        central, por lo tanto hay que ir a tenderlo. En el segundo caso se produjo el ingreso del código completo, por lo tanto
        ya solo se espera el momento para transmitirlo.
 
       prueba_tecla_pres
 
         Descripción : Se prueba si una tecla está presionada, de ser así no posibilitará la búsqueda de una
         nueva tecla. Su finalidad es no volver a repetir la lectura de la tecla anterior. La búsqueda de una nueva tecla
         luego de que alguna haya sido presionada solo será permitida por esta función.

         Interfaces: Habilitará o no la búsqueda de una nueva tecla. Luego de realizar su encuesta devuelve el
         control a leer_teclado.
 
       leer_tecla
 
         Descripción :procede a realizar el barrido de las columnas del teclado y la lectura de filas para detectar
         una tecla. En caso de que se haya detectado una tecla se almacena su código en valores lógicos de fila y columna.
         Se sigue realizando el barrido. Si esta tecla aparece diez veces se la toma como válida, en caso contrario, no hay
         tecla válida y se sale de la función. Si es que ninguna tecla válida estuvo presente ninguna vez realiza un solo barrido y
         sale la función. El procesamiento de la tecla capturada filtra los rebotes mecánicos en el teclado.
         Interfaces: Devuelve a leer_teclado la condición de tecla válida o no. En caso de tecla válida devuelve también
         a leer_teclado el código de la tecla en el formato de barrido de columna y lectura de fila correspondiente a la tecla en
        cuestión.
 
       codificar_tecla
 
         Descripción :Recibe el valor de la tecla codificada en el formato barrido de columna y lectura de fila
         y procede a codificarla en ASCII.
         Interfaces: Recibe como parámetro la tecla no codificada de leer_teclado y devuelve a leer_teclado  la tecla
         codificada en ASCII.

       Funciones de lectura del ibuttom.

       leer_boton

       Descripción : Se pregunta por la existencia de un botón  en el lector a través de boton_reset. En caso afirmativo se
         procede a leerlo, a través boton_hab y boton_leer_byte.
         Una vez completada la lectura del código ( 8 bytes = 7 de código + 1 de crc), se procede a verificar posibles
         errores a través de boton_crc, si el paquete está libre de errores se da por válido y se avisa que ya hay botón leído.
         Interfaces : Devuelve a upuerta la condición de botón leído o no.
 
        boton_reset

       Descripción : envío del pulso de reset al ibuttom.
         Interfaces : Informa a leer_boton si hay o no un botón en el lector.

       boton_hab

       Descripción : una vez que un botón ha sido detectado, se procede a enviar un byte de habilitación para
         lectura del botón.
         Interfaces : devuelve el control a leer_boton luego de haber enviado el comando de habilitación.

       boton_leer_byte

       Descripción : lectura de un byte de la memoria ROM interna del ibuttom.
         Interfaces : devuelve a leer_boton el byte leído

       boton_crc

       Descripción : detección de errores en la transmisión con el botón utilizando un código crc de polinomio de 8 bits,
         brindado por el fabricante del ibuttom. Se realiza cálculo para un byte de entrada. Por lo tanto en el procedimiento
         principal debe repetirse para el número de bytes de tx con el ibuttom.
         Interfaces : recibe como parámetros al byte de entrada y al crc calculado anteriormente, devuelve el nuevo valor
         del byte crc. Su interface está dada con la función leer_boton.

          Funciones de temporización

        temp_ini

          Descripción : inicializa el temporizador que corre por interrupciones, generando una interrupción cada 30 ms.
          Se utiliza para medir el tiempo de apertura y para la duración y desplazamiento de mensajes en el LCD.
          Interfaces: una vez realizada la inicialización y habilitación del temporizador retorna el control a upuerta.

         Funciones para el LCD.

       lcd_men1
 
        Descripción : Despliegue del mensaje " Codigo correcto" o " Codigo incorrecto" de acuerdo al parámetro
        recibido, luego de borrar el LCD con lcd_borrar.
        Interfaces : upuerta le envía un parámetro informándole acerca del mensaje a enviar al controlador del LCD.
        Se utiliza a lcd_enviar_dato para enviar las letras.  Una vez enviado el mensaje se entrega se retorna a upuerta.

      lcd_men2
 
        Descripción : Despliegue del mensaje " Ingresar codigo por teclado" sacando las letras a un intervalo de
        200ms, produciendo un desplazamiento del LCD a la izquierda.
        Interfaces : Se utiliza a lcd_enviar_dato para enviar las letras y a lcd_enviar_instruccion para el envío de
        comando de desplazamiento.una vez finalizado devuelve el control a upuerta.

      lcd_men3
 
        Descripción : Despliegue del mensaje  " Puerta bloqueada" .
        Interfaces : Se utiliza a lcd_enviar_dato para enviar las letras. Una vez finalizado devuelve el control a upuerta.

        lcd_borrar

        Descripción : se envía comando de borrado al lcd y se espera hasta que este lo haya procesado.
        Interfaces : se utiliza a lcd_enviar_instruccion y a lcd_espera. Una vez finalizado devuelve el control a quien lo
        llamó.

        lcd_enviar_dato

        Descripción : se produce temporización para envío de un byte de dato al controlador del LCD.
        Interfaces : recibe el dato a enviar desde la función que lo llame y le devuelve el control una vez finalizada
        la transferencia.

        lcd_enviar_instruccion

        Descripción : se produce temporización para envío de un byte de instrucción al controlador del LCD.
        Interfaces : recibe la instrucción a enviar desde la función que lo llame y le devuelve el control una vez finalizada
        la transferencia.

        lcd_espera

        Descripción : se espera por final de procesamiento en el controlador del LCD, de tal forma a no sobreescribirlo
        sin aún haber terminado de realizar su función anteriormente enviada. Se encuesta a un pinde bus de datos para
        obtener esta condición.
        Interfaces :  Una vez finalizado devuelve el control a la rutina que lo llamó.
 



                     Al inicio de la página                                                               A la página principal