UNIVERSIDAD AUTONOMA METROPOLITANA. UNIDAD IZTAPALAPA. CIENCIAS BASICAS E INGENIERIA. DEPARTAMENTO DE INGENIERIA ELECTRICA. REPORTE PROYECTO TERMINAL II. ANALIZADOR DE ESTADOS LOGICOS. ASESOR. M. EN C. AGUSTIN SUAREZ FERNANDEZ. REALIZARON. LICENCIATURA. LOPEZ GONZALEZ 94214578 ITZEL. NORA RUlZGAISTARDOENRIQUEESAU923231 AGUILAR QUIROZ SALVADOR. 9431 6548 RlBAZARATENESTORAARON.94317485 56 ELECTRONICA ING. COMPUTACION. EN 11 DE NOVIEMBRE DE 1999 Resumen El principal objetivo de este proyecto es el poner en práctica los conocimientos adquiridos y durante la carrera e implementar in analizador de estados lógicos utilizando una PC y una tarjeta de adquisición lomásadecuada posible, inicialmente se presentan las diferentes opciones, para su desarrollo. Después de analizar esas opciones, se optó por utilizar una tarjeta de adquisición de National Instruments, la PCI-DIO-32HS. Consideramos que la utilización de esta tarjeta y una computadora personal permitiría el rápido desarrollo de un aparato sofisticado y costoso comoloes un analizador de estados lógicos. Debido a que ésta Institución no contó en su momento con los recursos económicos suficientes para adquirir esa tarjeta. En su lugar se utilizó la PCI-MIO-I6E1, ésta esde un propósito más general que la tarjeta seleccionada originalmente. Este cambio limitó, demanera notable, la velocidad de adquisición y elnúmerode canales disponibles, sin embargo el objetivo principal se mantenía. A pesarde estas limitaciones, este proyecto nos permitió aplicar nuestros conocimientos en distintas áreas como son: circuitos analógicos, diseño de circuitos digitales, programación de hardware a bajo nivel y programación orientada a objetos. Esta última, una de las formas más naturales de programación, fue la que seleccionamos para desarrollar lo quepodríamos considerar como un primer intento para desarrollar un instrumento ,basado en una computadora personal. La metodología utilizada pretende, entre otras cosas, hacer sencillo el mantenimiento del sistema, ya que este representa un costo muy elevado cuando se desarrollan sistemas de gran escala. En este aspecto, como en varios otros, la programación orientada a objetos proporciona todas los herramientas necesarias para que el profesional dedicado a esta tarea pueda desarrollar una aplicación en la forma más ordenada y sencilla. También se utilizó el software manejador NIDAQ, desarrollado por National Instruments, que esmuy flexible y se acomoda perfectamente al concepto de programación orientada a objetos: Además, cuenta con librerías que fácilmente pueden ser llamadas por rutinas de alto nivel ya que son librerías DLL. Esto nos permitió desarrollar la programación, rápidamente, en un ambiente Visual adecuado para [email protected]ón se desarrolló utilizado Visual Basic, versión 5, que esuna herramienta es muy amigable y extendida, existen rutinas de prueba que National Instruments desarrolló para este lenguaje. Esperamos, que quienes estén interesados en el desarrollo de un proyecto similar encuentrenútilla información de éste reporte. El análisis está documentado, aplicando la metodología UML, que se desarrollo en el programa Rational Rose adjunto a este reporte. INTRODUCCION Un analizador lógico puede ser considerado como un osciloscopio con muchos canales. Típicamente este instrumento tiene de 16 a 300 canales. Un analizador lógico digital es uno de los aparatos de medición mas complejos que existen, ya que aplica las tecnologías mas nuevas para la medición y prueba de sistemas sumamente complejos, generalmente la mayor parte de la tecnología usada para su diseño es nueva y especifica para este tipo de aplicación. Por lo tanto, el diseño y construcción de un analizador lógico no es una tarea nada fácil. Realizar este proyecto pondrá en practica todos los conocimientos, técnicas y teorías adquiridos en trimestres pasados sobre diseño digital, analógico y programación en general. Desde el inicio, al investigar el funcionamiento y construcción de un analizador lógico, supimos que este iba a ser un proyecto extremadamente interesante, que nos ayudaría a reafirmar algunos conocimientos, al mismo tiempoquenos proveería de muchos nuevos. Se pensó en realizar un analizador lógico digital que fuera capaz de reproducir las funciones más básicas de un analizador lógico comercial. AI principio se tenía pensado realizar todo el diseño y construcción del analizador lógico, desde el diseño de los circuitos digitales y sistemas de control necesarios así como toda la programación necesaria (en lenguajes ensamblador y C). A esto se le tenían que sumar algunos contratiempos, ya que se tendría que trabajar conuna gran cantidad de integrados, ya sea en un protoboard (nada recomendable) o basándose en wire-wrap. Se observó que la mayor parte de la programación tendria que ser en lenguaje ensamblador. AI tomar en cuenta estos y algunos otros detalles, llegamos a la conclusión de quedos trimestres no bastarían para llegar a ver nuestro analizador lógico funcionando. Nuestra meta desde un principio era que el analizador fuera un paquete mas de software de una PC, que simplemente se le conectara la tarjeta de adquisición a una ranura de la computadora, se cargara el programa para ambiente Windows, y listo, el usuario tiene un analizador lógico basado en una PC. Viendo el problema y el objetivo que se tenia planeado, decidimos que era mejor seguir por otro camino. ¿Quit otras opciones teníamos? Podíamos: 1) Usar un puerto de la computadora (COMI, LPTI, etc.). (Cuya velocidad de adquisición nos limitaría alos KHz). 2) Usar una Tarjeta de Adquisición de propósito General. ( J ) El objetivo principal de este proyecto es el de diseñar un analizador de estados lógicos de bajo costo, para esto se propuso en un principio obtener una tarjeta de adquisición digital con una velocidad y numero de canales apropiados para hacer de este instrumento útil. Para el desarrollo de este proyecto se contaban con diferentes opciones para su análisis y desarrollo, por ejemplo el métodode moderno,métodos análisis y diseño estructurado orientados por la información, entre otros. Sin embargo optamos por el método deanálisis y diseño orientado a objetos. ¿Porqué objetos? El enfoque de orientación a objetos, es una forma de observar la realidad que permite al diseñador abordar todo tipo de problemas de una manera clara y esquematizada siguiendo un orden y disminuyendo la complejidad del problema. El mantenimiento de un sistema suele ser lo más costoso del mismo, por lo que es importante tomar en cuenta este factor para el desarrollo del sistema. La programación orientada a objetos facilita el mantenimiento de los sistemas debido a que cada objeto cumple una tarea especifica y su funcionamiento es independiente delfuncionamiento de otros objetos que componen al sistema. Lastécnicas orientadas a objetos están bien definidas y permiten crear documentación clara y sin ambigüedades, este es un aspecto importante para el desarrollo de los sistemas actuales. La OOP (Object Oriented Programming) facilita el trabajo en equipo, permitiendo que cada participante tenga una idea clara del alcance del sistema. Así, con la ayuda de la documentación cada participante realiza la programación de una tarea especifica que bien puedeser un objeto. La tarjeta que se utilizo es laPCI-MIO-I6E1 de National Instruments, la cual cuenta con 16 canales analógicos con una velocidad máxima de muestreo de 500 KHz para un solo canal, la velocidad de muestreo es inversamente proporcional al numero de canales a muestrear. En forma digital,la tarjeta cuenta con 8 canales conuna velocidad dehasta IOKhz, frecuencia muy baja para ser usado como analizador digital. Para el desarrollo del proyecto, en cuanto a software como apoyo se utilizó el NIDAQ versión 6.0 que es un software proporcionado por National Instruments y que viene junto con latarjeta. Como herramienta de desarrollo se utilizó Visual Basic versión 5.0, que es la herramienta para programación de Windows más sencilla con la que disponemos, además de que latarjeta cuenta con librerías desarrolladas para esta herramienta. Investigamos que tipos de tarjeta de adquisición existen en el mercado, para encontrar unaque cubriera nuestras necesidades. Así llegamos a la tarjeta de adquisición digital PCI-DIO-32HS de National Instruments. La 6533 (DIO-32HS) es unainterface paralela de E/S de alta velocidad de 32-bit para computadoras PCI, PXI, Compac PCI, PCMCIA, e ISA. El 6533 incorpora el ASIC DAQ-DIOde National Instruments, una interface de32 bits de E/S de propósito general, específicamente diseñada para dar un alto rendimiento en la medición de sistemas digitales. La PCI-DIO-32HS es una tarjeta de adquisición completamente sin switches o jumpers, es decir se configura automáticamente al conectarla a la PC -Tecnología Plug and Play-. El chip DAQ-DIO provee de dos digitales, generaciónde canales independientes de salidas y entradas patrones y comunicaciones.Cada canal ofrece las siguientes funciones: - Selección de varios anchos de palabra (8, 16 o 32 bits). - FIFO con capacidad para 16 muestras. - Contadores de 16 y 32 bits para el tiempo base y generación de intervalos, con una resolución máxima de 50 ns. - Un controlador de comunicaciones que implementa seis flexibles protocolos de comunicación. - Detección por disparo y detección digital de patrones. - 24 mA de salida estándar. - Histéresis y terminación de líneas basadas en diodos para todas las entradas. Con la DIO-32HS1 uno puedeusar su computadora comoun probador digital de E/S, un analizador lógico digital, o un controlador de sistema para pruebas en laboratorios, producción, y monitoreo y control de procesos industriales. LaPCI-DIO-32HS contiene la interface llamada MITE PC1 desarrollada por National Instruments. La interface MITE PC1 6533 desarrolla mediciones sobre uno o varios grupos de canales, hace generaciónde señales y transferencia de datos a altas velocidades gracias a ungran velocidades rangode protocolos decomunicación cerca de los 76 Mbyteds (PCI).Unopuede a operar las 32 líneas individualmente en una entrada simple, o como puertos de 8, 16, o 32 bits para la generación de modelosy comunicaciones. Se hizo una investigación muy completa sobre como se trabaja con esta tarjeta, la forma de programarla y configurarla, y se observo que si se podía contar con una tarjeta de adquisición de este tipo, la meta fijada podía ser alcanzada, esto es, un analizador lógico de bajo costo, basado en una PC corriendo en una ambiente Windows. Descubrimosque existen muchas opciones de dondeescogercuando se programa una tarjeta de adquisición como esta. Uno tiene a su disposición vía Internet paquetes desarrollados por National Instruments como LabVlEW, LabWindows/CVI, Components Works, o NI-DAQ. Este ultimo se otorga gratuitamente a cualquier persona que adquiera esta o cualquier otra tarjeta de adquisición construida por National Instruments. Component Works, LabView, o LabWindowslCVl Ambiente Convencional de Programacion Softwaredel Controlador NI-DAQ Hardware de Adquisición Computadora Personal Este posee una extensa librería de funciones que uno puede llamar desde un ambiente de programación. Estas funciones incluyen rutinas para entrada analógica (Conversión AID), adquisición de datos al buffer (conversión AID de alta velocidad), salida analógica (conversión DIA), generacióndeondas D/A síncrona), entrada y salida digital, operaciones con contadores (conversión y temporizadores, SCXl (Tecnología desarrollada por National Instruments), RTSl (Real Time System Integration), calibración, comunicación, y adquisición de datos a memoria extendida. NI-DAQ posee funciones de E/S de alto nivel para mayor facilidad de programación y funciones de E/S de bajo nivel para obtener mejor ejecución y flexibilidad. Ejemplos de funciones de alto nivel escribir datos al disco o adquirir un cierto número de datos. Un ejemplo deunafunción de bajoniveles escribir directamente en los registros de latarjeta de adquisición. NI-DAQ también direcciona computadora y internamente muchas el hardware de de las tareas entre la adquisición como programación la de interrupciones y controladores de DMA. NI-DAQ mantiene una constante interface de software de tal manera que uno puede cambiar de plataforma con solo hacer unos pequeños cambios en el código. Usando lenguajes de programación convencionales o el software de National Instruments, la aplicación siempre usará el software manejador NI-DAQ,como se ilustra a continuación, Las librerías de funciones para Windows de NI-DAQ son DLL’s, lo que significa que las rutinas deNI-DAQ no son ligadas dentro de los ejecutables de la aplicación. Solo la información acerca de las rutinas es almacenada en los ejecutables. Las libreríasimportadascontieneninformación DLLexportadas.Estasindicanlapresencia acerca de las funciones de la y localizaciónde la rutinas DLL. Dependiendo de las herramientasde desarrollo que se utilicen, uno puede mandar información a las rutinas DLL a través de librerías importadas o de declaración de funciones. Usar prototipos de funciones es una buena practica en la buena programación. Este es elmotivo por el cualNI-DAQ esta empaquetado con archivos de funciones prototipo para diferentes herramientas de desarrollo para Windows. Todo esto, hacía bastante interesante este enfoque, sin embargo no todo salió como se planeaba. El principal (y gran) problema fue el financiamiento de este proyecto.Debido a que la tarjeta de adquisición PCI-DIO-32HS tiene un precio aproximado de 900 U.S.D. no nos fue posible que se nos otorgara el dinero para su adquisición, lo que hizo por un momento que empezáramos a pensar de nuevo en nuestraantiguaopciónde construir todos los circuitos y dejar un proyecto inconcluso. Sin embargo se encontró otra opción que apesar de no ser la optima era lo bastantebuena como para considerarla. Senos facilitó el uso de la adquisición PCI-MIO-16E-1 de National Instruments, lacual tarjeta de es unatarjetade adquisición cuya función principal es la adquisición de señales analógicas, lo cual en realidad no era un inconveniente demasiado importante, por tanto aceptamos gustosos la oferta y comenzamos a trabajar. La PCI-DIO-16E-1 posee 16 canalesde adquisición analógica, Io cuales un número bastante aceptable, el Único inconveniente es la velocidad a la que son capaces de adquirir datos, ya que con tan solo 500 KHz dividido entre el numero de canales muestreados, se convierte en un inconveniente de importancia para la medición de circuitosdigitales veloces. Esta tarjeta realiza en realidad cual la hace una herramienta muchas funciones de adquisición analógica, lo muy poderosa en aplicaciones de esta indole, es decir, vale loque cuesta. AI ver las características queposeía vimos queera posible adaptarnos y trabajar con ella, ya que esto nos aportaría mas ventajas que desventajas. La tarjeta también posee 8 canales de adquisición digital, los cuales en realidad sonmuchomas lentos que los analógicos, contan solo una velocidad de adquisición de máximo 900 Hz. A pesar de esto, contar con una tarjeta del mismo fabricante nos familiarizó con el funcionamiento y programación de dichas tarjetas, ya que como se mencionó anteriormente, el software de desarrollo para todas las tarjetas de National Instruments es el mismo,solo cambian las funciones que puede desempeñar cada tarjeta. El poseer dicha tarjeta fue de vital importancia, y se hace énfasis en este punto, ya que se demostró que fácilmente se puede crear un analizador lógico usando una tarjeta de este tipo, y que un analizador bajo un ambiente Windows de bajo costo era posible, llegando a un resultado aceptable usando una tarjeta que no era la adecuada. Por tanto se logró lo que se tenía planeado implementando a baja velocidad todas las funciones que se tenían pensadas al inicio de proyecto. DIAGRAMA A BLOQUES DELA PROGRAMACION DEL ANALIZADOR LOGIC0 UAM12000 (NIVEL 1). A continuaciónsepresentauna serie de diagramas debloque que explican detalladamente como es que funcionay esta programado el analizador lógico. El usuario introduce los parámetrosde configuración necesarios para lacaptura. Se programa la tarjeta con los parámetros obtenidos del usuario y se capturan los datos en unbuffer. Se presentan en pantalla los datos capturados en varios formatos. Diagrama a bloques dela programación de la configuración de la entrada. rConfiguración de los' parámetros de medición. Configuración Analógica P Numero de canales a muestrear. P Velocidad de muestreo. > Numero de muestras a almacenar. > Voltaje de umbral. Palabra de disparo. Digital "r Numero de canales a muestrear. > Numero de muestras a almacenar. G Palabra de disparo. > Archivo con parámetros de configuración Diagrama a bloques del proceso de captura de datos. Captura de datos Captura Analógica O Numero de canales > Numero de canales muestreados > Velocidad de muestreo. > Numero de muestras almacenadas. P Voltaje de umbral. P Palabra de disparo. muestreados. O Numero de muestras almacenadas. O Palabra de disparo. Buffer de datos analógicos Buffer de datos digitales. Conversión: Datos digitales. Datos Analógicos + Diagrama a bloques delproceso de visualizaci6n de resultados e impresi6n de los mismos n Buffer de Datos Digitales Gisualización’ formato decimal. r 1 %sualizacion\ formato 1 r r Imtxesión. 1 1 Documentación del desarrollo de software. Existen diferentes metodologías para análisis y desarrollo de sistemas. Existen en estos momentos aquellas quese basan en lamodularidady aquellas que se basan en el“Paradigma de objetos” como las mas conocidas. Ambos enfoques tienen ventajas y desventajas y por si mismos ninguna de estos es ideal en todos los casos. La principal ventaja del enfoque modular es su sencillez y fácil documentaciónque no consiste en otra cosa que explicar cada uno de los módulos del sistema. Estas metodológicas se basan simplemente en el principio de “divide y vencerás”. Sin embargo, estas ventajas desaparecen cuando el sistema se vuelve más complejo. En sistemas complejos el número de variables puede ser muy grande, controlar el comportamiento de estas variables se vuelve cada vez más difícil, al grado de que una modificación puede significar una inversión de tiempomayor que el mismo desarrollo inicial. Es decir, construir sistemas complejos con estas metodológicas llevepor lo general al desarrollador, a confrontar unagrancomplejidaden un sistema muy rígido haciendo demasiado costoso el mantenimiento. El enfoque orientado a objetos surge como una consecuencia de estas limitaciones. Aun que hoy en día este enfoque aun no cubre las expectativas de quienes lo apoyan,esla mejor opciónpara construir sistemas complejos que permitan un fácil mantenimiento. El desarrollo de software orientado a objetos sebasa enla manera enque nosotros vemos la realidad, en la manera que entendemos la realidad. Un sistema desarrollado bajo este conjunto de principios es un sistema que trabaja sobre la base de objetos que realizan una actividadespecifica y que se comunican entre sí por medio de mensajes, de tal manera que lo que ve un objeto de otro es solo mediante estos mensajes, lo que permite encapsular toda la complejidad de un objeto, es decir, a un objeto nole interesa como realizasulabor otro objeto, simplemente le interesa su resultado. Por otro lado la P O 0 tambiénpermite manejar los conceptos de herencia y polimorfismo. La herencia es útil principalmentepar ir creando Plantillas de objetos (Clases)cadavez más complejas reutilizando las clases que ya se tiene construidas. El polimorfismo es una herramienta elegante que permite reducir la complejidad de un sistema. Su uso se basa principalmente en clasificar los tipos de mensajes entre objetos, en vez de los objetos. Dicho de otra forma, el desarrollador debe saber el nombre del método, mas que el nombre del objeto. Así por ejemplo la instrucción “objeto.Abre” se torna común y no es necesario codificar “objetol.abre2”. Los mensajes son clasificados por la funciónque realizan. El mantenimiento de estos sistemas es más sencillo pues se trata de ir sustituyendo objetos. Lo que no afecta al sistema ensu totalidad. Siempre y cuando los mensajes sigan siendo los mismos. En la realización de este proyecto nosotros optamos por el enfoque orientado a objetos porlas ventajas que ofrece y además por que contamos conuna herramienta CASE y con un lenguaje deprogramación visual que permite el diseño orientado a objetos. La herramienta CASE que utilizamos es Rational Rose. Eta herramienta permite diseñar el sistema de una manera gráfica, siguiendo los pasos de la metodología orientada a objetos. Por otro lado permite ircreando la documentacióncaside manera automática. De tal manera que si se modifica el diseño, se modifica también la documentación. La documentación contienebásicamente las siguientes partes. 1. Uses Cases. Enunciados que describen lo que hace el sistema. 2. Diagrama de Uses Cases. Describe la manera en que interactuan las partes del sistema de manera global. 3. Descripción de las clases. Describe las plantillas de objetos que interactuan en el sistema. 4. Diagramas de colaboración. Describen la forma en que los objetos se comunican. Especificando los mensajes, los parámetros del mensaje y el tipo de respuesta si es que existe. 5. Diagramas de secuencia. Es una consecuencia de colaboraciónperointentanenfatizar mensajes. los diagramas de la secuencia en la quese dan estos PROCEDIMEINTO DE INSTALACION DEL SISTEMA. Paralainstalaciónde sistema UAM12000 esnecesario que secuentecon el siguiente equipo: Tarjeta DAQ PCI-MIO-16E-1 de National Instruments. El software NI-DAQ V.6 o superior. Generalmente viene con latarjeta. Windows 95/98. Computadora con un procesador Pentium o superior. Una ranura PC1 libre. 16 MB de memoria RAM. Para la instalación completadel sistema se tienen que seguir los siguientes pasos: 1. Instalación del software NI-DAQ de National Instruments. Inserte el CD-ROM de NI-DAQ. El sistema arrancara automáticamente el programa de instalación, solo siga los pasos que se le indican. 0 No es necesario que se instalen LAB-VIEW, LabWindows/CVI, o Component Works, solo instale los controladores de la tarjeta y el software NI-DAQ. Reiniciesu computadora. 2. Instalación de la tarjeta PCI.MI0-16E-1 Asegúrese de tener apagada su computadora Retire la cubierta de la computadora. O Extraiga cuidadosamente la tarjeta de su empaque antiestático e insértela en la ranura PC1 libre. O Coloque de nuevo la cubierta de su computadora. O Enciendala computadora y siga los pasos que le indique el sistema operativo cuando detecte la tarjeta. 3. Instalación del software UAM12000. O Inserte el disco con la etiqueta DISCOI. 0 Ejecute el programa SETUP que viene el disco. O Siga los pasos de la instalación. O Para ejecutar el programa haga doble clic sobre el icono UAM12000 del menú Inicio-Programas. MANUAL DE USUARIO DEL ANALIZADOR LOGICO. Uami2000, es un programa que le permite manipular los datos fácilmente, y con una interfaces sencillas de operar, lo primero que hay que hacer es familiarizarse con este programa, conocer cada uno de las opciones de la pantalla principal para poder hacer uso del mismo. este manual tiene como propósito de explicar clara y brevemente el manejo del programa Uami2000, ya queel programa Uami200 trabajo en ambiente Windows, se maneja igual que cualquier otra aplicación de Windows, la figura 1 muestra la pantalla principal de Uami2000 Figura 1 Pantalla principal del programa Uami2000 Para poder obtener el mayor beneficio del programa Uami2000, se debe seguir los siguientes pasos: $ $ j J 1.- Entrar al menúde configuración, yasea con el menú o el icono ....... ...' . Una vez que se llama al menú de configuración, la pantalla desplegará en la pantalla la ventanadela figura 2, esta ventana contiene los parámetrosde configuración necesarios para que Uami2000funcione. Figura 2 Opciones de configuración Unavezque se hallamado al menúde configuración las opciones son las siguientes: Configuración de captura digital Tipo de captura: esta opción permite especificar el tipo de captura que se va a realizar, si la captura es digital, la velocidad de captura es de 2000 khz por canal, y el número de canales son 8 por default, el número de muestras por canal ya están especificadas, por lo que no necesita especificar este parámetro, el voltaje de umbral es el que reconoce el dispositivo digital a analizar como un uno lógico y se refiere al límite inferior, por ultimo la palabra de disparo se refiere a la palabra cuyo valor será el que inicie la captura del a n a l i z a d...o B i c o , si este valor nunca sucede el sistema esperará el patrón y nunca comenzara la captura, si usted no escribe ningún valor en este campo, el analizador lógico comenzara la captura justo en el momento en que usted Presione en icono. Configuración de captura analógica. La tarjeta PCI-MIO-16E-1, la cual viene con el programaUami2000,puede capturar hasta 16 canales digitales con una velocidad de 2000 Khz, si se utilizan todos los canales, entonces se obtiene una velocidad máxima de khz, si se utiliza un menor numero de canales, la velocidad por canal será proporcional al numero de canales utilizados, además de que se pueden obtener hasta 256 muestras por segundo, lo que significa que por canal se obtendrán 16 muestras por segundo por parámetros también canal, los demás se pueden modificar. Uno de las posibilidades que tiene el Uami2000 es el de poder especificar la lógica que se utilizará, es decir lógica positiva o negativa. Es posible guardar los valores de configuración en un archivo, los archivos que se generan tienen una extensión CFG, estos archivos se pueden recuperar posteriormente y hacer uso de los parámetros especificados, la razón de guardary posterior mente recuperar una configuración, es la de permitir que el usuario pueda grabar los valores que mejor idea le den del sistema que este analizando. Captura de datos. Unavez especificados los parámetrosde configuración, deberáproceder captura de datos en el menúde a iniciar la captura de los datos. Nota, es importante que revise que halla hecho correctamente la conexión del dispositivo con las terminales de captura, si su dispositivo no esta correctamente conectado, el sistema le mostrará una pantalla como muestra la figura I.3, es necesario que comience desde el principio para evitarse futuras perdidas de tiempo. Figura 3 Mensaje de error de captura La captura de los datos es un proceso interno de la tarjeta que esta utilizando, estasehará configuración. de acuerdo a los parámetros especificados en el menú de Visualizar los datos numéricos obtenidos M L::..:que le permitirá abrir una pantalla similar al de la figura 4, en esta Para visualizar el análisis hecho por el analizador Uami2000, debemos presionar el botón pantalla podemos ver unalínea de búsqueda, ya sea en formato decimal, hexadecimal o binario, lo que se debe hacer es especificar la palabra quese desea, indicar el formato y posteriormente se presiona el botón Buscar, Una vez terminado de visualizar los datos deseados, se presiona el botón cerrar para continuar conla siguiente captura. Visualizar los datos gráficamente Para ver gráficamente los canales conectados a la tarjeta PCI-MIO-16E1, haga y&&j clic en el botón, i m m una vez hecho esto el programa Uami2000 le mostrará una pantalla similar a la de la figura 5. Como se puede observar, el programa Uami2000 es capaz de mostrar hasta 16 canales en el caso de una setial analógica y 8 canales en el caso de señales digitales. Impresión de los resultados numéricos y gráficos Una vez capturados los datos es posible imprimir la información numérica o las gráficas, al imprimir los datos el sistema le preguntará el numero de la muestra de inicio de impresión, es decir, el rango de muestras de datos del que desea obtener los resultados impresos, usted deberá especificar en la ventana el rango de los datos que desea imprimir, aunque el programa puede imprimir todos los datos que halla capturado (no recomendado en el caso de tener demasiados datos). Una vez especificado esto, el usuario verá en la pantalla una ventana similar a las que muestran las aplicaciones de Windows, esto para facilitar la impresión, ya sea de los datos numéricos o de las gráficas obtenidas. Véase la figura 7. Figura 7 Opciones de Impresión USO DE LOS ICONOS. CONCLUSIONES La primera parte de este proyecto (Proyecto terminal 1) tenia como principales objetivos conocer a fondo el funcionamiento de un analizador lógico, conocer las partes funcionales fundamentales de estos y proponer un diseño viable para un analizador lógico. Nuestra propuestainicial fue la de contar una tarjeta de adquisición de datos que cumpliera con los requisitos de velocidad demuestreo y depuntasdeprueba (Problemas más comunes a los que se enfrentan los diseñadores de analizadores lógicos) para que fuera integrada a una PC y así realizar la programación necesaria para realizar un analizador lógico. La tarjeta sugerida por nosotros no se logro; en cambio se nos facilito una tarjeta tambiénde adquisición de datos pero que no cubrió con los requisitos de velocidad demuestreo requeridos. Enun principio esto nosdesconcertó pues pensamos que el proyecto ya no seria realizable. La realidad fue otra, La tarjeta con la que trabajamos (PCI-MCI-O) a pesar de tener limitaciones en cuanto a la velocidad de muestreo, esuna tarjeta muy completaquecuenta entre otros detalles con adquisición tanto digital como analógica; ambas programables. En realidad los propósitos del proyecto terminal I no cambiaron en lo sustancial con el cambio de tarjeta, los objetivos siguieron siendo los mismos: Diseñar un analizador de estados lógicos. Antesde entrar a los detalles de la programaciónteníamos idea de cuales debían ser los resultados obtenidos, habíamos visto funcionar otros analizadores lógicos (inclusive demos) por lo que sabíamos mas ó menos cual debía ser el alcance de nuestro proyecto, que si bien no alcanzaría para ser un instrumento comparable con los del mercado, al menos contaría con las funciones mínimas con las que cuenta uno de estos. Sin embargo el tener en mente los resultados que se deben de alcanzar no es suficiente para atacar el diseño de un proyecto; máximo si se trata de un sistema que trabaja con partes que se relacionan entre sí y que pueden resultar en una compleja programación. Así que optamos por un método de análisis orientado a objetos. Esta metodología de análisis permite a los diseñadores ir conociendo a fondo la problemática del diseño a la vez que se van obteniendo resultados paulatinamente más complejos. Permite también volver a utilizar las partes que se van obteniendo en nuevas versiones del diseño, Por lo quenoes necesario volver a implementar todo elsistema. realizar ladocumentación Además permite necesaria para entender el avance del diseño del sistema. Estas dos ÚRimas características hacen del proyecto un sistema de fácil mantenimiento. Si alguien desea continuar con el proyecto lo puedehacer sin tener que confrontar un sistema rígido, difícil de modificar. Incluso, si se llegase a cambiar la tarjeta de adquisición de datos, la estructura del diseño nose modifica sustancialmente, pues todos los módulos del sistema son independientes de los otros módulos, excepto en la forma en que estos se comunican. AI irnos empapando con el diseño nos dimos cuenta que la tarjeta contaba con suficientes características (salvo las puntas y la velocidad de muestreo) comopara ser programada como un analizador lógico. Estas características y la metodología de análisis utilizada nos llevaron a realizar un trabajo que nosotros consideramos bueno, pues se cubrieron todas las metas en un principio planteadas. Cabe destacar lacooperación de nuestro asesorde proyecto, el profesor Agustín Suárez que puso en nuestras manos los elementos necesarios en cuanto a conocimiento (pues fue nuestro profesor en las materias de Sistemas digitales, básicas en el entendimiento de este problema) y por otro lado se preocupo por poner también a nuestro alcance todos los elementos necesarios incluyendo la infraestructura necesaria para el buen fin de este proyecto. Sin este apoyoel proyecto no se hubiera logrado. Bibliografía Título Using Visual Basic The mc complete reference Visual Basic 4, Developers Guic Hacker's Guide of Visual Basic SQL Server Visual Basic 5 Interactive Cours Visual Basic 4 Expert Solutions Real World Programming w Visual Basic Hacker's Guide to Visual Basic Object Oriented Software Engineering, a Use Case Driver Approach Instant UML, Object Oriented Software Engineering, Object Oriented System Design Object Oriented Analysis and Desian with Applications. Editorial Autor(es) Jeff Webb, Mike Mckelevy Que, 1995 Boyle, Rothmeier Sams Publishing, Shannon, West, eta1 Microsoft Press Vaughn, William R 1996 John Harrington, Mark Pretince Hill WaiteGroup Spenik, Heidi Rumbaugh, Press Sams Publishing Cliff Diamond Steve Potts, Michael Mckelvy, Edward B. Toupin, Michael Marchuck, James A Doeley, Joseph Armitage, Elizabeth Boonin Sams Publishing Antony T. Mann Vincent Chen, Jhon Montgomery Jacobson, Ivar, Christerson, Magnus; Jonsson, Patrik; Overgaard, Gunnar [Mullerl997] Muller, Pierre-Alan [Jacobson19951 Jacobson, Ivar; [Yourdon19941 Yourdon, Edward [Boochl994] Yourdon, Edward Series Editor Wood Leokhard Addison-Wesley, 1992 Wrox, Birmingham, Canadá, 1997 Addison-Wesley, 1995 Yourdon Press, 1994 Benjamin Cummings, 1994 La OOP (ObjectOriented Programming) facilitaeltrabajo en equipo, permitiendo que cada participante tenga una idea clara delalcance del sistema. Así, con la ayuda de documentación la cada participante realiza la programación deuna tarea específicaque bien puede ser un objeto. La tarjeta que se utilizó es la PCI-MIO-16E1 de National Instruments, lacual cuenta con 16 canales analógicos con una velocidad máxima de muestreo de500 Khz para un sólo canal, la velocidad de muestreo es inversamente proporcional al número de canales a muestrear. En forma digital, la tarjeta cuenta con 8 canales con una velocidad de hasta lOKhz, frecuencia muy baja para serusado como un analizador digital. Para el desarrollo del proyecto, en cuanto a software como apoyo se utilizó el NI-DAQ versión 6.0 que es un software proporcionado por National Instruments y que viene junto con la t a r j e t a Como herramienta de desarrollo se utilizó Visual Basic versión 5.0, que es la herramienta para programación de Windows más sencilla con la que disponemos, además de que la tarjeta cuenta con librerías para esta herramienta. CARACTEI~STICASDE LA TARJETA Especificaciones de la tarjeta PCI-MIO-16E1 Entrada Analógica Caracteristicms entrada de Numero de canales: 16 en single-ended 8 diferencial (la selección se hace mediante software) Tipo de A D C : por aproximaciones sucesivas Resolución: I2 bits, 1 en 4,096 Rango Máximo de Muestreo: 1.25 MS/s (en un canal) Precisión relativa: Caracteristicas de transferencia f 0.5 LSB typ dithered, f 1.5 LSB max undithered DNL fO.5LSBtyp,flLSBmáx No missingcoQs: 12 bits, guaranteed Error de offset: Regain error after calibration Regain error before calibration f 12 pV máx f 2.5 mV máx C”Sticas de Amplificación Características dinámicas Postgain mor after calibration f 0.5 mV máx Postgain error before calibration f 100 m V d x Error de ganancia: (relativoa la referencia de calibración) despuC de la calibración (ganancia = 1) f 0.02%de lectura máx antes de la calibración f 2.5% de ~ & I I %máx ganancia # 1 con error de ganancia ajustadaa O con ganancia =1 f 0.02% de lectura máx Imoedancia de entrada: 100 GQ en paralelo con 100 pF encendidonormal apagada 820 L-2 min 820 L-2 min Inout bias current& Val(Forml.cboNm.Text) > 1000: f 200 pA Coniente de entrada de offset: f 100 pA CMRR, todos los rangos de entrada, DC a 60 Hz: Ganancia CMRR 0.5 95 dB 1 dB 100 22 106 dB Ancho de banda: Small signal (-3 dB) 1.6 Mhz Large signal (1% THD) 1 Mhz Settling timeto fidl-scale step: Ganancia Precisión 30.o12% (&.5LSB) 30.024 (*I LSB) 2pS typ, 3pS máx 1 . 5 P typ, 2pS máx 1.5w 2pS máx 1 2 w trp, 3pS máx l.Wtyp, 1.3pSstyp, 1.5pS rnáx 2pS tYP, 3pS máx 1.spS 2pSmáx 2pS rnáx m. m, 100 2 P tYP, 1.w 3pS mix 2pS máx Svstem noise (LSBrms. sin incluir cuantizaciónk Ganancia 0.5 a 10 20 50 0.9 100 Crosstauc: Dither Off 0.25 0.4 0.9@ typ, 1pSmáx 1pS typ, 1.5pS máx Dither On 0.5 0.6 0.7 0.5 0.8 -80 dB, DC a 100 khz Tiemoo recomendado de esperaantes de trabajar: 15 minutos. Coeficiente de temoeratura de Oí€set: Pregain f 5 pVPC Postgain f 240 pVPC Coeficiente de temmatura de la ganancia: f 20 p p d C rnáx Onboard calibration reference: nivel 5,000 V (f2.5 mV) (valor actualen la EEPROM) coeficiente de temperatura f 5 ppm/”Cmáx long-term stability Salida Analógica Caracterisiticas typ. 0.5 2 a 50 Estabilidad -M. 09PA (MLSB) de salida Número f 15 ppml J“ m de canales: 2 voltajes Resolución: 12 bits, 1 en 4,096 Rango máximo de actualización: 1 canal 1 MSIs 2 canales 600 kS/s 1 MSIs - (depende del sistema) T i w de DAC: Double buffered, multiulicador Tamailo d e l bufFer FIFO: 2.48 S Transferencia de datos: D M 4 intermpciones, WS programada Modos DMA Scatter gather Recisión de la calibración: despub de lacalibración f 0.3 LSB typ, f O.5LSB m& antes de la calibración f4LSBmáx DNL: despub de la calibración f 0.3 LSB typ,f 1.0 LSB máx antes de la calibración f3LSBmáx Monotonicity 12 bits, garantizado después de la calibración E m de otfset: despuésde la calibración f 1.0 mV máx antes de la calibración f 200 mVmáx Error de la panancia: (relativo a la referencia interna) después de la calibración f 0.01% máx de salida antes de la calibración f 0.5% rnáx de salida (relativo a la referencia extema) después de la calibración + 0% a +lo% rnáx de salida, (no ajustable) Raneos: f 10 V, O a 10 V, iEXTREF, O a EXTREF (seleccionable mediantesohare) Acodamiento de salida: - C”stiCas de salida - Voltaje de salida Dc lrnoedancia de salida: 0.1 Rmáx Corriente maneiada: f 5 mAmáx Protección: cato circuito a tierra Encendido: ov Raneo de referencia de entrada externa: fllv Roteccih de Sobrecarga: f 25 V encendida, f 15 V apagada Impedancia de entrada: 10 kR Caractff’sticas Dinámicas E n W S a l i d a Digital canales: Min de Ancho de banda: (-3 dB) 1 MHz Settling time for full-scale w: precisión de 3 ps a f 0.5 LSB Coeficiente de TemDeratura de la Ganancia: referencia interna f 25ppm/oC referencia extema f 25ppm/oC Onboard Calibration Reference nivel 5.000 V (f2.5 mv) (valor adual en la EEPROM) coeficiente de temperatura f 5 ppm/“C long-term stability Número 8 enWsalida Compatibilidad TTUCMOS Niveles Lhgicos Digitals: Nivel voltaje entrada de bajo voltaje entrada de alto corriente de entrada bajo (V,= o v) corriente de entrada aIto v 2.0 v Max 0.8 V 5.0 V - -320 @ 0.0 (V, = 5 v ) 10 PA voltaje de salida bajo ( I ~= L 24 mA) V 0.4 voltaJe de salida alto (IOL = 13 mA) 4.35 v Encendido: Entrada (alta impedancia) Transferencia de datos: E/s programada Número de c a n a l e s : 2 altobajo contadoreskmporizadores, 1 escalador de fiecuencia Resolución: 24 bits contadoredkmporizadores escalador de ffecuencia 4 bits ComDatbilidad: TTTUCMOS Reloies de base d i s h b l e s : 20 MHz, 100 kHz contadoresHemporizadores escalador de frecuencia 10 MHz, 100 kHz Precisión del reloi base: I I - Temporización E/S f0.01% Frecuencia máxima de la fuente: 20 MHz Duración minima del pulso de la fuente: 10 m,edge-detect mode Duración minima del pulso de la compuerta: 1 O ns, edgedetect mode Tranferencia de datos: D M 4 interrupciones, EIS programada Modos de DMA scatter gather Disparadores Fuente: Disparadoranalógico Nivel: u ACH<O ...IS>, disparador extemo(PFlO/TRIGl) f full-scale, interna;f lOV, externa positiva o negativa (seleccionadapor sohare) Resolucibn: 8 bits, 1 en 256 Histéresis: programable Ancho de banda: (-3 dB) 2 MHz interna, 7 MHz externa Entrada extema: (PFlO/TRIGl) Impedancia 10 kn Acoplamiento Dc Protección 0.5 a V,, + 0.5 cuando esta contigurado como una seiíal digital, f 35 V cuando está configurado como un disparador anal6gico o desabilitada, f 35 V apagada. Compatibilidad: - Disparador digital TTL Res~~esta: rising or falling edge Ancho del pulso: 10 nsmin Trimer lines: 7 RTSI m Interface de Bus Requerimientos de alimentación Físicas +5 conectores) incluye maestro, esclavo VDC (f5%) Alimentación uennitidaen el conector de WS: +4.65 a +5.25 VDC a 1 A Dimensiones: (no 17.5 x 10.6 cm (6.9 x 4.2 in) Conector E/S: Temperaura Ambientales macho de 68 patas tipo SCSI-I1 de o p e r a c i ó n : OD a 55OC TemDeratura de almacenamiento: -55" a 150°C Humedad relativa: 5% a 90% no condensada Ranuos de la seiial de e n t r h Ganancia del canal Rango de la tarjeta (ambosse seleccionan mediantesoftware) Bipolar Unipolar 0.5 It 1ov 1 f5V Oa10V 2 f 2.5 V Oa5V O a52 V flV 10 f 500 mV OalV 20 f 250 mV Oa500mV 50 f 100 mV O a 200 mV 100 f 50 mV O a 100 mV Aco~lamientode entrada: " Dc Máximo voltaie de trabaio: (signal and common mode) each input should remainwithin It 11V o f ground. Protection de sobrecarea: f 25 V encendido, f 15 V apagado Entrada motepida: ACH<O..15>, AISENSE Tamaiio del buffer FIFO: 512 S Transferencia de datos DMA, interrupciones, E/S programadas. Modos DMA: Scatter-gather Tamaño de la memoriam confiwración: 5 12 palabras I Class name: Ingeniero View Case Use Category: Stereotype: Actor Export Control: Public Cardinality: Hierarchy: none Superclasses: Associations: <no rolename> : Configuracion de la Captura Analogica in association <no rolename> : Captura de datos digitales.in association <no rolename>: Captura de datos analogicos.in association <no rolename> : Despliegue de datos numericos.in association <no rolename, : Despliegue de grafica delos datos. in association <no rolename>: Guardar Resultados a fichero.in association <no rolename>: Guardar configuracion a fichero.in association <no rolename>: Imprimir Resultados. in association Sequential ansient State machine:No Concurrency: Persistence: Use Case name: Configuracion de la Captura Analogica View Case Use Category: Documentation: Pasos: 1. Escoger entre configuracion predeterminadao manual. 2. Se indica el numero de canales. 3. Se indicad numero de muestras por segundo. 4. Seindicalaconfiguracion y velocidaddelrelojdemuestreo. 5. Se indican el numero de muestras. 6. Se indicanlos voltajes de umbral. 7. Se indica el tipo de16gica usada. 8. Indicar el patron de disparo. Abstract: State machine:No Associations: No <no rolename> : Ingeniero in association Use Case name: Captura de datos digitales. Category: Documentation: Pasos: Use Case View 1. Esperar el patron de disparo. Page 1 2. Capturar datos hasta que se llegue al numero de muestras o se encuentre el patron de paro. 3. Entregar el arreglo decimal con los datos capturados. Abstract: State machine: No Associations: No <no rolename> : Ingeniero in association Use Case name: Captura de datos analogicos. Category: Documentation: Case Use View Pasos: l. Traer los parametros de configuracion. 2. Configurar la tarjeta usando estos datos. 3. Capturar datos en un arreglo. 4. Ayudandose de los valores de voltaje de umbral, convertir y unir los datos del arreglo en un formatoen decimal. 5. Entregar un arreglo con los tiempos de captura. 6. Entregar el arreglo decimal. Abstract: State machine: No Associations: No <no rolenames : Ingeniero in association Use Case name: Despliegue de datos numericos. Category: Documentation: Use Case View Pasos: 1. Recibir datos de entrada. 2. Convertir los datos de entrada a formato hexadecimal y binario. 3. Presentar en pantalla los resultados. Abstract: State machine:No Associations: No <no rolename> : Ingeniero in association Use Case name: Despliegue de grafica de los datos. Page 2 Category: Documentation: Pasos: Use Case View l . Recibir datos capturados. 2. Mostrar los datos. Abstract: State machine: No Associations: No <no rolename7 : Ingeniero in association Use Casename: Guardar Resultados a fichero. Case View Use Category: Documentation: Pasos: 1. Recibe arreglo de datos capturados. 2. Guarda los datos a un archivo con extension.UAM Abstract: State machine: No Associations: No <no rolename>: Ingeniero in association Use Case name: Guardar configuracion a fichero. View Case Use Category: Documentation: Pasos: 1. Reunir todos los datos de la configuracion. 2. Guardar datos de la configuracionun a fichero con extension .CFG Abstract: State machine: No Associations: No <no rolename> : Ingeniero in association Use Case name: Imprimir Resultados. View Case Use Category: Page 3 Documentation: Pasos: 1. Configurar impresion. 2. Imprimir. Abstract: State machine:No Associations: No <no rolename> : Ingeniero in association Association: Derived: Direction: Association Class: No <non-directional> none Role: Use Case: Configuracion deCaptura la Cardinality/ Multiplicity: Navigable: YeS Aggregate: No Static:No friend: No Access: Public Containment: Unspecified Analogica Role: C/ass:lngeniero Cardinality/ Multiplicity: Navigable: No Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified Association: Derived: Direction: Association Class: No enon-directional> none Role: Use Case: Captura de datos digital-. Cardinality/ Mukiplictty: Navigable: YeS Aggregate: No Static:No friend: No Public Access: Containment: Unspecified Page 4 Role: C1ass:lngeniero Cardinaldy / Mult@icity: Navigable: No Aggregate: No Static:No No friend: Access: Public Containment: Unspecified Association: Derived: No cnon-directional> Direction: Association Class: none Role: Use Case: Captura datos deanalogicos. Cardinality/ Multiplicity: Yes Navigable: Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified Role: C1ass:lngeniero Cardinality/ Multiplicity: Navigable: No Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified Association: Derived: No Direction: <non-directional> none Association Class: Role: Use Case: Despliegue Cardinality / Multiplicity: Yes Navigable: Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified de datos numericos. Role: C1ass:lngeniero Page 5 Cardinal@1Multiplic@: Navigable: No Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified Association: Derived: No <non-directional> Direction: none Association Class: Role: Use Case: Despliegue de grafica de Cardinality/ Multiplicity: Navigable: YeS Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified los datos. Role: C1ass:lngeniero Cardinality / Multiplicity: Navigable: No Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified Association: Derived: No <non-directional> Direction: none Association Class: Role: Use Case: Guardar Resultados Cardinality/ Muttiplicity: Navigable: YeS Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified a fichero. Rok: Class:lngeniero Cardinality/ Multiplicity: Navigable: No Page 6 Public Aggregate: Static:No Friend: Access: Containment: Unspecified No No Association: Derived: No Direction: <non-directional> none Association Class: Role: Use Case: Guardar configuracion Cardinality/ Muffiplicity: Navigable: Yes Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified a fichero. Role: C1ass:lngeniero Cardinality/ Muffiplicify: Navigable: No Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified Association: Derived: No Direction: enon-directional> Association Class: none Role: Case: Use Imprimir Resultados. Cardinality / Muffiplicity: YeS Navigable: Aggregate: No Static:No Friend: No Access: Public Containment: Unspecified Role: C1ass:lngeniero Cardinality/ Multiplicity: No Navigable: Aggregate: No Static:No Page 7 Friend: Access: Containment: No Public Unspecified Page 8 n 1: Iniciar Captura 4 oPantPrinc::cPantPrinc I 0DiSCO::cDiSCO oPCIMIO-16El::cPCI-MIO-16E1 \ 7: Regresaro IV 5: ArregloDecimal:ConviertaAD(ArregloVoHajes) 6: Write oDisco::cDisco I oPantPrinc::cPantPrinc File: A:\UAM12000,rndl Tue Apr 20 18:36:27 1999 Collaborati Diagram: Captura de datos analogicos. I Captura de datos analogicos. Page 2 I: Iniciar Captura _j 0PantPrinc::cPantPrinc I oDisco::cDisco oPCIMIO-l6El::cPCIMI0-16El 6: Regresar 0 oDisco::cDisw oPantPrinc::cPantPrinc File: A:\UAM12000.mdl Tue Apr 20 18:36:27 1999 Collaboration Diagram: Captura de datos digitales. I Captura de datos digitales. Page 3 1: Configuracion "3 oPantPrinc::cPantPrinq 5: Write "3- oDirc0::cDirco oPantPrinc::cPantPrinc File: A:\UAM12000,mdl Tue Apr 20 18:36:28 1999 Collaboration Diagram: Configuracion de la Captura Analogica I Confguracion de la Captura Analogi I: Ver resuttados numerims "i3 oPantPrinc::cPantPrinc oCConversion::cConvsrsion 6: Regresar v oCConversion::cConversion oPantPrinc::cPantPrinc File: A:\UAM12000.rndl Tue Apr 20 18:36:281999 Collaboration Diagram: Despliegue de datos numericos. I Despliegue de datos numericos. Page 5 1: Ver Grafica -e3 0PantPrinc::cPantPrinc I 2: Show (1 V 3: --"It I I 5: Regresar 0PantPrinc::cPantPrinc File: A:\UAM12000.mdl Tue Apr 20 18:36:28 1999 Collaboration Diagram: Despliegue de g r a f i de los datos. I Despliegue de grafica de los datos. Pa 1 : GuardarConfiguracion I olnaeniero ::ctnaeniero ”+ I I oPantPrinc::cPantPrinc I I 1 - oDisco::cDisco 3: Aceptar 1- olnaeniero ::cln eniero 0CDialoaoGuardarr::cCDialoaoGuardar I 5: Regresar V A oPantPrinc::cPantPrinc File: A:\UAM12000.mdl Tue Apr 20 18:36:28 I999 Collaboration Diagram: Guardar configuracion a fichero. / Guardar configuracion a fchero. Page 7 1: GuardarFichero 0PantPrinc::cPantPrinc I 2:Show ( ) V oDisco::cDisco 3: Aceptar 4 olnaeniero ::clnaeniero oCDialoaoGuardar::cCDialoaoGuardar I V 5: Regresar r"-l oPantPrinc::cPantPrinc File: A:\UAM12000.mdl Tue Apr 20 18:36:28 1999 Collaboration Diagram: Guardar Resultados a fichero. I Guardar Resultados a fichero. Page 8 1 : ImprimirResultados oPantPrinc::cPantPrinc olmDresora::clmDresora I 2: Show ( ) V 4: Imprimir(Datos) I 3: Aceptar + oCDialoaolm~rimir::cCDialoaolmDrirnir oPantPrinc::cPantPrinc File: A:\UAMl2000.mdl Tue Apr 20 18:36:291999 Collaboration Diagram: Imprimir Resultados. I Imprimir Resultados. Page 9 m Iniciar Captura loDatos:capturaq . I I I I I I I I I I I I I I I I I I I I I I I I I I I I r I I I T I I ReadConf I I I I I I Procs I I \I I I I ArregloDecirnal:ConvierteAD(ArregloVdtajes) I U I Regresar( I I I 7 I I I I I I I I I I I \ I I I I I I I I I I I I ; l i l I I I I I I File: A:\UAM12000.rndl Tue Apr 20 18:36:29 1999 Sequence Diagram: Captura de datos analogicos. I Captura de datos analogicos. Page 1O Iniciar Captura &“+Ti U il I I I I I I I I I I I I I I I I I I I I I I I I I I ArregloDatos:CapturaDatos( I \ L LT I I I Pros I I I 1L I F I I I I I I I \I I I I I I I I I I I I I I I I I I I File: A:\UAM12000.mdl Tue Apr 20 18:36:29 1999 Sequence Diagram: Captura de datos diglales. I Captura de datos diglales. Page 1 1 Use Case 1. , I I I I I I Configuracio I I I .+ Show \ I o I I 1 I I I I I I I I I I I I I I I Writ I I I I I I 3 I File: A:\UAM12000.mdl Tue Apr 20 18:36:29 1999 Sequence Diagram: Configuracion de la Captura Analogica I Configuracion de la Captura Analogic olnaeniero ::c 0PantPrinc::c oPantDesp1Nurn::CPant DesplNum numericos Ver resultados I F I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I 1 I I I I I I I I I I I I I I I I/ I r Y I I I I I I I File: A:\UAM12000.mdl Tue Apr Show ( ) I I I I I I I I I I I I I I I I I I I I I 1 I -T I Read(ArregloDecimal,Tiempo) I ArregloBinario:ConvierteBin(Arreglo rl”--% ArregloHexadecirnal:ConvierteHex(Arreglo J Regresa T u I \I I I I I I I I I I I I I I I I I I I I I I I 20 183629 1999 Sequence Diagram: Despliegue de datos numericos. / Despliegue de datos numericos. Page 13 oClmDrimeGrafica::cClmwime Grafiw::CPant I I I I I I I I I I I I I I I I I I I File: A:\UAM12000.mdl Tue Apr I I I I I I I I I I I I I I I Read(ArregloDecimal,Tiempo) ImprimeDatos(Arreg1o 7 Regresa 7’ - I \I I I I I I I I I I I \I I I I I I I I I I I I I I I I I I 20 18:36:29 1999 Sequence Diagram: Despliegue de grafica de los datos. / Despliegue de grafica de los datos. Page oCDia1oaoGuardarr::cCDialoaoGuardar I I I I I I I I I I I I I I I Show ( Acepta I I I I I I I I I I I I ,, , Regresa Write(Configuracio ~ 1, l - I I I I I I I I I I I File: A:\UAM12000.rndl Tue Apr 20 18:36:29 1999 Sequence Diagram: Guardar configuraciona fichero. I Guardar configuracion a fichero. Page 15 oCDia1oaoGuardar::c oDisco::cDisco CDialoaoGuardar l GuardarFichero File: A:\UAM12000.mdl Tue Apr I I I 20 18:36:30 1999 Sequence Diagram: Guardar Resultados a fichero. I Guardar Resultados a fichero. Page 16 I I I IrnprimirResultados I Acepta I I Irnprirnir(Datos) I I I I I I legresa I I I LJ File: A:\UAM12000.mdl Tue Apr 20 18:36:301999 Sequence Diagram: Imprimir Resultados. I Imprimir Resultados. Page 17 cerca-De - 1 r i v a t e Sub OK Boton-Click() c e r c a De. Hidend SUE GuardaConf - 3 Forml.cboVu.Enab1ed = False Forml.lblMs.Enabled = False Forml.lblVu.Enabled = False nd Sub () ublic Sub analogica Forml.cboMs.Enabled = Forml.cboVu.Enabled = Forml.lblMs.Enabled = Forml.lblVu.Enabled = nd Sub ublic Function True True True True valida ( ) As Integer 1ngPalabra = -1 <> "x" Then If Forml. txtPalabra. Text palabra hex= Trim(Forml.txtPa1abra.Text) palabraIhex = "&H" C palabra-hex hex) 1ngPalabra = Val (palabra End If If (Val(Forml.cboNc.Text) = O ) Then msg = MsgBox("1ntroduzca un valor en 'Número de canales'", vbOKOnly, "Errorde configuración 1 Forml.cboNc.SetFocus valida = 1 Exit Function ElseIf (IngPalabra = O ) Then msg = MsgBox("1ntroduzca un valor en 'Palabrade disparo'", vbOKOnly, "Errorde configuració ) Forml.txtPalabra.SetFocus valida = 1 Exit Function ElseIf (Val(Forml.cboMs.Text) <= 1) Then msg = MsgBox("1ntroduzca un valor numerico mayor que uno en 'Muestras/seg. canal"', por vbOK nly, "Error de configuración") Forml.cboMs.SetFocus valida = 1 Exit Function ElseIf (Val(Forml.cboNm.Text) <= 1 Or Val(Forml.cboNm.Text) > 1000) Then msg = MsgBox("1ntroduzca un valor numerico mayor que uno y menor 1000 queen I # de muestras 3r canal I vbOKOnly, "Errorde configuración") Forml.cboNm.SetFocus valida = 1 Exit Function End If If Forml.Optionl(O).Value = True Then If (Val(Forml.cboNc.Text) > 8) Then msg = MsgBox("Imposib1e leer en mas de 8 canales", vbOKOnly, "Errorde configuración") Forml. cboNc. SetFocus valida = 1 Exit Function End If Else If (Val(Forml.cboNc.Text) > 16) Then msg = MsgBox ("Imposible leer en mas de 16 canales", vbOKOnly, "Error de configuración") Forml.cboNc.SetFocus valida = 1 Exit Function End If End If If (IngPalabra > (2 Val(Form1.cboNc.Text) - 1)) Then msg = MsgBox("E1 tamañode la palabra no es valido", vbOKOnly, "Error de configuración"1 Forml.txtPalabra.SetFocus valida = 1 Exit Function ElseIf (Val(Forml.cboMs.Text) > 500000 / Val(Form1.cboNc.Text)) Then * segundo", vbOKOnly, "Errorde c msg = MsgBox("No es posible obtener dicho número muestras nfiguración") 'I, GuardaConf - 4 Forml.cboMs.SetFocus valida = 1 Exit Function ElseIf (Forml.Optionl(l).Value = True And Val(Forml.cboNm.Text)> 231 / Val(Forml.cboNc.Text)) Then Forml.cboNm.SetFocus valida = 1 Exit Function End If valida = O nd Function ublic Function valida20 As Integer 1ngPalabra = -1 If Forml .Txtpalabra2. Text <> "x" Then palabra hex = Trim(Forml.Txtpalabra2.Text) palabrarhex = "&H" & palabra hex lngPalabra = Val (palabra-hex7 End If If (Val(Forml.CboNc2.Text) = O ) Then de configuración msg = MsgBox("1ntroduzca un valor en 'Número de canales'", vbOKOnly, "Error ) Forml.CboNc2.SetFocus valida2 = 1 Exit Function ElseIf (IngPalabra = O ) Then msg = MsgBox("1ntroduzca un valor en 'Palabra de disparo'", vbOKOnly, "Error de configuraci ) Forml.Txtpalabra2.SetFocus valida2 = 1 Exit Function ElseIf (Val(Forml.CboMs2.Text) <= 1 Or Val(Forml.CboNm2.Text) > 1000) Then msg = MsgBox("1ntroduzca un valor numerico mayor que uno y menor 1000que en 'Muestras/seg. or canal vbOKOnly, "Error de configuración") Forml.CboMs2.SetFocus valida2 = 1 Exit Function ElseIf (Val(Forml.CboNm2.Text) <= 1) Then msg = MsgBox("1ntroduzca un valor numerico mayor que uno I en # de muestras porcanal"', vbOK nly, "Error de configuración") Forml. CboNm2. SetFocus valida2 = 1 Exit Function End If If Forml.Option3(0).Value = True Then If (Val(Forml.CboNc2.Text) > 8) Then 8 canales", vbOKOnly, "Errorde configuración") msg = MsgBox("1mposible leer en mas de Forml.CboNc2.SetFocus valida2 = 1 Exit Function End If Else If (Val(Forml.CboNc2.Text) > 16) Then msg = MsgBox ("Imposible leer en mas16de canales", vbOKOnly, "Errorde configuración") Forml.CboNc2.SetFocus valida2 = 1 Exit Function End If End If If (IngPalabra > (2 Val(Forml.CboNc2.Text) - 1)) Then vbOKOnly, "Error de configuración") es msg = MsgBox("E1 tamaño de la palabra novalido", 'I, Forml.Txtpalabra2.SetFocus valida2 = 1 Exit Function ElseIf (Val(Forml.CboMs2.Text) > 500000 / Val (Forml.CboNc2. Text ) ) Then 'GuardaConf- 5 msg = MsgBox("No es posible obtener dicho número muestras * segundo", vbOKOnly, "Error de c nfiguración") Forml.CboMs2.SetFocus valida2 = 1 Exit Function ElseIf (Forml.Option3(1).Value = True And Val(Forml.CboNm2.Text)> 231 / Val(Forml.CboNc2.Text ) Then msg = MsgBox("No es posible alamcenar tal número de muestras", vbOKOnly, "Error de configura ión") Forml.CboNm2.SetFocus valida2 = 1 Exit Function End If valida2 = O nd Function ublic Sub abrir() Dim dir As String On Error GoTo errores Forml.Abrir conf.CancelError = True Form1 .Abrir-conf. ShowOpen name = Formi.Abrir-conf.filename dir = Forml.Abrir-conf.InitDir name = name Open (name) For InputAs #3 Input #3, strFormato, intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPalabra, CurUm ral, bolTipolog If (strFormato = "Comenzo en biacrusis") Then Forml.CboMs2.Text = lngmuestrasxseg Forml.CboNc2.Text = intcanales Forml.CboNm2.Text = intTambuffer Forml.CboVu2.Text = CurUmbral Forml.Txtpalabra2.Text = strPalabra Forml.Option3(0).Value = Not bolTipocap Forml.Option3(1).Value = bolTipocap Forml.Option4(0).Value = Not bolTipolog Forml.Option4(1).Value = bolTipolog Forml.LblNombre.Caption = name Forml.LblNombre.Visible = True Close 3 Exit Sub Else msg = MsgBox(("E1 archivo de configuración & name & ' ' I no es formato UAMI2000o esta da sdo.*') , vbOKOnly, "Errorde configuración") Close 3 End If 'I1 rrores : If Err <> 32755 Then msg = MsgBox ( ("Se produjoun error configuración") End If Forml.SSTabl.Tab = O nd Sub ublic Sub Dim () como dirAs String On Error GoTo errores Forml.Abrir-conf.CancelError = True Forml.Abrir conf.ShowSave name = Formi.Abrir conf.filename dir = Forml.Abrir-zonf.InitDir al abrir el archivo '" & name & I" . 'I) , vbOKOnly, "Error d GuardaConf - 6 rrores : If Err = 32755 Then Forml.SSTabl.Tab = O End I f End Sub GuardarArchivo - 1 ublic Sub GuardarArchivo () n Error GoTo errores enuPrinc.Dialogo.Cance1Error = True e n u F r i n ~ . D i a : ~ g o . F i i ~=~ ~"A~ciifvosirami2000 (*.üatnj iq.UafijTOd6S 10s arclifttos {*:*) enuPrinc.Dialogo.Defau1tExt = uam enuPrinc.Dialogo.ShowSave o d r e = MenuPrinc.Dialogo.filename ileCopy "c: \windows\uamiZOOO\Data", nombre rrores : nd Sub j* Imprimir - 1 ublic Sub datos(inici0 As Integer, Final As Integer) Dim mensaje As String Dim start As Integer Dim notermine As Boolean notermine = True On Error GoTo Rutina-Errores MenuPrinc.Dialogo.Cance1Error = True MenuPrinc.Dialogo.ShowPrinter LEFTO = Printer.ScaleLeft TOPO = Printer.ScaleTop Printer.ScaleLeft = -500 Printer.ScaleTop = -500 mensaje = MUESTRAS Frmdata.Data.Row = For = mensaje + LOS DATOS CAPTURADOS" + Chr(l3) + Chr(l3) O For i = O To 3 Frmdata.Data.Co1 = i mensaje = mensaje + Next i mensaje DE I' 'I Chr(l3) + + Frmdata.Data.Text Chr(l3) start= inicio To Final mensaje = mensaje + Chr(l3) Frmdata.Data.Row = start For i = O To 3 Frmdata.Data.Co1 = i mensaje = mensaje + Next i 'I + Frmdata.Data.Text Next start Printer. Font = "Arial" Printer.FontSize = 10 Printer.Print DoEvents mensaje Printer.ScaleLeft = LEFTO Printer.ScaleTop = TOPO Printer.EndDoc MsgBox "Datos enviados a la impresora", vbInformation, "Mensaje" Exit Sub utina-Errores: f Err = 32755 Then Resume fin lse msg = Ha ocurrido el error + Str$ (Err) + imprevisto en la impresion, revisar impresora" MsgBox msg, vbExclamation, "Errorde Impresion" Resume fin nd If in : :Imprimir - 2 :nd Sub ublic ,im Sub Grafica () mensaje As Variant In Error GoTo Rutina - Error :enuPrinc.Dialogo.CancelError = True ':enuPrinc.Dialogo.ShowPrinter rinter. Font = "Arial" 'rinter.FontSize = 16 ,EFT0= Printer.ScaleLeft 'OPO = Printer.ScaleTop rinter.ScaleLeft = -2550 rinter.ScaleTop = - 9 8 0 rawWidth = 1 rinter.Line ( O , O)-Step(Señal.PictData.Width, Señal.PictData.Height), , B rinter.Line ( O , 1000) -Step (Señal. PictData.O) Width, rinter.CurrentX = (Señal.PictData.Width - Printer.TextWidth("señal'*)) / 2 = (1000 - Printer. TextHeight ( "Señal")) / 2 rinter. CurrentY rinter.ScaleLeft = -1500 rinter.ScaleTop = - 5 8 0 'or i = O To Señal.Controls.Count - 1 If TypeOf Señal.Controls(i) I s Label Then dibujaretiqueta Señal.Controls(i) End If ext i rinter.ScaleLeft = -2550 rinter.ScaleTop = - 9 9 0 rinter.PaintPicture Señal.PictData.Image, 1, 1 oEvents rinter.ScaleLeft = LEFT0 rinter.ScaleTop = TOPO rinter.EndDoc utina-Error: f Err = 32755 Then Resume Final lse msg = Ha ocurrido el error + Str$ (Err) + imprevisto en la impresion, revisar impresora" MsgBox msg, vbExclamation, "Errorde Impresion" Resume Final nd If 'I inal: nd Sub Imprimir - 3 rivate Sub dibujaretiqueta(ctr1 As Control) Dim Dim alto As Integer anchoAs Integer Printer.FontBold = ctrl.FontBold Printer.FontItalic = ctrl.FontItalic Printer.FontSize = ctrl.FontSize alto = Printer.TextHeight(ctrl.Caption) ancho = Printer.TextWidth(ctrl.Caption) If ctrl.BorderStyle = 1 Then DrawWidth = 2 Printer.CurrentX = ctrl.Left - 100 Printer.CurrentY = ctr.Top Printer.Line -Step(ctrl.Width, ctrlHeight), End If ,B Printer.CurrentY = ctrl.Top Select Case ctrl.Alignment Case O Printer.CurrentX = ctrl.Left Case 1 Printer.CurrentX = ctrl.Left - (ctrl.Width - ancho) Case 2 Printer.CurrentX = ctrl.Left + ((ctrl.Width - ancho) / 2) End Select Printer.Print ctrl.Caption :nd Sub 'rivate Sub dibujarimagen(ctr1 As Control) Dim pixel, fila, posx, posy, scrx, scry As Integer Dim colorAs Long scrx = Screen.TwipsPerPixelX scry = Screen.TwipsPerPixe1Y ctrl.ScaleMode = 2 For fila = O To (ctrl.ScaleHeight - 1) posy = ctrl.Top + (fila * scry) For pixel = O To (ctrl.ScaleWidth - 1 ) posx = ctrl.Left + (pixel * scrx) color = ctrl. Point (pixel, fila) color, BF Printer.Line (posx, posy) -Step (scrx, , scry) Next pixel DoEvents Next fila End Sub 'orml - 1 ption Explicit im ocGuardaConf As New cGuardaConf rivate Sub -Click() CmdAceptar Dim iAs Integer If ocGuardaConf.valida = O Then i = ocGuardaConf.guarda() Forml.Hide 'Tal vez sea necesario destruir esta opción. End If nd Sub rivate Sub CmdAceptar2 -Click0 Dim iAs Integer If ocGuardaConf.valida2= O Then () i = ocGuardaConf. guarda2 Forml.Hide 'Tal vez sea necesario destruir esta opción. End If nd Sub rivate orml. Sub CmdCancelar2 -Click() Hide nd Sub rivate Sub Cmdguardar-Click() cGuardaConf.como nd Sub rivate Sub Commandl-Click() cGuardaConf.por-omision2 nd Sub rivate Sub Command2-Click() Forml.Hide nd Sub rivate Sub Command4 -Click() cGuardaConf.por-omision nd Sub rivate Sub Form Load() ocGuardaConf.inicia1iza nd Sub rivate Sub Optionl-Click(1ndexAs Integer) If Index = O Then ocGuardaConf.digita1 Else ocGuardaConf.analogica End If nd Sub rivate Dim Sub SSTabl -Click(PreviousTab As Integer) auxlAs Boolean 'orml - 2 Dim aux2 As Boolean I f PreviousTab = O Then Forml.CmdAceptar.Defau1t = False Forml.CmdAceptar2.Default = True ocGuardaConf.abrir Else Forml.CmdAceptar.Defau1t = True Forml.CmdAceptar2.Default = F a l s e End I f nd Sub 'rmdata - 1 rivate Dim Dim Dim Dim Sub Buscar Click() oclAs cCBugcar fila As Integer nummuestrasAs Integer columnaAs Integer nummuestras Set = 100 ocl = New cCBuscar If (Valor .Text = "") Then MsgBox "Tiene que introducir un numero con el formato seleccionado en el campo de val .bExclamation, "Error al buscar" Else If Optionl(O).Value= True Then columna = 1 tipo = DI* Else If Optionl(l).Value= True Then columna = 2 tipo = H" Else columna = 3 tipo = B" End If End If ocl.buscar Valor.Text & tipo, columna, nummuestras, fila If (fila = O ) Then MsgBox "Dato no fue encontrado", vbInformation, "Informacion" Else Data.Row = fila Data.TopRow = fila End If End If Set ocl = Nothing nd Sub rivate Sub Cerrar -Click0 Frmdata.Hide nd Sub rivate Sub Valor -KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Buscar- Click End If nd Sub rmSplash - 1 lption Explicit rivate Sub Timerl-Timer() Unload frmSplash Timerl.Enabled = False MenuPrinc.Show ,nd Sub enuPrinc - 1 ption Explicit rivate Sub Mabrir-Click() Dim oCAbrirAs cAbrirArchivo Set oCAbrir= New cAbrirArchivo BarraEstado.Panels(2).Text = "Indicar oCAbrir .AbrirArchivo BarraEstado. Set el nombre del archivo UAMI-2000" Panels (2).Text = "" oCAbrir= Nothing nd Sub rivate Sub Macerca-Click() .cerca-De.Show nd Sub rivate Sub MCascada -Click() MenuPrinc.Arrange vbCascade nd Sub rivate Sub Mconfigurar-Click() BarraEstado.Panels(2).Text = "Configurar Captura de la tarjeta PCI-16E-1" Forml.Show nd Sub () rivate Sub MDIForm-Load Dim nombre As String Open "c:\windows\uami2000\nomconf.nom" For Input As#1 Input # 1 , nombre Close #1 FileCopy nombre, "c:\windows\uami2000\param.cf" nd Sub rivate Dim Dim Dim Dim Dim Dim Dim Dim Dim Sub MGrafica -Click() muestrasxseg As Long nummuestras As Integer numbits As Integer totalmuestras As Integer tipolog As Boolean volref As Double i As Integer tempo validacion As String Dim arreglodeco As Long Dim arreglobino As String Dim arreglohexo As String Open "c:\windows\uami2000\data" For Input As#1 Input # 1 , validacion, nummuestras, numbits, muestrasxseg', volref, tipolog ReDim arreglodec(nummuestras) ReDim arreglohex(numuestras) ReDim arreglobin(nummuestras) enuPrinc - 2 For i = O To nummuestras - 1 Input # 1 , arreglodec(i) Next i For i = O To numuestras - 1 Input #1, arreglobin (i) Next i For i = O To nummuestras - 1 Input #1, arreglohex(i) Next i Close #1 totalmuestras = nummuestras * numbits Conversion a Binario para 10 canales Dim oc3 As cImprimeGrafica Set oc3 = New cImprimeGrafica Señal.Tiempo.Max = nummuestras Señal.Tiempo.LargeChange = Int((1 / nummuestras) Señal.Tiempo.SmallChange = Int((1 / nummuestras) * * 10000) 1000) If nummuestras <= 100 Then Señal.Tiempo.Visible = False Señal.Tiempo.Enab1ed = False oc3.Grafica arreglodec, O, nummuestras, numbits, tipolog Else Señal.Tiempo.Visible = True Señal.Tiempo.Enabled = True oc3.Grafica arreglodec, 1 , 100, numbits, tipolog End If Set oc3 = Nothing tempo = 1 / muestrasxseg For i = O To 4 Señal.LabTime(i) .Caption = Format(Str(temp0 * i), "0.000000") Next i Señal.Show MImprimirGrafica.Enabled Señal. nd = True SetFocus Sub rivate Sub Mguardar-Click() Dim oCGuardar As cGuardarArchivo Set oCGuardar= New cGuardarArchivo BarraEstado.Panels(2).Text = "De el nombre del archivo a guardar" oCGuardar.GuardarArchivo Set oCGuardar= Nothing :enuPrinc - 3 ;nd Sub rivate Sub MImprimirDatos -Click0 Dim oclAs cImprimir Dim inicioAs String Dim FinalAs String Dim inicAs Integer Dim finAs Integer Set ocl = New cImprimir inicio = InputBox("Numero de la muestra de Inicio de Impresion", "Limites de las muestras primir?") If inicio = '''' Then Exit Sub End If inic = Val (inicio) Final = InputBox("Numero de la muestra del final de Impresion", "Limites de las muestras a I ) rimi r? If Final = Exit Sub End If I"' Then fin = Val ( Final) While fin < inic MsgBox "El numero de la muestra de inicio debe ser menor que la final", vbExclamation, or en Limites" Final = InputBox("Numero de la muestra del final de Impresion", "Limites de las muestra Imprimir?") If Final = " " Then Exit Sub End If fin = Val (Final) Wend ocl .datos inic, fin Set ocl = Nothing nd Sub rivate Sub MImprimirGrafica -Click0 im ocl As cImprimir et ocl = New cImprimir cl.Grafica et ocl = Nothing nd Sub rivate Sub Miniciar-Click() im longitud As Integer im intervaloAs Integer ( ) As Double 'im datos As Double 'im samplesxseg im nummuestraAs Integer [enuPrinc - 4 lim lim lim km km lim lim km numcan As Integer tipo As Boolean pal-disparo As String nomconf As String tipolog As Boolean volref As Double i As Integer validacion As String k m datadec() As Long k m datahex() As String lim databin() As String ,arraCaptura( O ).Visible = True ;arraEstado.Panels(Z).Text = 'or i = O To 10 BarraCaptura(O).Value 'ext i i = "Configurando la tarjetaPCI-MIO-16E-1" lpen "c:\windows\uami2000\param.cf" For Input As #1 nput #1, validacion, numcan, nummuestra, samplesxseg,tipo, pal-disparo, volref, tipolog lose 1 .eDim datos (nummuestra * numcan) .eDim datadec (nummuestra) .eDim datahex (nummuestra) .eDim databin (nummuestra) Capturar Datos del Exterior 'or i = 11 To 25 Barracaptura ( O ).Value = i ext i f (tipo = True) Then Dim oCaplAs cCapturaAnalogica Set oCapl= New cCapturaAnalogica numcan, oCapl.CapturaDatosA datos, samplesxseg, nummuestra, Set oCapl= Nothing Dim oConvlAs cConversion Set oConvl= New cConversion pal -disparo oConv1.Conversion datos, nummuestra* numcan, nummuestra, datadec, databin, datahex, numcan, .olref Set oConvl= Nothing lse Dim oCap2As cCapturaDigita1 Set oCap2= New cCapturaDigita1 oCap2.CapturaD datadec, nummuestra, pal-disparo Set oCap2= Nothing Dim oConv2As cConversion Set oConv2= New cConversion oConv2.Hexadecimal datadec, datahex, nummuestra oConv2.Binario datadec, nummuestra, databin, numcan [enuprinc - 5 Set oConv2= Nothing :nd If 'or i = 26 To70 Barracaptura ( O ).Value = i 'ext i Convertir arreglo de muestras mezcladas en uno solo 'pen "c: \windows\uami2000\data" For Output As #1 'rite # 1 , "Comenzo el Biacrucis", nummuestra, numcan, samplesxsegI , tipolog, volref 'or i = O To nummuestra - 1 Write #1, datadec (i) ext i 'or i = O To nummuestra - 1 Write # 1 , databin (i) ext i 'or i = O To nummuestra - 1 Write #1, datahex (i) ext i lose #1 Numeros.Enabled = True :Grafica.Enabled = True oolbarl.Buttons.Item(l0) .Enabled = True oolbarl.Buttons.Item(ll).Enabled = True or i = 71 To 100 BarraCaptura(O).Value = i ext i MsgBox "B O L A M U E R T A", vbOKOnly, "Captura finalizada" arraCaptura(O).Visible = False arraEstado. Panels (2).Text = "Captura nd Sub rivate Sub MMozaico-Click() MenuPrinc.Arrange vbTileVertica1 nd Sub rivate Sub MNumeros-Click() Dim Provisional (1600) As Double Dim muestrasxsegAs Double Dim nummuestras As Integer Dim numbits As Integer Dim totalmuestrasAs Integer Dim tipolog As Boolean Dim volrefAs Double Dim i As Integer Dim TiempoAs Double finalizada" IenuPrinc Dim - 6 validacionAs String Dim arreglodeco As Long Dim arreglobin ( ) As String Dim arreglohexo As String Open "c:\windows\uami2000\data" For InputAs #1 Input #1, validacion, nummuestras, numbits, muestrasxsegI , volref, tipolog ReDim arreglodec(numuestras) ReDim arreglohex(nummuestras) ReDim arreglobin(nummuestras) For i = O To nummuestras - 1 Input #1, arreglodec(i1 Next i For i = O To numuestras - 1 Input # 1 , arreglobin (i) Next i For i = O To nummuestras - 1 Input #1, arreglohex(i) Next i Close #1 totalmuestras Tiempo = 1 = nummuestras * numbits / muestrasxseg Frmdata.SetFocus Frmdata.Data.Rows = nummuestras Frmdata.Data.Co1 = 1 Frmdata.Data.Row = O Frmdata .Data. Text = "Decimal" Frmdata.Data.Co1 = O Frmdata.Data.Row = O Frmdata. Data. Text = "Tiempo" Frmdata.Data.Co1 = 2 Frmdata.Data.Row = O Frmdata. Data. Text = "Hexadecimal" Frmdata.Data.Co1 = 3 Frmdata.Data.Row = O Frmdata. Data. Text = "Binario" Frmdata.Data.Co1 = O For i = 1 To nummuestras - 1 DoEvents Frmdata.Data.Row = i Frmdata.Data.Text = Format(Str(Tiemp0 * i), " 0 . 0 0 0 0 0 0 " ) Next i Frmdata.Data.Co1 = 1 & " S" [enuprinc - 7 For i = 1 To nummuestras- 1 DoEvents Frmdata.Data.Row = i = Str Frmdata. Data.Text (arreglodec - (i 1)) & 'I D" Next i Frmdata.Data.Co1 = 2 For i = 1 To nummuestras - 1 DoEvents Frmdata.Data.Row = i Frmdata. Data .Text = arreglohex (i - 1) & H" Next i Frmdata.Data.Co1 = 3 For i = 1 To nummuestras - 1 DoEvents Frmdata.Data.Row = i Frmdata.Data.Text = Format (arreglobin(i- l), "0000000000000000") & B" Next i Frmdata.Data.ColWidth(0) = Frmdata.Data.ColWidth(1) = Frmdata.Data.ColWidth(2) = (3) = Frmdata. Data. ColWidth 1100 900 1200 2000 Frmdata.Show MImprimirDatos.Enabled = True nd Sub rivate Dim Sub MSalir -Click() respuesta respuesta = MsgBox If respuesta= vbOK End End If nd ("¿Seguro desea salir de UAMI-2000?", vbOKCancel, Then Sub rivate Toolbarl -ButtonClick(ByVa1 Sub Select Case Button.Key Case Is = "Abrir": 'Abrir Mabrir-Click Case Is = "Guardar": Mguardar-Click Case Is = "ImpGrafica": ButtonAs ComctlLib.Button) "Finalizar sesion") [enuPrinc - 8 MImprimirGrafica -Click Case Is = "ImpDatos": MImprimirDatos -Click Case Is = "Configurar": Mconfigurar -Click Case Is = "Iniciar": Miniciar-Click Case Is = "Grafica": MGrafica -Click Case Is = "Numeros": MNumeros -Click Case Is = "Acerca": Macerca-Click End Select :nd Sub :eñal - 1 'rivate SubCerrar-Click0 Señal.Hide hd Sub 'rivate Sub Tiempo-Change () Dim muestrasxsegAs Double Dim nummuestrasAs Integer Dim numbitsAs Integer Dim totalmuestrasAs Integer Dim tipologAs Boolean Dim arreglodeco As Long Dim arreglobino As String Dim arreglohex()As String tipolog = True Open "c:\windows\uami2000\data" For Input As #1 Input #1, validacion, nummuestras, numbits, muestrasxseg, volref, tipolog ReDim ReDim ReDim arreglodec(nummuestras) arreglohex(nummuestras) arreglobin(nummuestras) For i = 0 To nummuestras - 1 Input #1, arreglodec (i) Next i For i = 0 To nummuestras - 1 Input # 1 , arreglobin (i) Next i For i = O To nummuestras - 1 Input #1, arreglohex(i) Next i Close #1 totalmuestras = nummuestras * numbits Dim oc2As cImprimeGrafica Set oc2= New cImprimeGrafica If ((nummuestras - Tiempo.Value) >= 100) Then oc2.Grafica arreglodec, Tiempo.Value, Tiempo.Va1ue + 100, 16, tipolog tempo = 1 / nummuestras * Tiempo.Value For i = O To 4 Señal.LabTime(i) .Caption= Format (Str(tempo + ( 1 / 1 0 0 ) * i), "0.000000") Next i Else oc2.Grafica arreglodec, Tiempo.Value, nummuestras - 1, 16, tipolog tempo = 1 / nummuestras * Tiempo.Value For i = O To 4 leña1 - 2 Señal.LabTime ( i ).Caption Next i End I f Set o c l = Nothing :nd Sub = Format (Str (tempo + ( 1 / 100) * i ) , "O. 000000") 4brirArchivo - 1 ublic Sub AbrirArchivo () im cadval As String n Error GoTo errores 2nuPrinc.Dialogo.CancelError = True 2nuPrinc.Dialogo.Filter = "Archivos Uarni2000 (*.uam)I*.uamlTodos los aerchivos ( * , * ) I * . * " 2nuPrinc.Dialogo.DefaultExt = uam ?nuPrinc.Dialogo.ShowOpen mbre = MenuPrinc.Dia1ogo.filename ?en MenuPrinc.Dialogo.fi1ename For Input As #1 nput #1, cadval f cadval = "Comenzo el Biacrucis" Then lose #1 ileCopy nombre, "c: \windows\uamiZOOO\Data" 2nuPrinc.MNumeros.Enabled = True 2nuPrinc.MGrafica.Enabled = True snuPrinc.Toolbarl.Buttons.Item(lO).Enabled = True 2nuPrinc.Toolbarl.Buttons.Item(ll).Enabled = True Lse d e Archivo" sgBox "El archivo no es formato Uami2000", vbExclamation, "Error Lose #1 Id If rrores : Id Sub CapturaAnalogica - 1 ption Explicit ublic Function CapturaDatosA(datos()As Double, samplesxsegAs Double, nummuestraAs Integer, n mcan As Integer, pal-disparo As String) As Integer OperacionAsinc datos, samplesxseg, numcan, nummuestra, pal -disparo nd Function ........................................................................ Funcion : OperacionAsinc DESCRIPTION: The main NI-DAQ operations are here ........................................................................ rivate Sub OperacionAsinc(datos() As Double, samplesxseg As Double, numcan As Integer, numuest a As Integer, pal-disparo As String) I ' Declaracion de Variables Locales Dim istatus As Integer 'Estado de la captura Dim iRetValAs Integer se usa DimiDevice As Integer'Numerodedispositivoque As Integer ' Canales Dim iChan As Integer 'Ganancia en DB Dim iGain Dim dSampRate As Double 'Razon de Muestre0 Dim dScanRate As Double 'Razon de lectura As Long 'Numero Muestras de Dim ulCount Dim dGainAdjustAs Double As Double 'Offset doffset Dim Dim iUnitsAs Integer Dim iSampTBAs Integer Dim uSampIntAs Integer Dim iScanTBAs Integer Dim uScanIntAs Integer l o s datos Dim piBuffer() As Integer 'Vector para guardar 'capturados Dim pdVoltBuffer0 As Double 'Vector para guardar los datos 'capturados en un mejor formato Dim iDAQstoppedAs Integer Dim ulRetrieved As Long Dim iNumMUXBrdsAs Integer As Integer 'Numero canales de Dim iNumChans Static piChanVect() As Integer 'Vector de canales Static piGainVect0 As Integer 'Vector de ganacias Dim iIgnoreWarningAs Integer Dim iYieldON As Integer Dim iAs Long On Error GoTo errores: iDevice8 = 1 iChan8 = 1 iGain8 = 1 dSampRate# = samplesxseg# dScanRate# = O # ulCount& = nummuestra * numcan dGainAdjust# = 1# doffset# = O # iNumChans% = numcan% ReDim pdVoltBuffer(nummuestra* numcan) ReDim piBuffer(nummuestra * numcan) ReDim piChanVect(numcan) CapturaAnalogica - 2 ReDim piGainVect(numcan) Inicializacion de los canales y su ganancia For i = O To numcan - 1 piChanVect8 (i) = i Next i For i = O To numcan - 1 piGainVect% (i) = 1 Next i Convertir la razonde muestreo (Muestras/Seg) a valores de tiempo base e intervalos de muestreo. istatus% = DAQ-Rate(dSampRate#, iUnits%, iSampTB%, uSampInt%) DAQ-Rate(dScanRate#, iUnits8, iScanTB%, uScanInt%) iStatus% = istatus% = SCAN-Setup(iDevice%, iNumChans%, piChanVect%(O), piGainVect%(O)) iRetVal% = NIDAQErrorHandler(iStatus8, " S C A N -Setup", iIgnoreWarning%) Adquirir muestras de multiples canales. istatus% = SCAN-Start(iDevice%, nt8) piBuffer%(O), iRetVal% = NIDAQErrorHandler(iStatus8, ulCount&, " S C A N -Start", iSampTB%, uSampInt%, iIgnoreWarning%) While ((iDAQstoppedB <> 1) And (istatus% = O ) ) Hacer un cliclo hasta quetoda la adquisicion este completa Es posible realizar otraslabores mientra se reliza esto. istatus% = DAQ-Check(iDevice%, iDAQstopped%, ulRetrieved&) DoEvents Wend iRetVal% = NIDAQErrorHandler(iStatus8, "DAQ-Check", istatus% = iIgnoreWarning8) SCAN-Demux(piBuffer%(O), ulCount&, iNumChans8, iNumMUXBrds%) iRetVal% = NIDAQErrorHandler(iStatus%, "SCAN-Demux", iIgnoreWarning8) NIDAQErrorHandler(iStatus8, "DAQ-VScale", iIgnoreWarning%) iRetVal% = Limpiar - No se revisa por errores. istatus% = DAQ-Clear(iDevice8) Frmdata.Data.Co1 = 1 'Frmdata.Data.Rows = 300 For i = O To numcan * nummuestra datos# (i) = pdVoltBuf fer# (i) ' Frmdata.Data.Row = i ' Frmdata. Data.Text= Str (datos (i)) + + Str (i) iScanTB%, uSca CapturaAnalogica - 3 Next i E x i t Sub rrores : MsgBox "Error en l a c a p t u r a , v e r i f i q u e d ec a p t u r a " ,v b c r i t i c a l ," E r r o rd eC a p t u r a " E x i t Sub nd Sub que este b i e n c o n e c t a d a l a t a r j e t a o l ac o n f i g u r a c i o n CapturaDigital - 1 ........................................................................ Funcion : CapturaD de la tarjeta. DESCRIPCION: Captura l o s datos del puerto digital ........................................................................ ublic Sub CapturaD(datos() As Long, nummuestrasAs Integer, patronAs String) Declaration de las variables locales Dim Dim Dim Dim Dim Dim Dim Dim Dim istatus As Integer iRetVal As Integer iDevice As Integer Puerto iPort As Integer iMode As Integer iDir As Integer iPattern As Integer iIgnoreWarning As Integer iAs Integer 'Estado de la captura 'Numero de dispositivo 'Modo ' Patron iDevice8 = 1 Configurar como puertode entrada. istatus8 = DIG-Prt-Config(iDevice8, iPort8, iMode%, iDir%) iRetVal% = NIDAQErrorHandler(iStatus8, "DIG-Port-Config", iIgnoreWarning%) i = O 'inicializar vectorde Datos Do While (i < numuestras) datos(i) = O i = i + l Loop i = O 'Do While (iPattern8<> Val ("&H" + Trim(patron)) ) iStatus8 = DIG-In-Port(iDevice%, iPort%, iPattern%) ' DoEvents I Loop 'Captura continuade datos Do While (i< nummuestras) istatus% = DIG-In-Port(iDevice%, iPort%, iPattern%) datos (i) = iPattern8 iRetVal% = NIDAQErrorHandler(iStatus%, "DIG In Port", i = i + l " Loop nd Sub iIgnoreWarning8) CBuscar - 1 ublic Sub buscar(text0As String, columna As Integer, maxfila As Integer, ByRef fila As Integer ila = O With Frmdata.Data .Col = columna .Row = fila Do While (fila <> maxfila fila = fila + 1 .Row = fila Loop End With If (fila = maxfila - 1) Then fila = O End If nd Sub - 1 And StrComp(Trim(.Text), Trim(text0)) <> o) Conversion - 1 ublic Function Conversion(Muestras() As Double, longitud As Integer, loginter As Integer, ByRef arreglodec() As Long, ByRef arreglobin() As String, ByRef arreglohexo As String, numbits As In eger, volref As Double) As Integer Data Muestras, longitud, loginter, arreglodec, numbits, volref Binario arreglodec, loginter, arreglobin, numbits Hexadecimal arreglodec, arreglohex, loginter nd Function ....................................................... Procedimiento : Conversion de Descripcion : Convierte el arreglo con el conjunto lectura de l o s canales a uno solo. ....................................................... rivate Sub Data(datos() As Double, longitud As Integer, logintervalo As Integer, ByRef DatDecO As Long, numbitsAs Integer, volref As Double) im BufferDigitalO As Integer im BufferDecimal ( ) As Long eDim BufferDigital(1ongitud) eDim BufferDecimal(loginterva1o) or i = O To longitud - 1 If datos(i) < volref Then Buf ferDigita1 (i) = O Else BufferDigital (i) = 1 End If ext i = o alor = t - 1 BufferDecimal (i) = O t = Valor For j = O To numbits - 1 BufferDecimal(i) = 2 j * BufferDigital(t) t = (j + 1) * logintervalo + Valor Next j Valor = Valor + 1 ext i or i = O To logintervalo + BufferDecimal(i) or i = O To logintervalo - 1 DatDec(i) = BufferDecimal (i) ext i nd Sub ublic Sub Hexadecimal(Arreg1o-Floral() For i = As Long, Arreglo-Hex() As String, O To longitud Arreglo-Hex (i) = Hex (Arreglo -Floral (i)) Next i nd Sub ........................................................................ Funcion : Bin longitud As Integer) :Conversion - 2 Descripcion : Convierte un entero a cadena con el numero en binario ......................................................................... 'ublic Sub Binario(Arreg1o-Floral() As Long, MuestrasAs Integer, ArregloBinarioO As String, nu -bits As Integer) )im Binario As Double )im cociente As Long )im i As Integer 'or j = O To Muestras num = Arreglo-Floral (j) Binario = O i = O cociente = num Do While (cociente <> O ) If (num Mod 2 ) <> O Then cociente = num / 2 - 0 . 5 Else cociente = num / 2 End If temp = num Mod 2 Binario = temp * 10 (i) + Binario i = i + l num = cociente Loop ArregloBinario (j) = Format$ 'ext j hd Sub (Binario, " ~ 0 0 0 0 0 0 0 ~ ~ ~ ~ ~ ~ ~ ~ " ) :GuardaConf - 1 lption Explicit )im intcanales As Integer Dim intTriggerAs Integer )im intTambuffer As Integer )im lngmuestrasxseg As Long )im bolTipocap As Boolean )im bolTipolog As Boolean )im strpalabra As String )im CurUmbral As Currency )im nombre As String )im msg As Integer )im lngpalabra As Long )im palabra-hex As String )im name As String )im strFormato As String Sub cGuardaConf-InitProperties() Forml. lblMs. Caption = "initialize" End Sub Private Sub form-Initialize() = "initialize" Forml. lblMs .Caption End Sub () ublic Sub inicializa lim nombre As String In Error GoTo Default lpen "c:\windows\uami2000\nomconf.nom" For InputAs # 4 nput # 4 , nombre lose 4 Open (nombre) For InputAs #2 Input #2, strFormato, intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPalabra, CurUm Iral, bolTipolog If (strFormato = "Comenzo en biacrusis") Then Forml.cboMs.Text = lngmuestrasxseg Forml.cboNc.Text = intcanales Forml.cboNm.Text = intTambuffer Forml.cboVu.Text = CurUmbral Forml.txtPalabra.Text = strPalabra Forml.Optionl(O).Value = Not bolTipocap Forml.Optionl(l).Value = bolTipocap Forml.OptionZ(O).Value = Not bolTipolog Forml.OptionZ(l).Value = bolTipolog Close 2 Exit Sub Else msg = MsgBox ( ("El archivo & nombre & no es formato UAMI2000"), vbOKOnly, "Error de con iguración") Close 2 End If lefault: lngmuestrasxseg = 31250 Forml.cboMs.Text = 31250 intcanales = 16 Forml.cboNc.Text = 16 intTambuffer = 1 4 Forml. cboNm.Text = 14 CurUmbral = 2.5 Forml.cboVu.Text = 2.5 strpalabra = "x" "x" Forml. txtPalabra. = Text Forml.Optionl(O).Value = False bolTipocap = True Forml.Optionl(l).Value = True (O) .Value = False Forml. Option2 bolTipolog = True Forml.Option2(1).Value = True Open ("c:\windows\uami200O\default.cfg") For Output As #S Write #5, "Comenzo en biacrusis", intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPa :GuardaConf - 2 Labra, CurUmbral, bolTipolog Close 5 Open ("c:\windows\uamiZOOO\nomconf. nom") For Output As # 2 Write #2, "c:\windows\uami2000\default.cfg" Close 2 Znd Sub () Public Sub por-omision Open ("c:\windows\uami200O\default.cfg") For InputAs # S Input #5, strFormato, intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPalabra, CurUm sral, bolTipolog If (strFormato = "Comenzo en biacrusis") Then Forml.cboMs.Text = lngmuestrasxseg Forml.cboNc.Text = intcanales Forml.cboNm.Text = intTambuffer Forml.cboVu.Text = CurUmbral Forml.txtPa1abra.Text = strPalabra Forml.Optionl(O).Value = Not bolTipocap Forml.Optionl(l).Value = bolTipocap Forml.OptionZ(O).Value = Not bolTipolog Forml.OptionZ(l).Value = bolTipolog Else msg = MsgBox("E1 archivo de configuración 'default.cfg' se ha dañado. Vuelva a instalar Iplicación", vbOKOnly, "Error de configuración") End If Close 5 3nd Sub () 'ublic Sub por-omision2 Open ("c:\windows\uamiZOOO\default.cfg") For Input As #5 Input #5, strFormato, intcanales, intTambuffer, lngmuestrasxseg, bolTipocap, strPalabra, CurUm ral, bolTipolog If (strFormato = "Comenzo en biacrusis") Then Forml.CboMs2.Text = lngmuestrasxseg Forml.CboNc2.Text = intcanales Forml.CboNm2.Text = intTambuffer Forml.CboVu2.Text = CurUmbral Forml.Txtpalabra2.Text = strPalabra Forml.Option3(0).Value = Not bolTipocap Forml.Option3(1).Value = bolTipocap Forml.Option4(0).Value = Not bolTipolog Forml.Option4(1).Value = bolTipolog Forml.LblNombre.Visib1e = False Else msg = MsgBox("E1 archivo de configuración default.cfg se ha dañado. Vuelva a instalar l :ación", vbOKOnly, "Error de configuración") End If Close 5 .id Sub lblic Function guarda0 As Integer )en "c:\windows\uamiZOOO\param. cf" For Output As #1 :ite #1, "Comenzo en biacrusis", Val (Forml. cboNc. Text), Val (Forml. , Val cboNm.Text) (Forml. cboMs. Ixt), Forml.Optionl(l).Value, Forml.txtPalabra.Text, Val(Forml.cboVu.Text), Forml.Option2(1).Va e ose 1 d Function blic Function guarda20 en "c:\windows\uamiZOOO\param. cf" For Output As #1 ite #1, "Comenzo en biacrusis", Val(Forml.CboNcZ.Text), Val(Forml.CboNmZ.Text), Val(Forml.CboM .Text), Forml.Option3(1).Value, Forml.TxtpalabraZ.Text, Val(Forml.CboVu2.Text), Forml.Option4( I Value .ose 1 id Function ublic Sub digital () Forml.cboMs.Enabled = False