Descargar

Sistema para control de tiempo y asistencia de personal


Partes: 1, 2, 3, 4

  1. Introducción
  2. Herramientas de desarrollo
  3. Transmisión de datos
  4. Descripción general del sistema
  5. Descripción y funcionamiento del marcador
  6. Software del sistema
  7. Conclusiones
  8. Recomendaciones
  9. Glosario
  10. Bibliografía
  11. Anexos

Introducción

El mejoramiento continuo dentro de una empresa es un factor muy importante, por lo cual el control de los procesos es primordial; para un negocio contar con herramientas de Gestión que controlen y cuantifiquen los distintos aspectos de su operación es una parte de sus procesos, por lo que existe en el mercado software de aplicación para Control de Almacenes, Inventarios, Planillas, Ventas, Cuentas por Cobrar y Pagar, Contabilidad, entre muchos otros que son muy comunes en la gran mayoría de empresas – independientemente de su tamaño o giro de negocio.

Sin embargo una de las áreas que más a tardado en automatizarse ha sido la del control de asistencia y/o permanencia del personal, debido de buena manera por la aún amplia utilización de sistemas tradicionales ("sistemas manuales"),  de control basados en los antiguos relojes mecánicos que utilizan tarjetas de cartón, o únicamente con "partes de asistencia" que no son otra cosa que hojas de papel con líneas numeradas en las que los empleados firman e indican (ellos mismos) la hora en la cual ingresan o salen de la empresa

Desafortunadamente, los sistemas antiguos de control de tiempo, son manuales, a base de relojes checadores mecánicos y tarjetas reloj, haciendo muy lento y trabajoso disponer de esta información. Una vez que las tarjetas se encuentran preparadas se colocan en los tarjeteros respectivos. Los empleados registran sus entradas y salidas diarias en estas tarjetas y son revisadas y corregidas diariamente por una secretaria o supervisor. Al final del período deben de ser revisadas nuevamente. Y al final, el personal encargado da entrada a esta información al sistema de nómina. Este procedimiento consume tiempo de empleados, personal de nóminas e incluso gerentes, en preparar y revisar las asistencias de los empleados. Como todo sistema manual, está expuesto a vulnerabilidad de los registros de entrada y salida, así como errores en la captura de esta información. Adicionalmente, los relojes mecánicos se descomponen con frecuencia.

Los Sistemas de Control de Asistencia modernos se basan en Tecnologías de Identificación Automática con Códigos de Barras, Banda Magnética, Tarjetas de Proximidad por radio frecuencia (RFID) e incluso Sistemas Biométricos de Huella Digital. Siendo todos estos programados en microcontroladores, más esta es solo una parte de la solución ya que su complemento es, fundamentalmente, el Software de Control de Asistencia debido a que los datos capturados con los distintos dispositivos necesitan ser procesados para recién entonces llegar a convertirse en información (tardanzas, inasistencias, horas extras, etc.) 

En estos tiempos de intensa competencia, es vital conocer cual es el ausentismo en tiempo real, las horas extras, la puntualidad, si faltó hoy algún operario o supervisor clave de la línea de producción.

El siguiente trabajo trata de dar una solución efectiva al problema anterior con un Control de Tiempo y Asistencia, otorgando beneficios tales como:

– Eliminación de tarjeta reloj y el trabajo manual asociado a su procesamiento.

– Detección inmediata de Ausentismo y Retardos.

Cálculo de tiempo trabajado; ordinario y extra.

– Generación automatizada de la información.

– Disponibilidad de reportes con información actualizada en tiempo real.

– Al conocer al instante el personal ausente, puede auxiliar para seleccionar un empleado de reemplazo en forma inmediata.

CAPITULO 1

Herramientas de desarrollo

  • Introducción:

Visual Basic es uno de los tantos lenguajes de programación que podemos encontrar hoy en día. Dicho lenguaje nace del BASIC (Beginner´s All-purpose Symbolic Instruction Code) que fue creado en su versión original en el Dartmouth College, con el propósito de servir a aquellas personas que estaban interesadas en iniciarse en algún lenguaje de programación.

Primero fue GW-BASIC, luego se transformó en QuickBASIC y actualmente se lo conoce como Visual Basic y la versión a ser usada es la 6 que se incluye en el paquete Visual Studio 6 de Microsoft. Esta versión combina la sencillez del BASIC con un poderoso lenguaje de programación Visual que juntos permiten desarrollar robustos programas de 32 bits para Windows.

Visual Basic es un lenguaje de programación que se ha diseñado para facilitar el desarrollo de aplicaciones en un entorno grafico (GUI-GRAPHICAL USER INTERFACE). Las aplicaciones creadas están basadas en objetos y manejadas por eventos.

En las aplicaciones manejadas por eventos, la ejecución no sigue una ruta predefinida. En vez de esto, se ejecutan diferentes secciones de código en respuesta a eventos. Los eventos se desencadenan por acciones del usuario, por mensajes del sistema o de otras aplicaciones. La secuencia de eventos determina la secuencia en que el código se ejecuta. Es por esto que la ruta que sigue el código de la aplicación es diferente cada vez que se ejecuta el programa.

Un evento es una acción que es reconocida por el objeto. Un evento ocurre (se dispara) como resultado de la interacción del usuario con el objeto. También puede dispararse debido a la ejecución de código (sentencias) o como resultado de la interacción de otro objeto con el objeto de poseedor del evento.

Dentro del entorno de desarrollo del programa se encuentran los controles que se pueden definir como una herramienta la cual presenta ciertas características y funciones las cuales ayudan a resolver un problema, por ejemplo, el TexBox nos ayuda a introducir información, la cual será mostrada en pantalla.

Para la elaboración del software de control se utilizan algunos controles, siendo los más importantes el MsComm y el EzVidCap.

  • MScomm:

Es un control dentro del entorno de visual Basic que proporciona comunicaciones serie para que la aplicación pueda transmitir y recibir datos a través de un puerto serie.

El control MSComm no se encuentra dentro de la barra de controles que proporciona por defecto el entorno de desarrollo, por lo tanto se lo agrega accediendo al menú Proyecto – Componentes, y se escoge la opción Microsoft Comm Control 6.0. Proporciona dos formas diferentes de tratamiento de las comunicaciones:

Las comunicaciones controladas por eventos.- que son un método muy poderoso para el tratamiento de interacciones con el puerto serie. Consiste en notificaciones de cuándo tiene lugar un evento; por ejemplo, cuándo llega un carácter o cuándo se produce un cambio en las líneas de Detección de portadora (CD) o Petición de envío (RTS). En tales casos se utiliza el evento OnComm del control MSComm para interceptar y tratar estos eventos de comunicaciones. El evento OnComm también detecta y trata los errores en las comunicaciones. En la propiedad CommEvent puede ver una lista completa de todos los eventos y errores posibles en las comunicaciones.

Las comunicaciones controladas por sondeos.- se pueden sondear los eventos y errores si comprueba el valor de la propiedad CommEvent después de cada función crítica del programa.

Cada uno de los controles MSComm que use corresponde a un puerto serie. Si se necesitara tener acceso a más de un puerto serie en la aplicación, se debe usar más de un control MSComm. La dirección del puerto serie y la dirección de la interrupción se las puede obtener o cambiarse desde el Panel de control de Windows.

Su utilización dentro del programa es para comunicar al marcador electrónico con el software de la PC mediante una conexión serie RS232.

Las propiedades más importantes son:

CommPort.- es la encargada de establecer y devolver el número del puerto de comunicaciones.

Settings.- coloca o indica la velocidad en baudios, paridad, bits de datos y bits de parada en forma de cadena.

PortOpen.- con ella se abre o cierra un puerto de comunicación.

Input.- nos entrega y borra los caracteres del búfer de recepción.

Output.- en ella colocamos la cadena de caracteres a ser transmitidos en el búfer de transmisión.

  • EzVidCap:

Ezvidcap es un control active X para la captura de video creado por Ray Mercer para visual Basic 6.0 que esta disponible en el Internet y es totalmente gratis; por tanto no se encuentra dentro de la barra de controles que proporciona por defecto el entorno de desarrollo, ni en los controles proporcionados por el paquete de Visual Estudio, para instalarlo se debe ir al menú Proyecto – Componentes dar click en seleccionar, y escoger el archivo "ezVidCap.ocx" en la carpeta donde este alojado este control.

El control basa todo su código en el manejo de VFW (video for Windows) API para Windows, administrando cualquier dispositivo de captura de video instalado en el sistema operativo pudiendo ser cámaras Web, cámaras digitales (con opción de captura de video) o tarjetas de captura de video, para verificar los dispositivos disponibles se debe abrir en el panel de control el icono de escáner y cámaras.

Al colocar el control dentro del formulario se carga automáticamente los dispositivos que estén conectados al PC en ese momento tomando para el su uso el que este por defecto, por lo que la implementación de este control es muy fácil.

Su uso dentro del programa es opcional, pero imprescindible si lo que se quiere es un factor de seguridad y confirmación en caso de fraudes en el marcado (cuando una persona encarga a otra su marcación), el propósito es el de tomar una fotografía cuando se realiza el marcado para luego ser verificado por el empleado encargado de la asistencia (en auditorias).

Las principales propiedades, métodos y eventos son:

CaptureFile.- En esta propiedad se coloca la dirección y el nombre del archivo para la captura de un video o una fotografía. Esta propiedad no crea un archivo o asigna espacio. El archivo de captura puede ser pre-asignado. Por otra parte se crea este archivo, si es necesario, cuando la sesión de captura empieza su valor por defecto es "C: Capture.avi".

CapSingleFrame.- Este es un método que no requiere parámetros el cual recupera y despliega un solo cuadro de video desde el dispositivo capturador. El método si retorna un valor booleano indicando si la operación se realizo con éxito (verdadero) o no (falso).

SaveDIB.- Este método copia el cuadro presente del buffer de video en un archivo de imagen .bmp. Si el controlador de captura suministra cuadros en un formato comprimido, esta llamada intenta descomprime el cuadro antes de escribir el archivo, tiene como único parámetro la dirección del archivo en donde se guardara la imagen. El método retorna un valor booleano indicando si la operación se realizo con éxito (verdadero) o no (falso).

  • PVW32Con:

Pvw32con es un convertidor de imagen que se ejecuta desde la línea de comando, sirve para transformar imágenes de un formato en otro, soportando la mayoría de formatos de imagen este es un programa gratuito creado por la compañía PictView.

Aunque no es propio del lenguaje ya que es un programa aparte, lo he colocado en este capítulo debido a que será manejado dentro del entorno de programación de visual Basic.

La imagen guardada por la cámara de seguridad esta en formato BMP (BitMaP o mapa de bits), un formato que ocupa mucho espacio en disco, se debe comprimir este archivo a un formato menos pesado, para lo cual el programa pvw32com será el encargado de comprimir este archivo en formato JPG (Joint Photographic Experts Group, "Grupo en común de expertos en fotografía) que esta diseñado para comprimir imágenes y reducir sustancialmente el tamaño sin sacrificar la calidad de la foto.

Su forma de uso es la siguiente:

PVW32Con.exe Archivo -j –o Ruta –jq50

Archivo.- nombre y extensión, incluido la ruta de acceso del archivo para ser convertido.

-j.- Indica el tipo de conversión en este caso JPG.

–o Ruta.- Especifica la ruta y el nombre del archivo resultante de la conversión se debe terminar con "" o ":".

–jq50.- Indica la calidad de compresión en este caso de 50 que es una calidad media.

  • Shell:

Es una función incluida en visual Basic 6.0 que llama un programa ejecutable y devuelve un tipo Variant (Double) que representa la identificación de la tarea del programa si se ha ejecutado con éxito, en caso contrario devuelve cero.

Como el programa pvw32con.exe se ejecuta desde la línea de comando la función shell será la encargada de ejecutarlo.

Su sintaxis es la siguiente:

Sintaxis

Shell(ruta[,estilo de ventana])

Donde:

Ruta.- Es el nombre del programa a ejecutar y puede incluir el directorio o carpeta y unidad de disco.

Estilo de ventana.- correspondiente al estilo de la ventana en la cual se va a ejecutar el programa. Si se omite estilo de ventana, el programa se inicia minimizado con enfoque. Tiene los siguientes valores:

vbHide(0).-Se oculta la ventana y se pasa el foco a la ventana oculta.

vbNormalFocus(1).- La ventana recupera el foco y vuelve a su posición y tamaño.

vbMinimizedFocus(2).- La ventana se muestra como un icono con foco.

vbMaximizedFocus (3).- La ventana se maximiza con foco.

vbNormalNoFocus(4).- La ventana vuelve al tamaño y posición más recientes. La ventana activa actual permanece activa.

vbMinimizedNoFocus(6).- La ventana se muestra como un icono. La ventana activa actual permanece activa.

Si la función Shell ejecuta con éxito el archivo nombrado, devuelve la identificación de la tarea (Id) del programa iniciado. La Id de la tarea es un número exclusivo que identifica el programa en ejecución. Si la función Shell no puede iniciar el programa nombrado, ocurrirá un error. De manera predeterminada, la función Shell ejecuta otros programas de forma asíncrona. Esto quiere decir que no se puede esperar que un programa iniciado con Shell termine su ejecución antes de que se ejecuten las instrucciones que siguen a la función Shell en la aplicación.

  • Introducción:

La gestión de base de datos ha progresado en los últimos años, pasando de ser una función de computadores especiales a ser un componente central del entorno informático; debido a la importancia que tiene el tratamiento de la información en las organizaciones y empresas la gestión de base de datos ha llevado al desarrollo de una gran cantidad de conceptos y técnicas para la gestión eficiente de datos.

Una base de datos es un conjunto de información relacionada que se encuentra agrupada o estructurada, en este sentido debemos decir que no es el archivo de información en si, sino la forma en que esta relacionada.

Las bases de datos manuales pueden ser difíciles de gestionar y modificar, resolviéndose con la creación de base de datos informatizadas.

Desde un punto de vista informático, una base de datos es un sistema formado por un conjunto de datos almacenados, que permiten un acceso directo a ellos, y un conjunto de programas que manipulan ese conjunto de datos.

  • Base de datos relacionales:

Los sistemas relacionales operan conceptualmente sobre archivos o tablas de datos y no sobre los datos individuales contenidos en el archivo. Las tablas son un medio de representar la información que permite presentarla de una forma más compacta, y además es posible acceder a la información contenida en dos o más tablas de forma simultánea.

Los sistemas relacionales son importantes porque ofrecen muchos tipos de procesos de datos, como: simplicidad y generalidad, facilidad de uso para el usuario final, períodos cortos de aprendizaje y las consultas de información se especifican de forma sencilla.

Las tablas son un medio de representar la información de una forma más compacta y es posible acceder a la información contenida en dos o más tablas. Las bases de datos relacionales están constituidas por una o más tablas que contienen la información ordenada de una forma organizada y cumplen las siguientes leyes básicas:

Generalmente, contendrán muchas tablas.

Una tabla sólo contiene un número fijo de campos.

El nombre de los campos de una tabla es distinto.

Cada registro de la tabla es único.

El orden de los registros y de los campos no está determinado.

Para cada campo existe un conjunto de valores posible.

Microsoft Access es un sistema interactivo de gestión de bases de datos para Windows que permite organizar, buscar y presentar información de una forma fácil, rápida y atractiva, aprovechando al máximo la potencia grafica del entorno Windows.

En el presente trabajo se creara la base de datos con Microsoft Access ya que este programa es un potente gestionador de base de datos, contando con seguridades de contraseña y la posibilidad de que un usuario con conocimientos básicos en el manejo del programa pueda crear consultas a su gusto sin ningún inconveniente.

Sin embargo el programa de gestión de personal será quien maneje la base de datos por medio de los orígenes de datos ODBC, con la ayuda por supuesto del controlador de Microsoft Access.

  • Orígenes de datos ODBC:

Todas las nuevas funciones relacionadas con bases de datos están basadas en los objetos de datos Active X (ADO), la cual es una tecnología que permite acceder a cualquier base de datos u origen de datos, siempre que se tenga un proveedor OLE DB que se conecte con dicha fuente.

La Conectividad abierta de bases de datos (ODBC) es una interfaz de programación con un conjunto de funciones que permite a los programas tener acceso a los datos en sistemas de administración de bases de datos locales o remotos que usan el lenguaje de consulta estructurado (SQL) como un estándar de acceso de datos.

Microsoft presento esta tecnología para poder acceder a distintos tipos de gestores de bases de datos (Fox Pro, Access, SQL Server, Oracle, etc.) utilizando un API común. La maquina en la que se ejecuta la aplicación se conecta a un DLL denominado ODBC Driver Manager (gestor del controlador ODBC) que, a su vez, es el encargado de mandar o recibir las ordenes y datos a un controlador ODBC especifico para la base de datos en este caso Access.

ODBC (Open DataBase Conectivity) es el API de Microsoft para conectividad a base de datos. La idea es "antigua": dar a los programadores un UNICO interfaz de programación (escrito en C) que permita codificar de manera independiente al tipo de base de datos.

Casi todas las bases de datos actuales tienen un ODBC. Debido a que este elemento impone ciertas limitaciones, ya que no todo lo que la base de datos sabe hacer es compatible con la aplicación, como velocidad de proceso, tiempos de espera, máxima longitud de registro, número máximo de registros, versión de SQL, etc.

edu.red

La tarea de ODBC es dar una interfaz común para todas estas bases de datos; de manera que una aplicación que la utilice para comunicarse con Access pueda en lo posterior conectarse a otra como SQL Server con tan solo cambiar simplemente de controlador ODBC y unas pocas instrucciones en el código fuente. Se puede realizar esto debido a que todos los mandatos que envíe a la base de datos son instrucciones SQL estándar. ODBC es eficiente, al menos comparado con la mayoría de las otras técnicas de acceso a datos.

Las nuevas versiones de ODBC han añadido varias técnicas para mejorar el rendimiento, tales como conjuntos de conexiones, que significa el poder reutilizar las conexiones existentes de forma que sea transparente para el programa lo que significa que al abrir o cerrar varias conexiones en un a misma base de datos en el fondo se esta trabajando la misma conexión, por lo que si tomamos en cuenta que el proceso de abrir una base de datos es algo lenta este proceso la acelera al máximo en su capacidad de respuesta.

Sin embargo ODBC no resulta muy sencillo, ya que su conjunto de funciones API es muy complejo, por lo que un error lleva a la para en la ejecución del programa con un error fatal, por lo que no se aconseja trabajar directamente sobre las APIS de ODBC. Por ello en el entorno visual Basic se trabajara con una interfaz de alto nivel llamada ADO con OLE DB que a su vez es una interfaz de bajo nivel. Esta interfaz es la que se comunica con ODBC para realizar toda la comunicación con la base de datos.

Para una comunicación eficiente e independiente del servidor de base de datos se trabaja sobre un concepto denominado Nombre de origen de Datos (DSN), que es un conjunto de valores que necesita la aplicación para conectarse correctamente a la base de datos. Normalmente incluye el nombre del controlador ODBC que desee utilizar, el nombre de la maquina que almacene el servidor de base de datos, el nombre o ruta de acceso de una base de datos especifica, el tiempo máximo de espera o sea los segundos que esperara el controlador ODBC para devolver un error a la aplicación que realizo la llamada cuando se esta intentando establecer la conexión, el nombre de la aplicación o de la estación de trabajo que realiza la llamada.

El centro de mandatos de ODBC es una aplicación del panel de control que le permite crear DSN y definir otros valores de configuración ODBC, como son el tipo de DSN que pueden ser: Usuario (se almacena en el registro del sistema y solo son utilizados por el usuario actual), Archivo (que se almacena en un archivo .dsn y pueden ser compartidos por todos los demás usuarios. Estos dsn se pueden configurar fácilmente en otras maquinas, con lo que se facilita la fase de instalación.

  • Pic Basic Pro:

Pic Basic Pro es un compilador con un lenguaje de programación de nueva generación que facilita el programar microcontroladores PIC de Microchip Technology; este compilador utiliza el lenguaje Basic que es mucho mas fácil de leer y escribir que el lenguaje ensamblador Microchip.

Por defecto PBP genera ejecutables para ser cargados en un PIC16F84-04/P a 4Mhz de reloj. Solo se requieren unos pocos componentes extra para poner el sistema en marcha: 2 capacitores de 22pf para el cristal de 4Mhz, y un resistor de 4.7K entre VCC y el pin /MCLR. Cualquier microcontrolador pic puede ser utilizado con el Pic Basic Pro.

A partir de la versión 2.42 se ofrece soporte para los microcontroladores de 12-bit, nuevos comandos y compilaciones en BASIC. Entre las características más importantes se tienen:

Permite ejecución más rápida y programas más largos que los interpretes Basic.

Acceso directo a cualquier pin o registro.

Paginado automático para banco mayor a 2K.

Arreglos con Bit, byte y word.

Incorpora la instrucción If..Then..Else..Endif.

Expresiones con jerarquías de procesamiento.

Interrupciones en Basic y ensamblador.

Librerías BASIC Stamp I y II.

Instrucciones Built-in LCD. 

Soporta osciladores desde 3.58MHz a 40MHz.

Instrucciones de acceso a buses I2C incluyendo memorias EEPROMs serie.

In-line assembler y soporte Call.

Compatibilidad MPLAB / MPASM / ICE. 

Se ejecuta en DOS o Windows.

Soporta todos los microcontroladores Microchip PICmicro.

CAPITULO 2

Transmisión de datos

  • Puerto Serie:

Considerada como una de los más básicas conexiones externas a una computadora, el puerto serie ha sido una parte integral de todas las computadoras por mas de 20 años. A pesar de que muchos sistemas nuevos han abandonado el puerto serie completamente y adoptado conexiones por USB, muchos módems aun usan el puerto serie, así como algunas impresoras, PDAs y cámaras digitales. Pocas computadoras tienen más de 2 puertos serie.

El puerto serie de un ordenador es un adaptador asíncrono utilizado para poder intercomunicar varios ordenadores entre sí. Un puerto serie recibe y envía información fuera del ordenador mediante un determinado software de comunicación o un controlador. El software envía la información al puerto carácter a carácter, convirtiéndolo en una señal que puede ser enviada por un cable serie o un módem. Cuando se ha recibido un carácter, el puerto serie envía una señal por medio de una interrupción indicando que el carácter está listo. Cuando el ordenador ve la señal, los servicios del puerto serie leen el carácter.

Al puerto serie se lo puede definir como un "circuito asociado al PC capaz de transmitir datos a otro PC utilizando una serie de elementos simples".

Este circuito puede identificarse en la parte posterior del ordenador mediante las inscripciones Serie 1 y Serie 2, o bien como COM 1 y COM 2. Lo más normal es que el PC tenga al menos un puerto serie (COM 1) pero puede extenderse mediante tarjetas de puertos seriales.

Externamente, el conector que da acceso a este circuito es un conector macho en forma de D con 9 conectores (pines).

Generalmente las máquinas tienen el circuito integrado en la placa base y por lo tanto de difícil acceso para reparaciones.

Los datos que este circuito es capaz de transmitir al exterior están en formato serie (de ahí su nombre), es decir bit a bit. Esto hace que la transmisión sea más lenta que a través del puerto paralelo en el cual se envían 8 bits de datos a la vez. Sin embargo, ya pesar de esta circunstancia, es más frecuente su uso para procesos de comunicaciones que el mencionado puerto paralelo.

El puerto puede trabajar de dos formas distintas utilizando un número de circuitos diferente para cada una de ellas:

A través de la transmisión síncronoma: el envío de la información se realiza de una forma regular y previsible, es decir, los intervalos de tiempo entre un carácter enviado y el siguiente son totalmente homogéneos e iguales, pudiendo, el destinatario prepararse contra cualquier eventualidad. El emisor precede su transmisión con una codificación o grupo de bits que informan al receptor de los intervalos que se construirán entre cada carácter en la futura transmisión. Este grupo de bits se llaman bits de sincronismo o SYN.

A través de la transmisión asíncronoma: el envío de la información se realiza de una forma irregular e imprevisible, es decir, los intervalos de tiempo entre un carácter enviado y el siguiente son totalmente heterogéneos, no pudiendo, el destinatario prepararse contra cualquier eventualidad.

Para controlar al puerto serie, la CPU emplea direcciones de puertos de E/S y líneas de interrupción (IRQ). En el AT-286 se eligieron las direcciones 3F8h (o 0x3f8) e IRQ 4 para el COM1, y 2F8h e IRQ 3 para el COM2. El estándar del PC llega hasta aquí, por lo que al añadir posteriormente otros puertos serie, se eligieron las direcciones 3E8 y 2E8 para COM3-COM4, pero las IRQ no están especificadas. Cada usuario debe elegirlas de acuerdo a las que tenga libres o el uso que vaya a hacer de los puertos serie (por ejemplo, no importa compartir una misma IRQ en dos puertos siempre que no se usen conjuntamente, ya que en caso contrario puede haber problemas). Es por ello que últimamente, con el auge de las comunicaciones, los fabricantes de computadoras incluyan un puerto especial PS/2 para el ratón, dejando así libre un puerto serie.

    Los puertos serie, también llamados puertos de comunicación (COM), son bi-direccionales. La comunicación bidireccional permite a cada dispositivo recibir datos, así como también transmitirlos. Los dispositivos seriales usan distintos pines para recibir y transmitir datos. Usando el mismo pin, limitaría la comunicación a half-duplex, esto quiere decir que la información solamente podría viajar en una dirección a la vez. Usando distintos pines, permite que la comunicación sea full-duplex, en la cual la información puede viajar en ambas direcciones al mismo tiempo.

    Los puertos seriales dependen de un chip especial como controlador, el Universal Asynchronous Receiver/Transmitter (UART), para funcionar correctamente. El UART toma la salida paralela del bus del sistema de la computadora y lo transforma en forma serial, para transmitirse a través del puerto serie. Con la finalidad de que funcione más rápido, la mayoría de los chips UART tienen un buffer integrado que varia de 16 a 16kB de capacidad. Este buffer permite almacenar datos que vienen del bus del sistema, mientras procesa los datos de salida (por el puerto serie). Mientras la mayoría de los puertos serie tienen una velocidad de transferencia de 115Kbps (kilo bits por segundo), los puertos seriales de alta velocidad tales como el Enhanced Serial Port (ESP) y el  Super Enhanced Serial Port (Super ESP), pueden alcanzar velocidades de transferencia de 460Kbps.

  • Comunicación serie RS232:

RS232 es la norma que controla el funcionamiento del puerto serie. El motivo de la existencia de esta especificación es la posibilidad de poder conectar sin problemas equipos de transmisión de datos de distintos fabricantes.

El RS232 es un estándar de comunicaciones propuesto por la Asociación de Industrias Electrónicas (EIA) y es la última de varias versiones anteriores. Antiguamente se utilizaba para conectar terminales a un ordenador Host. Se envían datos de 7, 8 o 9 bits. La velocidad se mide en baudios (bits/segundo) y sólo son necesarios dos cables, uno de transmisión y otro de recepción. Lo más importante del estándar de comunicaciones es la función específica de cada pin de entrada y salida de datos. Las señales con la que actúa el puerto son digitales (0 – 1) y la tensión a la que trabaja es de 12 Voltios, resumiendo: 12Vlts. = Lógica "0" -12 Vlts = Lógica "1".

Las características de los pines y su nombre típico son:

edu.red

# PIN

Nombre

Significado

Descripción

1

Masa chasis

Conectado a tierra del chasis

3

TxD

Transmit Data

Transmitir Datos Señal de salida

2

RxD

Receive Data

Recibir Datos Señal de entrada

7

RTS

Request to send

Solicitud de envió Señal de salida

8

CTS

Clear to send

Libre para envió Señal de entrada

6

DSR

Data Set Ready

Equipo de datos listo Señal de entrada

5

SG

Signal Ground

Tierra Referencia para señales

1

DCD

Data Carrier Detect

Detección de portadora Señal de entrada

4

DTR

Data Terminal Ready

Terminal de datos listo Señal de salida

9

RI

Ring Indicador

Indicador de llamada Señal de entrada

Existen hasta prácticamente 25 señales más pero no son muy usadas y para usos con el microcontrolador generalmente no son necesarias.

Los pines que portan los datos son RxD y TxD los demás se encargan de otros trabajos, el DTR indica que el ordenador esta encendido, DSR que el dispositivo conectado al puerto esta encendido, RTS que el ordenador al no estar ocupado puede recibir datos, al revés de CTS que lo que informa es que es el dispositivo el que puede recibir datos, DCD detecta que existen presencia de datos, etc.

El RS-232 puede transmitir los datos en grupos de 5, 6, 7 u 8 bits, a unas velocidades determinadas (normalmente, 9600 bits por segundo o más). Después de la transmisión de los datos, le sigue un bit opcional de paridad (indica si el numero de bits transmitidos es par o impar, para detectar fallos), y después 1 o 2 bits de Stop. Normalmente, el protocolo utilizado es 8N1 (que significa, 8 bits de datos, sin paridad y con 1 bit de Stop).

Una vez que ha comenzado la transmisión de un dato, los bits tienen que llegar uno detrás de otro a una velocidad constante y en determinados instantes de tiempo. Por eso se dice que el RS-232 es asíncrono por caracter y sincrono por bit. Los pines que portan los datos son RXD y TXD. Las demás se encargan de otros trabajos: DTR indica que el ordenador esta encendido, DSR que el aparato conectado a dicho puerto esta encendido, RTS que el ordenador puede recibir datos (porque no esta ocupado), CTS que el aparato conectado puede recibir datos, y DCD detecta que existe una comunicación, presencia de datos.

Tanto el aparato a conectar como el ordenador (o el programa terminal) tienen que usar el mismo protocolo serie para comunicarse entre si. Puesto que el estándar RS-232 no permite indicar en que modo se esta trabajando, es el usuario quien tiene que decidirlo y configurar ambas partes. Como ya se ha visto, los parámetros que hay que configurar son: protocolo serie (8N1), velocidad del puerto serie, y protocolo de control de flujo. Este ultimo puede ser por hardware (el handshaking RTS/CTS) o bien por software (XON/XOFF, el cual no es muy recomendable ya que no se pueden realizar transferencias binarias). La velocidad del puerto serie no tiene por que ser la misma que la de transmisión de los datos, de hecho debe ser superior. Por ejemplo, para transmisiones de 1200 baudios es recomendable usar 9600, y para 9600 baudios se pueden usar 38400 (o 19200).

Por lo tanto antes de iniciar cualquier comunicación con el puerto RS232 se debe de determinar el protocolo a seguir, dado que el estándar del protocolo no permite indicar en que modo se esta trabajando, es la persona que utiliza el protocolo el que debe decidir y configurar ambas partes antes de iniciar la transmisión de datos.

Siendo los parámetros a configurar los siguientes:

• Protocolo serie (numero bits-paridad-bits stop)

• Velocidad de puerto

• Protocolo de control de flujo (RTS/CTS o XON/XOFF).

  • Comunicación con un microcontrolador:

  • Comunicación serial del Microcontrolador al Computador.-

Para lograr un comunicación con la norma RS232 se debe de simular los voltajes desde el microcontrolador, esto se puede conseguir enviando 0 para representar el 1 lógico y 5v para representar el 0 lógico, para esto existe dentro del software PIC Basic la declaración SEROUT la que sirve para enviar datos seriales en un formato Standard asincrónico usando 8 bits de datos, sin paridad y a 1 el bit de parada.

Su sintaxis es la siguiente.-

SEROUT Pin,Mode,[Item[,Item…}]

Envía uno ó más Ítems a Pin, en formato Standard asincrónico usando 8 bits de datos, sin paridad y 1 stop bit (8N1). Pin es automáticamente colocado como salida. Pin puede ser una constante, 0 – 15, ó una variable que contenga un número de 0-15 (por ejemplo.- B0) ó un número de Pin (por ejemplo.- PORTA.0).

Los nombres Mode (por ejemplo T2400) están definidos en el archivo MODEDEFS.BAS incluido en PIC Basic.

Para poder usarlos, se debe agregar la línea:

Include "modedefs.bas"

Al comienzo del programa en PIC Basic Pro.

edu.red

SEROUT soporta 3 tipos distintos de datos, que pueden ser combinados libremente dentro de una declaración SEROUT:

– Una cadena de constantes que es enviada como una cadena de caracteres literales.

– Un valor numérico (constante ó variable) se va a enviar el correspondiente carácter ASCII. Incluyendo, el 13 que es retorno de carro (Carriage Return ó CR ) y 10 que es avance de línea (Line Feed ó LF ).

– Un valor numérico precedido por el signo # va a enviar la representación ASCII de su valor decimal. Por ejemplo, si W0=123, entonces #W0 (ó #123) va a enviar "1","2","3".

SEROUT asume un valor de oscilador de 4 Mhz cuando genera sus tiempos de bit. Para mantener los valores de baud rate adecuados con otro oscilador, asegúrese de usar DEFINE OSC con el nuevo valor de oscilador.

En algunos casos, los rangos de transmisión de SEROUT pueden presentar los caracteres demasiado rápidamente en el dispositivo receptor. Un DEFINE agrega tiempo entre caracteres en la transmisión de salida. Esto permite un tiempo adicional entre caracteres a medida que son transmitidos. Se puede lograr una demora entre cada carácter transmitido de 1 a 65535 microsegundos (.001 a 65,535 milisegundos). Por ejemplo, para pausar 1 milisegundo entre cada carácter transmitido:

DEFINE CHAR_PACING 1000

Aunque los chips convertidores de nivel RS-232 son comunes y baratos gracias a la implementación de corriente RS-232 y las excelentes especificaciones de I/O del microcontrolador, no se requieren convertidores de nivel en muchas aplicaciones. Y se puede usar TTL invertido (N300…N9600).

  • Comunicación serial del Computador al Microcontrolador.-

Los voltajes que envía el computador a través del puerto serial son desde -10v hasta +10v y la distancia recomendada es de hasta 15 metros sin ningún problema, como la conexión es directa al microcontrolador una resistencia de 22K es necesaria para no dañarlo, en este caso el microcontrolador es el receptor de los mensajes por lo que deberá estar listo para el bit de inicio, para esto se tiene la declaración SERIN que sirve para recibir datos seriales en un formato Standard asincrónico usando 8 bits de datos, sin paridad y 1 de parada.

Su sintaxis es la siguiente.-

SERIN Pin,Mode, {Timeout,Label,}{[Qual…],} {Item…}

Recibe uno ó más Ítems en Pin, en formato Standard asincrónico, usando 8 bit de datos, sin paridad y un stop bit (8N1). Pin automáticamente se convierte en entrada. Pin puede ser una constante, 0 – 15, ó una variable que contenga un número de 0-15 (por ejemplo.- B0) ó un número de Pin (por ejemplo.- PORTA.0).

Los nombres Mode (por ejemplo.- T2400) están definidos en el archivo MODEDEFS.BAS. Para usarlos, agregue la línea:

Include "modedefs.bas"

Al comienzo del programa.

Timeout y Label son opciones que pueden ser incluidas para permitir al programa continuar si no se recibe un carácter durante un cierto tiempo. Timeout está especificado en unidades de 1 milisegundo.

La lista de Ítems de datos a ser recibida puede estar precedida por uno ó más calificadores encerrados entre corchetes.

SERIN debe recibir estos bytes en un orden exacto, antes de recibir los datos. Si algún byte recibido no concuerda con el byte siguiente de la secuencia de calificación, el proceso de calificación comienza nuevamente (por ejemplo.- el próximo byte recibido es comparado con el primer Item de la lista de calificación).

Un calificador puede ser constante, variable ó una cadena de constantes.

Cada carácter de una cadena es tratado como un calificador individual.

Una vez que se completan los calificadores, SERIN comienza a guardar datos en la variable asociada con cada Ítem.

Si el nombre de variable es único, el valor del carácter ASCII recibido es guardado en la variable.

Si la variable es precedida por el signo #. SERIN convierte un valor decimal en ASCII y guarda el resultado en esa variable.

Todos los no-dígitos recibidos antes del primer dígito del valor decimal son ignorados y descartados.

El carácter no-dígito que termina el valor decimal también se descarta.

Aunque los chips convertidores de nivel RS-232 son comunes y baratos, las excelentes especificaciones de I/O de los microcontroladores permiten ejecutar muchas aplicaciones sin usar convertidores de nivel. Más aún, se pueden usar entradas invertidas ( N300…N9600) junto con un resistor limitador de corriente de 22k.

CAPITULO 3

Descripción general del sistema

  • Marcador electrónico:

El marcador electrónico es el dispositivo que esta en contacto con el personal y sirve para el registro de ingresos y salidas de los empleados. Está formado en su parte externa por un teclado numérico, una pantalla de información (display), tres luces indicadoras y una cámara Web o de seguridad para auditar marcaciones de personal, aunque este último dispositivo es posible no colocarlo es indispensable para la seguridad ante el fraude de marcación. En su parte interna contiene componentes electrónicos para procesar la información obtenida mediante el teclado numérico, enviar información hacia la pantalla externa y comunicarse con la PC mediante el puerto serial.

La luz de color verde indica que el marcador esta en un correcto funcionamiento o encendido, por lo tanto esta luz siempre se encuentra prendida, en la pantalla se observan las instrucciones para el manejo del marcador así como la fecha y hora del sistema.

En la pantalla el mensaje por defecto es "Presione * para Marcar o # para Consulta" lo que indica que para marcar una entrada o salida se debe presionar la tecla *, o para verificar si ya se ha marcado o no se digita la tecla #.

Partes: 1, 2, 3, 4
Página siguiente