GuionLabviewVer 5-6
GuionLabviewVer 5-6
GuionLabviewVer 5-6
NTTR
ROOD
DUUC
CCCIIÓ
ÓNNA A IN
A LLA NS
STTR
RU UM
MEEN
NTTA
ACCIIÓ
ÓNN VIIR
RTTU
UAALL.
PRRO OG
GRRA
AMMA AC
CIIÓ
ÓN N LA
N EEN BVIEW.
AB
VEER
V ÓN
RSSIIÓ N5
5..6
6
INDICE
1.- INTRODUCCIÓN A LOS SISTEMAS DE ADQUISICIÓN 5
Entorno Industrial ................................................................................................................................................5
Entorno de laboratorio ........................................................................................................................................5
2.- SOFTWARE 7
CONCEPTO DE INSTRUMENTO VIRTUAL .......................................................................................... 7
Estructura del software .................................................................................................................... 7
Programa de aplicación ........................................................................................................................................7
SOFTWARE CONTROLADOR DE DISPOSITIVO ................................................................................. 8
Este esquema general o alguna de sus variaciones lo encontraremos en múltiples entornos de los que cabe
destacar dos: uno será el de los procesos industriales y el otro será el de ensayos y test que englobaremos bajo la
denominación de entorno de laboratorio.
ENTORNO INDUSTRIAL
En un proceso industrial existirán varios sensores que suministran información, convenientemente
acondicionada, al elemento controlador del sistema. El elemento controlador, que estará basado en algún
microprocesador, recibirá la información de los sensores directamente o mediante un proceso de comunicación.
Además de la presentación de dicha información en la forma deseada (generalmente gráfica) el elemento
controlador dará las ordenes oportunas a los actuadores para mantener el proceso funcionando dentro de los
márgnes previstos.
SISTEMA
Perturbaciones
en el sistema Controlador
ENTORNO DE LABORATORIO
Para la instrumentación virtual o los procesos de laboratorio, la información puede venir dada no sólo por
sensores, sino también por otros sistemas de medida (osciloscopios, multímetros, etc.) con capacidad de
comunicación. Partiendo de la información recogida podemos cambiar las condiciones de la prueba,
modificando parámetros de los aparatos (generadores de funciones, fuentes de alimentación) .
Presentación,
Procesado,
Control
Aparatos de medida
Sistemas de
BUS Adquisición
excitaciones
SISTEMA BAJO
actuadores PRUEBA sensores
usuario
En un entorno como el descrito, la tendencia actual es que sea un software especializado quien se encargue del
control del sistema, coordinando el funcionamiento de los distintos elementos.
Uno de estos programas software es LabView de la multinacional National Instruments. Labview permite
recoger, analizar y monitorizar los datos dentro de un entorno de programación gráfico en el que se ensamblan
objetos llamados instrumentos virtuales (Vis) para formar el programa de aplicación con el que interactuará el
usuario y que se denomina instrumento virtual.
Además de lo que es la propia representación de los datos en los paneles interactivos que funcionan como si se
tratara de instrumentación real, permite múltiples opciones de manejo de datos, como su almacenamiento en
disco y compartirlos en red o con otras aplicaciones. La interacción con otras aplicaciones se podrá realizar
mediante llamadas a librerías de enlace dinámico (DLL: Dinamic Link Library) e intercambio dinámico de datos
(DDE: Dynamic Data Exchange) en modo local o mediante TCP/IP en conexiones remotas. Siempre buscando
independencia de la plataforma en la que hayamos realizado nuestra aplicación.
La capacidad de comunicación con otros sistemas será una cualidad importante en cualquier equipo ó sistema.
Además de la comunicación mediante interfaces comunes como el RS-232 o 485, podremos utilizar otros
estándares más específicos de instrumentación como el IEEE-488 más conocido como GPIB , el VXI o en
entornos industriales mas específicos el CAN.
2.- SOFTWARE
A diferencia de un instrumento real, que podemos tener en cualquier laboratorio o planta de procesos, y que
queda perfectamente definido por unos mandos de control y unos elementos de representación, un instrumento
virtual estará ligado al concepto de software. Este software se ejecutará en un ordenador que tendrá alojado unos
elementos hardware concretos, tarjetas de adquisición de datos (analógicos y digitales), tarjetas de interfaz con los
buses de instrumentación y unos canales de control también analógicos y digitales.
Nuestro instrumento virtual permitirá manejar ese hardware mediante una interfaz gráfica de usuario (IGU) que
se asemejará al panel de mandos de los aparatos habituales (Osciloscopio, multímetro, etc.)
Mediante le representación en pantalla de los elementos gráficos de visualización y control que servirán de
interfaz con el usuario, este observará los estados de las entradas seleccionadas en la pantalla e interactuará con
las salidas directamente o mediante la ejecución de las rutinas que halla programado.
• Básicamente, el software se encargará de comunicar la interfaz de usuario del ordenador con el hardware
de adquisición de datos dotando a la aplicación de la funcionalidad requerida.
• Podemos realizar una separación de las capas o partes del software: Programa de aplicación, controladores
de dispositivo (drivers) y librerías de aplicación (API’s).
PROGRAMA DE APLICACIÓN
El programa de aplicación, también llamado instrumento virtual, consta de dos partes: interfaz de usuario y
funcionalidad de la aplicación:
Funcionalidad de la aplicación
• Una de las funciones básicas será la de obtener datos del hardware de forma transparente al usuario.
• La funcionalidad del programa incluye tratamiento de señal, control del flujo de programa, control de
errores, etc…
• Puede implementarse en lenguajes basados en texto (Visual Basic, C++, LabWindows/CVI, etc.) o puede
utilizar lenguaje gráfico como LabWiew, Snap Master, DasyLab, HP-VEE, Visual Designer de Burr
Brown, etc..
PROGRAMACIÓN GRÁFICA
Los procesos programables se definirán mediante un lenguaje gráfico en vez de un lenguaje orientado a líneas de
código como estamos acostumbrados normalmente.
En este tipo de programación las funciones son bloques que se interconectan entre sí, intercambiando la
información.
El acceso al hardware ya no se realiza mediante llamadas directas a sus registros, si no que los fabricantes
proporcionan una capa intermedia que aisla al programador de detalles hardware. Esta capa intermedia facilita la
comunicación entre el hardware y nuestro entorno de programación. Suele implementarse mediante DLLs, por
lo que se necesita una versión específica para cada sistema operativo. (p. ej. Win16 y Win32).
GUI
NI-DAQ Configuration
utility
Registro de
Windows
NI-DAQ.DLL
DAQ.DRV
TARJETA DAQ
Todas las tarjetas ofrecen estas librerías como complemento software. Es tan importante la
documentación como la variedad y flexibilidad de las librerías.
ADQUISICIÓN DE DATOS
Práctica 12
Simulación de adquisición de datos
Escalado de tiempos
Gráficas en función de la frecuencia
Analizador de espectro
Práctica 13
Filtrado
Etiqueta
LLAMADAS A LA AYUDA:
Mediante CONTROL+H o seleccionando la opción Show Help del menú HELP
Situándonos sobre cualquier elemento nos informará de su utilidad y que conexiones necesita.
Nombre de la
función seleccionada
Pulsar sobre CONTROL+B borra de nuestro diagrama las uniones defectuosas realizadas mediante el
carrete de hilo, porque no llevan a ningún sitio o porque unan elementos no relacionables.
Partiendo de lo aprendido en la práctica 1, realizar las operaciones de suma, resta, multiplicación y división de las
entradas A y B utilizando como salidas para los resultados distintos visualizadores, tanque, agujas, etc.
Para cambiar la escala del depósito al valor 100, basta con sobrescribir el valor máximo con la
herramienta de escritura
Podemos realizar el cambio entre las distintas herramientas, ‘flecha’, ‘mano’, ‘carrete de hilo’ con
la pulsación del tabulador y el espaciador.
Cambio de colores: podemos modificar las propiedades de color de la mayoría de los elementos del panel de
control con la herramienta pincel
La alineación de las partes de un diagrama y del panel de control se realiza mediante las listas
TIPOS DE DATOS:
Existen 12 representaciones para los controles o indicadores digitales:
Los límites, máximo y mínimo, dependen del tipo ; un entero con signo (8 bits) estará entre los valores de -128 a
127.
Precisión: Simple Doble Extendida
Número positivo máximo 3,4 E38 1,7 E308 1,1 E4932
Número positivo mínimo 1,5 E-45 5,0 E-324 1,9 E-4951
Número negativo mínimo -1,5 E-45 -5,0 E-324 -1,9 E-4951
Número negativo máximo -3,4 E38 -1,7 E308 -1,1 E4932
Para realizar el cambio de la precisión de un dato invocaremos el menú contextual pulsando el botón derecho
cuando estemos sobre él y seleccionando el submenú de REPRESENTATION del menú emergente.
Paso A
La concatenación básica corresponde con este ejemplo, donde usamos la función Funcions/strings/concatenate
strings
Paso B
En el ejemplo siguiente concatenamos varios elementos; algunos de los cuales son el resultado de la conversión
de números a cadenas de caracteres.
STRINGS/ADITIONAL../to
fractional
La adquisición aunque simulada correspondería con un esquema hardware donde un sensor está conectado a uno
de los canales de una de las tarjetas de adquisición de datos disponibles en el ordenador. El esquema sería el
siguiente:
Sensor
Ordenador de Control Tarjeta 1
Tarjeta 2
Este VI solo funciona si seleccionamos los valores 0 ó 1 en el control Device y el control Chanel dando error en
cualquier otro caso. (i.e. Device 0 = Tarjeta 1, Device 1 = Tarjeta 2).
TÉCNICAS DE DEPURACIÓN:
Podemos insertar una punta de prueba en cualquier cable del diagrama para visualizar el valor en dicho punto.
• Para crear esta punta de prueba, seleccionamos la herramienta del menú de herramientas, pulsando
con el ratón en aquellos puntos de cable donde deseemos saber el valor de la variable.
Recordemos que para obtener ayuda sobre una determinada función podemos activar la ayuda.
Se la llama mediante CONTROL-H. y al situarnos sobre un elemento nos da la información referida a
el, conexiones y tipos de datos que utiliza.
CREACIÓN DE SUBVI'S
Son el equivalente a las subrutinas en los lenguajes de programación basados en texto.Con ellos conseguimos una
programación mejor estructurada y por tanto más legible así como evitar la repetición de código. La diferencia
respecto a las tradicionales subrutinas es que un subVI puede ejecutarse de forma autónoma sin necesidad de que
esté incluido en un VI.
Al hacer doble click sobre un subVI se abre el panel de control correspondiente a dicho subprograma.
Para salvar un VI como fichero lo haremos mediante las distintas opciones del menú FILE, SAVE y SAVE AS.
Deberemos poner nosotros la extensión .VI ya que por defecto el programa no añade extensión alguna.
Crear un subVI
Partiendo de un VI como el del ultimo ejemplo, crearemos un subVI para utilizarlo posteriormente en otras
partes de nuestros VI's. Tendremos que definir unas entradas y unas salidas para posteriormente efectuar las
conexiones en el diagrama.
Haciendo doble click ( doble pulsación) sobre el icono de la parte superior derecha del panel de control
podemos editar el dibujo que identificará a nuestro subVI.
Si una vez modificado y dejado como definitivo, pulsamos con el botón derecho y elegimos la opción Show
conector veremos la disposición de conexiones de nuestro subVI.
Pulsar el botón derecho para ver los distintos tipos de patterns (plantillas de conexión) y elegir el que se adapte a
nuestras entradas y salidas; normalmente las entradas estarán a la izquierda y las salidas a la derecha.
En la ventana panel de control seleccionar la posición dentro del pattern y con el carrete de hilo el control
correspondiente de entrada o salida. Si esta seleccionado como entrada o salida habrá cambiado del blanco al gris
en el pattern elegido por nosotros.
Una vez realizadas las conexiones y modificaciones del icono podemos guardarlas.
Partiendo del subVI que acabamos de crear y que muestra la temperatura en grados Fahrenheit, realizar un VI
que visualice la temperatura en grados centígrados.
Completar el diagrama de bloques teniendo en cuenta que: Tª (ºC) = [Tª (ºF) - 32] * 5/9
OPCIONAL:
Añadir un
indicador de
grados Kelvin
ºK = ºC + 273
OPCIONAL:
Crear un subVI
con tres salidas:
ºC, ºF y K.
En vez de crear manualmente un control para cada entrada y un indicador para cada salida, es
posible realizar esta tarea automáticamente:
- Mediante el carrete de hilo, pulsar con el botón derecho sobre la entrada o salida y elegir la
opción create control o create indicator .
- Según el caso el programa crea automáticamente el tipo necesitado incluso con su etiqueta.
Si no hemos puesto la etiqueta a algún elemento deberemos seleccionar el elemento con el botón
derecho y elegir la opción show label; una vez en pantalla introducir el valor deseado.
Siguiendo la ejecución del programa en modo de depuración podemos ver como las funciones esperan de
izquierda a derecha a que se vayan generando los datos que necesitan para completar la operación.
Un SubVI puede llamar a múltiples VI’s dando lugar a una jerarquía que podemos visualizar gráficamente. Para
ello existe la opción show VI hierarchy del menú Project.
La secuencia While-loop permite repetir las acciones que situemos dentro del bucle hasta que deje de cumplirse
una condición que nosotros establezcamos.
PASO A
Como ejemplo generaremos un número aleatorio entre 0 y 1 mediante la función FUNTIONS/NUMERIC/Ramdom
Number. El
resultado lo representaremos mediante una gráfica en el panel de control: CONTROL/GRAPH/Wave
form Chart.
La ejecución debe parar cuando el usuario pulse un botón ON/OFF.
Para ello, situaremos la función dentro de un bucle While que se ejecutará como mínimo 1 vez hasta que la
condición procedente del botón sea FALSE.
El número de decimales que aparecen en el visualizador puede ser modificado mediante la propiedad asociada
FORMAT & PRECISSION de su menú contextual.
• Diferenciaremos entre la ejecución única del programa, que se detendrá cuando pongamos en OFF el
botón asociado al control del bucle y la parada en la ejecución mediante el botón de STOP.
PASO B
Podemos incluir un retardo entre la generación de uno y otro punto mediante la función FUNTIONS/Time &
Dialog/Wait Until Next ms Multiple, tal y como puede verse en la siguiente figura:
El promedio se
realiza sobre 4
muestras
PASO A
Para comprender mejor el efecto del registro de desplazamiento activaremos el modo de depuración, para ver
como evolucionan los valores.
Es importante reseñar la diferencia entre parar un programa correctamente, una vez acabada las acciones
contenidas en un bucle o abortar la ejecución mediante el botón sin ningún control sobre las acciones que
han sido ejecutadas y las que han quedado pendientes.
PASO B
Para visualizar simultaneamente la grafica corresponiente a la media y al valor original; lo haremos mediante la
opción FUNTIONS/CLUSTER/BUNDLE.
Un bucle For (For-loop) permite la ejecución del código que situemos dentro del bucle un número de veces
predeterminada.
PASO A
Construiremos una matriz que contendrá las 100 tiradas del dado. Para ello, en el panel de control:
• Primero, insertar un visualizador de tipo array: CONTROL/ARRAY & CLUSTER/Array.
• Después debe introducirse un visualizador numérico dentro del control array (soltándolo encima).
Los elementos del array se almacenarán en el túnel (punto negro en el marco de la estructura for-loop) si
tenemos habilitada la opción de autoindexado, sino sólo el último dato será pasado al exterior del bucle.
OPCIONAL:
Realizar el promedio de los
100 puntos mediante un
registro de
desplazamiento.
Ojo, debe inicializarse el
En el menú contextual de este punto registro a cero.
(tunel) se activa/desactiva la opción
de autoindexado (“Enable indexing”)
PASO B
Añadir un gráfico CONTROLS/GRAPH/Wave form Graph para la visualización gráfica del array. Quedará como se
muestra en el panel y diagrama siguientes:
Comparar la diferencia entre los gráficos CHART y los GRAPH, calculando la media, máximo y mínimo de las
temperarturas generadas aleatoriamente por el subVI denominado Digital Thermometer.vi de la librería Tutorial.
• Observar la diferencia en el grosor del cable del array que sale del bucle FOR.
• Las funciones para encontrar el máximo y el mínimo del array se encuentran en FUNTIONS/ARRAY/Array
Max & min
• Para calcular la media lo haremos mediante la función FUNTIONS/ANALISIS/Probability & Statistics/Mean
• Para hacer el BUNDLE mas grande de forma que permita conectar más elementos, situamos el puntero en
alguna de las esquinas y estiramos hacia abajo.
Tener en cuenta que incluimos 2 tipos de gráficos, Graph y Chart. Para dar sentido temporal al eje x
de la gráfica se debe realizar un bundle con tres elementos: la matriz de puntos, su separación en el
tiempo y el origen. Como hemos fijado pausas de 250 ms entre muestras entonces delta X es 0'25
(segundos). Xo establece el origen del eje x, en este caso 0.
Para añadir entradas o salidas lo haremos pulsando con el botón derecho del ratón en el marco del nodo fórmula
y seleccionando add input o add output..
Las fórmulas incluidas (todas las que necesitemos para calcular las salidas) deben terminar en punto y coma (;).
Los resultados de cada fórmula dan lugar a una matriz unidimensional. La unión de esas dos matrices da lugar a
una matriz de 2 dimensiones. Esa conversion se realiza mediante la función FUNTIONS/ARRAY/BUILD ARRAY
OPCIONAL:
Hallar el valor RMS
de la función
senoidal mediante
el VI
Functions/analysis
/probability and
statistics/RMS
Un ejemplo mas completo y vistoso del uso de la estructura formula-node puede verse en la zona de
ejemplos, Examples/General/Graphs/gengraph.llb en el instrumento virtual llamado bouncing cube.vi
Esta estructura de programación permite que se ejecute una porción de código u otra según se cumpla o no una
condición impuesta por el usuario.
La función de sonido
'Beep.vi' se encuentra en
Funtions/advanced.
Para evitar que pite de forma continua, cambiar la constante de comparación a un valor 0,999
VELOCIDAD DE MUESTREO
Teorema de Nyquist
Establece que para poder reconstruir una señal muestreada, la velocidad de muestreo fs debe ser al menos el
doble de la mayor de las componentes de la señal muestreada:
fs ≥ 2 * fmax
En la práctica se toma al menos entre 3 y 5 veces mayor que la frecuencia máxima. Como explicaremos en el
próximo punto, esto evita que las frecuencias superiores cercanas a la máxima produzcan aliasing.
Ej.: Las señales de audio recogidas por un micrófono y convertidas a señal eléctrica tienen
(idealmente) componentes de hasta 20 KHz. Para digitalizar esta información y poder reconstruirla
después se debe muestrear a una velocidad mayor de 40 Kmuestras/s. (Los Compact Disc lo hacen
a la velocidad normalizada de 44,8 Kmuestras/s)
Aliasing (solapamiento)
Señal muestreada a frecuencia inferior a la de Nyquist, aparece el aliasing: Al reconstruir la señal se obtiene otra frecuencia
inferior.
En la imagen anterior, si la señal original fuera de 3 KHz, ¿Qué frecuencia observaríamos tras
reconstruir la señal muestreada?
EN EL DOMINIO DE LA FRECUENCIA:
Supongamos una señal de interés f1 y otra interferente f2 como pueden verse en la siguiente figura:
Cuando una señal de frecuencia fx se muestrea a una velocidad fs, su espectro aparece reflejado en fx-fs/2 como
puede apreciarse en la siguiente figura:
Solapamiento
En este caso, al muestrear la señal f1, el espectro reflejado f1-fs/2 queda a la izquierda del origen de frecuencias,
por lo que no hay problema. Sin embargo al muestrear la señal f2 su espectro reflejado f2-fs/2, se solapa con f1
confundiéndose con él. De esta forma, la señal f2 interfiere con la señal útil f1.
Únicamente nos fijaremos en un ancho de banda limitado a 2 KHz, por lo que idealmente, además de la
fundamental sólo debería existir un armónico a 1500 Hz.
El filtrado debe ser previo al muestreo (i.e. filtrado analógico). Después del muestreo, el aliasing no
puede eliminarse; la señal alias no puede separarse de la señal útil mediante ningún tipo de filtro,
pués cae en su ancho de banda.
RESOLUCIÓN
Se refiere al incremento mínimo de tensión detectable, que coincidirá con el valor del bit menos significativo
(LSB). Sin embargo, en tarjetas de adquisición de datos la resolución suele expresarse como el número de bits del
conversor A/D.
Una resolución de 12 bits de un conversor A/D indica que es capaz de representar 4096
combinaciones binarias, es decir, 1 parte entre 4096 (212=4096).
RANGO
Como puede verse en la siguiente tabla, el rango de entrada viene determinado por la ganancia seleccionada.
Configuración
El rango de las señales de entrada puede ser UNIPOLAR o BIPOLAR
Se puede programar la polaridad y el rango de forma que cada canal tenga una configuración propia.
Hay que seleccionar el rango (Polaridad y ganancia) de forma que se ajuste al máximo al rango de la señal a medir
Rango
obteniendo así la MAYOR RESOLUCIÓN posible. (1 LSB = Voltios)
Ganancia ⋅ 2 N
Rango dinámico
Expresa la diferencia máxima de magnitud que puede haber entre dos señales de entrada de forma que ambas
puedan medirse. Suele expresarse en decibelios (dB).
En la imagen se observa la señal obtenida si conectáramos, por ejemplo un generador de funciones al canal 0 de la tarjeta 1.
OPCIONAL:
Guardar los datos adquiridos en un fichero con formato de hoja de cálculo:
La función se encuentra en
Analisys/Measurement
EJERCICIOS
RESOLUCIÓN ESPECTRAL
Se trata de averiguar de forma experimental la relación que define la resolución espectral ∆f, para lo cual:
3. Dejar el nº de muestras constante (P. ej. 256) y variar fs cumpliendo Nyquist. ¿Qué ocurre con el espectro?.
fseñal Nº de muestras fmuestreo ∆f (aumenta ó disminuye)
100 Hz 256
4. A partir de los datos recogidos establecer la ecuación que define ∆f en función de fs y N. ¿Cuál de las tres
expresiones es la correcta?
∆f= N / fs ∆f= fs / N ∆f= fs * N
5. Comprobar numérica y experimentalmente la relación hallada para alguno de los casos anteriores:
ALIASING
Seguir los pasos siguientes y rellenar la tabla:
CONCLUSIONES:
Con este ejercicio, trataremos de ver el efecto de realizar la FFT sobre un número no entero de periodos de la
señal muestreada. Este efecto puede paliarse mediante el uso de ventanas de alisado previas a la FFT.
10,0 10,0
7,5 7,5
5,0 5,0
2,5 2,5
0,0 0,0
-2,5 -2,5
-5,0 -5,0
-7,5 -7,5
-10,0 -10,0
0 25 75 125 175 225 275 325 375 425 0 25 75 125 175 225 275 325 375 425
ms ms
5,0 5,0
4,5 4,5
4,0 4,0
3,5 3,5
3,0 3,0
2,5 2,5
2,0 2,0
1,5 1,5
1,0 1,0
0,5 0,5
0,0 0,0
0 25 50 75 100 125 150 175 200 225 250 0 25 50 75 100 125 150 175 200 225 250
Hz Hz
14.1.- PROMEDIADO
El proceso más evidente de filtrado es el promediado. La relación Señal/Ruido que se obtiene
mediante esta técnica es:
N out 1
=
N in n º muestras
Cuando tenemos una señal cuasi continua a la que se ha añadido una interferencia como la de la red eléctrica,
podemos aprovechar que el valor medio de una senoide es cero para eliminarla. Si tomamos un nº de muestras
tal que completen un ciclo de la senoide, su valor medio será cero. Se trata de modificar nuestro VI para que
realice dicha tarea:
1. Fijar una velocidad de muestreo suficiente para la interferencia de la red eléctrica.
2. Verificar mediante el VI anterior que la frecuencia se corresponde con la esperada.
3. Calcular el nº de puntos del promediado que debemos realizar para eliminar dicha interferencia.
4. Modificar el VI anterior para que realice este cometido añadiendo los siguientes elementos:
¿ ............ ?
Frec. muestreo N = Observaciones
¿ ............. ?
f1=
f2=
Vamos a intercalar un filtro entre el array de señal y las gráficas de forma que podamos filtrar varios armónicos
de una señal cuadrada (distorsionar). Para ello:
1. Crear una estructura case que permita al usuario elegir si desea filtrar o no la señal mediante un botón.
2. Dentro del caso True incorporar un filtro Butterworth (se encuentra en el grupo de funciones
Analysis/Filters/Butterworth filter.vi)
3. Crear automáticamente los controles necesarios para configurar el filtro: tipo, orden, frecuencia superior de
corte, frecuencia inferior de corte. Debemos obtener algo parecido a la siguiente figura.
En el filtro debe cumplirse 0 <fcorte ≤ fs/2, de lo contrario dará un error. Si, según Nyquist sólo
pueden muestrearse señales por debajo de fs/2, el filtro sólo funcionará hasta esa frecuencia.
HISTORIA
• En 1965 la empresa Hewlett Packard crea la interfaz de bus HP-IB (Hewlett Packard Interface Bus) para
conectar instrumentos programables a sus ordenadores.
• Debido a sus ventajas se populariza de tal forma que en 1975 se estandariza como IEEE 488-1975
(Aunque es más conocido como GPIB -General Purpose Interface Bus-)
• En 1987 evoluciona dando paso al ANSI/IEEE 488.2, por lo que el anterior IEEE 488-1975 pasa a
denominarse ANSI/IEEE 488.1
FUNCIONAMIENTO
Los dispositivos conectados al bus se comunican entre ellos mediante mensajes
Tipos de mensajes
ESCUCHADOR (LISTENER)
Capaz de recibir datos de la interfaz cuando esté direccionado (habilitado) por el controlador. Puede haber hasta
14 escuchadores activos simultaneamente en el bus. Dispositivos escuchadores pueden ser por ejemplo una
impresora, un generador de funciones, etc..
HABLANTE (TALKER)
Un hablante, cuando se le ha direccionado, envía mensajes a uno o varios escuchadores que reciben los datos.
Por ejemplo un osciloscopio puede actuar como hablante y como escuchador. Sólo puede haber un hablante
activo sobre la interfaz.
CONTROLADOR
Gestiona el flujo de información en el bus enviando comandos a todos los dispositivos. El controlador es capaz
de direccionar (habilitar) a un hablante que quiera enviar un mensaje a varios escuchadores, permitiendo una
operación de transferencia de datos. Él mismo puede ejercer de emisor o receptor.
Se podría configurar un bus sin dispositivo controlador y en el que hubiera un dispositivo con
capacidad únicamente de hablante y varios con capacidad únicamente de escucha.
La función de controlador la suele realizar un dispositivo conectado al ordenador (Tarjeta ISA, PCI, PCMCIA,
etc.) que habitualmente tiene además capacidad de hablante y escuchador.
En sistemas con varios controladores sólo uno puede estar actuando como tal. El controlador activo puede pasar
el mando del bus a otro controlador que se halle inactivo.
LINEAS DE DATOS
Son 8 y se denominan DIO1-DIO8
• El estado de la linea de gestión ATN (se verá más adelante) determina si la información presente en el bus
de datos corresponde a un dato o a un comando.
• Todos los comandos y la mayoría de datos utilizan el código ASCII de 7 bits, de forma que la linea DIO8
se utiliza como paridad.
LINEAS DE PROTOCOLO
Estas tres lineas controlan de forma asíncrona la transferencia de bytes de mensajes entre dispositivos,
garantizando que se realiza sin errores.
• DAV (DAta Valid):. Es activada por el controlador cuando envía comandos y por el hablante cuando envía
mensajes de datos. Indica cuando la señales de datos son estables (válidas) de forma que puedan ser
interpretadas de forma fiable por los escuchadores.
• NRFD (Not Ready For Data): Un escuchador activa esta linea cuando no está preparado para la recepción
de datos. Tendrá valor falso cuando todos los receptores direccionados estén listos para recibir datos. Se
realiza la función OR cableada de las salidas NRFD de lo escuchadores direccionados. Siendo necesario que
todos estén preparados (todas las salidas NRFD a falso) para que la línea NRFD se ponga a falso.
• NDAC (No Data ACcepted): En estado verdadero indica que algún escuchador direccionado no ha aceptado
todavía los datos enviados. Un estado falso indica que todos los receptores activos han aceptado los datos.
Nuevamente se realiza la función OR cableada de todas las salidas NDAC de los receptores activos.
LINEAS DE GESTIÓN
Estas cinco lineas gestionan el flujo de datos e información del bus.
• ATN (ATtentioN): El controlador activa ATN a verdadero cuando usa las lineas de datos para enviar
comandos y la pone a falso para permitir que un hablante envíe datos.
• IFC (Interface Clear): El controlador activa esta linea para inicializar el bus interrumpiendo el proceso que
se estaba realizando. Se deshabilita al hablante y a los escuchadores activos, quedando todos inactivos. El
controlador asume el mando del bus. Todos los dispositivos deben responder a esta línea en cualquier
instante.
• REN (Remote Enabled): El controlador activa esta linea para poner los dispositivos direccionados en modo
de programación remota. Cuando no está activada los dispositivos se encuentran en modo de control
local.
• SQR (Service Request): Cualquier dispositivo puede activar esta linea para pedir servicio al controlador.
• EOI (End Or Identify): Tiene dos funciones; el hablante activa esta linea para indicar el último byte de un
dato a los receptores activos. Con ATN a "1", la activación de esta línea indica que el controlador realiza
un sondeo paralelo.
IEEE 488-2
• Viene a paliar los problemas que arrastra el estándar desde el veterano IEEE 488.1.
• Se mantiene la compatibilidad con IEEE 488.1, pero los beneficios del nuevo estándar sólo se obtienen
cuando se tiene un sistema totalmente compatible IEEE 488.2
• Normaliza el lenguaje de programación de los dispositivos incorporanto el estándar SCPI.
HS488
Es una propuesta de la compañia National Instruments para la mejora de las velocidades de transmisión de la
norma 488. Entre dos dispositivos compatibles HS488 separados por 2 metros de cable se pueden alcanzar de
hasta 8 MB/s. En un sistema con 15 dispositivos y 15 metros de cable la velocidad puede alcanzar 1’5 MB/s
LabVIEW
Red de
instrumentos
Libreria de funciones GPIB
GPIB
(Gpib-32.dll, etc)
Tarjeta de
interfaz GPIB
2ª Tarjeta interfaz GPIB
ENVÍO DE COMANDOS
En este apartado veremos como enviar ordenes por el bus GPIB al generador de funciones Hameg HM-8130
mediante LabView.
Las funciones relativas al bus GPIB se encuentran en Functions/Instrument I-O/GPIB
Debemos conocer previamente la dirección del bus asignada a nuestro aparato. Podemos verla directamente
según la la configuración de los microinterruptores que se encuentran es su parte trasera. Además nos lo muestra
en su display cada vez que encendemos el aparato.
Entre los comandos que admite el generador de funciones HM-8130 tenemos por ejemplo:
SIN Genera a la salida la onda senoidal de los valores seleccionados
OT0 Desactiva y OT1 activa la salida de señal.
OF0 Desactiva la tensión de Offset en la salida y OF1 la activa.
DFR Visualiza la frecuencia.
DAM Visualiza la amplitud
LK1 Bloquea la botonera del generador para impedir su manejo en modo local. LK0 lo desbloquea.
Los comandos del generador pueden concatenarse para formar una única cadena de comandos y enviarse a la
vez. Cada comando debe acabar con punto y coma “;”.Por ejemplo:
LK1;TRM;RMP;FRQ:0;AMP:2,000E-2;OT1;OF0;
RECEPCIÓN DE RESPUESTAS
La comunicación con los instrumentos implica la recepción de respuestas tras el envío de comandos de
interrogación. Por ejemplo para saber la frecuencia actual de la señal generada.
El subVI General Error Handler mostrará en pantalla los errores producidos en la comunicación pro el bus en caso
de producirse. y asegura (al unir la salida de la acción de escritura con la de lectura) la correcta secuencia; no hay
ninguna duda de que primero se producirá la escritura del comando de interrogación, en espera de la respuesta y
posteriormente la lectura de la misma.
Originalmente
ADDRESS STRING
La conexión puede
realizarse por detrás
del VI, engañando
en apariencia.
Realizar seguimiento
de la conexión
Originalmente
DATA
Se encuentra en el grupo
de funciones Time &
Dialog
Entre los comandos de interrogación que ofrecen respuesta por parte del generador de funciones están:
FRQ? Devuelve la frecuencia actual
AMP? Voltaje actual a la salida
OFS? Tensión de Offset.
ID? Identificación del aparato.
VER? Versión del equipo.
STA? Estado del equipo.
La función se encuentra en
FUNTIONS/strings/additional string to number
En general es interesantre para el usuario que la interfaz de nuestro VI se parezca lo más posible al panel frontal
del instrumento real. Colocaremos mandos para todas las funciones que necesitemos controlar.
Por razones didácticas, hemos añadido un visualizador de la cadena que se enviará al instrumento.
El diagrama de bloques que debemos implementar es el siguiente:
La función se encuentra en
String/concatenate
1ª strings
La función se encuentra en
String/select & append
2ª
3ª
4ª
La función se encuentra en
String/Aditional.../to decimal
Realizar el programa por partes, visualizando el resultado de cada una de ellas (de 1ª a 4ª) según se
incorporan nuevas funciones. Por último añadir el sub VI de escritura en el bus GPIB.
APLICACIONESGPIB EN RED
Podemos ver otras aplicaciones como son las relativas al control de instrumentación no directamente conectada
a nuestro ordenador.
Los datos llegarían al aparato a controlar mediante el ordenador que tiene la tarjeta de bus, que actuaría como un
servidor de datos; estos serían enviados por el ordenador que tiene el programa de control y que actuaría como
un cliente.
Este intercambio de datos se hace mediante la tecnología cliente-servidor dentro de las redes de ordenadores, y
permite la conexión remota, incluso vía telefónica entre distintos equipos de distintas características siempre y
cuando cumplan con el protocolo de comunicación.
Conexión para manejar el generador de funciones con comandos GPIB desde otro PC. El ordenador que no
tiene la tarjeta controladora es el que genera los comandos de control. Ambos ordenadores se comunican
mediante la red ethernet en el protocolo TCP-IP.
Red de
instrumentos
GPIB
Sensor
CLIENTE DE SEÑAL. CLIENTE DE SEÑAL. SERVIDOR DE SEÑAL Tarjeta Adquisición.
Ordenador que recibe Ordenador que recibe Ordenador que envía Lab-PC-1200
la señal capturada por la señal capturada por la señal capturada a
la tarjeta situada en otro ordenador, la tarjeta situada en otro ordenador, la red de ordenadores.
vía TCP-IP, vía TCP-IP,
y los representa en pantalla. y los representa en pantalla.