Story Transcript
UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica
DESARROLLO SISTEMA BALANZA – PUNTO DE VENTA Por Br. Jaime Héctor Morales Revilla
Sartenejas diciembre 2004
UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica
DESARROLLO SISTEMA BALANZA – PUNTO DE VENTA Por Br. Jaime Héctor Morales Revilla Realizado con la Asesoría de
Tutor Académico
Tutor Industrial
Prof. Antonio Salazar
Ing. Irving Mirabal
Presentado ante la Ilustre Universidad Simón Bolívar como requisito parcial para optar al título de Ingeniero Electrónico
Sartenejas diciembre 2004
UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica
DESARROLLO SISTEMA BALANZA – PUNTO DE VENTA PROYECTO DE GRADO presentado por Jaime Héctor Morales Revilla REALIZADO CON LA ASESORIA DE Prof. Antonio Salazar Ing. Irving Mirabal RESUMEN El proyecto desarrollado tiene cómo objetivo general otorgar a una balanza sencilla las funciones de las balanzas inteligentes cómo respuesta a una necesidad del mercado nacional ante las limitaciones e inconveniencias provocadas por la importación de productos desarrollados fuera de nuestras fronteras. El Sistema – Balanza Punto de Venta se dividió en seis (6) módulos, cada uno de ellos posee características particulares y ejecutan tareas que en conjunto permiten a una tarjeta (MAX 7) basada en un microcontrolador otorgar a una balanza sencilla las funciones propias de una balanza inteligente: base de datos de hasta 4096 productos con sus respectivas descripciones y propiedades cómo tipo, precio, códigos de barras y descripciones; comunicación por puerto serial RS-485, manejo de una pantalla LCD, disponibilidad de teclados (PS/2 y de matriz). Con estas nuevas propiedades la balanza sencilla modelo V3 ABS permite implementar pequeñas redes locales en establecimientos que requieran del uso de una o más balanzas. Estas redes locales, permiten emular un circuito de compras que logra optimizar el proceso compra – venta. Cómo una respuesta que busca atender una necesidad real en el mercado nacional el prototipo logrado representa el primer paso de un proceso de investigación y desarrollo que se extiende más allá del alcance de este proyecto. PALABRAS CLAVES Base de datos Puerto Serial Redes Locales Aprobado con mención: Postulado para el premio: Sartenejas diciembre 2004
Dedicado con todo el amor que un alma puede albergar a mi madre y a mis dos padres: (Héctor y Héctor)
AGRADECIMIENTOS A mis padres Por apoyarme en todos mis decisiones malas o buenas y por la confianza que siempre me han brindado. A mis hermanos Por la ayuda mutua que nos hemos brindado durante nuestro crecimiento hasta el sol de hoy, siempre contarán conmigo. A mi numeroso grupo familiar Su fe en mi viajó miles de kilómetros, espero nunca decepcionarlos. A mis familiares por derecho Cuando se comparte tanto y por tanto tiempo, los lazos sanguíneos pasan a un segundo plano, gracias por su cariño y apoyo. A mis amigos Por compartir conmigo buenos y malos ratos, trasnochos, victorias y derrotas. A todo el personal de CAPEL y EDVSA Por brindarme su ayuda y hacer de mí pasantía por la compañía un periodo muy agradable A mis dos tutores Por compartir conmigo sus conocimientos y por su buena actitud ante mis frecuentes inquietudes.
i
INDICE GENERAL
ÍNDICE GENERAL INTRODUCCIÓN .................................................................................................................... 1 MARCO TEÓRICO ................................................................................................................. 4 2.1 EL PUERTO SERIAL ............................................................................................................. 4 2.1.1 TRANSMISIÓN RS-232........................................................................................... 5 2.1.2 TRANSMISIÓN RS-485........................................................................................... 6 2.2 ALGORITMOS DE ORDENAMIENTO Y BÚSQUEDA................................................................ 8 2.2.1 Algoritmos de Ordenamiento..................................................................................... 8 Algoritmo de Burbuja ..................................................................................................... 8 Algoritmo Selección ....................................................................................................... 9 Algoritmo Ordenamiento Rápido (Quick Sort) ............................................................ 11 2.3.2 Algoritmos de Búsqueda.......................................................................................... 12 Algoritmo de Búsqueda Secuencial. ............................................................................. 12 Algoritmo de Búsqueda Binaria.................................................................................... 13 ANTECEDENTES DEL PROYECTO ................................................................................. 15 3.1 DESARROLLO E INVESTIGACIÓN .......................................................................... 15 3.2 ESTUDIO ECONÓMICO .............................................................................................. 15 3.2.1 Costos de Producción............................................................................................... 16 3.2.2 Costos de desarrollo e investigación........................................................................ 16 3.2.3 Ganancias y precio de venta .................................................................................... 17 3.2.4 Factibilidad del proyecto ......................................................................................... 18 SISTEMA BALANZA – PUNTO DE VENTA .................................................................... 20 4.1 EL MÓDULO DE PESAJE (MP) .................................................................................. 22 4.1.1 Descripción general ................................................................................................. 22 4.1.2 Funcionamiento. ...................................................................................................... 22 4.2 MÓDULO DE ALMACENAMIENTO PERMANENTE (MAP) ................................. 24 4.2.1 Descripción General ................................................................................................ 24 4.2.2 Componentes ........................................................................................................... 24
INDICE GENERAL
ii
Memoria EEPROM AT24C512.................................................................................... 24 Descripción de los pines: .......................................................................................... 25 Organización de la memoria y Señales de Acceso. .................................................. 25 Dirección de los dispositivos. ................................................................................... 26 Operaciones de Escritura. ......................................................................................... 27 Operaciones de lectura.................................................................................................. 28 4.2.3. Funcionamiento del Módulo................................................................................... 29 4.2.4. La base de datos ...................................................................................................... 30 Productos. ..................................................................................................................... 30 Descriptivos Adicionales. ............................................................................................. 32 Códigos de barras.......................................................................................................... 33 Teclas de Acceso Directo. ............................................................................................ 34 4.3 MÓDULO DE ALMACENAMIENTO TEMPORAL (MAT) ...................................... 36 4.3.1 Descripción General ................................................................................................ 36 4.3.2 Componentes ........................................................................................................... 36 Reloj Serial de Tiempo Real DS1307........................................................................... 36 Organización de la memoria. .................................................................................... 36 4.3.3. Funcionamiento ...................................................................................................... 38 Base de datos. ............................................................................................................... 38 4.4 MÓDULO DE COMUNICACION (MCOM)................................................................ 40 4.4.1 Descripción General ................................................................................................ 40 4.4.2. Componentes .......................................................................................................... 41 MUX
CD4052......................................................................................................... 41
4.4.3 Funcionamiento ....................................................................................................... 41 4.5 PERIFÉRICOS ............................................................................................................... 43 4.5.1 Descripción General ................................................................................................ 43 4.5.2 Componentes ........................................................................................................... 43 Teclado PS2 (Keyboard)............................................................................................... 43 Teclado Matricial (Keypad).......................................................................................... 44 Funcionamiento. ....................................................................................................... 45 Pantalla LCD................................................................................................................. 46
INDICE GENERAL
iii
4.6 MÓDULO DE CONTROL Y PROCESAMIENTO ...................................................... 48 4.6.1 Descripción General ................................................................................................ 48 4.6.2 Componentes ........................................................................................................... 48 Microcontrolador AT89C55. ........................................................................................ 48 4.6.3 Funcionamiento ................................................................................................... 49 OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA........................................... 53 5.1 MODO PUNTO DE ATENCIÓN .................................................................................. 55 5.1.1 Descripción General ................................................................................................ 55 5.1.2 Circuito de Compras ................................................................................................ 55 5.1.3 Proceso de Venta u Operación................................................................................. 57 5.2 MODO PUNTO DE VENTA ......................................................................................... 61 5.2.1 Descripción General ................................................................................................ 61 5.2.2 Proceso de Venta u Operación................................................................................. 61 5.3 MODO CONFIGURACIÓN .......................................................................................... 63 5.3.1 Descripción general ................................................................................................. 63 5.3.2 Proceso de Configuración ........................................................................................ 63 5.3.3 El Set de instrucciones ............................................................................................. 65 CLAVE “0”: Manejo de Artículos................................................................................ 66 Opción “0”: Ingresar Artículo................................................................................... 66 Opción “1”: Cambiar Precio. .................................................................................... 67 Opción “2”: Eliminar PLU. ...................................................................................... 68 Opción “3”: Ingresar Código de Barras. ................................................................... 70 Opción “4”: Ingresar Descriptivo. ............................................................................ 72 Opción “5”: Ingresar Tecla. ...................................................................................... 73 Opción “6”: Peticiones.............................................................................................. 74 DATA = 2 + PLU : Descriptivos. ............................................................................. 74 Opción “7”: Vendedores/Operadores. ...................................................................... 80 Clave “1”: Manejo de Parámetros. ............................................................................... 82 Opción “0”: Programación de fecha y hora. ............................................................. 82 Opción “4”: Borrar memoria. ................................................................................... 83 Opción “5”: Consultar fecha y hora.......................................................................... 83
INDICE GENERAL
iv
Opción “6”: Desplegar fecha y hora. ........................................................................ 84 Opción “7”: Ordenar Códigos de Barras. ................................................................. 85 Clave “2”: Seleccionar Modo. ...................................................................................... 86 Clave “3”: Cambiar Password. ..................................................................................... 87 METOLOGÍA Y PROCEDIMIENTOS............................................................................... 88 6.1 LA TARJETA MAX 7 ................................................................................................... 88 6.1.1 Hardware.................................................................................................................. 88 6.1.2 Software ................................................................................................................... 88 Librería LCD................................................................................................................. 89 Librería SERIAL........................................................................................................... 89 Librería I2C................................................................................................................... 90 Librería MATH............................................................................................................. 90 Librería KEYBOARD .................................................................................................. 90 Librería KEYPAD ........................................................................................................ 91 Librerías Buffer y Delays ............................................................................................. 91 6.2 LA BASE DE DATOS ................................................................................................... 91 6.3 LAS FUNCIONES AVANZADAS................................................................................ 93 6.4 LA BALANZA ............................................................................................................... 94 6.5 MODOS DE OPERACION............................................................................................ 94 6.6 INTEGRACION ............................................................................................................. 95 RESULTADOS Y DISCUSION ............................................................................................ 96 CONCLUSIONES .................................................................................................................. 98 RECOMENDACIONES ........................................................................................................ 99 REFERENCIAS BIBLIOGRÁFICAS................................................................................ 100 APÉNDICES ......................................................................................................................... 101
INDICE DE TABLAS Y FIGURAS
v
INDICE DE TABLAS Y FIGURAS TABLA 2.1.1: ASIGNACIÓN DE PINES. PUERTO SERIAL...............................................................................6 FIGURA 2.1.1: CONECTOR DB9. .........................................................................................................................6 FIGURA 2.3.1: BÚSQUEDA SECUENCIAL .......................................................................................................13 GRÁFICA 2.3.1: CURVA TIEMPO DE EJECUCIÓN. BÚSQUEDA SECUENCIAL........................................13 GRÁFICA 2.3.2: CURVA TIEMPO DE EJECUCIÓN. BÚSQUEDA BINARIA ................................................14 FIGURA 2.3.2: BÚSQUEDA BINARIA. ..............................................................................................................14 FIGURA 4.1: MÓDULOS DEL SISTEMA. ..........................................................................................................21 FIGURA 4.1.1: BALANZA V3 ABS.....................................................................................................................23 FIGURA 4.2.1: DIAGRAMA DE BLOQUES EEPROM......................................................................................24 TABLA 4.2.1: ASIGNACIÓN DE PINES AT24C512 ..........................................................................................25 FIGURA 4.2.2: DATA VÁLIDA ...........................................................................................................................25 FIGURA 4.2.3: DEFINICIÓN DE INICIO Y PARADA.......................................................................................26 FIGURA 4.2.4: DIRECCIÓN DEL DISPOSITIVO DE MEMORIA. ...................................................................26 FIGURA 4.2.5: DEFINICIÓN DE CONFIRMACIÓN..........................................................................................27 FIGURA 4.2.6: ESCRITURA DE UN BYTE........................................................................................................27 FIGURA 4.2.7: ESCRITURA DE PÁGINA. .........................................................................................................28 FIGURA 4.2.8: LECTURA DE DIRECCIÓN ACTUAL. .....................................................................................28 FIGURA 4.2.9: LECTURA ALEATORIA ............................................................................................................28 FIGURA 4.2.10: LECTURA SECUENCIAL ........................................................................................................29 FIGURA 4.2.11: CONEXIÓN MAP ......................................................................................................................29 TABLA 4.2.3: RENGLONES POR PÁGINA........................................................................................................31 TABLA 4.2.4: DISTRIBUCIÓN DE DESCRIPTIVOS POR PÁGINA DE MEMORIA. ....................................32 FIGURA 4.3.1: MEMORIA DEL DS1307 ............................................................................................................37 FIGURA 4.3.2: DIRECCIÓN DE DISPOSITIVO DE RELOJ..............................................................................37 FIGURA 4.4.1: PINES COM0 ...............................................................................................................................40 FIGURA 4.4.2: PINES COM1, 2, 3. ......................................................................................................................40 TABLA 4.4.1: ASIGNACIÓN DE PUERTOS. .....................................................................................................41 TABLA 4.4.2 SELECCIÓN DE PUERTO. ...........................................................................................................42 TABLA 4.4.3: VELOCIDADES DE TRANSMISIÓN EN BAUD. ......................................................................42 FIGURA 4.4.4: POSICIONAMIENTO DE LOS JUMPERS.................................................................................42 FIGURA 4.5.1: SEÑALES DATA Y CLOCK DEL TECLADO. .........................................................................43 FIGURA 4.5.2: CONECTORES PS/2....................................................................................................................43 TABLA 4.5.1: ASIGNACIÓN DE PINES. CONECTOR PS/2. ............................................................................44 FIGURA 4.5.3: ARREGLO DE TECLAS. ............................................................................................................45
INDICE DE TABLAS Y FIGURAS
vi
FIGURA 4.5.4: PANTALLA LCD. .......................................................................................................................46 TABLA 4.5.2: ASIGNACIÓN PINES LCD. .........................................................................................................46 FIGURA 4.5.5: DIAGRAMA DE TIEMPOS. INSTRUCCIÓN............................................................................47 FIGURA 4.5.6: DIAGRAMA DE TIEMPOS. INSTRUCCIÓN............................................................................47 FIGURA 4.6.1: ASIGNACIÓN DE PINES. AT89C55 .........................................................................................48 FIGURA 4.6.2: ORGANIZACIÓN DE LA MEMORIA RAM DEL MICRO ......................................................52 FIGURA 5.1.1: FLUJO DE DATOS CIRCUITOS DE COMPRAS......................................................................56 FIGURA 5.1.2: PANTALLA INICIAL. PUNTO DE VENTA..............................................................................57 FIGURA 5.1.3: INGRESAR PRODUCTO. PUNTO DE VENTA ........................................................................57 FIGURA 5.1.4 (A): CÁLCULO DE IMPORTE. PRODUCTO PESADO.............................................................57 FIGURA 5.1.4 (B): CÁLCULO DE IMPORTE. PRODUCTO NO PESADO ......................................................58 FIGURA 5.1.5: PESO NO ESTABLE. PRODUCTO PESADO............................................................................58 FIGURA 5.1.6: PRODUCTO NO ENCONTRADO. PUNTO DE ATENCIÓN ...................................................58 FIGURA 5.1.7 (A): CONSULTA DE CUENTA. ..................................................................................................59 FIGURA 5.1.7 (B): CONSULTA DE CUENTA....................................................................................................59 FIGURA 5.2.1: PANTALLA INICIAL. PUNTO DE VENTA..............................................................................62 FIGURA 5.3.1 (A): INGRESAR PASSWORD .....................................................................................................64 FIGURA 5.3.2 (B): CONFIRMAR PASSWORD..................................................................................................64 FIGURA 5.3.3: INGRESAR COMANDO .............................................................................................................64 FIGURA 5.3.4: TRAMA DE BYTES ....................................................................................................................65 DIAGRAMA 5.3.1: INGRESAR ARTÍCULO ......................................................................................................66 DIAGRAMA 5.3.2: CAMBIAR PRECIO..............................................................................................................67 DIAGRAMA 5.3.3: ELIMINAR ARTÍCULO.......................................................................................................68 DIAGRAMA 5.3.4: INGRESAR CÓDIGO DE BARRAS....................................................................................70 DIAGRAMA 5.3.5: INGRESAR DESCRIPTIVO.................................................................................................72 DIAGRAMA 5.3.6: INGRESAR TECLA..............................................................................................................73 DIAGRAMA 5.3.7: PETICIÓN DESCRIPTIVOS. ...............................................................................................74 DIAGRAMA 5.3.8: PETICIÓN DE ARTÍCULO POR PLU.................................................................................75 DIAGRAMA 5.3.9: PETICIÓN DE CÓDIGO DE BARRAS ...............................................................................76 DIAGRAMA 5.3.10: PETICIÓN DE ARTÍCULO POR CÓDIGO DE BARRAS................................................77 DIAGRAMA 5.3.11: PETICIÓN ARTÍCULO POR TECLA................................................................................79 DIAGRAMA 5.3.12: INGRESAR VENDEDOR...................................................................................................80 DIAGRAMA 5.3.13: PETICIÓN VENDEDOR. ...................................................................................................81 DIAGRAMA 5.3.15: BORRAR MEMORIA.........................................................................................................83 DIAGRAMA 5.3.16: CONSULTAR FECHA Y HORA. ......................................................................................83 DIAGRAMA 5.3.17: DESPLEGAR FECHA Y HORA. .......................................................................................84 DIAGRAMA 5.3.18: ORDENAR CÓDIGOS DE BARRAS. ...............................................................................85 DIAGRAMA 5.3.19: SELECCIONAR MODO.....................................................................................................86
INDICE DE TABLAS Y FIGURAS
vii
DIAGRAMA 5.3.20: CAMBIAR PASSWORD. ...................................................................................................87 FIGURA 6.1 FORMATO DE TRAMA .................................................................................................................89 TABLA 6.1: LONGITUD DE RENGLONES........................................................................................................91 TABLA 6.2: LONGITUD CAMPOS. RENGLÓN PRODUCTOS........................................................................92 TABLA 6.3: LONGITUD CAMPOS. RENGLÓN CÓDIGOS DE BARRAS ......................................................92 TABLA 6.4: LONGITUD CAMPOS. RENGLÓN DESCRIPTIVOS ...................................................................92 TABLA 6.5: LONGITUD CAMPOS. RENGLÓN TECLAS ................................................................................92
1
CAPITULO 1 INTRODUCCION
INTRODUCCIÓN El proceso de pesaje o medición de masa es una actividad sumamente importante en el ambiente tanto industrial cómo comercial, lo cual promueve el desarrollo de nuevos métodos de medición. Los procesos mecánicos están siendo sustituidos por dispositivos electrónicos que ofrecen una mayor precisión y capacidad de respuesta entre otras características. Específicamente a nivel de comercio diversos establecimientos se han visto en la necesidad de emplear nuevos sistemas que optimicen y agilicen el movimiento comercial, exigiéndoles a la industria de pesaje el desarrollo de nuevas tecnologías. Hoy en día la disponibilidad de equipos modernos se encuentra restringida por la importación de productos desde fuera de nuestras fronteras, lo que limita en gran medida el movimiento comercial de dichos productos en nuestro país. La adquisición de equipos diseñados y fabricados en otras latitudes aumenta los costos de compra y complica en gran medida la disponibilidad de un servicio técnico completo, tanto a nivel de hardware como de software. Esto sin mencionar que los mencionados productos han sido diseñados para atender necesidades de mercados ajenos al nuestro. Dentro de este marco, un tipo de compañías, nuevas en el país, apuestan por el desarrollo de dispositivos diseñados en casa para ocupar un espacio vacío dentro del mercado de productos electrónicos. CAPEL de Venezuela es una compañía que ofrece productos electrónicos y servicio técnico a sus clientes, entre sus artículos más difundidos se encuentran las balanzas electrónicas, las cuales se presentan en distintos modelos, cada uno de ellos con sus funciones particulares. Dentro de esta clasificación se consiguen dos tipos principales de balanzas: •
Las balanzas electrónicas básicas son aquellas que cuentan con las funciones más primordiales, como un banco de memoria reducido, interfaz visual implementada con displays de 7 segmentos y realizan operaciones matemáticas elementales como la suma y la multiplicación.
•
Las balanzas electrónicas inteligentes poseen un mayor banco de memoria, una impresora térmica o de matriz, un puerto de comunicación, capacidad de realizar operaciones matemáticas sencillas y la interfaz visual se realiza mediante el manejo de
CAPITULO 1
2
INTRODUCCION
pantallas y visores LCD; sin embargo su precio supera por mucho al de las balanzas básicas. La diferencia de precios y la necesidad en el mercado actual por un producto de menor costo y rendimiento similar, ha motivado a CAPEL de Venezuela en asociación con Electrónica de Venezuela (EDVSA) a buscar una alternativa de menor costo que ofrezca las mismas funciones que una balanza electrónica inteligente. El proyecto Balanza – Punto de venta se origina como posible solución a un conjunto de exigencias generadas por un mercado cada vez más competitivo. Entre esas exigencias figuran: •
Centralización de todos los intercambios comerciales dentro de un establecimiento. Esto facilita el control y supervisión de las entradas y salidas de dinero, lo cual permite controlar de forma más sencilla y eficiente las posibles fugas o perdidas de activos (entiéndase productos o efectivo), así cómo facilita el estudio estadísticos del movimiento de los artículos y la toma de decisiones a nivel administrativo.
•
Capacidad de memoria que permita almacenar en una base de datos los productos disponibles, la presencia de campos cómo precio y descripción permite automatizar el proceso de venta.
•
Capacidad de comunicación entre balanzas, lo que debe permitir configurarlas de forma centralizada o local.
•
Acceso a equipos de menor costo que cuenten con mayor disponibilidad de servicio y soporte técnico, una respuesta más rápida por parte de servicio técnico reduce el tiempo de no funcionalidad de la balanza.
•
Equipos de rápido manejo que permitan agilizar el proceso de venta en consecuencia despachar mayor número de productos lo que se traduce en mayores ganancias para la empresa o establecimiento
•
Equipos de fácil operación, que posean una interfaz gráfica amigable y sencilla. La simplicidad de manejo permite la disminución de errores humanos y el uso excesivo de los equipos.
Ante estas exigencias y necesidades, CAPEL de Venezuela y EDVSA se han propuesto diseñar un sistema Balanza – Punto de Venta que busca satisfacer cada una de las expectativas
CAPITULO 1
3
INTRODUCCION
del duro mercado comercial actual. Para lograr este objetivo la compañía cuenta con una balanza sencilla modelo V3 ABS, la tarjeta MAX-7 basada en un microcontrolador ATMEL 89C55 seleccionado por CAPEL por su espacio de memoria de programa, su bajo costo, rapidez de procesamiento y la experiencia que posee la empresa en el uso de estos y otros dispositivos electrónicos de ATMEL.
4
CAPITULO 2 MARCO TEORICO
MARCO TEÓRICO Este capítulo tiene cómo finalidad proveer al lector una base teórica que le permita comprender de forma sencilla y fluida los procesos y términos a los que se les hace alusión durante el desarrollo del libro.
2.1 El puerto serial El ordenador controla el puerto serial mediante un circuito integrado específico, llamado UART (Transmisor-Receptor-Asíncrono Universal). Para controlar al puerto serial, el 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 COM3COM4, pero las IRQ no están especificadas. Cada usuario debe elegirlas de acuerdo a las que tenga libres o el uso que vayan a tener 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 PCs incluyan un puerto especial PS/2 para el ratón, dejando así libre un puerto serial. Mediante los puertos de E/S se pueden intercambiar datos, mientras que las IRQ producen una interrupción para indicar al CPU que ha ocurrido un evento. El CPU debe responder a estas interrupciones lo más rápido posible, para que de tiempo a recoger el dato antes de que el siguiente lo sobrescriba. Sin embargo, las UART 16550A incluyen unos buffers de tipo FIFO, dos de 16 bytes (para recepción y transmisión), donde se pueden guardar varios datos antes de que el CPU los recoja. Esto también disminuye el número de interrupciones por segundo generadas por el puerto serial. Las señales con las que trabaja este puerto serial son digitales, de +12V (0 lógico) y -12V (1 lógico), para la entrada y salida de datos, y a la inversa en las señales de control. El estado de reposo en la entrada y salida de datos es -12V. Dependiendo de la velocidad de transmisión empleada, es posible tener cables de hasta 15 metros. La data transmitida y recibida por el puerto serial del PC debe seguir un procedimiento o protocolo de envío y recepción de manera
CAPITULO 2
5
MARCO TEORICO
que la involucrada en el proceso sea reconocida de forma correcta por el receptor. El protocolo convenido es denominado RS-232.
2.1.1 TRANSMISIÓN RS-232 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 serial 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 serial (8N1), velocidad del puerto serie, y protocolo de control de flujo. Este último puede ser por hardware (el que ya hemos visto, el handshaking RTS/CTS), por software (XON/XOFF, el cual no es muy recomendable ya que no se pueden realizar transferencias binarias) o bien inexistente. En las PCs los pines del puerto serial están distribuidos en conectores de 9 pines denominados DB9. En los conectores DB9 los pines están asignados de la siguiente forma:
6
CAPITULO 2 MARCO TEORICO
No PIN
Señal
1
CD/DCD
2
RxD
3
TxD
4
DTR
5
SG
6
DSR
7
RTS
8
CTS
9
RI
Descripción Carrier Detect Receive Data Transmit Data Terminal Ready Signal Ground Data Set Ready Request To Send Clear To Send Ring Indicator
E/S E E S S E S E E
Tabla 2.1.1: Asignación de pines. Puerto Serial.
Figura 2.1.1: Conector DB9.
2.1.2 TRANSMISIÓN RS-485 La principal diferencia entre RS-232 y RS-485 radica en que el primero esta basado en niveles de voltaje referenciados a tierra, cada señal tiene su propio cable junto con su respectiva referencia a tierra. Este tipo de conexión es útil para establecer comunicaciones punto a punto a tasas de transmisiones bajas. Por ejemplo, el puerto COM1 del PC puede ser utilizado por el MOUSE, el COM2 para un MODEM, etc.; es decir cada puerto esta dedicado a un dispositivo en específico (conexión punto a punto). Debido a la forma como las señales están conectadas, se requiere una tierra común para todas ellas, esto implica que a partir de cierta longitud del cable (unos 30 a 60 metros máximo) la comunicación comienza a ser deficiente y a llenarse de errores por la resistencia del cable e interferencia. En resumen, el RS
CAPITULO 2
7
MARCO TEORICO
232-funciona correctamente con conexiones con dispositivos locales y para soportar un receptor por cada transmisor. El RS 485 utiliza un principio distinto, la señal es enviada a través de una par de cables. Estamos hablando de transmisión de voltaje diferencial, supongamos que nombramos a una de las señales A y a la otra B, un alto lógico ó “1” viene representado por A en alto y B en bajo, de forma similar un bajo lógico ó “0” se representa colocando A en bajo y B en alto, de esta forma los bits enviados utilizando RS 485 se encuentran representados por la diferencia de voltaje entre los cables A y B. Este tipo de transmisión de datos ofrece mayor resistencia ante ruidos e interferencia pues el ruido presente en cada cable es cancelado al sumar ambas señales. Al no existir una tierra común, este tipo de transmisión soporta comunicaciones multipunto a tasas más altas.
8
CAPITULO 2 MARCO TEORICO
2.2 Algoritmos de Ordenamiento y Búsqueda 2.2.1 Algoritmos de Ordenamiento Estos algoritmos permiten distribuir los datos o elementos dentro de una lista respondiendo a un criterio de comparación entre claves previamente escogidas. Las claves son los valores dentro de cada elemento que son seleccionados para realizar las comparaciones, por ejemplo: en un arreglo, Juan, Pedro, Luis, Manuel, si decidimos organizar la lista en orden alfabético, las claves de cada nombre corresponderían a la primera letra de cada elemento. Cada algoritmo de ordenamiento posee sus propias ventajas y desventajas, que lo hace apropiado dependiendo de las características principales de lista a la que será aplicado. Algoritmo de Burbuja Consiste en realizar comparaciones sucesivas entre los elementos adyacentes de una lista: •
Se toma el valor del primer elemento de la lista y se compara con el segundo, de resultar mayor se intercambian ambos, sino el orden entre ellos se mantiene.
•
Se toma el segundo valor de la lista y se compara con el tercero repitiendo el criterio para realizar o no el intercambio de los elementos.
•
El algoritmo se repite una y otra vez sobre cada lista generada, hasta que se llegue a la última casilla sin haber realizado ningún intercambio.
Se tiene la siguiente lista de números: 4
7
3
9
6
0
5
1
8
2
Siguiendo el algoritmo de burbuja se toman los valores que se encuentran en las dos primeras casilla y son comparados.
4
7
3
9
6
0
5
1
8
2
En este caso 4 es menor que 7, si se desea ordenar esta lista de menor a mayor entonces estos elementos se encuentran en el orden correcto por lo tanto no se intercambian.
9
CAPITULO 2 MARCO TEORICO
4
7
3
9
6
0
5
1
8
2
Continuando con el algoritmo toca ahora comparar los valores 7 y 3, en este caso los elementos se encuentran en orden inverso por lo que se intercambian, la lista quedaría de la siguiente forma: 4
3
7
9
6
0
5
1
8
2
2
9
Repitiendo los mismos pasos hasta alcanzar las últimas casillas obtenemos: 4
3
7
6
0
5
1
8
El algoritmo se repite para esta lista generando otra nueva en el que se repetirá el proceso una vez más, cuando se obtiene una lista para la cual el recorrido termina sin ningún intercambio se considera que el arreglo a quedado ordenado. 0
1
2
3
4
5
6
7
8
9
Este algoritmo es, sino el más sencillo, uno de los más fáciles de implementar, el requerimiento de memoria es mínimo pues solo se necesita de una variable auxiliar, su principal problema radica en el tiempo de ejecución ya que requiere realizar un gran número de comparaciones. Algoritmo Selección Este algoritmo de comparaciones sucesivas consiste en los siguientes pasos: •
Buscar el elemento de menor valor en la lista.
•
Luego se intercambia con el elemento ubicado en la primera posición.
•
Buscar el segundo elemento más pequeño de la lista
•
E intercambiarlo por el elemento ubicado en la segunda posición
•
El proceso se repite hasta que se ordena por completo la lista, es decir, hasta que se alcanza la última posición.
10
CAPITULO 2 MARCO TEORICO
Para ilustrar el algoritmo se tomará la misma lista utilizada en la sección anterior. 4
7
3
9
6
0
5
1
8
2
Obedeciendo los pasos del algoritmo se ubica el elemento de menor valor dentro del arreglo. 4
7
3
9
6
0
5
1
8
2
Luego se intercambia con el elemento que se encuentra ocupando la primera posición del arreglo, en este caso ese elemento posee el valor 4.
0
7
3
9
6
4
5
1
8
2
La operación se repite con el segundo menor elemento de la lista que será intercambiado con el que ocupa la segunda posición, 7. 0
7
3
9
6
4
5
1
8
2
0
1
3
9
6
4
5
7
8
2
8
9
El algoritmo termina cuando la última posición de la casilla es alcanzada. 0
1
2
3
4
5
6
7
Este algoritmo es un recurso de orden muy sencillo de fácil implementación que requiere sólo de una variable adicional para hacer las comparaciones. Sin embargo para listas de gran tamaño este algoritmo se torna sumamente lento pues es necesario realizar un gran número de comparaciones para lograr ordenar el arreglo de números.
11
CAPITULO 2 MARCO TEORICO
Algoritmo Ordenamiento Rápido (Quick Sort) Mucho más elaborado este algoritmo fue diseñado para trabajar de forma recursiva pero existen versiones que utilizan métodos iterativos, el proceso es el siguiente: •
Se escoge un elemento de la lista el cual será llamado elemento de división o pivote
•
A partir de este numero la lista es divida en elementos menores y mayores que el pivote.
•
La lista original es seccionada en dos sublistas, en las cuales se repetirá el proceso de selección del pivote para repetir los pasos anteriores.
•
El algoritmo termina cuando la longitud de las sublistas llegan a 1 solo elemento.
Se toma una vez más la lista utilizada en los algoritmos anteriores. 4
7
3
9
6
0
5
1
8
2
Se selecciona el pivote, aunque puede ser cualquiera de los elementos en este caso se ha escogido el valor 5 para ilustrar mejor el algoritmo. 4
7
3
9
6
0
5
1
8
2
Los valores menores son colocados a la derecha del pivote y los mayores a la izquierda en el mismo orden en el que aparecen en la lista. 4
3
0
1
2
5
7
9
6
8
Terminado este paso, la lista principal a quedado divida en dos, se escogen un par de pivotes nuevos, uno para cada nueva lista, y se repite el proceso. Las listas generadas han sido distinguidas por color para ilustrar mejor el ejemplo, el valor de los nuevos pivotes escogidos son 2 y 6 respectivamente. 4
3
0
1
2
5
7
9
6
8
12
CAPITULO 2 MARCO TEORICO
0
1
2
4
3
5
7
6
9
8
El algoritmo termina cuando la longitud de las listas generadas es igual a un sólo elemento. 0
1
2
3
4
5
6
7
8
9
La principal ventaja de este algoritmo es su rapidez, al dividir la lista principal en sublistas, el tiempo de ordenamiento de cada una se va reduciendo en proporción al número de elementos que van quedando. Sin embargo implementar este algoritmo resulta mucho más complicado en comparación con los explicados previamente y requiere del uso de más variables auxiliares.
2.3.2 Algoritmos de Búsqueda. Los algoritmos de búsqueda permiten ubicar un valor específico dentro de un arreglo de números. En su mayoría estos algoritmos requieren que la lista a explorar se encuentre previamente ordenada. Algoritmo de Búsqueda Secuencial. De fácil implementación este algoritmo básico realiza comparaciones del valor que se desea encontrar con cada uno de los elementos presentes en la lista, comenzando por el primero hasta el último o viceversa. Cada vez que una comparación resulta negativa el algoritmo busca el próximo elemento y lo compara con la entrada, el proceso de búsqueda continua hasta que se ubique el valor o se llegue a la última posición de la lista sin obtener resultados. Este algoritmo trabaja bien para lista desordenadas u ordenadas de tamaños pequeños, ya que su tiempo de ejecución es proporcional al número de elementos en el arreglo. Por lo que para lista de gran tamaño, es preferible recurrir a otro tipo de algoritmo que reduzca el tiempo de ejecución. La siguiente figura muestra el proceso de búsqueda por cada uno de los elementos de lista, desde el primero hasta el último.
13
CAPITULO 2 MARCO TEORICO
0
1
2
3
4
5
6
6
7
8
9
6 ...
...
...
...
...
...
Figura 2.3.1: Búsqueda Secuencial
En la siguiente gráfica se muestra el comportamiento de la función tiempo de ejecución en base al número de elementos en el arreglo. y
Unidades de tiempo
Número de x Elementos Gráfica 2.3.1: Curva tiempo de ejecución. Búsqueda Secuencial
Algoritmo de Búsqueda Binaria La búsqueda binaria consiste en dividir el arreglo en dos partes iguales. El valor del elemento ubicado en la mitad de la lista se denomina pivote, este número es comparado con el valor de entrada, si resulta que el pivote es mayor quiere decir que el elemento buscado se encuentra en la segunda mitad del arreglo, si por el contrario es menor el elemento se encuentra en la primera mitad; en el mejor de los casos si es igual la búsqueda habrá terminado. Una vez que se hace la comparación y se determina en cual de los dos sub arreglos se encuentra el elemento un nuevo pivote, basado en número de valores que restan existentes en el sub arreglos, es designado. La operación se repite hasta que el pivote equivalga al valor ingresado o hasta que la longitud de los sub arreglos sea de un elemento.
14
CAPITULO 2 MARCO TEORICO
y
Unidades de tiempo
Número de x Elementos Gráfica 2.3.2: Curva tiempo de ejecución. Búsqueda Binaria
La figura 2.3.2 muestra un ejemplo de búsqueda binaria para un arreglo del 0 al 10, el número solicitado es el 6 que en la lista principal es mayor que el pivote (5), en la segunda lista es menor (8) y en la tercera coinciden los valores.
0
6
6
1
7
7
2
8
3
9
4 5
6
10 6
6 7 8 9 10
Figura 2.3.2: Búsqueda Binaria.
6
15
CAPITULO 3 ANTECEDENTES DEL PROTECTO
ANTECEDENTES DEL PROYECTO Existen una serie de consideraciones e investigaciones que precedieron el inicio del proyecto presentado en este libro, el desarrollo de la tarjeta MAX 7 y las modificaciones hechas al modelo de balanza utilizado son algunas estas actividades previas que crearon un marco de antecedentes para el desarrollo de la balanza – punto de venta.
3.1 DESARROLLO E INVESTIGACIÓN El modelo de balanza V3 ABS, cuyo funcionamiento se explica en un capítulo posterior, experimentó varios cambios desde su versión original hasta el modelo utilizado. Dos de las más importantes e influyentes en el proyecto son la incorporación de un pequeño puerto serie que trabaja a 2400 Baud que permite la interrogación de la medida actual de la balanza, y la posibilidad de programar el rango de mediciones para 3, 15 ó 30 Kg. La tarjeta MAX 7 fue diseñada para trabajar cómo un poderoso instrumento aplicable no sólo al desarrollo de la balanza – punto de venta sino también a otras aplicaciones. El número de puertos, así cómo el procesador y las memorias disponibles fueron incluidos con la finalidad de permitir a la tarjeta una capacidad de procesamiento de data que le permitiera su aplicación en varios tipos de procesos comerciales. En un principio el microcontrolador seleccionado para la tarjeta fue el modelo AT80C52, sin embargo el tamaño de memoria de programa ofrecido por este chip es muy limitado, debido a esto se seleccionó el modelo AT89C55 que ofrece una memoria de programa mucho mayor y es compatible en cuanto a hardware y software con el modelo anterior.
3.2 ESTUDIO ECONÓMICO El análisis incluido en esta sección es un esbozo general de un estudio aún más profundo que escapa del alcance del proyecto, no obstante las ideas y criterios aquí expuestos son válidos para un primer análisis. El estudio económico del proyecto sistema balanza – punto de venta tiene cómo finalidad evaluar la factibilidad comercial del producto a ser desarrollado tomando como rasgos principales los costos de producción y la competencia existente en el mercado al cual se encuentra dirigido.
16
CAPITULO 3 ANTECEDENTES DEL PROTECTO
3.2.1 Costos de Producción Durante el proceso de fabricación la compañía invierte recursos para lograr ensamblar el producto final que se pondrá en venta una vez terminado; existen varios tipos de costos que hay que soportar para alcanzarlo, a continuación se muestran los costos de Hardware: ITEM Balanza V3 ABS Teclado PS/2 Fuente (Power Suply) Scanner CCD Conversor RS 232 a RS 485 Carcasa Tarjeta Max - 7 + Display
COSTOS 1.500.000,00 15.000,00 30.000,00 250.000,00 80.000,00 30.000,00 300.000,00 2.205.000,00
Estos costos de hardware abarcan todos los dispositivos físicos necesarios para ensamblar la balanza, desde el modelo de balanza sencilla hasta una cotización de la tarjeta MAX 7 y todos sus componentes, todos los montos se encuentran en bolívares y son aproximados del valor real. Una vez que se dispone de las partes de la balanza se procede a ensamblarla, lo que genera un nuevo costo de mano de obra o ensamblaje. ITEM Balanza V3 ABS Teclado PS/2 Fuente (Power Suply) Scanner CCD Conversor RS 232 a RS 485 Carcasa Tarjeta Max - 7 + Display Mano de Obra
COSTOS 1.500.000,00 15.000,00 30.000,00 250.000,00 80.000,00 30.000,00 300.000,00 2.205.000,00 50.000,00 2.255.000,00
El monto obtenido representa los costos por hardware o costos físicos.
3.2.2 Costos de desarrollo e investigación Para obtener el valor total del producto se deben añadir otros tipos de costos que no son “tangibles”
17
CAPITULO 3 ANTECEDENTES DEL PROTECTO
ITEM Balanza V3 ABS Teclado PS/2 Fuente (Power Suply) Scanner CCD Conversor RS 232 a RS 485 Carcasa Tarjeta Max - 7 + Display Mano de Obra Diseño e Investigación Costos de Venta Costos Servicio Post Venta COSTO TOTAL
COSTOS 1.500.000,00 15.000,00 30.000,00 250.000,00 80.000,00 30.000,00 300.000,00 2.205.000,00 50.000,00 2.255.000,00 Bs 4.000.000,00 40.000,00 2.295.000,00 18% 413.100,00 2.708.100,00 5% 135.405,00 2.843.505,00
Dentro de este tipo de costos se encuentra el de Diseño e Investigación, el cual se calcula a partir de las horas trabajo requeridas por el grupo de investigación para lograr el producto final. Este monto obtenido se divide por el número de balanzas que se espera sean vendidas en un primer lote, en este caso se ha estipulado esta cantidad para unas 100 balanzas por lo que los costos de Diseño e Investigación añade Bs. 40.000 para cada balanza perteneciente a ese primer lote de 100. Los Costos de Venta engloban una serie que gastos dentro de los que se encuentra la publicidad o el método para llegar al cliente. Los servicios post venta engloban un estimado de gastos para ofrecer soporte técnico.
3.2.3 Ganancias y precio de venta A partir del costo total obtenido, la compañía puede calcular el precio de venta a partir de un margen de ganancia que haga del producto un artículo económicamente beneficioso.
18
CAPITULO 3 ANTECEDENTES DEL PROTECTO
ITEM Balanza V3 ABS Teclado PS/2 Fuente (Power Suply) Scanner CCD Conversor RS 232 a RS 485 Carcasa Tarjeta Max - 7 + Display Mano de Obra Diseño e Investigación
Bs 4.000.000,00
Costos de Venta Costos Servicio Post Venta COSTO TOTAL Ganancia PRECIO DE VENTA
18% 5% 30%
COSTOS 1.500.000,00 15.000,00 30.000,00 250.000,00 80.000,00 30.000,00 300.000,00 2.205.000,00 50.000,00 2.255.000,00 40.000,00 2.295.000,00 413.100,00 2.708.100,00 135.405,00 2.843.505,00 853.051,30 3.696.556,30
Con este precio de venta calculado, la balanza – punto de venta pretende ingresar a un mercado previamente estudiado y analizado.
3.2.4 Factibilidad del proyecto Un estudio de alternativas económicas permite a la compañía identificar productos que se encuentren dentro del mercado y que representen competencia directa con la balanza – punto de venta. Si no existen productos que compitan con la balanza se podrá concluir que se está iniciando un nuevo mercado con el lanzamiento del dispositivo, en este caso existen variables que deben ser analizadas para identificar al producto como económicamente factible. Sin embargo para la balanza – punto de venta el caso es otro, pues ya existen en el mercado productos que ofrecen soluciones utilizando otro tipo de dispositivos, en su mayoría son empleados puntos de venta constituidos por PCs. Identificada la competencia es necesario enumerar sus características, ¿Cuál es el precio? ¿Qué tipo de solución ofrece? ¿Son equipos confiables? ¿El servicio técnico es de calidad y responde con rapidez? ¿Los repuestos se consiguen fácilmente? Todas estas preguntas intentan anticipar las características en la cuales los clientes promedio fijan mayor atención, el hecho que este se incline por uno u otra opción convierte al producto en económicamente factible.
CAPITULO 3
19
ANTECEDENTES DEL PROTECTO
El estudio de factibilidad económica se puede incluir dentro del estudio de alternativas económicas, en él se analiza la oportunidad que tiene el producto de ser seleccionado por los clientes dentro de un mercado en el que existen varias opciones. Es un estudio comparativo que confronta directamente cada una de las características del producto y su competencia, precio, servicio técnico, disponibilidad de repuestos, reputación de la compañía, etc. Estos estudios son realizados previos al desarrollo del proyecto, ya que es en estos análisis donde se encuentra la justificación económica que lleva a la compañía a incurrir en los costos de investigación y desarrollo así como en el resto de los gastos presentados previamente. Este capítulo no intenta sustituir un estudio de mercado ni otro tipo de información de fuentes más calificadas. La información aquí presente presenta un proceso sencillo de análisis de mercado en el que se han obviado muchos pasos, sin embargo ilustra de manera general los aspectos más importantes que debe poseer un proyecto que busque comercializarse antes de comenzar a desarrollarse.
20
CAPITULO 4 SISTEMA BALANZA PUNTO DE VENTA
SISTEMA BALANZA – PUNTO DE VENTA La Balanza – punto de venta es un sistema de procesamiento de data. Aunque es posible operarlo en tres modos diferentes su aplicación más común le permite el manejo e intercambio datos de ventas en conexión permanente con un servidor. Dividido en seis módulos, el sistema completo permite almacenar una base de datos de hasta 4096 productos, enviar y recibir tramas de bytes a distintas tasas de transmisión, manejar varios periféricos haciendo uso de los puertos de comunicación disponibles y finalmente tomar mediciones de los pesos de diversos artículos. Con estas características el sistema balanza – punto de venta busca responder a las peticiones del mercado nacional actual: interconexión, disponibilidad de repuestos y servicio técnico, manejo de base de datos, interfaces sencillas y capacidad de manejo en línea son las más remarcables. Los seis módulos mencionados anteriormente son: 1. Módulo de Pesaje (MP): conformado por una balanza con rango de medición entre 0 – 3 Kg., la cual dispone de cuatro arreglos de 7 segmentos para la interfaz visual con el usuario y el operador. 2. Módulo de Almacenamiento Permanente (MAP): formado por un arreglo de cuatro memorias EEPROM, este módulo se encarga de resguardar la base de datos que permite identificar los productos en negociación así como su características más relevantes (precio, descripción, código de barras, etc.) 3. Módulo de Almacenamiento Temporal (MAT): de un tamaño más limitado que el módulo anterior, en él son ingresados los datos que no tienen gran tiempo de vigencia. Esta formado por una memoria SRAM de baja capacidad. Dentro de esos datos se incluyen la hora y la fecha. 4. Módulo de Comunicación (MCOM): la tarjeta MAX-7 cuenta con cuatro puertos de comunicación serial y uno tipo 485. Este módulo permite el intercambio de datos MAX7 – servidor y MAX7 – balanza. 5. Periféricos: Son todos aquellos dispositivos de entrada y salida que son utilizados para generar un interfaz entre el usuario y el sistema.
21
CAPITULO 4 SISTEMA BALANZA PUNTO DE VENTA
6. Módulo de Control y Procesamiento (MCP): representa el cerebro del sistema balanza – punto de venta. Se encuentra conformado por el microcontrolador ATMEL® 89C55. Este módulo, entre otras cosas, permite el manejo de los periféricos del sistema (LCD, impresora, visor, teclado PS/2 y de matriz). La figura 4.1 ilustra el esquema del intercambio de datos entre cada uno de los módulos del sistema: MIG MAP
EEPROM Servidor PERIFÉRICOS
LCD MCOM
Puerto Serial
Microcontrolador Teclado
MCP
1
2
3
4
5
6
7
8
9
Teclado Matriz SRAM Balanza MP
MAT
Figura 4.1: Módulos del Sistema.
SISTEMA BALANZA – PUNTO DE VENTA
22
MODULO DE PESAJE
4.1 EL MÓDULO DE PESAJE (MP) 4.1.1 Descripción general El módulo de pesaje consta de una balanza electrónica modelo V3ABS con un rango de medición entre 0 a 5 Kg. La balanza cuenta además con seis arreglos de 7 segmentos de los cuales dos están asignados para mostrar el precio por kilo del producto pesado, otros dos para el peso medido y los últimos dos son utilizados para indicar el importe total, producto de la multiplicación de el precio por Kg. y la lectura de peso. La balanza cuenta con un puerto serial que funciona a una tasa de 2400 Baud, lo que permite ser interrogada al recibir el carácter ASCII “a”. Una vez recibido la balanza responde con una cadena de 5 caracteres que representan el peso medido en orden inverso. Cabe destacar que dos de los arreglos de los 7 segmentos planean ser removidos del modelo de balanza original para ser reemplazados por una pantalla LCD de la cual se dará mayor explicación sobre su funcionamiento un poco más adelante. Esta decisión fue tomada para evitar discrepancias entre la data mostrada por los 7 segmentos y la pantalla, esto consecuencia de que los primeros no se encuentra manejados por el MCP.
4.1.2 Funcionamiento. El modelo de balanza utilizado utiliza celdas de pesaje internas para medir las masas de los materiales colocados en ellas. Las celdas de pesaje son dispositivos que cambia su impedancia al ser sometidos a ciertas deformaciones, es decir dependiendo de la fuerza que sobre ellos sea aplicada su resistencia varía en cierta proporción. Actuando cómo resistencia variables estos dispositivos son colocados en un circuito interno bajo un voltaje DC (Vcc), cuando la resistencia varia, el voltaje sobre ella también lo hará. Este voltaje es muestreado y pasa a un circuito de conversión analógico a digital utilizando dos circuitos (uno de carga y otro de descarga) y un PIC o microcontrolador. Activando ciertos interruptores el circuito de carga es activado y el integrado se encarga de tomar el tiempo que tarda el voltaje muestreado en alcanzar otro potencial de referencia interno mayor. Cuando el circuito se carga hasta igualar el voltaje de referencia del micro el circuito de descarga comienza su operación. Con el tiempo tomado por el integrado durante la carga, el micro es capaz de calcular el peso medido
SISTEMA BALANZA – PUNTO DE VENTA
23
MODULO DE PESAJE
apelando a una tabla interna almacenada en su memoria. La balanza puede ser programa para cambiar su rango a 3 Kg., 15 Kg., 30 Kg., esto se logra cambiando el voltaje de referencia del integrado. Convertida la data de analógico a digital, se procede a enviar la medición a un arreglo de 7 segmentos, los dígitos son enviados de uno en uno en lapsos de tiempo pequeños (5 mseg aproximadamente), comenzando por los menos significativos hasta llegar a las decenas. En una versión anterior de este modelo V3, no se contaba con el puerto serial anexado que permitiera interrogar a la balanza su medición actual, por lo que el proceso de obtención del peso desde el módulo de pesaje se hacia más complicado; era necesario interceptar la data enviada a los 7 segmentos teniendo en cuenta los lapsos de tiempo de envío entre un digito y el siguiente.
Figura 4.1.1: Balanza V3 ABS.
SISTEMA BALANZA – PUNTO DE VENTA
24
MODULO DE ALMACENAMIENTO PERMANENTE
4.2 MÓDULO DE ALMACENAMIENTO PERMANENTE (MAP) 4.2.1 Descripción General Este módulo se comporta como el disco duro del sistema. En él se almacena la base de datos electrónica que permite al sistema balanza – Punto de Venta contar con una memoria de 4096 productos distintos, cada uno con campos cómo PLU, Tipo de Producto, Nombre, Precio, Caducidad, Índice, Códigos de Barras, Descriptivos, Teclas y algunas variables auxiliares.
4.2.2 Componentes Memoria EEPROM AT24C512 La memoria AT24C512 es una memoria de acceso aleatorio de sólo lectura, eléctricamente borrable y programable. Los dos pines de direccionamiento del dispositivo permiten la conexión de hasta 4 de memorias en cascada conectadas a un bus datos serial de dos cables para incrementar la capacidad de almacenamiento. La memoria esta diseñada para operar en baja potencia y bajo voltaje lo que la hace idónea para aplicaciones industriales y comerciales. La figura 4.2.1 ilustra el diagrama de bloques interno del dispositivo, en ella se indica el arreglo interno de los circuitos lógicos que habilitan la escritura o lectura, así como el contador interno de dirección del cual se hará alusión en lo sucesivo.
Figura 4.2.1: Diagrama de Bloques EEPROM.
SISTEMA BALANZA – PUNTO DE VENTA
25
MODULO DE ALMACENAMIENTO PERMANENTE
El integrado es operado mediante 5 pines, 1 lógico, 2 de direccionamiento y 2 data. La siguiente tabla muestra la asignación de los pines de la memoria.
Tabla 4.2.1: Asignación de pines AT24C512
Descripción de los pines:
Dirección del dispositivo (A1, A0): Estos pines permiten asignar una dirección al dispositivo mediante hardware, útil cuando se opera un arreglo de 2 hasta un máximo de 4 memorias AT24C512 en cascada. Serial Data (SDA): Este pin bidireccional permite la transferencia serial de datos. Serial Clock (SCL): El pin de sincronía define los periodos de intercambio de datos. Opera como un reloj con pulsos no periódicos.
Figura 4.2.2: Data Válida
Write Protec (WP): El pin de entrada WP permite la libre escritura en la memoria cuando se encuentra aterrado. Cuando está conectado a Vcc protege la data previamente escrita habilitando solo las operaciones de lectura. Organización de la memoria y Señales de Acceso.
La memoria de la EEPROM se encuentra distribuida en 512 páginas de 128 bytes cada una para un total de 512K de espacio. En consecuencia se requieren de palabras de 16 bits (2 bytes) para acceder aleatoriamente a cada dirección de memoria dentro del dispositivo.
SISTEMA BALANZA – PUNTO DE VENTA
26
MODULO DE ALMACENAMIENTO PERMANENTE
Señal de Inicio (START): Esta señal se define como una transición de estado alto a bajo en el pin SDA mientras SCL se encuentra en alto. Es utilizada para iniciar tanto los procesos de lectura como de escritura. Señal de Parada (STOP): Esta señal se define como una transición de estado bajo a alto en SDA mientras SCL se mantiene en alto. Es utilizada para finalizar tanto los procesos de lectura como de escritura.
Figura 4.2.3: Definición de INICIO y PARADA.
Dirección de los dispositivos.
Utilizando los pines A0 – A1 es posible asignar una dirección a cada dispositivo en el caso de que se trabaje con hasta 4 memorias en cascada. Debido a que todas ellas comparten el bus de datos es necesario especificar cuál es la que se desea escribir o leer. Para ello durante todos los procesos de escritura o lectura el controlador debe indicar la dirección del dispositivo bajo este formato de 8 bits.
Figura 4.2.4: Dirección del dispositivo de memoria.
Por ejemplo, en el caso que la memoria se encuentre identificada con los pines A1 y A0 en bajo (Gnd) el microcontrolador debe transmitir serialmente la palabra de dirección de dispositivo 1010 0000 (A0h) en las operaciones de escritura y la palabra 1010 0001 (A1h) para las operaciones de lectura. Señal de Confirmación (ACKNOWLEDGE): Esta señal es enviada por la memoria al dispositivo maestro cada vez que se recibe una palabra completa, ya sea de dirección o de
SISTEMA BALANZA – PUNTO DE VENTA
27
MODULO DE ALMACENAMIENTO PERMANENTE
data. Esta señal la realiza la EEPROM colocando en bajo el pin SDA durante el 9no ciclo de reloj.
Figura 4.2.5: Definición de CONFIRMACIÓN
Operaciones de Escritura.
La memoria EEPROM permite 2 métodos de escritura de datos. Escritura de un Byte: esta operación permite escribir una palabra (8 bits) en una dirección aleatoria. Para ello se debe ingresar primero un byte indicando la dirección del dispositivo seguido de dos palabras indicando la página y la posición en la que será almacenado el byte a escribir.
Figura 4.2.6: Escritura de un Byte
Escritura de Página: la memoria EEPROM permite la escritura de cadenas de datos de hasta 128 bytes. De forma similar a la operación anterior, primero se debe especificar la dirección del dispositivo (1 byte) seguido de los 2 bytes de dirección interna, luego se enviara las palabras de data esperando un ACKNOWLEDGE por cada byte enviado. Si la cadena de datos supera los 128 bytes, al llegar al final de la página la dirección regresará al inicio de la misma rescribiendo la data recién ingresada. El proceso finaliza enviando una señal de PARADA.
SISTEMA BALANZA – PUNTO DE VENTA
28
MODULO DE ALMACENAMIENTO PERMANENTE
Figura 4.2.7: Escritura de Página.
Operaciones de lectura. La memoria EEPROM permite 3 tipos de lectura de datos. Lectura de Dirección Actual: un contador interno de la memoria mantiene la última dirección leída o escrita incrementada en uno. Para realizar la lectura del byte se envía serialmente la dirección del dispositivo, una vez recibido el byte correspondiente a la dirección pertinente a la lectura termina con una señal de PARADA.
Figura 4.2.8: Lectura de Dirección Actual.
Lectura Aleatoria: este tipo de lectura requiere realizar una escritura “falsa” previa. Una vez que el byte de dirección de dispositivo y las dos palabras de dirección interna son ingresadas, el microcontrolador debe generar una nueva señal de INICIO, a partir de aquí se realiza la secuencia de lectura de dirección actual.
Figura 4.2.9: Lectura Aleatoria
Lectura Secuencial: este método de acceso puede ser iniciado mediante una lectura de la dirección actual o una lectura aleatoria, la lectura del dispositivo continúa mientras que el
29
SISTEMA BALANZA – PUNTO DE VENTA MODULO DE ALMACENAMIENTO PERMANENTE
microcontrolador se mantenga enviando una señal de ACKNOWLEDGE. Cuando el contador de dirección interno de la memoria alcance el limite superior (ultimo byte de la última página) se reiniciara y continuará la lectura en el primer byte de la primera página.
Figura 4.2.10: Lectura Secuencial
Se consideró emplear un modelo distinto de memorias EEPROM que ofrecían mayor tiempo de funcionamiento ya que permitían un mayor número escriturar en una relación de (100 a 1) con respecto a las memorias seleccionadas al final; las primeras aunque más rápidas y eficientes fueron descartadas principalmente por su precio y su única presentación disponible (DIP), la cual complicaba en gran medida el proceso de reparación y reemplazo.
4.2.3. Funcionamiento del Módulo El MAP esta conformado físicamente por 4 memorias EEPROM de 512K (65,536 X 8) cada una, eso permite una capacidad total de almacenamiento del módulo de 2048K. A continuación se muestra como han sido asignadas las direcciones a cada una de ellas. Vcc
A0
Vcc
A1 NC
WP SDA
Gnd
SCL
MEM 0
A0
Vcc
A1 NC
WP SDA
Gnd
SCL
MEM 1
A0
Vcc
A1 NC
WP SDA
Gnd
SCL
MEM 2
A0
Vcc
A1 NC
WP SDA
Gnd
SCL
MEM 3
P1.6 Microcontrolador P1.7
Figura 4.2.11: Conexión MAP
30
SISTEMA BALANZA – PUNTO DE VENTA MODULO DE ALMACENAMIENTO PERMANENTE
Las 4 memorias se encuentran enumeradas del 0 al 3 y su contenido puede ser protegido colocando WP a Vcc utilizando jumpers. Los 2048K de memoria que ofrece este arreglo han sido distribuidos de la siguiente manera: •
1024K para la base de datos de los productos, es decir, las memorias 0 y 1 están destinadas a almacenar campos que describen propiedades y características de los artículos implicados en el proceso de venta.
•
256K para los descriptivos adicionales de los productos que se encuentran compuestos por varios artículos, la memoria 3 en su totalidad almacena esta información.
•
128K para la lista de códigos de barras, es decir, la mitad de la memoria 2 es utilizada para almacenar los códigos alternos de los productos que así lo requieran.
•
270 bytes para almacenar las teclas de acceso directo a los productos que son frecuentemente consultados.
•
El espacio restante se destina para almacenar algunas variables auxiliares (explicadas en breve) o bien no se utiliza.
4.2.4. La base de datos Productos. Llamemos renglón productos al espacio de memoria destinada para cada artículo, cada renglón producto se encuentra divido en seis campos de data válida. En total cada renglón producto ocupa 32 bytes de espacio en memoria, tal como se muestra en la siguiente tabla: CAMPO Longitud (Bytes)
PLU TIPO NOMBRE VACIO PRECIO C 2 1 20 2 4 1 Tabla 4.2.2: Campos y Longitud de renglón productos.
INDICE TOTAL 2 32
PLU: Número de 4 dígitos en ASCII y 2 bytes en HEX que identifica al producto, para cada artículo se encuentra reservado un renglón de 32 bytes de espacio en memoria. Por ejemplo, el producto con el PLU 0002 cuenta con la dirección 20h hasta la 3Fh de la página 0 de la memoria 0. El rango de PLU permitido es desde 0000 (00 00h) hasta 4095 (0F FFh).
SISTEMA BALANZA – PUNTO DE VENTA
31
MODULO DE ALMACENAMIENTO PERMANENTE
TIPO: Especifica si el producto es cuantificable en unidades o en Kg. Todos aquellos productos cuyo tipo sea “N” son clasificados “como no pesados”, en caso de corresponder al tipo de “pesados” este campo será equivalente a “P”. NOMBRE: Cadena de 20 caracteres que describe el artículo, en este campo son aceptados ingresos de tipo alfanuméricos. PRECIO: Define el precio unitario o el precio por Kg. del producto según sea el caso. Este campo tiene capacidad para almacenar hasta 4 bytes en HEX, lo que permite manejar precio de hasta diez cifras en ASCII, los dos últimos dígitos representan los decimales. CADUCIDAD: Almacenado en formato HEX este campo indica la cantidad de días que tiene el articulo antes de llegar a su fecha de vencimiento. Su rango permitido es desde 0 hasta 255 días. INDICE: Este campo establece una relación directa entre el producto y su código de barras (en caso que lo posea). Si los 2 bytes de memoria se encuentran vacíos (FFh) el producto no tiene un código alterno de asociado. La magnitud encontrada en este campo es proporcional a la dirección donde se encuentra almacenado el código de barras del producto. En cada página de memoria hay capacidad para almacenar 4 renglones tal y como se ilustra a continuación para la página 0:
00H ... ... 1FH 00H Producto 0000 20H Producto 0001 40H Producto 0002 60H Producto 0003 Tabla 4.2.3: Renglones por página
El formato de 32 bytes por cada renglón fue seleccionado dado que el espacio de memoria (1024K Bytes) puede ser distribuido equitativamente en 4096 renglones sin que queden espacios sin utilizar. Los dos bytes de espacio que se han dejado libres antes del precio de cada uno de los productos permiten que sean utilizados en casos que el manejo de los montos sean mayores a las 8 cifras. Aunque se espera que esta condición no se presente en un futuro muy próximo es recomendable contar con ese espacio adicional. Inicialmente esos dos espacios que ahora se dejan vacíos estaban incluidos dentro del campo de PRECIO no obstante los 6 bytes de longitud que poseía este campo eran utilizados para almacenar montos en ASCII, lo que
32
SISTEMA BALANZA – PUNTO DE VENTA MODULO DE ALMACENAMIENTO PERMANENTE
limitaba los números allí almacenados hasta el 999999 de los cuales dos cifras representaban decimales así que el tope se reducía a 9999.99, en consecuencia se contaba con un rango muy reducido para el manejo del campo PRECIO, se decidió entonces manejar los montos en formato HEX y reducir la longitud del campo de 6 dígitos en ASCII a 4 bytes en formato HEX, lo que permite ahora manejar montos de 8 cifras con dos decimales. Descriptivos Adicionales. Existen productos que son en realidad un conjunto de otros o que simplemente requieren de una descripción más extensa de la que puede ser almacenada en el campo de 20 caracteres NOMBRE dentro de cada renglón producto. Para este tipo de productos se han reservado 120 espacios de memoria adicionales, repartidos en la 3era memoria, los cuales han sido distribuidos en 6 descriptivos extra. 0 00H 10H 20H 30H 40H 50H 60H 70H
1 2 PLU
3
4
5
6
7
8 9 A B DESCRIPTIVO 1
C
D
E
F
DESCRIPTIVO 2 DESCRIPTIVO 3 DESCRIPTIVO 4 DESCRIPTIVO 5 DESCRIPTIVO 6 VACIO Tabla 4.2.4: Distribución de Descriptivos por página de memoria.
Cada descriptivo tiene una longitud de 20 caracteres, 4 bytes se destinan para el PLU del producto y otros 4 bytes se dejan sin uso por el momento, esto quiere decir que se requieren 128 bytes de espacio (una página de memoria completa) por producto para almacenar sus 6 descriptivos. Esto limita el número de productos a los cuales se les pueden asociar descripciones adicionales a sólo 512, sin embargo por la experiencia que posee la empresa ofreciendo soluciones de puntos de ventas, creando y manejando bases de datos para varios tipos de establecimientos esta cantidad se considera más que suficiente para el mercado que tiene como destino el proyecto. Para facilitar aún más el proceso de organización, atribución y búsqueda de los descriptivos se ha establecido que sólo aquellos productos identificados con los PLU desde el 0000 al 0511 pueden contar con este espacio adicional reservado en la memoria 3.
SISTEMA BALANZA – PUNTO DE VENTA
33
MODULO DE ALMACENAMIENTO PERMANENTE
Códigos de barras. Un Código de Barras es un valor aleatorio de gran longitud que identifica a un artículo en particular. De forma similar que los descriptivos, los códigos de barras, nos son valores asociados con todos los artículos presentes en la base de datos. Definamos el término renglón código de barras como el espacio de memoria en el cual son almacenados los campos descritos a continuación. CAMPO PLU CODIGO DE BARRAS TOTAL Longitud (Bytes) 2 6 8 Tabla 4.2.5: Campos y longitud de renglón códigos de barras.
PLU: El valor numérico almacenado en este permite apuntar la posición de memoria en donde se encuentra el resto de la información correspondiente al producto asociado al código de barras. Código de Barras: Este campo posee una longitud de 6 bytes en formato HEX, lo que permite manejar magnitudes de hasta 15 dígitos. Estos números aleatorios son únicos para cada producto. La longitud de 8 bytes de cada renglón permite almacenar códigos de barras para un máximo de 4096 productos en 128K bytes, esto quiere decir que si la base de datos se encuentra totalmente llena y todos los artículos requieren tener un código de barras asociados, el espacio en memoria no sería una limitante. Aunque este caso es sumamente improbable es recomendable tener la capacidad de manejarlo. A diferencia de lo que ocurre en el caso de las tablas de productos y descriptivos los renglones para los códigos de barras no se encuentran ordenados por el valor de su PLU sino desde el menor de los valores de código de barras hasta el mayor de ellos. Esto se debe a que durante un proceso de venta el operador puede requerir acceder a la información del producto ingresando su PLU ó su código de barras, en el primer caso la búsqueda en memoria es sencilla pues cada PLU esta relacionado proporcionalmente con la dirección de memoria en la que se encuentra su renglón producto correspondiente. Cuando el producto es requerido por su código de barras el proceso es más complejo y largo, dado que este es un número aleatorio no puede existir una relación directa entre él y la posición de memoria donde se encuentra
SISTEMA BALANZA – PUNTO DE VENTA
34
MODULO DE ALMACENAMIENTO PERMANENTE
almacenado. El proceso de sondeo de códigos de barras en la base de datos se implementó utilizando un algoritmo de búsqueda binaria. Teclas de Acceso Directo. Existen 3 formas de acceder a la información de un producto almacenada en la base de datos, se puede buscar mediante el valor del PLU o por el código de barras como se explicó anteriormente. El otro método lo ofrecen las teclas de acceso directo las cuales han sido empleadas para agilizar la búsquela en memoria de los productos que son requeridos con mayor frecuencia. Definamos el término renglón tecla cómo el espacio en memoria destinado a almacenar los siguientes campos:
CAMPO PLU TECLA TOTAL Longitud (Bytes) 2 1 3 Tabla 4.2.6: Campos y Longitud de reglón Tecla.
Tecla: este campo de un solo carácter de longitud, almacena el valor de la tecla asociada al producto en formato ASCII. El rango de valores permitido es [20h, 7Ah] representados por los caracteres y “z” respectivamente. Aunque se cuenta con espacio suficiente para almacenar teclas de acceso rápido para los 4096 productos que puedan ser ingresados en la base de datos, en esta ocasión la limitación es de tipo físico. Dado que el instrumento utilizado para ingresar las teclas de acceso directo es un teclado normal ó uno programable, los cuales no cuentan con un número de teclas suficiente para los 4096 productos, sería poco eficiente reservar un espacio de memoria para un valor de tecla que no pueda ser físicamente ingresado. Teniendo en cuenta esa limitación y apelando a un promedio del número de teclas de acceso directo empleadas en los puntos de venta ofrecidos por la compañía fue convenido un total de 90 teclas, una cantidad considerada suficiente para los requerimientos de los clientes de la empresa. En resumen el Módulo de Almacenamiento Permanente (MAP) almacena una base de datos dividida en 4 arreglos: productos, códigos de barras, teclas y descriptivos; dentro de 4 memorias EEPROM de 512K de espacio cada una. Todos los arreglos poseen apuntadores que le permiten enlazar los datos disponibles en ellos para un mismo producto. Por ej. El campo
SISTEMA BALANZA – PUNTO DE VENTA
35
MODULO DE ALMACENAMIENTO PERMANENTE
ÍNDICE en el arreglo de productos permite ubicar la posición que ocupa el código de barras del producto en el arreglo de códigos de barras, los campos PLU en las listas de códigos de barras y teclas se utilizan cómo apuntadores a las posiciones de memoria donde se encuentra almacenado el renglón producto.
SISTEMA BALANZA – PUNTO DE VENTA
36
MODULO DE ALMACENAMIENTO TEMPORAL
4.3 MÓDULO DE ALMACENAMIENTO TEMPORAL (MAT) 4.3.1 Descripción General Así como el MAP representa el disco duro del sistema balanza – punto de venta, este módulo hace las veces de una memoria RAM, es decir, este módulo tiene la tarea de almacenar de manera temporal aquella data cuyo tiempo de vigencia es corto. La capacidad de almacenamiento es mucho menor en comparación con el espacio manejado por el MAP, apenas 64 bytes, de los cuales 8 están destinados para el manejo de la hora y la fecha.
4.3.2 Componentes Reloj Serial de Tiempo Real DS1307 El reloj DS1307 es un dispositivo de baja potencia que maneja hora y fecha en formato BCD y que además cuenta con 56 bytes de memoria RAM. Los bytes de data y dirección son transferidos de forma serial por un bus bidireccional de dos cables. El reloj cuenta con dispositivo de auto ajuste que le permiten limitar los días de los meses con menos de 31. Puede ser manipulado en formato AM/PM o militar y requiere de una batería de 3 V para mantener su funcionamiento cuando la fuente principal es apagada. El dispositivo requiere de un oscilador externo para mantener la cuenta de la hora y fecha, el fabricante recomienda utilizar uno de cristal de cuarzo de 32,768 Khz. Organización de la memoria.
El dispositivo DS1307 cuenta con 64 bytes de memoria. Las 8 primeras posiciones son registros de control del reloj de tiempo real, las 56 restantes son bytes de memoria de acceso aleatorio.
SISTEMA BALANZA – PUNTO DE VENTA
37
MODULO DE ALMACENAMIENTO TEMPORAL
Figura 4.3.1: Memoria del DS1307
Para obtener o configurar la hora y fecha a voluntad es necesario acceder a los registros de control de indicados, recordando que la data presente en ellos se encuentra en formato BCD. Los procesos de lectura y escritura para este dispositivo son similares a los descritos para el componente AT24C512, de hecho las definiciones de las señales de INICIO, PARADA y ACKNOWLEDGE son las mismas. Sin embargo, en esta ocasión no son necesarias dos palabras de 8 bits para acceder a una dirección de memoria ya que un sólo byte es suficiente para hacerlo. Dado que este dispositivo intercambia información por el mismo bus de dos hilos que maneja el arreglo de memorias del módulo MAP, se requiere que el reloj posea su propia dirección de dispositivo. En este caso la palabra de direccionamiento debe estar representada bajo este formato.
Figura 4.3.2: Dirección de dispositivo de reloj
De manera que para acceder en cualquiera de las posiciones de memoria del reloj la dirección de dispositivo D0h para la escritura y D1h para la lectura.
SISTEMA BALANZA – PUNTO DE VENTA
38
MODULO DE ALMACENAMIENTO TEMPORAL
4.3.3. Funcionamiento Este módulo posee dos funciones principales, la primera es almacenar en la memoria RAM disponible información sobre los operadores del sistema balanza – punto de venta y las ventas realizadas por ellos, de esto hablaremos un poco más en la próxima sección; la segunda es llevar un registro de la hora y fecha en la que se realiza cada venta. Para evitar confusiones se ha considerado manejar la hora en AM/PM aunque el reloj ofrece la posibilidad de hacerlo también en el formato militar. El dispositivo es manejado tal y como lo especifica el fabricante, se encuentra bajo la dirección de dispositivo D0h para escritura y D1h para lectura ya que las señales de DATA se encuentran unidas al mismo bus que el arreglo de memorias EEPROM del MAP. Base de datos. Los 56 bytes de memoria RAM se encuentran distribuidos en 10 renglones de 5 bytes cada uno, el byte restante no es utilizado. La siguiente tabla ilustra la composición de cada renglón vendedor.
CAMPO Vendedor Acumulado TOTAL Longitud (Bytes) 1 4 5 Tabla 4.3.1: Campos y Longitud de Renglón vendedores.
Vendedor: Este campo de 1 byte de longitud almacena un número de vendedor en código ASCII, esto quiere decir que sólo son aceptados los ingresos de 0 hasta 9. Acumulado: Este campo de 4 bytes de longitud almacena la cantidad de total de efectivo que ha sido recibido por el punto de venta bajo la operación del vendedor titular de ese renglón. Esto quiere decir que en el caso que el punto de venta haya sido manipulado por más de un vendedor, la suma de los 10 acumulados almacenados en memoria representa el monto total percibido por dicho punto de venta desde el ultimo cierre de caja. Los valores almacenados en esta pequeña base de datos son considerados de corta vigencia debido a que son datos que generalmente están en constante cambio. Tomemos en cuenta que cada vez que se realice una venta utilizando este sistema el acumulado correspondiente al vendedor que se encuentre operando la balanza en ese momento será actualizado, cosa que no ocurre con la data almacenada en el MAP en donde la data representa propiedades del
SISTEMA BALANZA – PUNTO DE VENTA
39
MODULO DE ALMACENAMIENTO TEMPORAL
producto que requieren de cambios en lapsos de tiempo mucho mayores. Esta diferencia entre lo que hemos definido como data permanente y data temporal, el hecho que las memorias EEPROM del MAP posean una cantidad de acceso limitados y que la memoria SRAM del reloj permita un número mucho mayor de las mismas; hizo que se tomara la decisión de almacenar los campos vendedores y acumulado en el MAT aún y cuando en el MAP se cuenta con espacio más que suficiente para ello.
40
SISTEMA BALANZA – PUNTO DE VENTA MODULO DE COMUNICACIÓN
4.4 MÓDULO DE COMUNICACION (MCOM) 4.4.1 Descripción General El modulo de comunicación permite al sistema balanza – punto de venta transmitir y recibir datas mediante el uso de cualquiera de sus 4 puertos de comunicación serial. El puerto se selecciona manipulando un multiplexor de 4 canales analógicos bidireccionales de dos hilos. Los 4 puertos han sido identificados como COM0, COM1, COM2 y COM3. COM0: este puerto está específicamente diseñado para conexión directa con el puerto del PC, en sus 4 pines disponibles se encuentra Transmisión (Tx), Recepción (Rx), tierra (Gnd) y uno no utilizado (NC). El pin NC correspondería a Vcc, sin embargo para evitar cargar de forma indebida el puerto serial del PC y en consecuencia quemarlo o dañarlo se opta por no utilizar este pin como medida de seguridad. Gnd
N/C
Tx
Rx
4
3
2
1
Figura 4.4.1: Pines COM0
COM1, COM2, COM3: estos tres puertos tienen como propósito establecer comunicación entre la tarjeta y otros dispositivos que cuenten con comunicación serial vía 232. Los pines de estos 3 puertos están organizados como se muestra a continuación. Gnd
Vcc
Tx
Rx
4
3
2
1
Figura 4.4.2: Pines COM1, 2, 3.
SISTEMA BALANZA – PUNTO DE VENTA
41
MODULO DE COMUNICACIÓN
4.4.2. Componentes MUX CD4052 EL CD4052 es un multiplexor de 4 canales que posee dos entradas binarias, A y B, y una de inhibición que deshabilita las salidas. Las entradas A y B permiten seleccionar uno de los pares de canales para que se encienda y se conecte con la entrada dejando pasar las señales analógicas de entrada.
Figura 4.4.3: Asignación de Pines. MUX CD4052 Los pines de selección de canal A y B están directamente conectados al MCP, el cual con su programa interno identifica el puerto en el que se encuentra conectado el dispositivo a comunicar y configura los pines A y B de manera que el MUX permita la conexión.
4.4.3 Funcionamiento Los cuatro puertos de comunicación, se encuentran distribuidos de la siguiente forma: Puerto Dispositivo COM0 PC COM1 MP COM2 VISOR LCD COM3 IMPRESORA Tabla 4.4.1: Asignación de puertos.
La tarjeta el capaz de enviar o recibir data a través de uno de ellos a la vez, el puerto que se desea operar es seleccionado manipulando 2 pines (S0 y S1) que controlan el multiplexor que une los terminales para que la data sea recibida por el puerto deseado. La selección de un
42
SISTEMA BALANZA – PUNTO DE VENTA MODULO DE COMUNICACIÓN
puerto en particular requiere de una combinación de niveles lógicos a los pines S0 y S1 únicos para cada puerto.
S0 S1 Puerto 0 0 COM0 0 1 COM1 1 0 COM2 1 1 COM3 Tabla 4.4.2 Selección de puerto.
Se debe tener en cuenta que cada dispositivo maneja una tasa de transmisión distinta, especificada por su fabricante. Por ello es necesario configurar las velocidades transmisión en base al puerto seleccionado para la comunicación.
Tasa de Dispositivo Transmisión PC 4800 MP 2400 VISOR LCD 9600 IMPRESORA 4800 Tabla 4.4.3: Velocidades de Transmisión en BAUD.
Debido a esto el MCP debe tener en cuenta que dependiendo del dispositivo a comunicar debe configurar sus contadores internos para que la tasa de transmisión sea la indicada y no ocurra ningún tipo de perdida de datos. El puerto COM0 permite dos tipos de transmisión de datos, RS 232 ó RS 485. Se puede seleccionar cualquiera de los dos tipos de transmisión cambiando de posición 3 jumpers cercanos a los pines del COM0. RS 232
J1
J2
J3
RS 485
J1
J2
J3
Figura 4.4.4: Posicionamiento de los jumpers.
43
SISTEMA BALANZA – PUNTO DE VENTA PERIFERICOS
4.5 PERIFÉRICOS 4.5.1 Descripción General Este último módulo esta formado por un conjunto de periféricos que permiten establecer la interfaz balanza - usuario. Todos los dispositivos incluidos en este módulo manejan la data en formato ASCII.
4.5.2 Componentes Teclado PS2 (Keyboard) El keyboard recibe y envía data utilizando un par de cables, una señal data y otra de clock. El funcionamiento es muy similar al proceso en el cual la data es escrita y leída para las memorias EEPROM del MAP.
Figura 4.5.1: Señales DATA y CLOCK del teclado.
La conexión física se logra mediante el uso de un conector del tipo PS/2 (de allí la forma de llamar al teclado), los pines se encuentran distribuidos en el conector tal y como se muestra en la siguiente figura: Macho
Hembra
Figura 4.5.2: Conectores PS/2.
Los 6 pines del conector PS/2 se encuentran asignados de la siguiente forma:
SISTEMA BALANZA – PUNTO DE VENTA
44
PERIFERICOS
Pin Función Data 1 N/C 2 Gnd 3 Vcc (+5V) 4 Clock 5 N/C 6 Tabla 4.5.1: Asignación de pines. Conector PS/2.
Cada botón incluido en el teclado posee un “scancode” único que lo identifica y diferencia de los otros, éste “scancode” es un código que aunque es distinto del ASCII permite al micro reconocer el caracter de la tecla presionada mediante el uso de una tabla almacenada en la memoria interna del programa. Las teclas normales posee scancodes de dos bytes, sin embargo el primer bytes es 0 y no se toma en cuenta para realizar el reconocimiento, dentro de este tipo de teclas están las alfa numéricas, ciertos símbolos representables por un carácter ASCII. Las teclas especiales son aquellas que no pueden ser representadas en ASCII, por ejemplo las teclas de función (F1, F2, F3, etc.) poseen un 1 en el primer byte del scancode. De igual manera son reconocidas las combinaciones de teclas cómo ctrl. + tecla, o shift + tecla función. Teclado Matricial (Keypad) El modelo de balanza utilizado para conformar el MP incluye un teclado interno que es utilizado cómo teclado matricial aunque este consta de 14 teclas que están distribuidas internamente en 5 filas por 4 columnas, es decir, que se requieren 9 pines para poder manejar este teclado, en consecuencia el puerto B del micro de 8 pines no es suficiente para manejarlo. Esta distribución interna de las teclas llevó a considerar el uso de otro teclado de matriz que contara con 16 teclas organizadas en 4 filas y 4 columnas, que permitiría su manejo en 8 pines. Sin embargo esto implicaría descartar el uso teclado incluido en la balanza para los procesos de venta y que el sistema contaría con dos teclados, uno para calibración de la balanza y otro para ingresar data; algo poco eficiente que incrementaría el costo de producción y complicaría en cierto grado el manejo del sistema balanza – punto de venta. En consecuencia se decidió continuar implementando el teclado incluido en la balanza aún cuando su manejo interno requiera contar con un pin extra de otro puerto. El teclado de matriz sólo permite el ingreso de data numérica y algunos comandos como y , lo que lo hace instrumento suficiente para manejar la balanza
45
SISTEMA BALANZA – PUNTO DE VENTA PERIFERICOS
durante cualquier proceso de venta; sin embargo para la modalidad de configuración es necesario el ingreso de otro tipo de caracteres y el teclado PS2 se hace indispensable para el ingreso de datos localmente. Funcionamiento.
Las 14 teclas incluyen los números de 0 al 9 además de 4 teclas extras identificadas como M, C, Z y T; estas teclas están distribuidas en un arreglo de 5 x 4 tal y cómo lo ilustra la figura 2.5.3: 1
Columnas 2 3
4
9
8
7
1
6
5
4
2
3
2
1
3
M
4
0 C
Z
T
F i l a s
5
Figura 4.5.3: Arreglo de Teclas.
Para identificar las teclas presionadas se utiliza un barrido de ceros por las filas del arreglo lo suficientemente rápido como para que ninguna pulsación pase por alto, cada tecla posee una coordenada particular que une dos pines al ser presionada, la idea del barrido de cero es identificar cual tecla se pulsó buscando los únicos dos pines que se encuentren en “0” lógico. Si ninguna tecla fue ingresada entonces todos los pines se mantienen en alto. En caso positivo la coordenada (fila , columna) es comparada con una tabla interna del programa en la que se encuentran identificadas las posibles teclas y su combinación (fila , columna). Una pequeña rutina de comprobación y espera evita la presencia de rebotes en el teclado, es decir, que evita que el módulo genere más de un carácter por pulsación.
SISTEMA BALANZA – PUNTO DE VENTA
46
PERIFERICOS
Pantalla LCD. El dispositivo es una pantalla LCD de caracteres genérico que consta de 20 columnas por 4 filas, como el que se muestra en la figura.
Figura 4.5.4: Pantalla LCD.
Los pines de los módulos LCD han sido estandarizados por lo cual en la mayoría de ellos están distribuidos de igual manera a menos que la línea de caracteres sobrepase las 80 casillas. Pin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Descripción GND VCC Contraste
Función 0 Vlts. Tierra ( GND ). 5 Vlts. DC Ajuste del Contraste. 0= Escribir en el modulo LCD. 1= Leer en el módulo LCD RS 0= Entrada de una Instrucción. 1= Entrada de un dato R/W Habilitación del modulo LCD E BUS DE DATO LINEA 1 ( LSB ). DB0 BUS DE DATO LINEA 2 DB1 BUS DE DATO LINEA 3 DB2 BUS DE DATO LINEA 4 DB3 BUS DE DATO LINEA 5 DB4 BUS DE DATO LINEA 6 DB5 BUS DE DATO LINEA 7 DB6 BUS DE DATO LINEA 8 (MSB). DB7 LED (+) Back Light LED + LED (-) Back Light. LED Tabla 4.5.2: Asignación Pines LCD.
La pantalla LCD ha sido configurada para trabajar con 4 pines de data, es decir, que las señales DB4 hasta DB7 no son utilizadas. La data enviada a la pantalla se encuentra divida en paquetes de 4 bits denominados nibbles, con un par de ellos se puede armar o bien una palabra
SISTEMA BALANZA – PUNTO DE VENTA
47
PERIFERICOS
de comando o un byte que represente un carácter. El dispositivo reconoce los códigos ASCII recibidos y los despliega en la pantalla. Para realizar un ciclo de escritura completa en la pantalla se deben respetar ciertos espacios de tiempo para dar oportunidad a que el LCD reconozca la data recibida antes de que llegue el próximo paquete.
Figura 4.5.5: Diagrama de tiempos. Instrucción
Figura 4.5.6: Diagrama de tiempos. Instrucción.
Las dos figuras anteriores muestran el movimiento de las señales para realizar la escritura de un dato o de una instrucción, para la mayoría de las pantallas LCD se recomienda esperar uno 450 ns cómo mínimo para evitar el riesgo de sobre escritura.
SISTEMA BALANZA – PUNTO DE VENTA
48
MODULO DE CONTROL Y PROCESAMIENTO
4.6 MÓDULO DE CONTROL Y PROCESAMIENTO 4.6.1 Descripción General El MCP representa el cerebro del sistema, en él es procesada toda la data ingresada por los distintos periféricos, así como son tomadas las decisiones que permiten controlar el resto de los módulos de forma indicada. En el reside el programa principal que da vida al sistema balanza – punto de venta.
4.6.2 Componentes Microcontrolador AT89C55. Dentro de esta sección sólo se han remarcado las características más relevantes con las que cuenta el micro para el desarrollo de éste proyecto, existen más especificaciones técnicas y se puede ahondar mucho más en la forma de manejo y la capacidad de procesamiento del chip, todos estos detalles pueden sin embargo ser consultados en el datasheet del dispositivo. El AT89C55 es un microcontrolador CMOS de 8 bits con 20K bytes de memoria flash programable de sólo lectura. Pertenece a la familia 80C y es compatible con el set de instrucciones y pines Standard del 80C51.
Figura 4.6.1: Asignación de pines. AT89C55
El 89C55 cuenta con las siguientes características: 20K bytes de FLASH, 256 Bytes de RAM, 32 líneas I/O repartidas en 4 puertos de 8 pines cada uno, 3 contadores/temporizadores
SISTEMA BALANZA – PUNTO DE VENTA
49
MODULO DE CONTROL Y PROCESAMIENTO
de 16 bits, soporta 6 vectores de interrupción de dos niveles y cuenta con un puerto serial full duplex. De forma muy similar al microcontrolador HC08 de motorola el integrado posee registros especiales que permiten configurar el funcionamiento de cada uno de los módulos del micro. Existen registros especiales para manejar los tres contadores/temporizadores, el puerto serial, el vector de interrupciones y sus respectivas prioridades. El registro de interrupciones IE permite habilitar las interrupciones globales así como decidir cuales son permitidas. Las interrupciones pueden ser generadas por 6 posibles fuentes: 2 por pines externos, por el puerto serial, 3 por el temporizadores 0, 1 y 2. Los 256 bytes de memoria RAM están repartidos en 64 bytes para 8 arreglos de 8 registros cada uno, 64 bytes direccionables de forma directa o indirecta y los últimos 128 son sólo direccionables indirectamente, es decir, mediante apuntadores. Un oscilador externo de hasta 22 Mhz permite fijar la frecuencia interna del bus de datos. En este aspecto el AT89C52 supera la velocidad de manejo de data a la que trabaja el micro HC08GP32 de motorola. Esta comparación viene al caso debido a que el programador posee una mayor familiaridad con el microcontrolador de motorola, sin embargo, debido a las ventajas que ofrece ATMEL en cuanto a procesamiento y aunque la familia HC08 ofrece módulos extra (conversor análogo digital) que el micro utilizado no posee; la gran similitud entre las instrucciones permitidas por uno y otro y la experiencia que tiene la compañía trabajando con integrados marca ATMEL justifica el uso del micro AT89C55. 4.6.3 Funcionamiento El microcontrolador AT89C55 en combinación con el programa residente en su memoria conforman en su totalidad el Módulo de Control y Procesamiento (MCP). En cuanto a Hardware el micro controla directamente el manejo de la pantalla LCD y el teclado de matriz mediante el puerto 0 (P0). Dado que el P0 maneja dos periféricos distintos, la tarjeta cuenta con un dispositivo tres estados que impide el paso de la data a la pantalla cuando la data en el puerto esta destinada para el teclado, de forma similar otro tres estados bloquea la data destinada al teclado para evitar conflictos con la pantalla. Adicional a los ocho pines suministrados por el puerto 0, el teclado matricial requiere de un pin adicional tomado
SISTEMA BALANZA – PUNTO DE VENTA
50
MODULO DE CONTROL Y PROCESAMIENTO
del puerto 2 (P2). De igual forma el dispositivo LCD requiere de pines adicionales de control tomados del puerto 1 (P1). •
En el P1 se manejan la señales que controlan el MUX CD4052, el tres estados que permite el paso de data del P0 al teclado, las señales de data y reloj que van al teclado PS2, así como uno de los pines de control de la pantalla LCD.
•
Del P2 sólo es utilizado un solo pin para el manejo de la quinta fila del teclado de matriz, por lo que en este puerto se cuenta con 7 pines libres para futuras aplicaciones.
•
El puerto 3 (P3) utiliza uno de sus pines para el manejo del pin BACKLIGHT del lcd, otro que define el sentido que se transmite la data a través del P2 mediante un buffer y por último el pin que habilita la transmisión RS 485 por el COM0.
El Software interno del MCP esta organizado en librerías dedicadas a cada uno de los periféricos o a operaciones aritméticas. El programa principal realiza llamados a las funciones definidas en las librerías los nombres de las mismas son: •
Librería del lcd (lcd.asm): en ella se encuentran definidas las rutinas de inicialización de la pantalla lcd así como ciertos comandos básicos que permite realizar el set de instrucciones internos del dispositivo. Funciones como borrar pantalla, ir a inicio, mover cursor a una posición cualquiera, escribir un carácter, borrarlo, mostrar cursor, etc, son algunas de las rutinas incluidas en esta librería.
•
Librería I2C (i2c.asm): todas las funciones de escritura y lectura de las memorias EEPROM del MAP y el reloj del MAT son realizadas utilizando los comandos contenidos en esta librería. Escribir y leer desde un solo byte hasta cadenas de ellos, enviar señales de PARADA e INICIO son algunas de las funciones disponibles.
•
Librería Serial (serial.asm): las rutinas contenidas en esta librería se utilizan para manejar el puerto serial del microcontrolador. Desde la configuración de la velocidad de transmisión, hasta el envío y recepción de cadenas de bytes. La selección por software del puerto de comunicación (COM0 1, 2 ó 3) de la tarjeta se lleva a cabo mediante rutinas contenidas en esta rutina.
•
Librerías Keyboard y Keypad (keyboard.asm, keypad.asm): dedicadas para el control de los teclados ps2 y de matriz respectivamente. Las funciones de esta librería permiten la inicialización del teclado ps2, cuestionar e identificar las teclas presionadas
SISTEMA BALANZA – PUNTO DE VENTA
51
MODULO DE CONTROL Y PROCESAMIENTO
en cualquiera de ellos. La librería keyboard.asm utiliza una tabla donde se encuentran organizados los scancodes de cada tecla. •
Librería Buffer (buffer.asm): Está librería permite manejar la data ubicada en el buffer interno del micro, moverla de dirección o borrarla.
•
Librería de Retardos (delays.asm): llamando a las rutinas dentro de esta librería se pueden generar retardos de distintos lapsos de tiempo. Estas funciones son especialmente útiles para las inicializaciones de los dispositivos que requirieren esperar cierto periodo de tiempo para que las instrucciones o datas sean reconocidas.
•
Librería de operaciones aritméticas (math.asm): todas las funciones que implican sumas, restas, multiplicaciones, multiplicaciones, conversiones y comparaciones, se encuentran incluidas en esta librería. De gran importancia, las rutinas aquí presentes son utilizadas en gran medida por el resto de las funciones de las otras librerías.
•
Librería de funciones avanzadas (functions.asm): las funciones avanzadas en su totalidad utilizan funciones presentes en distintas librerías. Por ejemplo, la función ingresar Artículo utiliza la librería math para calcular la dirección debe almacenar el articulo, ubicada la dirección requiere de la librería i2c para escribir la data, durante la escritura es necesario llamar a las funciones de retardos para esperar por una escritura exitosa. En resumen las funciones avanzadas requieren de mayores tiempos de ejecución y ocupan mayor espacio de memoria de programa.
Para el manejo de los periféricos (teclados ps2 y de matriz) y comunicación serial, fue considerado un algoritmo de interrogación sucesiva, es decir, cada modulo es interrogado por “turnos” para verificar si alguna tecla ha sido presionada o alguna data se ha recibido por el puerto. Aunque este algoritmo funcionaba de forma adecuada y las pruebas iniciales fueron satisfactorias, el prototipo final trabaja a base de interrupciones de puerto serial, lo cual le permite al microcontrolador aprovechar el tiempo durante el cual no se reciben datos serialmente para realizar otras tareas.
52
SISTEMA BALANZA – PUNTO DE VENTA MODULO DE CONTROL Y PROCESAMIENTO
La memoria del programa se encuentra distribuida de la siguiente forma: 00h
Banco 0 ... ... ... Banco 7
3Fh
40h
Variables de Programa
7Fh 80h
Buffer
FFh Figura 4.6.2: Organización de la memoria RAM del micro
Las primeras 64 posiciones de memoria están dedicadas a 8 bancos de registros de 8 bytes cada uno, durante la ejecución del programa sólo son utilizados los 8 registros del banco 0. Las 64 direcciones siguientes están dedicadas a las variables de programa, las variables han sido ubicadas en estas posiciones debido a que son las únicas que permiten ser direccionadas directamente. Las últimas 128 direcciones se destinan para el buffer interno, desde aquí se envía y recibe la data de los distintos periféricos, de igual manera las operaciones matemáticas utilizan estos espacios, que están diseñados para poseer data.
53
CAPITULO 5 OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA La Balanza – Punto de Venta puede ser operada en tres modalidades, cada una de ellas maneja distintos espacios de memorias, recurre a set de instrucciones diferentes y requiere del manejo de cantidades distintas de periféricos. De estas modalidades solo dos de ellas están directamente relacionadas con el proceso de venta, la capacidad de la Balanza – Punto de Venta de operar bajo uno u otro modo le da un mayor rango de aplicación en el mercado. Los tres modos en los cuales puede operar la Balanza – Punto de Venta son: •
Punto de Atención.
•
Punto de Venta.
•
Configuración.
Al ser encendida la balanza realiza una rutina de inicialización de variables, puertos y periféricos. Dentro de esa rutina la balanza consulta la dirección de memoria dentro del MAP donde se encuentra el valor del modo predefinido seleccionado. INICIO
Inicialización de Variables, puertos y periféricos
Shift + F10 Leer MODO
VACIO
¿MODO?
"1"
"0"
Configuración
Shift + F10
Punto de Atención
Punto de Venta
Shift + F10
Diagrama 5.1: Inicio del programa principal.
Una vez que el modo predefinido es identificado el programa principal decide cual de las 3 formas de operación comenzará a funcionar de manera automática. Si el modo de funcionamiento aún no ha sido seleccionado el programa principal llevará al usuario al modo
CAPITULO 5
54
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
de configuración. Una vez que se encuentra bajo alguno de los modos de venta, es posible ir al de configuración presionando Shift + F10 en las pantallas de inicio de cada modo. De forma similar, es posible salir del modo Configuración presionando la misma combinación de teclas, al hacer esto el programa va a una nueva comprobación del modo seleccionado, si aún no ha sido definido el programa retornará al modo configuración.
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
55
MODO PUNTO DE ATENCION
5.1 MODO PUNTO DE ATENCIÓN 5.1.1 Descripción General La compañía espera que esta aplicación sea la que alcance mayor difusión dentro del mercado. De de los tres modos es el único que requiere de una conexión en red local obligatoria, ya que es en un servidor en él que se debe llevar el control del movimiento comercial. Esta modalidad esta diseñada para ser de manejo rápido y sencillo de manera que el acto de venta sea lo mas expedito posible. El proceso de venta bajo este modo de operación se lleva a cabo a través de un circuito de compras en el que cada balanza – punto de venta o un conjunto de ellas representan una estación. Para poder realizar una compra cada cliente debe pasar por las estaciones en las que se despachan los productos que desea adquirir, cada venta se encuentra identificada con un numero de cliente y un numero de vendedor; al finalizar el recorrido el consumidor debe cancelar el monto total de todos los productos que adquirió en durante su recorrido. Este proceso de venta es muy similar al que se observa en algunos establecimientos (panaderías en su mayoría) donde cada cliente porta una barra de acrílico en la que se anotan todos los consumos hechos en los departamentos cómo charcutería, panadería, pastelería, etc. El proceso de compra finaliza totalizando los consumos hechos y cancelándolos en la caja. Aunque aún no ha sido definida la forma cómo se identificará a cada cliente, se está estudiando la posibilidad de entregar a cada uno una tarjeta con un código de barras único para evitar confusiones o que de forma intencional algunas cuentas sean confundidas. Para el debido funcionamiento del circuito de compras es necesario que todas las balanzas – punto de venta se encuentren conectadas con un servidor local que administre la red y controle de forma centralizada las ventas hechas por cada balanza en cada estación.
5.1.2 Circuito de Compras La topología de la red es similar a la tipo bus en la que todas las terminales (balanzas) se encuentran conectadas al mismo hilo de transmisión de datos (serial RS-485 en este caso). La comunicación entre servidor y balanza se realiza a una tasa de 4800 Baud con 8 bits de data 1 de parada y paridad NONE y es la central la encargada de controlar el tránsito de data a través
56
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO PUNTO DE ATENCION
del bus. Para evitar colisiones y por ende perdida de data, el servidor se encarga de interrogar una por una las balanzas instaladas en cada estación, cada vez que sea interrogada la balanza debe responder con la data que tenga preparada en su bus interno, en el caso de no tener aún nada que enviar la respuesta será una señal de “presente” para que el servidor descarte cualquier problema de conexión física a la red. Con el fin de disminuir el número de consultas al servidor cada balanza cuenta con una base de datos local con los productos disponibles idéntica a la que se encuentra en la central, sin embargo esto implica que se debe ser cuidadoso al momento de realizar cambio en cualquiera de las bases de datos para evitar incongruencias entre ambas. Cada balanza ha sido identificada con una ID particular, de esta forma cada terminal hace caso omiso o responde dependiendo si la palabra de dirección enviada dentro de la trama generada por el servidor corresponde o no a su identificación en la red. ESTACIÓN A
Balanza 1
ESTACIÓN B
Balanza 2
Balanza 3
ESTACIÓN C
Balanza 4
ESTACIÓN D
Balanza 5
Balanza 6
Servidor
Caja 1
Caja 2
Caja 3
Caja 4
Figura 5.1.1: Flujo de datos Circuitos de Compras.
La figura 5.1.1 muestra cómo la data generada por cada una de las balanzas en las estaciones o departamentos llega al servidor para ser organizada, esta misma data es luego
57
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO PUNTO DE ATENCION
utilizada para generar una facturación final y la debida cancelación de la cuenta en las cajas disponibles.
5.1.3 Proceso de Venta u Operación 1) El Proceso de venta se inicia identificando a cada cliente un número entre 1 y 99, cada vendedor se encuentra también representado por un valor entre 1 y 12. Antes de iniciar el despacho de los productos el cliente debe identificarse, el operador debe ingresar el número suministrado por el cliente y su propio ID. Cliente:01 Vendedor:0_
Figura 5.1.2: Pantalla inicial. Punto de Venta
2) Durante todo el proceso de venta se indica en la parte superior izquierda de la pantalla el número de cliente y el número de vendedor ingresados en la pantalla inicial del proceso. Una vez seleccionado el producto a adquirir el operador de la balanza debe ingresar, utilizando el teclado PS2, el teclado de matriz o el lector de códigos de barras; el PLU, el código de barras o la tecla bajo la cual se encuentra identificado el articulo. 01/07 Ingresar Producto: 0123_
Figura 5.1.3: Ingresar Producto. Punto de Venta
Para calcular el importe de cada venta la balanza debe verificar si el producto consultado es de tipo “pesado” o “no pesado”. En el primer caso se realiza una lectura del dispositivo de pesaje, en el segundo caso se debe ingresar la cantidad del producto que se desea despachar. 01/07 Nombre Producto 0123 10000.00 X 00.250Kg Importe Bs:
2500.00
Figura 5.1.4 (a): Cálculo de importe. Producto pesado
58
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO PUNTO DE ATENCION
El punto de atención genera dos consultas consecutivas en un periodo de uno 5 décimas de segundo, esto para verificar que el peso colocado sobre la balanza es estable, en caso contrario genera un mensaje indicando que el peso sobre la balanza no se encuentra lo suficientemente estable para realizar el cálculo del importe. La consulta de peso se repetirá hasta que el producto sea retirado de la balanza o hasta que la lectura se estabilice. 01/07 Nombre Producto 0123 10000.00 Importe Bs:
X
01_ 10000.00
Figura 5.1.4 (b): Cálculo de importe. Producto no pesado 01/07 Nombre Producto 0123 10000.00
X
Peso no estable_
Figura 5.1.5: Peso no estable. Producto pesado
En el caso que el PLU, el código de barras ó la tecla de acceso directo presionada no se encuentren asignados a ningún producto el punto de atención genera un mensaje notificando al vendedor que se ha incurrido en un error al ingresar la data. 01/07 No encontrado
Figura 5.1.6: Producto No encontrado. Punto de atención
Calculado el importe mediante el peso o la cantidad, la balanza genera un mensaje donde se encuentra codificada la identificación del producto, la cantidad o el peso, el numero del cliente y del vendedor; este mensaje será enviando cuando la balanza sea interrogada por el servidor. Una vez enviado el mensaje la balanza espera por una señal de ACKNOWLEDGE como respuesta del servidor para poder continuar con la venta del próximo item. Si se desea continuar con el despacho de productos basta con repetir el paso 2) tantas veces sea necesario. 3) En el caso que el consumidor desee consultar su cuenta, el punto de atención le permite “navegar” por todas las adquisiciones hechas por él en cada estación del
59
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO PUNTO DE ATENCION
establecimiento utilizando las teclas ← ó → del teclado. En ella le será mostrado tanto el número de compras o renglones y la descripción detallada del producto, su precio unitario o por Kg., la cantidad o peso junto con el importe y el total acumulado hasta el momento de la consulta. Los renglones que deseen ser eliminados podrás ser removidos de las lista haciendo una petición de “borrado” desde el punto de venta hacia el servidor. 01/07 Acumulado Bs: 25000.00 #Renglones: 03
Figura 5.1.7 (a): Consulta de cuenta. 01/07
01/03
Nombre Producto 3210 7500.00 Importe Bs:
X
01_ 7500.00
Figura 5.1.7 (b): Consulta de cuenta.
En la esquina superior derecha de la pantalla se indica el número de renglón actual y el total de renglones existentes en la base de datos del servidor, esto permite al cliente revisar de forma detallada cada una de las compras realizadas anteriormente en caso que desee hacerlo. 4) Cuando todos los productos deseados por el cliente le hayan sido entregados la balanza debe generar una señal de cierre de cliente, de esta manera el número sobre el cual se encuentra identificado el consumidor se desbloquea y su cuenta puede ser abierta desde cualquier otro punto de atención o cualquier caja. En el caso que el operador omita este paso la balanza generará la señal de forma automática una vez transcurridos 2 minutos desde la última venta. Mientras la cuenta del cliente se encuentre abierta en un punto de venta el servidor no permitirá que sea abierta o alterada desde ninguna otra estación. 5) Terminado el proceso de compras el consumidor se dirige a un punto de venta el cual consultará al servidor sobre el estado de la cuenta del cliente, si este se encuentra disponible (cerrada) todos los productos y su múltiplos (cantidad o peso) que se encuentren bajo ese número de cuenta/cliente serán totalizados, el número de vendedor
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
60
MODO PUNTO DE ATENCION
que también encabeza cada venta es utilizada por el servidor para controles internos del establecimiento.
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
61
MODO PUNTO DE VENTA
5.2 MODO PUNTO DE VENTA 5.2.1 Descripción General Aún en proceso de desarrollo esta modalidad permite el manejo de la balanza fuera de línea. La conexión a la red por ahora no es requerida ya que el punto de venta por si sólo es capaz de llevar un sencillo registro del movimiento comercial en el MAT. De forma similar al punto de atención, el punto de venta requiere que cada operador/cajero se encuentre identificado con un número del 0 al 9, el cliente sin embargo no requiere ser caracterizado por ninguna ID. Por otro lado el punto de venta maneja totales de cuenta y los acumula al cajero que se encuentre operándolo, al final de la jornada es posible revisar la cantidad efectivo manejado por cada operador. La compañía se encuentra estudiando la posibilidad de anexar al punto de venta otro proyecto denominado “impresora fiscal”, lo cual le permitiría al punto de venta generar tickets fiscales con todos los impuestos detallados y tener una memoria fácilmente auditable por el SENIAT. Sin embargo, mientras se logra el acople de ambos proyectos esta modalidad no se encuentra lista aún para ofrecerse como solución comercial pues no genera ninguna constancia física de la venta. Debido a que este punto de venta no requiere de un CPU ni de un monitor el costo del equipo se reduce considerablemente convirtiendo a esta solución en una opción atractiva fácil de operar y reparar.
5.2.2 Proceso de Venta u Operación Debido a que es un ente totalmente independiente el punto de venta no requiere del funcionamiento de otros terminales o servidor para operar correctamente. Los periféricos con los que cuenta son dos teclados (PS2 y matricial), la pantalla LCD y un visor; el lector de códigos de barras puede ser añadido de ser requerido. La base de datos de los productos disponibles se encuentra almacenada en el MAP y estos pueden ser consultados ingresando el PLU, el código de barras o bien presionando las teclas de acceso directo.
62
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO PUNTO DE VENTA
1) La pantalla inicial del proceso de venta requiere identificar al operador del punto de venta mediante un número, el valor ingresado indica al MAT la posición de memoria en la cual debe ir acumulando cada una de las ventas realizadas. Ingresar Operador:_
Figura 5.2.1: Pantalla Inicial. Punto de Venta
2) Luego de identificar al vendedor la balanza se encuentra lista para recibir el ingreso de la data mediante el uso de los teclados. En este punto el funcionamiento es muy similar al del punto de venta. Cada producto accesado es identificado bajo el término “pesado” y “no pesado” y su importe es calculado según su precio unitario. El importe obtenido es almacenado y la balanza esperará por el ingreso de un nuevo producto, repitiendo el proceso de pesaje o cuantificación se calcula el nuevo importe y con él el nuevo subtotal. Mientras se mantenga la compra de productos el acumulado se irá incrementando e indicándose en la última línea de la pantalla, una vez añadido al subtotal no es posible eliminar el renglón ingresado por lo que para reajustar la contabilidad de la caja es necesario recurrir a otros métodos. Ingresar Producto: 0075_ Acc Bs:
1250.00
Figura 5.2.2: Ingresar Producto. Punto de Venta
3) Terminado el proceso de totalización el operador podrá acceder a una nueva pantalla en la que se muestra el total de Bs. acumulado por el cliente y se espera por el ingreso de la cantidad de efectivo con la que desea cancelarla. Con esta información se calcula el vuelto y se da por terminada la venta. Total Bs:
2500.00
Efectivo Bs: 5000.00 Vuelto Bs:
2500.00
Figura 5.2.3: Total y cancelación de la cuenta.
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
63
MODO CONFIGURACION
5.3 MODO CONFIGURACIÓN 5.3.1 Descripción general El modo Configuración permite al usuario realizar cambios en la base de datos de local de la balanza, cambiar la fecha y la hora del dispositivo, cambiar el modo de operación predeterminado así como borrar por completo toda la información dentro de la balanza – punto de venta. Debido a que si es manipulado por personas no familiarizadas con el dispositivo puede ocasionar perdida de información importante, este módulo ha sido protegido con una clave o password como método de seguridad y protección de datos y parámetros. Igual cómo ocurre en los cajeros electrónicos, la primera vez que la balanza hace la petición del password pedirá luego una confirmación y establecerá esa primera clave ingresada como la contraseña de usuario. Una segunda clave de seguridad alternativa es generada por la balanza automáticamente, esta clave cambia dependiendo de la fecha actual y ha sido implementada por sugerencia directa de la compañía, con ella se desea poseer un password sólo conocido por el programador y que no puede ser alterado de forma externa, esta clave alternativa es útil en los casos que el operador de balanza cambie su contraseña de usuario y luego no la recuerde correctamente. De las tres modalidades esta es la única que puede ser manejada tanto por puerto serial o de manera local, es decir, el modo configuración permite el trabajo en o fuera de línea. Enviando la data bajo el formato convenido, la tarjeta puede realizar el comando deseado por el usuario desde otro terminal, o bien presionando las teclas correctas se puede indicar a la balanza los cambios o consultas que se quieren realizar.
5.3.2 Proceso de Configuración Dependiendo de la manera que se ingresen los datos, puerto de comunicación o teclado, la balanza hará uso de ciertos periféricos. Si el proceso es local, el sistema descarta el uso del MCOM y trabaja principalmente con el Teclado, la pantalla y visor LCD para la ofrecer una interfaz más apropiada. En caso contrario el sistema hace caso omiso de las señales recibidas por los teclados y descarta el uso del visor y la pantalla, pues toda la data es manejada por puerto de comunicación y los comandos y respuestas son intercambiadas por esta vía.
64
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
1) Cómo se adelantó en párrafos anteriores, el proceso de configuración se encuentra protegido por dos contraseñas, la de usuario y la de programador o alternativa. La clave de usuario se encuentra almacenada en formato HEX en 2 bytes de memoria libres en el MAP. Estas dos casillas se encontrarán vacías si aún no ha sido ingresada la clave de usuario o si se acaba de borrar por completo la memoria de la balanza. En ese caso se pedirá el ingreso de una nueva clave y su confirmación para evitar errores. Ingresar Password: _ 220104
Figura 5.3.1 (a): Ingresar Password Ingresar Password:
**** Confirmar Password:
****
220104
Figura 5.3.2 (b): Confirmar Password
2) Una vez ingresado correctamente y confirmado el nuevo password el sistema esta preparado para recibir los comandos los cuales deben estar bajo un formato previamente convenido. Ingresar Comando: _
Figura 5.3.3: Ingresar Comando
3) Al reconocer el comando y la data relacionada el sistema ejecuta los pasos necesarios para llevarlo a cabo. Cuando se ha finalizado la ejecución la balanza genera un mensaje indicando si la instrucción se completo correctamente o si por el contrario se presento un error. La forma como haya sido introducida la instrucción determina el periférico utilizado para desplegar el mensaje. Si fue ingresada por puerto serial la respuesta será por esa misma vía, si fue por el teclado la pantalla será la encargada de señalar que ocurrió con la operación.
65
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
5.3.3 El Set de instrucciones En el sistema balanza – punto de venta los comandos disponibles se encuentran clasificados en grupos llamados CLAVES, dentro de cada grupo CLAVE se encuentra una subdivisión en OPCIONES y en algunas de estas opciones se encuentra una última clasificación en DATAS. La mayoría de las funciones pueden finalizar de dos maneras, una de ellas es la salida por operación completa que se cumple cuando todas las instrucciones han sido terminadas sin contratiempos, el programa principal reconoce que la función ha sido finalizada de forma completa cuando el bit de carry se mantiene en bajo. El caso contrario se da cuando la ejecución de la función se interrumpe por alguna condición interna, en estos casos el bit de carry es colocado en alto para notificar al programa principal que la ejecución de la última instrucción llamada fue suspendida. Antes de explicar mejor las funciones permitidas por la balanza es recomendable ilustrar la estructura que deben tener las tramas de datos enviadas desde el servidor hasta el dispositivo. Stx
Eq
Clave
Opción
Data
Etx
Chk
Trama de Bytes Figura 5.3.4: Trama de bytes
Stx (Start of text): representa el inicio de la trama, esta señal se encuentra identificada por el número 02 en HEX. Estas señales han sido tomadas por su significado en la tabla básica de caracteres ASCII. Eq: este valor es el número que identifica a cada balanza presente en la red. Etx (End of text): representa el fin de la trama, esta señal se encuentra identificada por el número 03 en HEX. Chk (Check Sum): este valor de un byte representa el XOR de cada uno de los bytes enviados, desde Eq hasta el último byte de DATA, este valor se utiliza para la detección de errores de transmisión. Para ingresar las instrucciones por teclado basta respetar el mismo formato Clave + opción + data, terminado el ingreso la tecla inicia la ejecución.
66
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
CLAVE “0”: Manejo de Artículos. Opción “0”: Ingresar Artículo.
Data = PLU + TIPO + NOMBRE + PRECIO + CADUCIDAD "0" + "0" + "PLU" + "TIPO" + "NOMBRE" + "PRECIO" + C
Conversión: "PLU" ASCII > HEX
PLU > 4096
SI
SET CARRY
NO Multiplicar: Dirección = PLU(HEX) X 32
Conversión: "PRECIO" ASCII > HEX
Escribir ARTICULO
CLEAR CARRY
FIN
Diagrama 5.3.1: Ingresar Artículo
Este comando permite al usuario ingresar un nuevo producto a la base de datos o reescribir uno ya existente. El PLU ingresado es transformado a formato HEX para multiplicarlo por el factor 32 y así obtener la dirección inicial del renglón reservado para este PLU. A partir de esta dirección son almacenados en el MAP el resto de los campos incluidos en la trama ingresada por el usuario; algunos de ellos deben ser cambiados de formato ASCII a HEX cómo es el caso del PLU, el PRECIO y la CADUCIDAD, de esta manera se reduce el espacio que ocupan en memoria. Existe la condición de que el PLU ingresado sea menor que 4096 en caso contrario la rutina de almacenamiento es cancelada y la bandera carry es colocada en alto.
67
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Opción “1”: Cambiar Precio.
Data = PLU + PRECIO "0" + "1" + "PLU" + "PRECIO"
Conversión: "PLU" ASCII > HEX
PLU > 4096
SI
SET CARRY
NO Multiplicar: Dirección = PLU(HEX) X 32
Sumar: Dirección = Dirección + 25
Conversión: "PRECIO" ASCII > HEX
Escribir PRECIO
CLEAR CARRY
FIN
Diagrama 5.3.2: Cambiar PRECIO.
Este comando permite cambiar el precio de un producto ya existente en la base de datos. El PLU ingresado debe ser menor de 4096, cumplida esta condición el PLU es transformado de formato ASCII a HEX y se multiplica por 32 para ubicar la dirección inicial del renglón, luego al resultado se le agrega un offset de 25 para ubicar el MSB (most significant byte) del PRECIO, a partir de allí será almacenado el equivalente HEX del PRECIO introducido.
68
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Opción “2”: Eliminar PLU.
Data = PLU "0" + "2" + "PLU"
Conversión: PLU ASCII > HEX
SET CARRY
SI
PLU > 4096
NO Multiplicar: Dirección = PLU(HEX) X 32
Sumar: Dirección = Dirección + 30
Leer INDICE
Limpiar BUFFER
Borrar PLU
PLU HEX
PLU > 4096
SI
SET CARRY
NO Multiplicar Dirección = PLU(HEX) X 32
Sumar Dirección = Dirección + 30
Escribir No BC
Multiplicar: Dirección = No BC X 8
Conversión: Código de Barras ASCII > HEX
Escribir Código de Barras
No BC = No BC +1
CLEAR CARRY
FIN
Diagrama 5.3.4: Ingresar Código de Barras.
Se pueden asociar códigos de barras a distintos productos utilizando este comando, para llevar registro del número de códigos de barras existentes se utiliza una variable llamada No_BC la cual se incrementa al ingresar un nuevo código y se decrementa cuando uno de ellos es eliminado. Todo código de barras al ser ingresado es almacenado al final de la lista, esto
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
71
MODO CONFIGURACION
quiere decir que para que funciones como Buscar Articulo por código de barras trabajen de forma adecuada se debe organizar primero el arreglo utilizando el comando Organizar códigos de barra. Las posiciones dentro de la lista ocupadas por cada código de barras se encuentran almacenadas en el campo INDICE de la base de datos de los productos.
72
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Opción “4”: Ingresar Descriptivo.
Data = PLU + LÍNEA + DESCRIPTIVO "0" + "4" + "PLU" + "LÍNEA" + "DESCRIPTIVO"
PLU: Conversión ASCII > HEX
PLU > 4096
SI
SET CARRY
NO Multiplicar: Dirección = PLU(HEX) X 128
Dirección = (20 x LÍNEA) + 4 + Dirección
Escribir DESCRIPTIVO
CLEAR CARRY
FIN
Diagrama 5.3.5: Ingresar Descriptivo.
El valor del PLU ingresado debe ser menor que 512, comprobado esto se multiplica por 128 para encontrar el número de página de memoria en la que se va a almacenar el descriptivo. El producto puede contar hasta con 6 descriptivos de 20 bytes cada uno, el campo LÍNEA define el número del descriptivo a ser ingresado (ver tabla 2.2.4). El valor permitido de LÍNEA se encuentra entre 0 y 5. Los 4 primeros bytes de cada página están reservados para el valor del PLU en ASCII a partir de allí se comienzan a almacenar los descriptivos.
73
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Opción “5”: Ingresar Tecla.
Data = PLU + TECLA
"0" + "5" + "PLU" + "TECLA"
20h 4096
SI
SET CARRY
NO
Escribir TECLA
CLEAR CARRY
FIN
Diagrama 5.3.6: Ingresar Tecla.
Las teclas de acceso directo son asignadas utilizando esta instrucción. La lista de teclas se encuentra almacenada en la segunda mitad de la memoria 2 del MAP. Este arreglo de teclas se encuentra ordenado por el valor de cada tecla en ASCII el cual debe estar entre 20h y 7Ah. Esto limita el número de artículos con teclas asociadas hasta un máximo de 90.
74
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Opción “6”: Peticiones. DATA = 2 + PLU : Descriptivos. "0" + "6" + "2" + "PLU" Conversión: PLU HEX a ASCII
PLU > 511
SI
Enviar NACK
NO Multiplicar OFFSET = PLU X 512
FIN
Sumar OFFSET = OFFSET + 4 Enviar ACK n=0
Enviar ACK
n>5
SI
Enviar EOT
NO Dirección = OFFSET + (n X 20)
Leer Descriptivo n
n=n+1
¿POS VACÍA?
NO
Transmitr Buffer
Diagrama 5.3.7: Petición Descriptivos.
75
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Los descriptivos de los artículos que los posean pueden ser consultados utilizando este comando, dado que se puede dar el caso que no todos los descriptivos tengan data válida, la función se encarga de “filtrar” aquellos que se encuentren vacíos. Se debe recordar que sólo los artículos con PLU menor que 512 pueden tener descriptivos asociados, si se ingresa un PLU mayor la instrucción no se completará.
DATA = 4 + PLU : Artículo por PLU. "0" + "6" + "4" + "PLU"
Conversión: PLU: ASCII > HEX
PLU > 4096
SI
SET CARRY
NO Multiplicar: Dirección = PLU X 32
Leer PLU
CLEAR CARRY
FIN
Diagrama 5.3.8: Petición de Artículo por PLU
Este comando de búsqueda se encarga de ubicar dentro del MAP al artículo a que corresponde el PLU ingresado y revela el renglón completo a excepción del INDICE. Esto permite verificar que la data que se encuentra almacenada en la base de datos es correcta o si por el contrario tiene algún tipo de error.
76
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
DATA = 5 + PLU : Código de barras. "0" + "6" + "5" + "PLU"
PLU: Conversión ASCII > HEX
PLU > 4096
NO Multiplicar: Dirección = PLU X 32
Sumar: Dirección = Dirección + 30 SI
Leer INDICE
Multiplicar: Dirección = INDICE x 8
Leer Código de Barras
SET CARRY
SI
¿POS VACÍA?
NO
CLEAR CARRY
FIN
Diagrama 5.3.9: Petición de código de barras
Mediante este comando es posible consultar el valor del código de barras asociado a cierto artículo. Ingresando el PLU la tarjeta puede calcular donde se encuentra almacenado su código de barras asociado leyendo el campo INDICE del renglón correspondiente al artículo. El valor de INDICE sirve como una apuntador a una dirección en la memoria 2 del MAP. Una vez ubicado es leído y convertido de formato HEX a ASCII para ser enviado por puerto serial o
77
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
para mostrarse en la pantalla LCD. En el caso que el PLU ingresado sea mayor que 4096 o que el campo INDICE se encuentre vacío el comando se interrumpirá su ejecución. DATA = 6 + CÓDIGO DE BARRAS : Artículo por Código de barras. "0" + "6" + "6" + "Código de Barras"
Conversión: "Codigo de Barras" ASCII > HEX
BOTTOM = 00
TOP = NoBC - 1
PIVOTE = (BOTTOM + TOP)/2
Dirección = PIVOTE
Leer PLU + Código de Barras
Código de Barras = @PIVOTE
SI
Dirección = PLU X 32
Leer Articulo
NO
@TOP => @BOTTOM
SI
NO
Código de Barras > @PIVOTE
CLEAR CARRY
SET CARRY
FIN
SI
BOTTOM = PIVOTE
NO
TOP = PIVOTE
Diagrama 5.3.10: Petición de Artículo por Código de Barras.
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
78
MODO CONFIGURACION
Este comando ofrece otra opción al momento de consultar la información disponible sobre un artículo en particular dentro de la base de datos. Por los momentos se ha fijado la longitud de los códigos de barras a 13 dígitos, este valor de 13 dígitos es buscado en la lista de códigos de barras mediante una comparación binaria (marco teórico). La instrucción termina cuando el valor del código de barras es encontrado dentro del arreglo o cuando los números con qué comparar se terminan. En caso de una búsqueda positiva el PLU que se encuentra en las dos posiciones de memoria anteriores al código de barras es leído, dicho valor sirve cómo apuntador a una dirección dentro de las memorias 0 ó 1 del MAP, esa dirección representa la primera casilla donde se encuentra almacenada la información restante del producto.
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
79
MODO CONFIGURACION
DATA = 7 + TECLA : Artículo por Tecla. "0" + "6" + "7" + "TECLA"
TECLA DENTRO DE RANGO?
SI NO
Multiplicar: Dirección = TECLA X 3
Sumar Dirección = Dirección + 8000H
SET CARRY Leer PLU + "TECLA"
Conversión: PLU HEX -> ASCII
Llamado: Buscar PLU
FIN
Diagrama 5.3.11: Petición Artículo por Tecla.
De forma similar a la instrucción anterior es posible acceder a la información disponible sobre un artículo pero esta vez ingresando la tecla de acceso directo que se encuentre asignada a el. Existen dos casos de interrupción de ejecución; que la tecla ingresada se encuentre fuera del rango permitido o no haya sido asignada a ningún artículo.
80
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Opción “7”: Vendedores/Operadores.
DATA = 0 + # VENDEDOR : Ingresar Vendedor. "0" + "7" + "0" + "# Vendedor"
¿# Vendedor en Rango?
NO
SET CARRY
SI Multiplicar Dirección = #Vendedor X 5
Sumar Dirección = Dirección + 08h
Escribir Vendedor
CLEAR CARRY
FIN
Diagrama 5.3.12: Ingresar Vendedor.
Esta función se utiliza para abrir los acumulados de los vendedores, es decir, colocarlos en 0. Recordemos que esta pequeña base de datos es sólo útil cuando la balanza se encuentra operando bajo el modo Punto de Venta, bajo esta modalidad el número de vendedor/cajero debe estar dentro del rango 0 al 9. Utilizando esta función se “abre” la cuenta del vendedor, de manera que al momento ingresar los acumulados cada vez que se realice una venta se este seguro que el valor de inicio es “0”. Es recomendable reiniciar el acumulado cada vez que se hace un cierre de caja para asegurar que la data allí almacenada sea congruente con el monto total de ventas.
81
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
DATA = 2 + # VENDEDOR : Consultar Vendedor. "0" + "7" + "2" + "# Vendedor"
¿# Vendedor en Rango?
NO
SET CARRY
SI Multiplicar: Dirección = #Vendedor X 5
Sumar Dirección = Dirección + 08h
Leer Vendedor
CLEAR CARRY
FIN
Diagrama 5.3.13: Petición Vendedor.
Utilizando este comando la balanza permite consultar los montos acumulados del vendedor especificado. Esta función puede ser llamada sólo mediante el uso del MCOM, esto quiere decir que no es posible hacer una consulta del monto acumulado por cierto vendedor de utilizando el teclado, este modalidad ha sido implementada para asegurar que sea sólo desde un servidor local que puede ser consultados estos montos.
82
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Clave “1”: Manejo de Parámetros. Opción “0”: Programación de fecha y hora.
DATA = seg + min + hr + am/pm + ds + dd + mm + yy "1" + "0" + "seg" + "min" + "hr" + "am/pm" + "ds" + "dd" + "mm" + "yy"
¿Valores en Rango?
NO
SET CARRY
SI Conversión Valores ASCII > BCD
Escribir Hora y Fecha
CLEAR CARRY
FIN
Diagrama 5.3.14: Programación de fecha y hora.
Permite configurar la hora y la fecha interna del equipo, se deben especificar los segundos, minutos, hora, el meridiano, día de la semana, día, mes y año en este mismo orden. Todos los valores ingresados con la instrucción son verificados y luego almacenados en las primeras posiciones de memoria del MAT.
83
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Opción “4”: Borrar memoria. "1" + "4"
MEM = 0
Indice = 0
¿Indice = 512?
SI
INC MEM
¿MEM = 4?
NO
CLEAR CARRY
Escribir Vacio
FIN
INC INDICE
Diagrama 5.3.15: Borrar Memoria
Este comando permite al usuario borrar toda la data presente en la base de datos del MAP, esta función posee una pantalla de confirmación para evitar su ejecución por equivocación. Opción “5”: Consultar fecha y hora. "1" + "5"
Leer Hora y Fecha
Conversion Hora y Fecha BCD > ASCII
CLEAR CARRY
FIN
Diagrama 5.3.16: Consultar Fecha y Hora.
Permitida sólo por puerto serial esta instrucción permite consultar la hora y la fecha manejada por el MAT.
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA
84
MODO CONFIGURACION
Opción “6”: Desplegar fecha y hora. "1" + "6"
Llamado Consultar Fecha y Hora
Desplegar Pantalla LCD Fecha y Hora
CLEAR CARRY
FIN
Diagrama 5.3.17: Desplegar fecha y hora.
Esta función permite consultar la fecha y la hora, a diferencia de la instrucción anterior los valores obtenidos de la lectura del MAT no son enviados por puerto serial sino que son desplegados en la pantalla LCD.
85
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Opción “7”: Ordenar Códigos de Barras. "0" + "6" + "7"
BOTTOM = 00
TOP = NoBC - 1
Multiplicar: Dirección = BOTTOM X 8
Leer Código de Barras
Multiplicar: Dirección = TOP X 8
NO
Posición Vacia?
SI
FIN
Leer Código de Barras
NO
@TOP < @BOTTOM
SWAP (@TOP, @BOTTOM)
TOP = TOP - 1
@TOP = @BOTTOM
SI
BOTTOM = BOTTOM +1
Diagrama 5.3.18: Ordenar Códigos de barras.
Una vez ingresados todos los códigos de barras en la base de datos utilizando la instrucción “Ingresar Código de Barras” y antes de poder asegurar que la función “Buscar Artículo por Código de Barras” funcionará correctamente, es necesario organizar de menor a mayor todos los códigos de barras presentes en memoria. Para ello esta función utiliza una variante del algoritmo de burbuja para colocar todos los valores en el orden deseado. Cada vez que sea ingresado un nuevo código de barras a la base de datos es necesario repetir esta
86
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
función para organizar nuevamente el arreglo. Anteriormente esta función se encontraba incluida en el comando “ingresar código de barras” es decir, que cada vez que generaba una nueva entrada la lista esta se organizaba automáticamente, esto probó ser muy útil mientras el tamaño de la lista era pequeño, pero a medida que aumentaba en número la instrucción de la misma manera incrementaba su tiempo de ejecución, para agilizar el proceso se decidió separar ambas funciones en comandos diferentes y correr el comando de ordenar una vez que todas las entradas hayan sido realizadas. Clave “2”: Seleccionar Modo. "2" + "MODO"
¿MODO en Rango?
NO
SET CARRY
SI
Escribir Hora y Fecha
CLEAR CARRY
FIN
Diagrama 5.3.19: Seleccionar Modo.
Utilizando esta función el usuario puede definir el modo de venta en el que desea que opere la balanza, “0” para punto de atención y “1” para punto de venta son los valores permitidos. El modo seleccionado es almacenado en una dirección de memoria vacía dentro del MAP.
87
OPERACIÓN SISTEMA BALANZA – PUNTO DE VENTA MODO CONFIGURACION
Clave “3”: Cambiar Password. "3"
Ingresar Password:
Confirmar Password:
NO
¿Iguales?
SI
Escribir Password
FIN
Diagrama 5.3.20: Cambiar Password.
Al recibir CLAVE = “3” la balanza espera por el ingreso del nuevo password y su siguiente confirmación, en caso que ambos ingresos sean iguales el valor de la clave anterior será sobrescrito, el función no finalizará hasta que haya coincidencia entre la contraseña y su confirmación.
88
CAPITULO 6 METODOLOGIA Y PROCEDIMIENTOS
METOLOGÍA Y PROCEDIMIENTOS A lo largo de este capítulo se exponen los pasos seguidos durante el desarrollo del proyecto, así cómo los criterios utilizados para atacar el problema planteado atendiendo a cada uno de los objetivos propuestos desde el inicio del proyecto de pasantía.
6.1 LA TARJETA MAX 7 Cómo se explico en apartados anteriores el sistema balanza – punto de venta fue dividido en módulos para explicar de manera más clara su funcionamiento e interacción entre ellos. Sin embargo antes de iniciar el desarrollo del proyecto fue necesario adquirir un mayor nivel de familiarización con el microcontrolador AT89C55 y cada uno de los dispositivos presentes en la tarjeta.
6.1.1 Hardware Previo al proceso de programación y pruebas se hizo necesario lograr un mayor nivel de familiaridad con la tarjeta, con cada uno de sus componentes y principalmente con el microcontrolador AT89C55, para ello se consultaron los datasheet disponibles. En su mayoría, lo dispositivos presentes en esta tarjeta se alimentan con ±5 V, a excepción de los conversores 238 que se alimentan con ±15 V. Cada uno de los puertos disponibles en tarjeta fueron identificados y se hizo uso del esquemático del MAX 7 para comprender de mejor manera sus procesos internos, lo mismo se hizo con las memorias EEPROM y RAM.
6.1.2 Software Con estos conocimientos a nivel de hardware fue posible iniciar el estudio del manejo del chip AT89C55, la configuración de sus registros, los módulos internos disponibles, la velocidad de procesamiento, los espacios de memoria, todas las características fueron analizadas y se estableció conformar una serie de librerías que permitieran manejar cada dispositivo presente en la tarjeta. La idea principal fue constituir una especie de sistema operativo con funciones básicas en cada librería que permitieran generar nuevas funciones de nivel más alto que hicieran uso de las instrucciones básicas. A continuación se presenta y explica el orden en que fueron desarrolladas las librerías del programa principal. Para lograr
89
CAPITULO 6 METODOLOGIA Y PROCEDIMIENTOS
programación del micro se contaba con un dispositivo que permitía grabar el programa desarrollado en un editor de lenguaje assembler. Librería LCD La primera en ser desarrollada, se hizo necesario consultar el set de instrucciones básicos interno de la pantalla, entre ellos se encuentra escribir un caracter, borrarlo, ir a posición, etc. Cada una de las funciones dentro del set básico fueron implementadas y probadas enviando instrucciones a la pantalla, utilizando el set básico disponible se constituyeron nuevas funciones como escribir cadenas de caracteres y backspace. Una vez probadas todas las funciones dentro de la librería se les colocó el prefijo lcd_funcion a cada una de ellas para identificarlas como pertenecientes a la librería LCD. Librería SERIAL Con las funciones lcd disponibles, se continuó con la transmisión serial de la tarjeta a una PC. Se implementaron funciones que permitieran configurar la tasa de transmisión así cómo el puerto de la tarjeta a utilizar. Inicialmente se realizaron pruebas para tasas de 9600, 4800 y 2400 Baud; el programa Hyperterminal sirvió como interfaz con la PC, primero de hicieron pruebas sencillas que implicaban la transmisión y recepción de un solo byte, luego se conformaron rutinas más complejas que manejaban cadenas de bytes. En este punto fue necesario tomar la decisión de manejar los datos ingresados por puerto serial mediante rutinas de interrupción o por consultas sucesivas, se prefirió la primera opción pues permite al micro realizar otras tareas e interrumpirlas cuando ocurra una recepción de datos. Conocimiento que cada tarjeta debe poseer una identificación particular dentro de la red se implementaron funciones de recepción que permitiera identificar si la cadena de datos entrante se encuentra destinada a la tarjeta (ID), en la misma instrucción fue incluida una rutina de detección de errores checksum (CHK). STX
ID
DATA
ETX
CHK
Figura 6.1 Formato de Trama
Probadas todas las funciones se realizaron programas de pruebas que incluyeran funciones de las dos librerías disponibles hasta el momento, programas que permitieran desplegar en
CAPITULO 6
90
METODOLOGIA Y PROCEDIMIENTOS
pantalla LCD las cadenas de datos recibidas por el puerto serial fueron algunas de ellas. Esto se hizo con el fin de garantizar que no existieran conflictos entre el manejo de posiciones de memoria de cada librería. Las funciones presentes en esta librería tienen la forma serial_función. Librería I2C La librería I2C contiene las funciones que permiten realizar lecturas y escrituras en las memorias EEPROM de la tarjeta. Las funciones aquí incluidas requieren ser muy exactas en cuanto a lapsos de tiempo de espera durante los accesos a memoria. Se implementaron rutinas que generan las señales de INICIO y PARADA necesarias para los procesos de escritura y lectura, así como funciones más avanzadas que permiten ingresar o extraer un byte o cadenas de ellos. Para poder probar debidamente cada una de las funciones se utilizaron rutinas de las otras dos librerías disponibles, una de ellas recibe una cadena de datos por puerto serial, la escribe en las memorias EEPROM y luego las lee para finalmente desplegar la lectura en la pantalla LCD. Este tipo de rutinas permitió ir conformando una plataforma sólida en la que cada adición a las librerías logrará acoplarse debidamente a las rutinas existentes sin generar conflictos de ningún tipo. A las funciones aquí incluidas se les colocó el prefijo i2c_función. Librería MATH Las rutinas incluidas en esta librería permiten realizar operaciones aritméticas, cómo suma, resta, multiplicación, división, conversiones; y lógicas, cómo mayor que, menor que, igual que. Dado que durante el proceso de venta es necesario manejar montos de unos 4 bytes o más, es necesario tener a mano una librería que permita calcular de forma exacta cada operación aritmética. Procediendo de forma similar que para las otras librerías las rutinas math se probaron por separado y luego en conjunto con el resto de las funciones. Librería KEYBOARD Esta librería posee rutinas que permiten inicializar el teclado PS/2 así como interrogar por tecla presionada. Adicionalmente las funciones de reconocimiento de teclas requieren de una tabla previamente grabada en memoria en donde figura el valor de cada scancode que
91
CAPITULO 6 METODOLOGIA Y PROCEDIMIENTOS
identifica a las teclas. Con esta librería disponible se cuenta ahora con una interfaz tarjeta usuario más dinámica y visual. Librería KEYPAD Esta librería consta de una sola función que permite buscar e identificar las teclas presionadas en el teclado matricial, el cual se ha pensado cómo una alternativa al teclado PS/2 al momento de ingresar data a la tarjeta. Librerías Buffer y Delays Estas dos librerías se desarrollaron al final pues constan de rutinas cortas y sencillas que sirven cómo complemento de algunas funciones incluidas dentro de otras librerías. La librería buffer permite manipular data existente en el buffer interno del programa; delays cómo su nombre lo indica posee rutinas que generan retardos de diversos lapsos de tiempo.
6.2 LA BASE DE DATOS Teniendo en cuenta el espacio de memoria que provee el arreglo de memorias EEPROM incluido en la tarjeta, fue posible establecer el tamaño de las base de datos de cada uno de los renglones, producto, códigos de barras, descriptivos y teclas. Siguiendo recomendaciones de la compañía se estableció la longitud estática de cada reglón de la siguiente forma:
Renglón Longitud Producto 32 Código de Barras 8 Descriptivo 128 Tecla 3 Tabla 6.1: Longitud de renglones
Contando con estas longitudes se fijaron los valores de los campos incluidos en cada uno de los renglones. De esta forma quedaron establecidas dentro del renglón productos la longitud de los campos cómo se muestra a continuación:
92
CAPITULO 6 METODOLOGIA Y PROCEDIMIENTOS
Campo Longitud PLU 2 Tipo 1 Nombre 20 Precio 4 Caducidad 1 Indice 2 Vacío (N/C) 2 Tabla 6.2: Longitud campos. Renglón productos
Para el renglón código de barras: Campo
Longitud
PLU 2 Código de Barras 6 Tabla 6.3: Longitud Campos. Renglón Códigos de Barras
Para los descriptivos: Campo
Longitud
PLU 4 Descriptivo 1 20 Descriptivo 2 20 Descriptivo 3 20 Descriptivo 4 20 Descriptivo 5 20 Descriptivo 6 20 Vacío 4 Tabla 6.4: Longitud Campos. Renglón Descriptivos
Y para las teclas. Campo Longitud PLU 2 Tecla 1 Tabla 6.5: Longitud Campos. Renglón Teclas
Divida de esta forma y conociendo tanto las longitudes de los campos cómo de los renglones, fue posible mapear la memoria total de la base de datos. Las dos primeras EEPROM se utilizaron para almacenar los renglones productos, la tercera para códigos de barras y teclas, y la cuarta para los descriptivos. Para poder direccionar todas las posiciones de memoria dentro del arreglo se cuentan con 3 bytes de dirección: el primero especifica el número de la memoria, el segundo la página y el tercero la posición. Una vez mapeada la memoria de base de datos fue posible definir el set de instrucciones avanzadas.
CAPITULO 6
93
METODOLOGIA Y PROCEDIMIENTOS
Los renglones producto, tecla y descriptivo se organizaron en arreglos ordenados según el valor del campo PLU. Para ilustrar mejor el criterio de orden conviene hacer una analogía con un estacionamiento en el que cada automóvil posee su puesto ya asignado, si se considera que cada automóvil con placas PLU representa un renglón y cada puesto el espacio de memoria reservado, entonces se puede comprender la relación directa entre el puesto y las placas. Esto quiere decir que es probable encontrar espacios vacíos dentro del arreglo de artículos. Otra situación se presenta para los renglones códigos de barras, debido a que los barcode son números aleatorios de gran magnitud que no guardan relación alguna con el PLU del producto, un proceso de búsqueda de un artículo por código de barras implicaría un algoritmo de búsqueda secuencial que para listas con gran número de elementos tomaría un tiempo de ejecución muy largo. Una de las finalidades principales del sistema es realizar de forma rápida los procesos de venta, en consecuencia no es aceptable una rutina de búsqueda que retrase en gran medida dicho proceso. Fue convenido entonces organizar los renglones código de barras en orden ascendente según la magnitud del barcode, para así poder emplear el algoritmo de búsqueda binaria.
6.3 LAS FUNCIONES AVANZADAS Este conjunto de instrucciones tienen como principal finalidad otorgar capacidad al sistema de realizar cambios en la base de datos de la tarjeta, de hecho la mayoría de las funciones incluidas requieren realizar una escritura o una lectura de la memoria del MAP. Las instrucciones se dividieron por su función en CLAVES, OPCIONES y DATAS, combinaciones de estos tres valores de un byte de longitud indican al sistema cuál de las funciones avanzadas se está llamando. Las primeras funciones desarrolladas fueron las correspondientes a manejo de artículos ó CLAVE “0”. Una vez operando correctamente se ingresaron pequeñas bases de datos con artículos ficticios, para luego ser consultadas probando el funcionamiento de las funciones de peticiones de artículos. Se considerados cómo caso críticos los artículos con PLU 0000, 2047, 2048 y 4095; esto dado que las posiciones de memoria reservada para ellos se encuentra al inicio y final de las memorias 0 y 1 respectivamente, la pruebas hechas con estos PLUs en
CAPITULO 6
94
METODOLOGIA Y PROCEDIMIENTOS
particular permitió determinar que el ingreso de renglones artículos maneja 32 bytes de longitud cómo se había estipulado. Las funciones bajo CLAVE “1”, “2” y “3” se desarrollaron en ese orden siguiendo el mismo procedimiento de pruebas para descartar accesos inválidos a memoria o lazos infinitos.
6.4 LA BALANZA La tarjeta se diseñó para manejar dentro de su base de datos tanto productos pesados como no pesados, para los no pesados el factor que multiplica al precio unitario puede ser ingresado mediante el uso de cualquiera de los dos teclados disponibles. Sin embargo cuando el producto requiere una medición de su peso es necesario integrar a la tarjeta un dispositivo que permita realizar tal medición. El modelo de balanza suministrado por la compañía fue una del tipo “sencilla” V3 ABS con puerto serial incluido. Aunque este modelo posee un puerto serial ya incluido este se encuentra configurado para entender una sola instrucción llamada interrogar peso. El fabricante especifica las características de operación de la balanza, el rango de peso aceptado, duración de la batería, tasa transmisión y recepción por puerto serial, entre otras. El puerto serial de la balanza trabaja a 2400 Baud, al recibir el carácter “a” responde con una cadena de 5 bytes en formato ASCII indicando el peso en orden invertido. Para poder interrogar la balanza y obtener el peso con los dígitos en el orden correcto de manera automática se implemento una función que requiere llamar instrucciones de las librerías Serial y Buffer.
6.5 MODOS DE OPERACION Contando con las funciones avanzadas implementadas que permiten el acceso a la base de datos y manejando de forma correcta los periféricos y la balanza, se inició el desarrollo de un programa principal que permitiera al sistema completo constituir el sistema balanza – punto de venta. El programa principal se dividió en tres grandes módulos, uno para cada modo de operación. El modo punto de atención fue el primero en ser desarrollado, los mensajes en pantalla, las consultas a la base de datos, el ingreso de data por los teclados todos estos procesos se utilizaron para otorgar a la combinación tarjeta – balanza el comportamiento correspondiente a este modo de venta. Para evitar conflictos al momento de integrar los modos de operación en
CAPITULO 6
95
METODOLOGIA Y PROCEDIMIENTOS
un solo programa se delimitaron espacios de memoria de programa para las variables locales de cada modo. Manteniendo un criterio similar se desarrolló el segundo modo, configuración. Por último se continuó con la programación del tercer modo, punto de venta.
6.6 INTEGRACION Con las tres modalidades de operación probadas de forma separada, se procedió a integrarlas en un programa único que maneja las tres. Se implementó una rutina de inicio donde se identifica el modo de operación predefinido por el usuario. Las pruebas consistieron en manejar cada uno de los modos integrados en el programa principal, los mismos ensayos hechos para los programas por separado se repitieron para cada modo ahora dentro del programa principal. Se sometió al producto a continuos ingresos de data inválida para poder identificar aquellos puntos en los que el programa no ofrecía rutinas de control de errores adecuadas.
RESULTADOS Y DISCUSION
96
RESULTADOS Y DISCUSION La metodología aplicada para el desarrollo del proyecto originó una serie de resultados que permiten evaluar desde un punto de crítico los pasos escogidos para la resolución del problema planteado. Las impresiones obtenidas de esta evaluación son parte de un proceso de discusión de resultados que busca resaltar los aciertos y en mayor medida los desaciertos de la metodología seleccionada. El sistema balanza – punto de venta operando bajo cualquiera de sus tres modalidades logra ofrecer al usuario una interfaz sencilla que facilita en gran medida el proceso de venta, esto infiere que los periféricos para el intercambio de datos usuario – balanza se seleccionaron correctamente. La capacidad del sistema para recibir data por cualquiera de los teclados en los modos de venta ofrece dos alternativas que funcionan de manera independiente en caso de que una de ellas presente problemas de avería. El modo de configuración se puede manejar por teclado PS/2 o por puerto serial, se a descartado el uso del teclado de matriz por la limitante que solo permite ingresar data numérica; es decir, que para este modo de operación se mantiene la misma ideología de ofrecer dos vías de ingresos de datos, sin embargo se requieren rutinas que no permitan el uso ambas en forma paralela ya que pueden generar perdida de datos. Las funciones de alto nivel pueden ser llamadas desde el modo configuración mediante el uso del teclado sin embargo el manejo de este modo localmente es algo engorroso y complicado para personas no familiarizadas con el set de instrucciones, por lo que es preferible manejarlo haciendo uso del servidor con un programa de alto nivel que cuente con una interfaz más visual y sencilla. El comunicación mediante la transmisión RS 485 permite el intercambio de datos a una velocidad de 4800 Baud, aunque teóricamente este tipo de transmisión soporta distancias considerables sin degradar la comunicación, las pruebas para distancias mayores de 2 metros aún no se han realizado. Los mensajes codificados intercambiados permiten al servidor reconocer las identificaciones del cliente, vendedor y producto incluidas en la cadena de byte, utilizando esta codificación es posible centralizar los datos de los artículos vendidos por cada balanza en una PC. Antes de llegar al producto final se requiere implementar un programa de alto nivel que permita al servidor manejar la base de datos compartida con las balanzas,
RESULTADOS Y DISCUSION
97
distribuir las cadenas de datos recibidas bajo el número de cliente así como controlar el tráfico en el bus de datos otorgando ventanas de tiempo para la interrogación de cada estación. Los productos pueden ser consultados ingresando sus respectivos PLUs, Código de barras o tecla de acceso directo de forma rápida y eficiente. Añadir un lector de código de barras CCD aún no se ha logrado por lo que por los momentos los códigos de barras son ingresados por teclado PS/2 o matricial. Las funciones de acceso a memoria permiten el acceso a la data dentro de la base de datos, el mapeo hecho en el espacio de memoria proporcionado por el MAP facilita en gran medida la búsqueda de artículos y sus campos almacenados en memoria. Sin embargo las pruebas realizadas contienen un universo de productos mucho menor a los tamaños de base de datos manejados en la práctica real, lo que sugiere realizar nuevos ensayos en los que el número de artículos sea similar al real para de esta forma descartar por completo posibles errores de acceso a memoria. La decisión de dividir el programa principal en librerías dedicadas al manejo de sus periféricos y memorias permitió ubicar de manera más rápida y eficiente los errores de programación en los que se incurría así cómo realizar cambios para optimización durante el proceso de programación, las continuas pruebas hechas a cada librería de forma individual y en conjunto a medida en que se iban finalizando evitó en gran medida futuras invasiones de memorias y variables entre sus rutinas. El set de instrucciones obtenido probó ser muy útil para la aplicación balanza – punto de venta, aun más, la forma en que se encuentran organizadas las librerías permiten que sean utilizadas para otra aplicaciones de la tarjeta MAX 7, lo que se traduce en ahorro de tiempo a la hora de desarrollar programas para futuros proyectos que requieran del uso de la tarjeta.
CONCLUSIONES Y RECOMENDACIONES
98
CONCLUSIONES El modelo del micro utilizado AT89C55 funciona de forma satisfactoria, la división en librerías de las rutinas básicas y las más avanzadas permitió generar un programa principal residente menos extenso y más manejable, sin embargo editar un código en lenguaje ASSEMBLER de tal magnitud requiere de un gran esfuerzo mental, más aun cuando se encuentran disponibles editores de programa que permiten el manejo de lenguajes de mayor nivel. La comunicación por puerto serial utilizando transmisión RS 485 parece la más apropiada para la interconexión multipuntos servidor – balanzas, identificar cada terminal con un número particular facilita el control del flujo de la data en el bus bidireccional, sin embargo se hace necesario utilizar un método de detección de errores como medida de seguridad. La tasa de transmisión de datos balanza – servidor a 4800 Baud, recurrir a una velocidad de transmisión mayor implica reducir los tiempos de envío y recepción así como la longitud máxima de los cables, por lo que se hace recomendable identificar los casos en los que la distribución física del lugar permita este compromiso. La base de datos de los artículos contiene en ella datos claves para la venta de cada producto, el acceso rápido a esta información permite agilizar en gran medida el despacho de producto. Delimitando los campos en longitudes estáticas facilita en gran medida la búsqueda de información, sin embargo, y aunque su aplicación requiere de mayor desarrollo a nivel de programa, manejar las longitudes de los campos en forma dinámica puede permitir un mejor aprovechamiento del espacio ofrecido en el MAP.
CONCLUSIONES Y RECOMENDACIONES
99
RECOMENDACIONES En cuanto al empleo del micro chip AT89C55, cuya relación costo/operación lo establece cómo una buena opción, existe un nuevo modelo denominado AT89C55WD que incluye un contador interno o WATCH DOG que al implementarlo evita que la ejecución se mantenga en lazos infinitos. Este módulo puede ofrecer un método alterno de seguridad ante los saltos infinitos o accesos a direcciones inválidos. Es recomendable analizar las características que ofrece el puerto USB como medio de intercambio de data en cuanto velocidad de transmisión y robustez antes el ruido. Estudiar los conocimientos necesarios para manejarlo adecuadamente podría ofrecer una solución más eficiente para realizar la interconexión balanza – periféricos y servidor – balanza. Cómo se comento en la sección anterior el empleo de un editor de código de mayor nivel facilitaría en gran medida el manejo del programa principal y agilizaría de forma significativa el proceso de programación.
REFERENCIAS BIBLIOGRAFICAS
100
REFERENCIAS BIBLIOGRÁFICAS •
Algoritmos de Búsqueda Disponible en
http://www.algoritmia.net Enero 2004 •
Algoritmos de Ordenamiento Disponible en
http://c.conclase.net/orden Diciembre 2001 •
Introduction to RS 422 & RS 485 Disponible en
http://www.hw.cz/english/index.html Diciembre 1998 •
PS/2 Mouse/Keyboard Protocol Disponible en
http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/keyboar.html Mayo 1999 •
SEDRA, A y SMITH K., “Microelectronic Circuits”, Oxford University Press, New York 1998.
101
APENDICES
APÉNDICES Incluidos en formato digital dentro de la capeta APENDICE en el CD anexado.