Vous êtes sur la page 1sur 42

ANEXO 3: ADQUISICIÓN Y PROCESAMIENTO

DE DATOS CON “LabVIEW”

3.1 LabVIEW 5.1

3.1.1 El entorno LabVIEW y la instrumentación virtual

LabVIEW (Laboratory Virtual Instrument Engineering Workbench), de National


Instruments, es un sistema de programación gráfico diseñado para el desarrollo de
distintas aplicaciones como el análisis de datos, la adquisición de datos y el control de
instrumentos [8]. La versión de LabVIEW utilizada para este proyecto es la 5.1.

Al ser LabVIEW un lenguaje de programación gráfico y basado en un sistema de


ventanas, muchas veces es más sencillo de utilizar que otros lenguajes más típicos.
Mucha gente que habitualmente no intentaría diseñar una aplicación puede conseguirlo
con LabVIEW

Este tipo de lenguaje se desarrolló a partir de la aparición de la instrumentación


virtual, es decir , con el uso de los ordenadores para realizar medidas (temperatura,
presión, caudal, etc), aprovechando las características de éstos últimos (potencia de
cálculo, productividad, capacidad de visualización gráfica y capacidad de conexión con
otros dispositivos), para optimizar los resultados

En definitiva, se puede concluir diciendo que con un ordenador personal, un


hardware adecuado (placas de adquisición de datos), unos “drivers” y un software como
LabVIEW, se pueden obtener datos muy provechosos y mejores que si se utilizan
instrumentos tradicionales tales como osciloscopios, generadores de señal, analizadores
de espectros, analizadores vectoriales, etc.

A3-1
3.1.2 Ventajas de usar Labview

Seguidamente se van a describir las ventajas de usar este tipo de lenguaje de


programación:

- La primera ventaja de usar LabVIEW es que es compatible con herramientas


de desarrollo similares y puede trabajara la vez con programas de otra área de
aplicación, como Matlab o Excel. Además se puede utilizar en muchos sistemas
operativos, incluyendo Windows y UNIX, siendo el código transportable de uno
a otro.

- Otra de las ventajas más importantes que tiene este lenguaje de programación
es que permite una fácil integración con hardware, específicamente con tarjetas
de medición, adquisición y procesamiento de datos (incluyendo adquisición de
imágenes).

- Es muy simple de manejar, debido a que está basado en un nuevo sistema de


programación gráfica, llamado lenguaje G.

- Es un programa enfocado hacia la instrumentación virtual, por lo que cuenta


con numerosas herramientas de presentación, en gráficas, botones, indicadores y
controles, los cuales son muy esquemáticos y versátiles. Estos serían
complicados de realizar en bases como C++ donde el tiempo para lograr el
mismo efecto sería muchas veces mayor.

-Es un programa que contiene librerías especializadas para manejos de DAQ


(tarjetas de adquisición de datos), Redes, Comunicaciones, Análisis Estadístico,
Comunicación con Bases de Datos (útil para una automatización de una empresa
a nivel total).

- Como se programa creando subrutinas en módulos de bloques, se pueden usar


otros bloques creados anteriormente como aplicaciones por otras personas.

A3-2
A continuación se representa una tabla que describe otro tipo de ventajas del
instrumento virtual frente al instrumento tradicional:

3.1.3 Aplicaciones de LabVIEW

Labview tiene su mayor aplicación en sistemas de medición, como monitoreo de


procesos (como en el caso de este proyecto, ya que se representan las curvas de fluidez
y viscosidad de diversos fluidos) y para aplicaciones de control. Además, LabVIEW se
utiliza bastante en el procesamiento digital de señales, en el procesamiento en tiempo
real de aplicaciones biomédicas, manipulación de imágenes y audio, automatización,
diseño de filtros digitales, generación de señales, entre otras, etc.

A3-3
3.1.4 Programación con LabVIEW

Con la llegada del software de programación gráfica LabVIEW de National


Instruments el proceso de realización de un programa se ha facilitado en gran medida al
minimizarse el tiempo (costes) de desarrollo de las aplicaciones.

La forma de programar en LabVIEW es muy distinta a otros lenguajes de


programación que se basan en texto, como C , VISUAL BASIC o FORTRAN.

La principal diferencia con respecto a los anteriores lenguajes de programación


es que LabVIEW utiliza los símbolos gráficos, denominados iconos, para representar el
programa de acciones.

Los programas de LabVIEW se denominan VI ó VI’s (Visual Instruments),


instrumentos virtuales (programas), debido a que su aspecto y operación reproducen a
instrumentos tradicionales [9]como osciloscopios, generadores de señales, analizadores,
etc (Figura 1).

Figura 1: ejemplo de instrumento tradicional (osciloscopio).

Un instrumento virtual (programa) se define como un módulo de software que


simula el panel frontal del instrumento, y ayudándose en elementos hardware accesibles
por un ordenador (tarjetas de adquisición de datos, como es en el caso de este proyecto,

A3-4
instrumentos accesibles vía GPIB, General Purpose Interface Bus, puerto serie, etc) ,
realiza una serie de medidas que equivalen a las que se obtendrían en un instrumento
real.

De este modo, cuando se ejecuta un programa que actúa como un instrumento


virtual o “VI”, el usuario o usuaria ve en la del ordenador personal un panel cuya
función es idéntica a la de un instrumento físico, facilitando así la visualización y el
control del aparato.
Un programa creado en LabVIEW consta de dos partes[8]:
 El panel frontal (Figura 2a)
 El diagrama de bloques (Figura 2b).

En el panel frontal, el cual simula el panel frontal de un instrumento físico, se


diseña la interfaz con el usuario y contiene los elementos que van a caracterizar el
programa. En él se ven los datos y allí se controlan y se manipulan.

En cambio, en el diagrama de bloques se aprecia la estructura del programa, su


función y algoritmo, de forma gráfica en lenguaje G, en el cual los datos “fluyen” a
través de líneas.

Figura 2 a : panel frontal. Figura 2b :diagrama de bloques .

A3-5
PALETAS DE TRABAJO

Tanto en el panel frontal como en el diagrama de bloques, existe una paleta de


herramientas, que sirve tanto para editar el programa, o ejecutarlo según el modo de
trabajo que se tenga.

En el panel de control existe la paleta de controles “Controls Palettte”(figura 3),


que contiene indicadores pudiéndolos visualizar como tablas, gráficos en 2D o 3D, etc ,
y controles que pueden ser booleanos, numéricos, strings, un arreglo matricial de éstos o
una combinación de los anteriores .

Figura 3: Paleta de controles e indicadores.

En el diagrama de bloques hay tres paletas diferentes: primero se tiene la paleta


de funciones “Functions Palette” (figura 4), la cual contiene todas las funciones que se
van a utilizar en la programación (se describirán algunas más delante).

A3-6
Figura 4 . Paleta de funciones en el diagrama de bloques.

Las funciones constan de entradas y salidas e igual que en un lenguaje de


programación estándar, procesan las entradas y entregan una o varias salidas. LabVIEW
tiene programas de adquisición de datos e imágenes, de comunicaciones, de
procesamiento digital de señales, de funciones matemáticas simples, hasta funciones
que utilizan otros programas como Matlab o Excel. Además, para resolver problemas
más complejos, existen otro tipo de unciones llamados "nodos de fórmula" que se
utilizan para la resolución de ecuaciones, editando directamente, como si se tratara de
lenguaje de programación tradicional, definiendo las entradas y las salidas.

Otra paleta, llamada paleta de herramientas “Tools Palette”(figura 5), contiene


una serie de elementos que ayudan a la confección del diagrama de bloques
(conexiones de los bloques mediante cableado, añadir texto para una mejor
comprensión de cada parte del programa, examen de resultados, entre otros). El
cableado es muy importante que se realice correctamente ya que debe estar todo
conectado para que no dé errores al compilar el programa.

A3-7
Figura 5: Paleta de Herramientas de LabVIEW

Por último existe la paleta en modo de ejecución (Figura 6), que contiene varios
botones principales: (los demás casi no se utilizan)

Modo sucesivo Highlight

Ejecución Stop Pausa

Figura 6 : Botones principales de la paleta de ejecución.

-Con el botón “Ejecución” se ejecuta una vez el programa. Cuando está ejecutando, se
cambia a rayado y aparece un botón de “Stop” con el cual se puede detener el
programa. Normalmente no se para el programa con este botón, sino que se crea un
botón de paro booleano. Si flecha de ejecución aparece rota indica que hay un error en
el programa. Al hacer clic con el ratón se muestra una lista de errores, y al hacer click
en cada uno de los errores se mostrará dónde se encuentra dicho error.

A3-8
- “Modo sucesivo” hace que el programa ejecute el programa indefinidamente hasta
que se presione el botón de stop.

- El botón “Pausa” detiene momentáneamente la ejecución del programa hasta que se


vuelve a presionar el mismo.

- Al presionar “Highlight” muestra como fluyen los datos y cómo son esos datos a
través del cableado del programa. Además, el programa se ejecuta de forma lenta para
tener una mejor resolución.

FLUJO DE DATOS

Hay que tener en cuenta que cuando se realiza una conexión en un programa,
para que exista concordancia con el flujo de datos, esta conexión se identifica por un
tipo de dato especifico que debe coincidir con el tipo de dato de la entrada del
programa. Esto no es necesariamente cierto ya que puede haber varios tipos de datos
conectados, como por ejemplo un conjuntos de variables distintas, denominado
“Cluster” (Figura 7).

Figura 7: Dato tipo “Cluster”. Puede contener variables STRING, INTEGER, etc

A3-9
El flujo de datos va de izquierda a derecha en el diagrama de bloques y esta
determinado por las operaciones o funciones que procesan los datos. Se puede observar
en dicho diagrama cómo se calculan los datos en cada parte del programa cuando se
realiza una ejecución de éste paso a paso. Además se ve que la ejecución del programa
es secuencial, es decir, una tarea no se inicia hasta no tener en todos sus variables de
entrada información o que las tareas que le preceden hayan terminado de ejecutarse
(Figura 8).

Figura 8: ejecución secuencial del programa de la figura 2 a y 2b.

En un programa, las variables se representan mediante una figura tanto en el


panel frontal como en el diagrama de bloques (ver figura anterior). De esta manera, se
puede observar su respuesta en el interfaz del usuario y en el flujo de datos del código
del programa.

3.1.5 Tipos de datos y estructuras en LabVIEW

1) TIPOS DE DATOS

Al elegir los controladores e indicadores en LabVIEW se les asigna


automáticamente una clase de datos. Se presentan dos tipos de datos, los no
estructurados (no divisibles en componentes) y los estructurados (divisibles en
componentes). Cada dato en el panel de control tiene su dibujo en el diagrama de
bloques.

a) Datos no estructurados o escalares:

A3-10
Este tipo de dato se caracterizan porque no se pueden dividir en otros componentes
más pequeños. Estos tipos, denominados estándar, no necesitan definirse en el
programa, ya que se asume que son conocidos , en incluyen los valores lógicos
(BOOLEAN) , los números enteros (INTEGER), los números reales (REAL) y los
conjuntos de caracteres (CHAR). Un ejemplo de éstos se puede observar en la figura
9:

Figura 9: Ejemplo de dato no estructurado, en este caso, Real

b) Datos estructurados:

Un dato estructurado se define como el conjunto de variables reunidas bajo un único


nombre en común. Estas estructuras de datos se construyen a partir de los tipos de
datos elementales ya vistos en el apartado anterior.

Los datos estructurados en LabVIEW son los siguientes: matrices (ARRAYS),


CLUSTERS, controles e indicadores STRING, y ficheros de ENTRADA/ SALIDA.

b.1) ARRAYS

Un “Array” es una colección de datos, todos ellos del mismo tipo, pudiendo tener
una o más dimensiones. Además existen una serie de funciones (construcción de un
array, creación de un subarray de un array, reemplazar una parte de un array, entre
otras), con las que se pueden manipular estos arrays (Figuras 10 a y b).

Figura 10a: Representación de un “Array 1-D” en el panel del control.

A3-11
Figura 10b : Función “Array” en diagrama de bloques.

b.2) CLUSTERS

Un “Cluster” es una colección ordenada de uno o más elementos. A diferencia de los


“Arrays”, un “Cluster” puede contener cualquier combinación de tipo de datos. Para
acceder al cluster es necesario aplicar una serie de funciones específicas de éstos
que descomponen o unen los datos (Figura 11 a y b).

Figura 11a: Representación de un Cluster en LabVIEW

Figura 11b:Función Cluster en el diagrama de bloques.

b.3) CONTROLES E INDICADORES STRING

Este tipo son controles e indicadores de cadenas de caracteres ASCII. Se puede


acceder a ellos mediante la paleta de controles e indicadores, y como los anteriores,
poseen diversas funciones para cambiarlos (ver figura 12 a y b).

A3-12
Figura 12a: Controlador STRING en LabVIEW

Figura 12 b: Función STRING en el diagrama de Bloques.

b.4) FICHEROS DE ENTRADA/SALIDA

Los ficheros de Entrada/Salida permiten el almacenamiento y la recuperación de


información a y desde un disco. En la paleta de funciones de LabVIEW existen una
gran variedad de funciones (suprogramas) para tratar las diferentes operaciones con
ficheros, los cuales son: almacenamiento de datos en un archivo nuevo,
almacenamiento en un archivo ya existente, recuperación de datos desde un archivo
y almacenamiento de resultados (Figura 13).

Figura 13: Ejemplos de subprogramas de fichero ENTRADA /SALIDA en el


diagrama de bloques de LabVIEW

2) TIPO DE ESTRUCTURAS EN LABVIEW

Existen dos tipos de programación en LabVIEW: la programación estructurada y


la programación modular.

a) Programación Estructurada:

La programación estructurada se basa en el uso de cuatro conjuntos de


estructuras:
 Secuencial

A3-13
 Condicional
 Iterativa
 Formula node.

a.1) ESTRUCTURA SECUENCIAL

La estructura Secuencial se compone de una serie de acciones elementales que


se ejecutan en el orden que se han descrito. Se ilustra como diapositivas o
negativos de una película, ejecutándose los diagramas de bloques de forma
secuencial En LabVIEW este tipo de estructura se denomina “SEQUENCE”, y
está formada por una serie de marcos o frames que se ejecutan según el orden de
aparición (ver figura 14). Hay que tener en cuenta que en LabVIEW esta
estructura se ejecutará cuando se disponga de todos los datos de entrada.

Figura 14. Ejemplo de estructura secuencial “SEQUENCE”

a.2) ESTRUCTURA CONDICIONAL

La estructura Condicional se emplea cuando dos o más acciones alternativas


dependen de una condición (se denomina “CASE” en LabVIEW, ver figura 15).
El término de entrada que va a determinar qué condición se cumple estará unido
al selector indicado con una interrogante [?] (ver figura 15).Lo más
característico de esta estructura es que está formada por múltiples
subdiagramas, de los que sólo es visible uno a la vez , identificándose por un
valor en su parte superior.

A3-14
Selector

Figura 15: Ejemplo de estructura “CASE”

Los subdiagramas se ejecutarán según qué valor tome el identificador dentro de


los “n” posibles . Además dentro de estos subdiagramas se pueden crear
“túneles” para sacar o introducir datos .

a.3) ESTRUCTURA ITERATIVA

La estructura Iterativa o Repetitiva es otro tipo de programación que puede


aparecer, la cual se compone de acciones que implican una repetición sistemática
de un proceso.

Existen dos tipos de estructuras iterativas en LabVIEW diferentes entre sí, la


estructura “WHILE LOOP” y la estructura “FOR LOOP”[10]: en una estructura
“WHILE LOOP” la acción se repite mientras que la condición de entrada a la
estructura sea cierta. Si es falsa nunca se ejecutará. En cambio, para una
estructura “FOR LOOP”, la acción se repite tantas veces como indique una
variable que actúa de contador (ver Figuras 16 y 17).

Figura 16: Ejemplo de estructura WHILE LOOP.

A3-15
Figura 17: Ejemplo de estructura FOR LOOP.

a.4) ESTRUCTURA FORMULA NODE

Esta estructura posee características similares a las estructuras vistas


anteriormente, pero que, en lugar de contener subdiagramas, posee una o más
fórmulas separadas por punto y coma. Se utilizará sobre todo el FORMULA
NODE cuando se quiera ejecutar fórmulas matemáticas que serían complicadas
de realizar mediante las herramientas matemáticas incluidas en LabVIEW
(Figura 18).

Figura 18: Ejemplo de FORMULA NODE en LabVIEW.

b)Programación Modular:

La programación modular se basa en dividir el programa en partes que tengan


una personalidad propia, es decir, en dividir el programa en LabVIEW en varios
subprogramas que ahorren tiempo y esfuerzo a la hora de realizar y ejecutar el
programa.

Los subprogramas tienen las mismas propiedades que un programa y se utilizan


mediante la creación de iconos y conectores que facilitan la lectura y la

A3-16
interpretación del instrumento virtual global. En el proyecto se utilizará una
mezcla de ambas programaciones, tanto modular como estructurada.

3.2 Diseño de programas en LabVIEW 5.1

Este proyecto se compone de dos programas: el primero (CURVAS_FLU)


calcula las curvas de fluidez y de viscosidad de cualquier fluido no newtoniano (en el
rango de viscosidades del viscosímetro), mientras que el segundo (RELAJACIÓN)
calcula los tiempos de relajación y de recuperación (característicos de cada tipo de
fluido) mediante la representación de las gráfica de viscosidad aparente frente al tiempo,
realizando cambios bruscos de velocidad de deformación.

3.2.1 PROGRAMA “CURVAS_FLU”

El programa consta de dos ventanas, el panel de control y el diagrama de


bloques. El panel de control es el “panel virtual” que se ocupa del control del programa,
mientras que el diagrama de bloques contiene toda la programación.

PANEL DE CONTROL
DESCRIPCIÓN GENERAL (Figura 1):

A3-17
Figura 1. Panel de control del programa “CURVAS_FLU” (ensayo para el ketchup).

Como se puede ver en la figura 1, en el panel de control de “CURVAS_FLU”,


insertando un cierto tiempo de medida, unos puntos determinados para representar las
curvas, el número de canales que se usan de la tarjeta de adquisición[7] y el rango de
velocidad utilizado, se obtienen finalmente las curvas de fluidez y viscosidad.

CONTROLES E INDICADORES:

Este panel de control contiene cinco controladores y dos indicadores, cada uno
de ellos con su correspondiente símbolo en el diagrama de bloques (a la hora de crear el
programa, la inclusión de controles e indicadores en el panel es lo primero que se hace):

- Controlador “Tiempo”: se utiliza para poner el tiempo en segundos que se


quiere que dure el ensayo.

- Controlador “Número de puntos”: con este controlador se añade la cantidad


de puntos con que se representarán cada una de las gráficas.

A3-18
- Controlador “Memoria interna”: se utiliza para señalar el tamaño del buffer
de puntos (con un máximo de 200 puntos) que va a guardar los resultados
para representar con ellos las curvas a tiempo real.

- Controlador “Rango de Velocidad de Deformación”: con este interruptor se


decide a qué velocidad se quiere que trabaje el viscosímetro (baja, media o
alta). Cuanto más viscoso sea el fluido menor velocidad de deformación se
aplicará ya que si no se saldrá de rango y no se podrá representar
gráficamente. Puede ser a velocidades bajas (para viscosidades aparentes
altas, de 10000 mPa·s a 100000 mPa·s), a velocidades medias (para
viscosidades de 600 mPa·s a 10000 mPa·s) y a velocidades altas (para
viscosidades aparentes bajas, hasta 600 mPa·s). Estos rangos se han obtenido
a partir de los distintos ensayos. Además, hay que tener en cuenta que este
selector se debe poner igual que el del viscosímetro.

- Controlador “Configuración del canal”: es un “Cluster” (agrupación de datos


de distinto tipo) donde se introducen el número de canales de la tarjeta de
adquisición, que se van a utilizar para adquirir las señales de esfuerzo
cortante y velocidad de deformación provenientes del viscosímetro, y el
número del canal por el que se empieza a adquirir los datos.

- Indicador “Gráfica de esfuerzo cortante vs. Velocidad de deformación”:


representará la curva de fluidez del fluido, utilizando un indicador “XY
Graph” similar al caso anterior.

- Indicador “Gráfica de viscosidad vs. velocidad de deformación”:es una


gráfica que representará la curva de viscosidad de un fluidos (los resultados
obtenidos al ejecutar el programa). LabVIEW posee indicadores que
presentan gráficas de los datos obtenidos en el programa. Estos se encuentran
en el submenú “Graph” en el menú de controles. Para cada uno se pueden
configurar muchos parámetros como escala de la gráfica, autoescala, color de

A3-19
las líneas, número de líneas en una gráfica, presentación de letreros, paletas
de control, indicadores, etc. En este caso necesitamos un indicador “XY
Graph”[11]: éste es una gráfica en donde los datos entran por pares
ordenados en una matriz bidimensional, o una matriz de clusters de dos datos
cada uno (X, Y). El resultado que se obtiene es una secuencia de puntos.

DIAGRAMA DE BLOQUES:

DESCRIPCIÓN GENERAL

El diagrama de bloques se considera el corazón del programa ya que contiene


todas las funciones, subprogramas y conexiones (mediante “cableado o cables de
trasmisión”) que se requieren para el correcto funcionamiento de toda la secuencia
(Figura 2).

Figura 2: Diagrama de bloques del programa “CURVAS_FLU”

A3-20
El diagrama de bloques se puede observar que existe un programa general
(CURVAS_FLU), y tres subprogramas (subprograma “1”, subprograma 4” y el
subprograma “XY Chart Buffer.vi”) que lo complementan y que serán explicados
conforme se detalle el programa.

INFORME DETALLADO DEL PROGRAMA “CURVAS_FLU”

El programa “CURVAS_FLU” se va a dividir, para una explicación más clara, en


cuatro bloques:

 Diseño del selector de velocidades de deformación.


 Diseño del subprograma “1”.
 Bucle “FOR”, en el que se incluyen:
o Obtención de resultados mediante la tarjeta de adquisición.
o Subprograma“4”.
o “Buffer XY”.
o Concatenación de resultados en una matriz
 Almacenamiento de resultados en archivo tipo .TXT.

i) DISEÑO DEL SELECTOR DE VELOCIDADES DE DEFORMACIÓN

La primera estructura que se crea a la hora de diseñar el programa es el selector


(ver figura en panel de control), el cual nos va a decir con qué velocidad de
deformación se quiere trabajar para obtener las diversas curvas, llevando el resultado al
bucle “FOR”. Para su diseño se ha utilizado una estructura “CASE” (Figura 3), formada
por tres casos, “0, 1 y 2”. Para ejecutar uno de los tres se ayuda del valor de la variable
“U32”.

Al bucle FOR

A3-21
Figura 3: Vista de la estructura “CASE” usada en el programa.

La variable “U32” representa, en lenguaje LabVIEW, un valor entero, sin signo


y con una memoria máxima de almacenamiento de dígitos de 32 bits. En el panel de
control representan los números “1, 10 y 100” que se observan en el selector (ver
figura). Lo que hace la estructura “CASE” es ejecutar aquel caso de los tres que hay
(ALTO, MEDIO o BAJO) que se ajuste a lo que diga la variable “U32”. Es decir, si esta
variable vale “1”, el “CASE” que se ejecutará será el de valor MEDIO y el valor que
sale de la estructura será “1.0” (un número entero siempre), el cual se utilizará más
adelante en el bucle “FOR”.

ii) DISEÑO DEL SUBPROGRAMA “1”

El diagrama de bloques (Figura 4) siguiente representa la estructura interna del


subprograma “1” (también llamado en otros lenguajes subrutina) :

A3-22
Al bucle FOR

Figura 4: diagrama de bloques del subprograma “1".

Este subprograma calcula el período de muestreo de los puntos que se van a


representar en ambas curvas (fluidez y de viscosidad).Los resultados se ontienen en
milisegundos (ms). Además también se tiene como variable de salida el “Número de
puntos”, la cual se usará dentro del bucle “FOR”.

Las variables de entrada son el “Tiempo” en segundos y el “Número de puntos”.


Estos dos datos de entrada son controladores del programa, como el selector de
velocidades anterior, luego, se deben introducir antes de iniciarse la ejecución del
programa. Las unidades de la variable “Tiempo” deben ser segundos, mientras que
“Número de puntos” no tiene unidades.

Estas variables son de tipo entero con signo y con una memoria de
almacenamiento de 16 bits, menor que en el caso de “U32”( en LabVIEW se denominan
“I16”).

El modo de operación es el siguiente: se introducen por pantalla un tiempo en


segundos y un número de puntos . Este tiempo se multiplica por 1000 para obtener
milisegundos, y se añaden 3000 ms para dar un tiempo de paso inicial ya que al ejecutar
el programa y el viscosímetro siempre hay un cierto error al no conectarlos a la vez (se
hace manualmente). Si se divide este tiempo por el número de puntos totales se obtiene

A3-23
el período de muestreo (en ms). Este tiempo representa los milisegundos que deben
pasar entre la toma de un punto y otro.

Resultados “Tiempo” de muestreo = (Tiempo (s)*1000 + 3000)/(Número de puntos)


de salida
de “1”
Número de puntos

iii) DISEÑO DEL BUCLE “FOR”

Como se ha dicho antes, el bucle “FOR” se puede dividir en cuatro bloques:

 La obtención de resultados mediante la tarjeta de adquisición.


 El subprograma “1”.
 El “XY chart buffer”.
 La concatenación de resultados en una matriz.

El bucle “FOR” es la parte más importante del programa ya que en él se


adquieren los datos del viscosímetro a partir de la tarjeta de adquisición y se grafican
finalmente, realizando un artificio matemático anteriormente y ayudándose de un buffer
de datos. Además los resultados se guardan en una matriz para ser mandados
posteriormente a un archivo de texto. Aquí se debe observar también que dentro del
bucle “FOR” las funciones y los subprogramas se van a repetir tantas veces como
número de puntos se hayan seleccionado por pantalla.

A continuación, se van a explicar los cuatro bloques :

1) OBTENCIÓN DE RESULTADOS MEDIANTE LA TARJETA DE ADQUISICIÓN

A3-24
En la siguiente figura se pueden observar las cuatro funciones con las que se
programa la tarjeta. Se pueden llamar también subprogramas ya que actúan como si
fuesen subrutinas dentro del programa general.

Al subprograma
“4”

Figura 5: Parte del programa “CURVAS_FLU” con las funciones de la tarjeta.

- La primera función o subprograma de la tarjeta se denomina “Device


Open.vi” (Figura 6).

Figura 6: Icono de representación de la función “DeviceOpen.vi”

Esta función abre el puerto especificado por un número, para la entrada de


datos a la tarjeta, los cuales vienen del viscosímetro, mediante el cable de
conexión. El número 1 (llamado “DevNum”) debe ser introducido a la hora
de configurar por primera vez los “drivers” de la tarjeta de adquisición de
datos PCL-711B de Advantech. Los cables de salida se deben cablear

A3-25
siempre a las siguientes funciones de la tarjeta, para que no se produzca error
al compilar.

- La segunda función que se utiliza es “MAIConfig.vi” (Figura 7).

Figura 7: Icono de la función “MAIConfig.vi”

“MAIConfig.vi” configura los datos de entrada para canales analógicos


especificados. En la entrada “MAIConfig.vi” hay que crear un cluster de
datos con la misma forma que tiene CONFIGURACIÓN DE CANAL, con
el número de canales y su ganancia, cero en este caso (ver figura 2). En este
caso, se deben configurar para dos canales ya que se quiere obtener los datos
de esfuerzo cortante y de velocidad de deformación los cuales provienen del
viscosímetro. Además, los cables de entrada se deben unir a los de salida del
“DeviceOpen.vi” para que no se produzcan errores posteriores.

- La tercera función se llama “MAIVoltageIn.vi” (Figura 8):

Figura 8: Icono de la función “MAIvoltageIn.vi”

Este subprograma es el más importante de todos los que están relacionados


con la tarjeta. Recibe como entrada la configuración de los rangos de entrada
de los canales (a través del “MAIVoltageIn.vi”), es decir, lee las entradas
analógicas de los dos canales y devuelve como salida el resultado en voltios.
Dicho resultado en voltios se acumula en una matriz llamada “VoltageList” ,
la cual posee una columna y dos filas para almacenar dos valores de voltaje.

A3-26
Estos valores se llevan finalmente al subprograma “4”. Los cables de salida
“DevHandle” y “error out” se deben alambrar a la siguiente función.

Hay que tener en cuenta que esta función va incluida en el bucle “FOR”,
luego su acción se repetirá tantas veces como indique el número de puntos
“N”.

-La cuarta función que aparece relacionada con la tarjeta es


“DeviceClose.vi”(Figura 9):

Figura 9: Icono de “DeviceClose.vi”

Esta última función va a cerrar el puerto especificado, es decir, la tarjeta de


adquisición, colocándose fuera del bucle “FOR” ya que si no se cerraría
antes de lo esperado.

2) SUBPROGRAMA “4”

Con este subprograma (Figura 10) se van a separar los valores que se obtienen
en “MAIVoltageIn.vi” y, realizando una serie de operaciones, se van a obtener los
resultados buscados: esfuerzo cortante, velocidad de deformación y viscosidad, ésta
última en función de los dos anteriores. Finalmente se llevarán a unas gráficas para
representarlos y a una matriz para reagruparlos otra vez.

Viene de
MAIVoltajeIn

A3-27
Viene del CASE
A buffer

A una matriz

Figura 10a: icono del subprograma “4”.

De
MAIVoltageIn

La unidades
son en mPa

AL buffer

Viene del
CASE

A una
matriz

Figura 10b: diagrama de bloques del subprograma “4”.

El subprograma funciona de la siguiente manera: las variables de entrada son el


resultado que da la estructura “CASE” (un número real) y la matriz de dos elementos

A3-28
del “MAIVoltageIn” (números reales). Primeramente, se actúa sobre la matriz
utilizando la función “Index Array” (Figura 11):

Figura 11: Función “Index Array”

A la función entra una matriz de orden 2 y sale el elemento que indique el valor
del “index”. El primer elemento de la matriz ocupa el puesto cero, mientras que el
segundo ocupa el puesto uno y así sucesivamente si la matriz tuviera más elementos.
Esta función se utiliza dos veces, dando lo siguiente: el esfuerzo cortante en la posición
“0” y la velocidad de deformación en la posición “1” (salen así ordenados debido a las
entradas de la clavija procedentes del viscosímetro).

A continuación se debe realizar un cambio de variable con cada resultado debido


a que la tarjeta de adquisición opera entre –5V y + 5 V, mientras que el viscosímetro
operan en un rango de 0V a 10V. Se obtiene i y Di (esfuerzo cortante y velocidad de
deformación respectivamente):

i = elemento en orden 0 de la matriz*(-1)+5

Di = elemento en orden 1 de la matriz*(-1)+5

El factor que multiplica a cada resultados debe ser tenido en cuenta también:
para el esfuerzo cortante hay que multiplicar su valor por 3.22 (sus unidades son en
Pascales), ya que es la constante que nos da el resultado en sus unidades reales (con el
viscosímetro se mide el % de esfuerzo cortante, que debe ser multiplicado por dicha
constante para dar el esfuerzo ). En cambio, para la velocidad de deformación, el valor
por el que se debe multiplicar (0.1, 1, o 10) depende de si se ha seleccionado por
pantalla un rango de velocidades bajo, medio o alto. Además, se debe multiplicar el

A3-29
valor del esfuerzo cortante por 1000 para que nos dé el resultado en milipascales, que es
la unidad más utilizada en reología.

Finalmente, se obtienen los puntos ( y D),los cuales se representarán más


adelante en las correspondientes gráficas: (valores enteros)

= i*3.22*1000 en mPa

D= Di* valor del CASE en s-1

Ahora, se divide el valor del esfuerzo cortante frente a la velocidad de


deformación para obtener el valor de la viscosidad aparente () como resultado
adicional (en milipascales por segundo):

 = / D
(mPa·s)
A continuación, los datos se unen dos a dos con una función llamada “Bundle”
(Figura 12) de la siguiente forma: “” y “D” por un lado, y “” y “D” por otro.

Figura 12: Función Bundle

Una función tipo “Bundle” agrupa los dos elementos que entran en ella en un
cluster de dos componentes. Este cluster es una agrupación de datos, de diferente tipo,
como ya se había mencionado, en donde todos los cables se juntan en uno solo para
facilitar el cableado en el diagrama de bloques.

Finalmente, los tres datos que se han obtenido antes se llevan a una matriz para
agruparlos, pero esto ocurre ya fuera del subprograma “4”.

A3-30
3) “XY CHART BUFFER”

El subprograma “XY Chart Buffer” (Figura 14 a y b) sirve para almacenar datos


que provienen del “Cluster”.

Figura 14a Estructura del subprograma “XY Chart Buffer”.

Viene del
subprograma “4”

Figura 14 b:
Icono del suprograma“XY Chart Buffer.vi”
Al otro XY
buffer
Este subprograma toma como variables de entrada obligadas el “Cluster” de
datos que proviene del “Bundle” y el número de puntos que almacenará el “buffer”
(Memoria Interna). Las demás entradas son opcionales y no se utilizan aquí. Lo que
hace este subprograma es almacenar los datos que le van llegando para que se puedan
representar posteriormente como una curva continua en tiempo real, ya que si no
existiera el buffer aparecerían sólo una serie de puntos en las gráficas de forma
discontinua. Además se debe introducir por pantalla la cantidad de puntos para hacer
más o menos precisa la medida. Si se está midiendo y se acaban los puntos, “XY Chart
Buffer” borrará los primeros para poder almacenar más puntos. Hay que denotar que al
estar dentro del bucle “FOR” se va a repetir tantas veces como indique “N”, que es el
número de puntos.

Como variable de salida de “XY Chart Buffer” se obtiene un dato tipo “XY
Graph”, es decir, una matriz de datos, los cuales se representan finalmente en una

A3-31
gráfica tipo “XY” de forma continua. Como resultado, se obtienen las “Curvas de
fluidez y de viscosidad”(Figura 15), que son uno de los objetivos de la realización de
este proyecto

 

D D
Figura 15: curvas de fluidez y de viscosidad

4) CONCATENACIÓN DE RESULTADOS EN UNA MATRIZ

Los valores de salida del subprograma “4”, es decir, el esfuerzo cortante, la


velocidad de deformación y la viscosidad (aparente) se almacenan en una matriz
mediante la función “Build Array” (Figura 16 a y 16 b):

Figura 16 a: Estructura de la función “ Build Array”.

Figura 16 b: Icono de la función “Build Array”

A3-32
Como esta función está incluida dentro del bucle “FOR”, se van almacenando
los datos tantas veces como indique “N”a la salida de dicho bucle. Entonces, el número
de filas de la matriz coincidirá con el número de puntos introducidos, mientras que el
número de columnas coincidirá con el número de resultados buscados (Esfuerzo
cortante, la velocidad de deformación y la viscosidad aparente).

DIMENSIÓN DE LA MATRIZ = NÚMERO DE PUNTOS x 3.

iii) ALMACENAMIENTO DE RESULTADOS EN ARCHIVO TIPO .TXT.

Para almacenar los resultados se utiliza el subprograma “Write to Spreadsheet


File.vi” (Figura 17).

Figura 17: Icono y estructura del subprograma “ Write to Spreadsheet File.vi”.


No se utilizan todas las variables de entrada. Hay una serie de valores por
defecto.

Lo que hace este subprograma es convertir la matriz que viene del subprogram
anterior, de “DIMENSIÓN = NÚMERO DE PUNTOS x 3”, en una cadena de texto,
con el mismo formato que la matriz. Éste guarda los caracteres en forma de números
(con una precisión de 3 en coma flotante), los va escribiendo de tres en tres (son los

A3-33
valores de “” , “D” y “”) y luego cambia de línea).El nombre del nuevo archivo de
texto (File Path) es “D:\\WINDOWS\Escritorio\DatosHaake.txt”,o “DatosHaake”.

Existe otra variable de entrada que se utiliza en el programa, que es “append to


file”. Es de tipo booleano y se define como “False” ya que de esta forma, el
subprograma escribirá siempre los resultados en un archivo nuevo o reemplazará el
existente. Si se definiese como “True”, añadiría los resultados al fichero existente, pero
lo que se quiere siempre es que se reemplace dicho fichero.

Las demás variables de entrada se dejan con sus valores por defecto: el valor de
“format” indica la cantidad de caracteres que irán detrás de la coma flotante (tres por
defecto) y “transpose” se deja Falso para que no se transpongan los datos antes de
añadirlos al fichero.

3.2.2 PROGRAMA “RELAJACIÓN”

El programa “RELAJACIÓN”, como se ha dicho anteriormente, representa


gráficamente la curva de viscosidad aparente frente al tiempo para obtener, a partir de
estos datos, los tiempos de relajación y de recuperación de cada tipo de fluido.

El programa consta de dos ventanas: el panel de control, el cual contiene los


controladores del programa y la gráfica indicadora con los resultados, y el diagrama de
bloques, muy similar al de “CURVAS_FLU”, que contiene los subprogramas en los que
se basa toda la programación en lenguaje LabVIEW.

PANEL DE CONTROL

DESCRIPCIÓN GENERAL (Figura 18):

A3-34
Figura 18: Vista general del panel de control de “RELAJACIÓN” , en este caso para el
gel de manos.

En la Figura 18 se puede observar que, insertando un número de puntos, la


memoria interna (igual al número de puntos) y el rango de velocidades, se obtiene la
gráfica de viscosidad frente al tiempo. En los ensayos de aplica un cambio brusco
instantáneo de velocidad y luego una disminución equivalente, para poder ver reflejado
el tiempo de relajación y el de recuperación en la misma gráfica.

CONTROLES E INDICADORES

Como se puede ver en la figura 18, el panel de control contiene cuatro


controladores y un indicador, teniendo cada uno de ellos su correspondiente símbolo en
el diagrama de bloques.

A3-35
- Controlador “Número de puntos”: este controlador se usa para añadir los
puntos que formarán la gráfica.

- Controlador “Memoria interna”: como en el anterior programa, se utiliza


para señalar el tamaño del buffer que va a guardar los puntos para
representarlos de forma continua y a tiempo real.

- Controlador “Rango de Velocidad de Deformación”: con este selector se


escoge la velocidad de deformación de trabajo.Tiene el mismo
funcionamiento que en el anterior programa.

- Controlador “Configuración del canal”: se trata de un “Cluster” (conjunto de


datos de diversos tipos) que contiene la cantidad de canales de la tarjeta de
adquisición y el canal de partida al adquirir los datos, de la misma forma que
en el anterior programa.

- Indicador “ Gráfica de Viscosidad aparente vs. Tiempo”: con este indicador


se representará la viscosidad aparente frente al tiempo, ayudándose de un
indicador “XY Graph”. Dicha gráfica será autoescalable (varía la escala
conforme se van obteniendo los resultados) para una visión más compacta de
todo el conjunto.

DIAGRAMA DE BLOQUES

DESCRIPCIÓN GENERAL (Figura 19)

A3-36
Num. ptos

Figura 19: Vista del diagrama de bloques del programa “RELAJACIÓN”.

Si se observa el diagrama de bloques, se puede ver un gran parecido al anterior


programa debido a que se ha aprovechado la estructura general del programa
“CURVAS_FLU” para crear el diagrama de “RELAJACIÓN”. Debido a ello, algunas
explicaciones se realizarán de forma resumida ya que se han detallado anteriormente.

INFORME DETALLADO DEL PROGRAMA “RELAJACIÓN”

El programa “RELAJACIÓN” se compone de tres bloques, alguno semejante al


programa anterior, pero con alguna variación:

 Diseño del selector de velocidades de deformación.


 Bucle “FOR”, el cual incluye:
o Diseño de la adquisición de datos.
o Diseño del período de ensayo.
o Cálculo de operaciones.

A3-37
o “Buffer XY”.
o Almacenamiento de datos en una matriz.
 Recopilación de resultados en un archivo .TXT.

Todos los elementos son los mismos que los del programa anterior a excepción
del diseño temporal y el almacenamiento de datos en una matriz.

i)DISEÑO DEL SELECTOR DE VELOCIDADES DE DEFORMACIÓN

El diseño (Figura 20) es el mismo que el de la figura 3 del programa


“CURVAS_FLU”: se utiliza una estructura “CASE” para poder elegir el rango de
velocidades de deformación, funcionando de la misma manera.

Controlador rango de velocidad


de deformación

Al bucle “FOR”

Figura 20: Selector de velocidades del programa “RELAJACIÓN”. Es igual que el de


“CURVAS_FLU”

El valor de salida de la estructura “CASE” es un número real, que multiplicará,


dentro del Bucle “FOR”, a la velocidad de deformación

ii)DISEÑO DEL BUCLE “FOR”

El bucle “FOR” es también semejante al creado en “CURVAS_FLU”: dicho


bucle (Figura 19) se repite tantas veces como indique el número de puntos. Los
elementos que lo componen son:

1) DISEÑO DE LA ADQUISICIÓN DE DATOS

A3-38
Al igual que en el “CURVAS_FLU” , se obtiene una matriz de dos elementos
(esfuerzo cortante y velocidad de deformación, en voltios) que son adquiridos mediante
4 subprogramas que contiene la tarjeta (Figura 21).

Matriz de 2
elementos
Figura 21: El diseño de la adquisición de datos es el mismo que en “CURVAS FLU”

2) DISEÑO DEL PERÍODO DE ENSAYO

Esta parte (Figura 22) no existía en el programa anterior. Con este diseño se
consigue fijar el tiempo que dura el ensayo (29,7 segundos ya que empieza a contar
desde 0,30 segundos e “i” igual a 0).

Al “Buffer”

A la matriz

Figura 22: Diseño del tiempo de ensayo

Lo que hace esta sección es guardar un valor de tiempo cada 300 milisegundos
pasando los milisegundos a segundos multiplicando por 0.001, y por el valor de “i”. Los

A3-39
resultados se guardan en una matriz y se llevan a una “gráfica XY” mediante un
“Buffer” de datos. Con esta operación, se puede representar fácilmente el tiempo de
ensayo.

Los valores de tiempo se van multiplicando cada vez por el valor “i”, el cual
aumenta desde 0 al número de puntos. Por ejemplo, si se quieren ver 100 puntos, el
tiempo de ensayo será de casi 30 segundos (27.9 s).

3) CÁLCULO DE OPERACIONES

Los valores (en voltios) del esfuerzo cortante y de la velocidad de deformación


deben ser tratados para que sus unidades sean “mPa” y “s -1” . Para ello, se ha
introducido el diagrama de bloques del subprograma “4” , cambiando alguna cosa
(Figura 22). Al igual que en el programa “CURVAS_FLU”, antes de su tratamiento, se
deben separar los valores mediante “Index Array”

A buffer

A una matriz

Viene del
Viene del diseño
CASE temporal
Figura 22: Detalle del Cálculo de operaciones. El diseño temporal no influye en el
cálculo

La figura 22 se diferencia del subprograma 4 en que los resultados que se


almacenan en la matriz son distintos. Ahora se guardan en dicha matriz los valores del

A3-40
esfuerzo cortante, la viscosidad aparente y el tiempo de ensayo, éste último venido del
apartado anterior.

Los resultados que van al “Buffer XY o XY Chart Buffer” son ahora la


viscosidad y el tiempo de ensayo (en “CURVAS_FLU” los resultados que se llevaban al
buffer eran, por un lado, el esfuerzo cortante y la velocidad de deformación, y por otro,
la viscosidad aparente y la velocidad de deformación).

4) EL BUFFER XY

Dicho buffer es el mismo que el de la figura 14, así que no hace falta volverlo a
representar. Al buffer llegan los datos de viscosidad aparente y el tiempo de ensayo
mediante una estructura ya vista anteriormente, un “Bundle”, y estos datos se llevan a
una gráfica tipo XY (XY Graph) para representarlos en tiempo real.

La gráfica que se obtiene finalmente es la curva de viscosidad aparente frente al


tiempo (Figura 23) :

Visco.ap
(mPa·s)

Tiempo (s)
Figura 23: Curva de ensayo de viscosidad frente al tiempo, aplicando cambios
bruscos de velocidad de deformación.

5) ALMACENAMIENTO DE DATOS EN UNA MATRIZ

A3-41
Después del diseño del período de ensayo y del cálculo de operaciones, se
procede a guardar los resultados en una matriz (ver figura 16), que tendrá de dimensión
igual al número de puntos (N) por el tipo de resultado (3) .

iii)LA RECOPILACIÓN DE RESULTADOS EN UN ARCHIVO .TXT.

Finalmente se guardan en un archivo de texto los resultados mediante el


subprograma “Write to Spreadsheet File.vi” (Figura 24), de la misma manera que en el
programa “CURVAS_FLU”.

Datos en
forma de
matriz

Figura 24: Vista del subprograma “Write to Spreadsheet File.vi”

Como se puede ver en esta figura, los resultados se guardan en un fichero


llamado “D:\\WINDOWS\Escritorio\Datos.txt”.

A3-42

Vous aimerez peut-être aussi