IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control Apuntes de la Tarjeta de Adquisición y Control 1. Resumen Estos apuntes describen el modo de operación de una tarjeta digitalizadora de señales y conjunto de rutinas de software desarrolladas para el manejo de la misma. En estos apuntes la tarjeta digitalizadora o de adquisición de datos será referida como DAC, abreviación común que proviene de sus nombres más frecuentes en inglés: Data Acquisition Card (DAC) o Data Acquistion and Control Card (DACC). El software asociado a la DAC incluye los drivers de control de la tarjeta, librerías con rutinas para acceder a las funciones de lectura y escritura, y ejemplos. Los ejemplos pueden ser fácilmente compilados en el ambiente Visual .NET (Visual C++, Visual Basic, C#) u otros compiladores. Además pueden emplearse como referencia para construir aplicaciones de despliegue gráfico y procesamiento de datos. Figura 1: Tarjeta de adquisición de datos Measurement Computing PCI-DAS6014. IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 1 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control 2. Características de la DAC 2.1. Especificaciones de la DAC La tarjeta digitalizadora PCI-DAS6014 que se muestra en la Figura 1 está concebida para la conversión analógica a digital (A/D) y digital a analógica (D/A) de señales. Para ello cuenta con un conjunto de entradas y salidas, cuyas especificaciones técnicas se resumen en la siguiente tabla. Detalles adicionales pueden encontrarse en y . Entradas Analógicas Número de canales Rangos de Voltaje Resolución Frecuencia de Muestreo Streaming-to-disk Tipo de Conversor A/D Salidas Analógicas Número de canales Rangos de Voltaje Resolución Frecuencia de Muestreo Streaming-to-disk Tipo de conversor D/A Entradas/Salidas Digitales Número de canales Configuración Entrada 0 lógico Entrada 1 lógico Salida 0 lógico Salida 1 lógico Tipo de Lógica Otras Carácterísticas Contadores Interrupciones Trigges/Clocks 8 (modo diferencial) 16 (modo conector-único) -5 a 5 V, -10 a 10 V, -500 a 500 mV, -50 a 50 mV 16 bits Hasta 200 kMuestras/s (dependiendo del sistema) Aproximaciones sucesivas (successive approximation) 2 -10 a 10 V 16 bits Hasta 200 kMuestras/s (dependiendo del sistema) Doble-buffer con multiplicador, (double-buffered, multiplying) 8 Todos los pins con pull-up a +5 V a través de resistencia de 47 kΩ. Posibilidad de reconfigurar como pull-down a tierra por hardware (ver manual del usuario, ). -0.5 (mínimo absoluto) a 0.8 V 2.0 a 7.0 V (máximo absoluto) 0.22 – 0.55 V 3.8 – 4.20 V Discreta de 5 V compatible con TTL 2 de 16 bits, 5 V/TTL Programables via bus PCI. Programables por software (ver detalles en el manual del usuario, ). Tabla 1: Especificaciones de la DAC Measurement Computing PCI-DAS6014. ATENCION Antes de conectar una fuente a la tarjeta de adquisición asegúrese que la magnitud del voltaje no supere los 10 V. Respete siempre los rangos de voltaje (ver Tabla 1) para no dañar la tarjeta de adquisición. IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 2 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control 3. Instalación y configuración de la DAC Para instalar la DAC debe seguir los siguientes pasos: 1. Instale los drivers de la tarjeta del CD MCC PCI-DAS6014 Drivers. Nota: Deberá instalar los drivers antes de colocar la tarjeta en un bus PCI. 2. Instale la tarjeta. 3. Instale InstaCal ver 5.7.2 (disponible en la página web del fabricante o del curso). 4. Ejecute InstaCal y agregue la tarjeta PCI-DAS6014. Nota: Es importante que agregue una tarjeta a la lista de dispositivos en InstaCal para generar un archivo de configuración CB.CFG. La Universal Library no funcionará si no ha completado este paso. 5. Instale MS Visual .NET 2003, Visual C++ o Borland C++. 6. Instale la Universal Library. IMPORTANTE La instalación de los componentes de hardware y software es sencilla. Si ud. no está familiarizado con la instalación de componentes de hardware en un PC, o si desea conocer los detalles sobre el funcionamiento, operación y otras características técnicas de la DAC, consulte , , y . 4. Conexión y operación de la DAC Para acceder a las entradas y salidas de la tarjeta digitalizadora, ésta se conecta a un par de circuitos impresos que poseen conectores para cada una de las entradas y salidas. Estos conectores facilitan la implementación de conexiones de la DAC con dispositivos sensores y actuadores usando cables estándares del laboratorio. En la Figura 2 se muestra la disposición de los pines en un par de cables planos. Notar que cada circuito impreso tiene una numeración de 1 a 50, sin embargo cada conector header de 50 pines tiene un estampado en relieve indicando su correspondencia a los pines 1-50 o 51-100 de la DAC. En la Tabla 2, y Tabla 3 se muestra la asignación de pines en modo diferencial (8 canales) y modo entrada-única (16 canales), respectivamente. Estos modos son configurables en InstaCal o mediante funciones de la Universal Library. Los terminales 36 y 38 corresponden a las salidas analógicas de la tarjeta con tierra en el terminal 37. Los terminales 85 al 92 pueden funcionar como entradas o salidas digitales dependiendo como se configuren ciertos registros de la tarjeta. Como los terminales digitales pueden funcionar bidireccionalmente se debe tener mucho cuidado en las conexiones que se realicen para no dañar los registros internos en la tarjeta. En modo diferencial, (2, 3), (4, 5), ..., (16, 17) corresponden a los pares de entradas analógicas (V_HI,V_LO). En modo entrada-única, los terminales de entrada 2, 4, 6, 8, ..., 16 y 3, 5, 7, ..., 17, corresponden a los canales 0, 1, 2, 3,..., 15, con tierra en los terminales 1 o 18. La manera de realizar las conexiones para las entradas analógicas de la DAC en modo entrada-única y en modo diferencial se indican en las figuras Figura 3 y Figura 4, respectivamente. Note que en modo diferencial, las tierras del dispositivo que general la señal y la tierra Low-Level Ground (LLGND) de conversor A/D de la DAC no deben presentar un potencial superior a los ±10 V. Asegúrese de esto antes de realizar cualquier conexión. Para detalles adicionales sobre otras maneras de realizar las conexiones entre los dispositivos de señal y las entradas de la DAC consulte . IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 3 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control Recuerde que al realizar mediciones con la DAC de múltiples dispositivos, es importante que todos tengan la misma tierra de referencia. De no ser así, no emplee el modo entrada-única, utilice en vez el modo diferencial. El modo diferencial ofrece una mayor inmunidad al ruido, ya que por lo general cuando las tierras no son comunes los voltajes estarán referidos a potenciales distintos y serán susceptibles a ruido en las fases de tierra distintos. IMPORTANTE El caso más simple, pero el menos probable, es aquel en el que la fuente de la señal tiene el mismo potencial de tierra que el de la tarjeta. Esto sucede usualmente cuando se alimenta la fuente de señal directamente desde la tarjeta. Es importante notar que cualquier voltaje entre la tierra de la tarjeta y la tierra de la señal es potencialmente un error de voltaje si ud. configura el sistema asumiendo que las tierras son comunes. Evite usar conexiones a la tierra de la red 220 VAC para conexiones de tierra de fuentes de señal. Distintas fases de tierra pueden tener diferencias de voltaje grandes y potencialmente peligrosas. Recuerde que las patas de tierra en los tomacorrientes de 220 VAC pueden estar conectados entre sí en un punto que se encuentra fuera de la sala. Por lo tanto es muy posible que dentro de una misma sala, dos o más tomacorrientes tengan cables de la fase tierra distintos. Para modificar el rango de la tensión de entrada puede emplearse InstaCal o las funciones de la Universla Library: int cbSetConfig(int InfoType, int BoardNum, int DevNum, int ConfigItem, int ConfigVal) int cbGetConfig (int InfoType, int BoardNum, int DevNum, int ConfigItem, int *ConfigVal) Revise los ejemplos de uso en las págs. 36-39 y 45-47 de . IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 4 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control Figura 2: Disposición de los pines en cada conector header de la DAC. IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 5 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control Figura 3: Conexión de un canal de entrada de la DAC en modo entrada-única. ATENCION El voltaje de modo común, es decir entre el GND del dispositivo que genera la señal (sensor o generador de señales) y el LLGND de la DAC, no debe ser superior a los ±10 V. Figura 4: Conexión de un canal de entrada de la DAC en modo diferencial. IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 6 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control Asignación de pines en modo diferencial de 8 canales Low-Level Ground DAC V_HI V_LO Tierra PC Tabla 2: Tabla de pines de la DAC en modo diferencial de 8 canales. IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 7 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control Asignación de pines en modo tierra común de 16 canales (conector-único) 0V ± 10 V Tierra PC Tabla 3: Tabla de pines de la DAC en tierra común de 16 canales. IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 8 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control 5. Programación de la tarjeta en C/C++ El lenguaje C/C++ es el que más se utiliza en aplicaciones industriales que requieren ejecución en tiempo-real por su flexibilidad y eficiente desempeño. Para programar la DAC en ambiente Windows o DOS deberá contar con un compilador como el MS Visual C++, Borland C++ u otros indicacos en . Además deberá seguir los pasos de instalación del software descritos en la sección 3. IMPORTANTE Ud. puede desarrollar programas en un computador que no tenga una DAC. Para ello ud. deberá añadir una DEMO-BOARD a la lista de tarjetas en InstaCal mediante la opción <Install/Add Borrad> y selecciónando DEMO-BOARD de la seccion ISA. Para usar la Universal Library con MS Visual C++, incluya el archive header de la Universal Library CBW.H en su programa en C/C++ y agregue la librería CBW32.LIB a la lista de librerías a ser enlazadas con CBW32.DLL. 5.1. Ejemplos El directorio C:\MCC\CWIN de la instalación de la Universal Library contiene tres ejemplos de programas: Wincai01, Wincai02 y Wincai03. Cada uno de estos en un ejemplo de un programa simple que llama algunas funciones de la Universal Library desde una aplicación de Windows. Utilice el archivo .DSP para construir las aplicaciones de 32-bit o el .MAK para las apliaciones de 16-bit. Los ejemplos en C no-Windows se encuentran en el directorio C:\MCC\C. Estos constituyen un set más completo de ejemplos. Estos ejemplos se pueden compilar como aplicaciones de consola (ventana de commando) de 32-bit para Windows ejecutando el archivo MAKEMC32.BAT. 5.2. Estructura de un programa La estructura general de un programa de adquisición, control y despliegue de datos constará de las siguientes partes • • • • • Preámbulo: En este se definen variables de configuración de la tarjeta y prototipos de la funciones. Rutina de Escritura: Este es el segmento de código que realiza la conversión D/A. Rutina de Lectura: Este es el segmento de código que realiza la conversión A/D. Funciones de Monitoreo de Tiempo: Son aquellas que verifican que la ejecución del programa se realice en tiempo real (hard real-time). Funciones de Despliegue Gráfico: Son aquellas que deben repintar la pantalla con los nuevos valores medidos por la DAC. IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 9 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control 5.2.1. Preámbulo en C/C++ En este se definen parámetros y constantes de inicialización de la tarjeta. En el siguiente recuadro se muestran las líneas principales de un preámbulo estándar para utilizar la DAC PCI-DAS6014. PREAMBULO EN C /* Memory addresses of the card registers */ #include #include #include #include #define #define #define #define <windows.h> <string.h> <stdio.h> "..\cbw.h" BOARD_NUM CHANNEL ADRANGE DARANGE /* Compiler's include files's */ /* Universal Library's include file */ 0 0 BIP5VOLTS BIP10VOLTS /* /* /* /* Number of A/D board as defined with InstaCal */ Number of A/D channel to read */ A/D voltage range */ D/A voltage range */ /* Function prototypes */ void escribe(float *Vout); void lee(float *Vin); Nota: El preámbulo puede ser guardado en un archivo de encabezado (header) e incluido en el código principal del programa mediante el pragma #include “dac.h” en C/C++. 5.2.2. Escritura El procedimiento de escritura en C/C++ se muestra en el siguiente recuadro. ESCRITURA EN C void escribe(float Vout) { /* Realiza la conversión D/A del voltaje Vout pasado a la función. */ int ULStat = 0; WORD DataValue; /* También podría usarse: static unsigned short DataVal; */ /* Convert Vout value given in Volts to a 16-bit binary number */ ULStat = cbFromEngUnits(BoardNum, DARANGE, Vout, &DataValue); /* Perform the D/A conversion of the 16-bit binary number in DataValue */ ULStat = cbAOut (BOARD_NUM, CHANNEL, DARANGE, DataValue); } Nota: Es importante emplear la definición de rango adecuado a las capacidades de la tarjeta. En el caso del conversor D/A de la PCI-DAS6014 este sólo soporta la definición de DARANGE en el preámbulo. Otros rangos de voltaje causaran un funcionamiento erróneo del programa. IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 1 IEE2682 Laboratorio de Control Automático Departamento de Ingeniería Eléctrica PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE Apuntes de la Tarjeta de Adquisición y Control 5.2.3. Lectura El procedimiento de lectura en C/C++ se muestra en el siguiente recuadro. LECTURA EN C void lee(float *Vin) { int UDStat = 0; WORD DataVal = 0; /* También podría usarse: static unsigned short DataVal; */ UDStat = cbAIn (BOARD_NUM, CHANNEL, ADRANGE, &DataVal); sprintf (OutString,"Raw A/D value = %u ", DataVal); UDStat = cbToEngUnits (BOARD_NUM, ADRANGE, DataVal, Vin); sprintf (OutString,"Voltage = %.2f ", Vin); } 5.3. Ejemplos de Programación en Visual C++ .NET Existe una gran cantidad de libros sobre como crear programas para Windows empleando Visual C++. Dos libros que le pueden ayudar empezar rápidamente y guiándolo paso a paso en la creación de una aplicación son , . A diferencia de otro libros, , son muy concisos y claros. El código fuente de numerosos ejemplos que lo llevarán paso a paso desde desde aplicaciones sencillas hasta las más avanzadas se puede encontrar en Microsoft Developer Network (MSDN). Todos lo ejemplos que podría necesitar para esta experiencia se encuentra en MSDN (www.msdn.com). ¡Es cuestión de que los busque para encontrarlos!... Si aún así considera necesarios más ejemplos, tiene distintas opciones: Ejemplos en http://www.cplusplus.com/src/ Ejemplos en http://www.engin.umd.umich.edu/CIS/course.des/cis400/vcpp/vcpp.html Ejemplos en MSDN para Visual C++ .NET 2003: http://www.microsoft.com/downloads/details.aspx?familyid=6e6fac4b-5b51-41fe-96041d9752e8a71a&displaylang=en#QuickInfoContainer Buscar otros en Internet. 6. Referencias [1] Measurement Computing. PCI-DAS6013 & PCI-DAS6014 Analog and Digital I/O Boards User’s Gude. Revision 5, September, 2006. Disponible en: www.mccdaq.com/PDFmanuals/PCI-DAS6013-6014.pdf. [2] Measurement Computing. Universal Library – Data Acquisition and Control Programming Tools User’s Guide. Revision 6.9, March, 2006. Disponible en: www.mccdaq.com/PDFmanuals/sm-ul-user-guide.pdf. [3] Measurement Computing. Universal Library – Data Acquisition and Control Programming Tools Function Reference. Revision 6.8, March, 2006. Disponible en: www.mccdaq.com/PDFmanuals/sm-ul-functions.pdf. [4] Measurement Computing. PCI-DAS6013 & PCI-Specifications. Revision 1.1, September, 2006. Disponible en: www.mccdaq.com/pdfs/PCI-DAS6013-6014.pdf. [5] Measurement Computing. Guide to Signal Connections. Revision 4, October, 2006. Disponible en: www.mccdaq.com/signals/signals.pdf. [6] Davis Chapman. Sams Teach Yourself Visual C++ 6 in 21 Days. Sams, 1998. [7] Richard Simon, Mark Schmidt. Sam Teach Yourself Visual C++.Net in 24 Hours. Sams, 2002. IEE2682_APUNTES_ADQUISICION.doc REV. 1 – 2009 1