LabVIEW Core 1 Exercise Guide
LabVIEW Core 1 Exercise Guide
Ejercicios
Copyright
© 1993–2012 National Instruments. Todos los derechos reservados.
En virtud de las leyes de copyright y de protección de los derechos de autor, esta publicación no puede reproducirse ni transmitirse en ninguna forma, electrónica o mecánica, incluidas las fotocopias,
grabación, almacenamiento en un sistema de recuperación de información, o traducción, en su totalidad o en parte, sin el consentimiento previo por escrito de National Instruments Corporation.
National Instruments respeta los derechos de propiedad intelectual de otros, y solicitamos a nuestros usuarios que hagan lo mismo. El software de NI está protegido por el derecho de autor y las normas
de la propiedad intelectual. Aunque el software de NI puede utilizarse para reproducir software u otro material perteneciente a otros, el software de NI sólo podrá utilizarse para reproducir material que
pueda reproducir conforme a los términos de cualquier licencia aplicable u otra restricción legal.
Marcas comerciales
LabVIEW, National Instruments, NI, [Link], el logotipo corporativo de National Instruments, y el logotipo del aguila son marcas propiedad de National Instruments Corporation. Por favor, consulte
Trademark Information en la página [Link]/trademarks para información sobre otras marcas de National Instruments.
Otros nombres de productos y de empresas mencionados aquí son marcas o nombres comerciales de sus respectivas empresas.
Patentes
Para obtener información sobre las patentes que protegen los productos o la tecnología de National Instruments, consulte el apartado: Help»Patents en su software, el archivo [Link] en el
soporte del mismo, o el Aviso sobre las Patentes de National Instruments (National Instruments Patent Notice) en [Link]/patents.
Información del producto y soporte técnico mundial
[Link]
Oficinas internacionales
Visite [Link]/niglobal para acceder a las páginas web de las oficinas internacionales, las cuales incluyen información actualizada de contacto, teléfonos de soporte técnico, direcciones de email y
eventos actuales.
Para realizar comentarios a National Instruments sobre la documentación, consulte la página web de National Instruments Web [Link]/info e introduzca el código de información feedback.
Explorando LabVIEW
1
Complete los ejercicios en esta lección para reforzar los conceptos que aprendió en la lección 1 de LabVIEW Core 1.
Ejercicio
Ejercicio 1-1 Concepto: Explorando un VI
Ejercicio 1-2 Concepto: Localizando controles, funciones y VIs
Ejercicio 1-3 Concepto: Usando la herramienta de selección.
Ejercicio 1-4 Concepto: Flujo de datos
Objetivo
En grupo, identificar las partes de un VI existente.
Descripción
Ha recibido un VI de un empleado que registra los segundos que tarda un avión en llegar a un aeropuerto y convierte el tiempo en una combinación de
horas/minutos/segundos. Debe evaluar este VI para ver si funciona como se esperaba y poder mostrar el tiempo restante hasta que llegue el avión.
3. En el panel frontal, identifique estos elementos: ¿Cuántos de cada ítem puede encontrar?
Controles
Indicadores
Etiquetas libres
botón Run
Icono
Panel de conectores
4. Para mostrar el panel frontal y el diagrama de bloques a la vez presione <Ctrl-T> o seleccione Window»Tile Up and Down o Window»Tile Left and Right.
Consejo Para cambiar entre la ventana del panel frontal y el diagrama de bloques sin cerrar las ventanas, presione <Ctrl-E>.
5. En el diagrama de bloques, identifique estos elementos. ¿Cuántos de cada ítem puede encontrar?
Controles
Indicadores
Constantes
Etiquetas libres
6. Use la ayuda contextual para aprender más sobre los ítems en el diagrama de bloques.
Pulse <Ctrl-H> para abrir la ventana Context Help o seleccione Help»Show Context Help.
Mueva la ventana Context Help a una zona cómoda que no oculte parte del diagrama de bloques.
Coloque su cursor sobre cada uno de los cables de diferentes colores para ver que tipo de dato representan.
El contenido de la ventana Context Help cambia para mostrar información sobre el objeto sobre el que está el ratón.
7. Obtenga ayuda detallada y vea ejercicios para la función Quotient & Remainder.
Coloque su cursor sobre la función Quotient & Remainder. Lea la ventana Context Help y haga clic en la liga Detailed Help para lanzar LabVIEW Help y
aprenda más acerca de esta función.
Haga clic en la enlace Example en el tema de LabVIEW Help de Quotient & Remainder.
Haga clic en el botón Open Example al final de la ventana de ayuda para abrir un ejemplo que use la función Quotient & Remainder.
Examine el ejemplo y luego ciérrelo cuando haya terminado.
8. Refiérase a las figuras 1-1 y 1-2 para verificar que haya configurado todos los ítems correctamente.
Figura 1-1. Elementos del panel frontal
3 4 5
3
5
Objetivo
Aprenda a usar las paletas y buscar controles, funciones y VIs.
Descripción
1. Abra un proyecto LabVIEW en blanco.
Haga clic en el botón Create Project en la ventana de LabVIEW Getting Started y luego haga clic en Blank Project.
Haga clic en Finish.
2. Cree un VI en blanco y añádalo al proyecto.
Haga clic con el botón derecho en My Computer en la ventana Project Explorer y seleccione New»VI en el menú contextual.
3. Seleccione View»Controls Palette del menú de la ventana del panel frontal del VI.
– Silver
– Signal Processing
Note que las tres paletas que seleccionó ahora aparecen en la ventana Controls.
Consejo Puede personalizar la paleta Functions igual como personaliza la paleta Controls.
Escriba Random en la barra de búsqueda situada en la esquina superior derecha del diagrama de bloques.
Nota Mientras está escribiendo, la búsqueda global automáticamente busca coincidencias en la Ayuda de LabVIEW y en las paletas de LabVIEW.
También busca material en línea relacionado con su búsqueda.
Mueva el ratón sobre el primer resultado en la sección Palette, Random Number (0-1). Usted ahora ve las siguientes tres opciones:
– Drop—le permite introducir inmediatamente esta función en el diagrama de bloques
Haga clic en cada una de estas opciones para observar los diferentes comportamientos.
10. Practique accediendo a funciones similares.
Objetivo
Familiarizarse con la herramienta de selección automática y la paleta Tools en LabVIEW.
Descripción
Durante este ejercicio completará tareas en un panel frontal y en un diagrama de bloques parcialmente creado. Estas tareas aportan experiencia para usar la selección
automática de herramientas.
Consejo Presione <Shift> y haga clic con el botón derecho en el panel frontal para abrir la paleta Tools temporalmente.
Por defecto, LabVIEW selecciona herramientas por usted basado en el contexto de su cursor. Usted puede deshabilitar la herramienta de selección automática
haciendo clic en el botón Automatic Tool Selection en la ventana Tools.
La figura 1-3 muestra un ejemplo del panel frontal tras las modificaciones a realizar. En los pasos 4–8 puede incrementar el tamaño de un gráfico tipo “waveform
chart”, renombrar el control numérico, cambiar el valor del control numérico y mover la perilla.
Figura 1-3. Panel frontal del VI Using Temperature
Mueva el cursor al borde derecho del gráfico tipo “waveform chart” hasta que vea los nodos de cambio de tamaño alrededor del gráfico.
Mueva el cursor al nodo de cambio de tamaño de la parte central izquierda hasta que el cursor cambie a una doble flecha, como se ve en la figura 1-4.
Figura 1-4. Cambiar el tamaño del gráfico Waveform Chart
Arrastre el punto de reposicionamiento hasta que el gráfico Waveform Chart tenga el tamaño deseado.
5. Renombre el gráfico Waveform Chart usando la herramienta de etiquetado.
Haga doble clic en la palabra Chart. LabVIEW resalta la palabra y automáticamente selecciona la herramienta de etiquetado en la ventana Tools.
Note que LabVIEW automáticamente retorna a la herramienta de posicionamiento en la ventana Tools. La herramienta de posicionamiento es la herramienta
predeterminada. Si LabVIEW no cambia de nuevo a la herramienta de posicionamiento, haga clic en el botón Automatic Tool Selection en la ventana Tools
para habilitar la herramienta de selección automática.
6. Cambie el control Numeric a Number of Measurements usando la herramienta de etiquetado.
7. Cambie el valor del control Number of Measurements a 100 usando la herramienta de etiquetado.
Configure el valor en 1.
9. Cambie el color de la perilla Delay Multiplier usando la herramienta de color.
Haga clic en el botón Automatic Tool Selection de nuevo para encender la herramienta de selección automática.
10. Intente cambiar el valor, el tamaño y el nombre de objetos hasta que se familiarice con estas herramientas.
La figura 1-5 muestra un ejemplo del diagrama de bloques tras las modificaciones a realizar. Los pasos 12–13 le muestran como actualizar el diagrama de bloques
para mover el terminal Number of Measurements y cablear el terminal al terminal de contaje del bucle For.
Figura 1-5. Diagrama de bloques de Using Temperature VI
Haga clic y arrastre el terminal a la nueva ubicación como se muestra en la figura 1-5.
13. Cablee el terminal Number of Measurements al terminal de contaje para el bucle For utilizando la herramienta de cableado.
Consejo También pude seleccionar objetos específicos para limpiar, como cables o nodos individuales. <Shift>-haga clic para seleccionar múltiples
objetos y luego haga clic en el botón Clean Up. LabVIEW limpia solo los objetos que usted seleccione y no el diagrama de bloques completo. Configure
como LabVIEW limpia objetos seleccionando Tools»Options del menú, haciendo clic en la categoría Block Diagram y cambiando las opciones en la
sección Block Diagram Cleanup.
Nota Los controles e indicadores booleanos tienen etiquetas de texto booleanas además de sus etiquetas de control. Las etiquetas de texto booleanas
cambian dependiendo del valor del control o indicador. La etiqueta para el control o indicador no cambia dependiendo del valor del control o indicador.
Haga clic con el botón derecho en el terminal Stop Button y seleccione Properties en el menú contextual. Configure las propiedades como se muestra en la
figura 1-6.
Figura 1-6. Cambiando el texto booleano por el control Stop
1 Etiqueta de control—Este texto identifica la terminal de un control booleano para propósitos de programación. Este texto no aparece en el panel frontal a menos
que seleccione Visible.
2 Texto booleano—Este texto aparece solo en el panel frontal y por defecto aparece en el centro del control booleano.
Consejo También puede hacer doble clic en el terminal Stop Button para encontrar el botón de control en el panel frontal.
17. Haga clic en el botón Run para ejecutar el VI.
El tiempo necesario para ejecutar este VI equivale a Number of Measurements por Delay Multipler. Cuando termine de ejecutarse el VI, los datos aparecerán
en el gráfico Temperature Chart.
18. Cierre el VI y haga clic en el botón Don’t Save - All. No necesita guardar el VI.
Objetivo
Comprender cómo el flujo de datos determina el orden de ejecución en un VI.
Nota Los nodos son objetos del diagrama de bloques que tienen entradas o salidas y realizan operaciones cuando se ejecuta un VI.
1. ¿Qué función se ejecuta primero? ¿Hay alguna dependencia entre la función File Dialog y el VI Express Simulate Signal?
3. Debido a que un cable verde conecta la función File Dialog al VI TDMS File Viewer, puede el VI TDMS File Viewer ejecutarse antes que la función TDMS
Close?
4. ¿Cuántos nodos deben ejecutarse antes que la función TDMS Write pueda ejecutarse?
5. ¿Un diagrama de bloques bien diseñado debería fluir en una dirección en particular?
Figura 1-7. Ejemplo de diagrama de bloques
7. En la figura 1-9 un cable de error (mostrado en amarillo) conecta los VIs Express. ¿Qué VI Express se ejecuta de último?
Figura 1-9. Diagrama de bloques—Ejemplo simple de AAP con cable de error.
8. En la figura 1-10, ¿Qué VI Express Tone Measurements se ejecuta de último?
Figura 1-10. Diagrama de bloques—Ejemplo de filtro
3. NO. El VI TDMS File Viewer no puede ejecutarse antes que la función TDMS Close por que el cable amarillo de error conectando la función TDMS Close y el
VI TDMS File Viewer fuerza dependencia de datos. Recuerde, los datos para cada una de las entradas deben estar disponibles antes que el nodo pueda ejecutarse.
Por lo tanto, el VI TDMS File Viewer debe recibir datos desde ambos el cable verde booleano y el cable amarillo de error antes que el VI pueda ejecutarse.
4. Tres nodos deben ejecutarse antes que la función TDMS Write pueda ejecutarse: File Dialog, TDMS Open y Simulate Signal. La función TDMS Write también
depende de la constante de cadena de caracteres Simulated Signal pero esa entrada es instantánea.
5. Sí. Un diagrama de bloques bien diseñado, típicamente fluye de izquierda a derecha. Esto hace más fácil ver el flujo de los datos en el diagrama de bloques. Sin
embargo, no asuma que la ejecución sea de izquierda a derecha o de arriba a abajo cuando no hay dependencia de datos.
6. Cualquiera de los dos puede ejecutarse el último, ya sea el VI Express Statistics o el VI Express Write to Measurement File. El VI Express DAQ Assistant no
puede ejecutarse el último porque ambos el VI Express Statistics y el VI Express Write to Measurement File son dependientes de la señal de datos de la salida
del VI Express DAQ Assistant.
Nota En LabVIEW, el orden de ejecución de los mismos no está determinado por el orden secuencial de los comandos sino por el flujo de datos. Por lo
tanto, es posible tener operaciones simultáneas.
7. El VI Express Write to Measurement File se ejecuta el último. Tiene una dependencia de datos en ambos el VI Express DAQ Assistant y VI Express Statistics.
8. Cualquiera de los dos VIs Express Tone Measurement puede ejecutarse el último. Aunque el VI Express Tone Measurements 2 tiene una dependencia extra en
el VI Express Filter, el VI Express Filter puede ejecutarse antes que el VI Express Tone Measurements 1 permitiendo que el VI Express Tone Measurements 2
se ejecute antes que el VI Express Tone Measurements 1. A pesar de que parece que el VI Express Tone Measurements 1 podría ejecutarse primero, sin una
dependencia de datos explicita no hay forma de saber definitivamente que se ejecutará primero.
Ejercicio
Ejercicio 2-1 Concepto: Depuración
Objetivo
Use las herramientas de depuración de LabVIEW.
Descripción
Los VIs en este ejercicio verifican la validez de un triángulo y luego calculan el área. Para que un triángulo sea válido, los tres lados deben tener un tamaño mayor a
cero. El subVI en este ejercicio usa la fórmula de Heron para calcular el área de un triángulo. Usted puede usar este método cuando conoce los tamaños de los tres
lados del triángulo.
Fórmula de Heron
donde
a+b+c
s = --------------------
2
Los valores predeterminados que usará para depurar y probar este VI son Side A = 6, Side B = 8, Side C = 10. Por lo tanto los valores correctos son los siguientes:
6 + 8 + 10
s = ------------------------ = 12
2
A = 12 6 4 2 = 24
Complete las siguientes secciones para identificar y solucionar problemas en modo de edición y en modo de ejecución. Use la ejecución paso a paso y el resaltado de
la ejecución para revisar el VI. Use puntos de interrupción y sondas para determinar si los cálculos son correctos y descubrir dónde se origina un error.
Errores en modo de edición
Ubique y corrija errores que no permiten que el VI se ejecute.
Note que el botón Run de la barra de herramientas aparece roto, indicando que el VI está roto y no puede ejecutarse.
2. Examine el diagrama de bloques del VI Area and Validity of Triangle mostrado en la figura 2-2.
Este VI toma valores de entrada para cada uno de los tres lados del triángulo, pasa los valores a un subVI que determina el área y revisa que los valores ingresados
son válidos para un triángulo.
Figura 2-2. Diagrama de bloques del VI Area and Validity of Triangle
Haga clic en el botón Run roto para ver la ventana Error list, que enumera todos los errores.
Seleccione una descripción de error en la ventana Error list. La sección Details describe el error y en algunos casos recomienda cómo corregirlo.
Haga clic en el botón Help para ver un tema de LabVIEW Help que describa el error en detalle e incluya instrucciones paso a paso para corregirlo.
Haga clic en el botón Show Error o haga doble clic en la descripción del error para resaltar la zona del diagrama de bloques o del panel frontal que contenga
el error.
Nota Haga doble clic en el subVI Area of a Triangle para abrirlo. En el VI Area of a Triangle, note que la fórmula para calcular el área de un triángulo
requiere la suma de los lados dividido entre 2. Haga clic con el botón derecho en la entrada y de la función de división y seleccione Create»Constant e
ingrese un valor de 2.
1. Pruebe el VI.
Haga clic en el botón Retain Wire Values en la barra de herramientas para que pueda ver el último valor que pasó por el cable.
Ejecute el VI.
Note como los datos fluyen por los cables. A la salida de cada nodo, puede ver que el valor de los datos se muestra momentáneamente. Debido a que el botón
Retain Wire Values está habilitado, puede ver el último valor en el cable.
Haga clic con el botón derecho en cada una de las entradas de la función Compound Arithmetic y seleccione Probe. Esto muestra la ventana de visualización
de sondas.
Note que uno de los valores de un cable es False como se muestra en la figura 2-3.
Figura 2-3. Cables de sondas
Dado que está comprobando que los valores de los tres lados del triángulo son positivos, el valor de entrada o la lógica son incorrectos. Los valores de entrada
eran todos números positivos, eso significa que la lógica es incorrecta.
Note que el nodo que devuelve un valor de False es una función Less than Zero? pero esta sección del código debería estar revisando si el valor es mayor
que cero.
Haga clic con el botón derecho en la función Less than Zero? y seleccione Replace»Comparison Palette»Greater than Zero?.
4. Pruebe el VI.
Ejecute el VI.
Haga clic en el botón Start Single Stepping después de cada nodo para revisar todo el diagrama de bloques. Cada vez que haga clic en el botón Step Over,
se ejecutará el nodo actual y se pausará en el siguiente nodo.
Cuando llegue al subVI, haga clic en el botón Step Into para abrir el diagrama de bloques del subVI Area of Triangle. El subVI está pausado.
Encienda las opciones de resaltado de ejecución y retener los valores de los cables en el subVI.
Haga clic con el botón derecho en la función e Square Root y seleccione Breakpoint»Set Breakpoint como se muestra en la figura 2-4.
Figura 2-4. Establezca puntos de interrupción
1 El punto de interrupción detiene el VI luego que el nodo Square Root se ejecuta y antes que el valor sea enviado al indicador Area of Triangle.
6. Haga clic en el botón rojo de pausa para continuar la ejecución del VI.
Mueva el cursor sobre el cable de entrada de la función Square Root. Debería ver una etiqueta de ayuda con un valor de –576. No se puede tomar la raíz
cuadrada de un número negativo, lo cual es la razón por la que el indicador Area of Triangle devuelve NaN.
Consejo Si no puede ver la ayuda, puede hacer clic en el cable para abrir la ventana de visualización de sondas para ver los valores.
Coloque el puntero sobre otros cables o use la ventana de visualización de sondas para examinar otros valores intermedios.
Note que el valor en el cable (S-B) es también un número negativo. Si mira más de cerca, notará que las entradas de la función de resta están invertidas.
Haga clic en el botón Abort para detener el VI.
Cambie las entradas de la función de resta (S-B) y guarde el VI.
Consejo Presione <Ctrl> y haga clic en una de las entradas para intercambiarlas. Cuando presione <Ctrl> y coloca el cursor sobre una entrada, puede
ver como este cambia.
8. Guarde el VI.
Haga clic con el botón derecho en el punto de interrupción y seleccione Breakpoint»Clear Breakpoint.
Apague el resaltado de la ejecución en los VIs Area of Triangle y Area and Validity of a Triangle.
Guarde ambos VIs.
Prueba
1. Pruebe el VI Area and Validity of a Triangle usando los valores para Side A, Side B y Side C en la tabla 2-1. Para cada grupo de valores, el VI debe devolver el
valor mostrado en la columna Area.
Ejercicio
Ejercicio 3-1 VI Temperature Warnings
Ejercicio 3-2 VI Auto Match
Ejercicio 3-3 Concepto: Bucles While frente a bucles For
Ejercicio 3-4 VI Temperature MonitorI—Temperatura media
Ejercicio 3-5 VI Temperature Monitor—Grafique múltiples temperaturas
Ejercicio 3-6 VI Temperature Warnings—con gestión de errores
Objetivo
Crear y documentar un VI sencillo.
Escenario
Debe crear una parte de un proyecto mayor. El desarrollador principal le proporciona las entradas del VI, el algoritmo y las posibles salidas. Su tarea es crear y
documentar un VI en función de un diseño dado.
Diseño
Use el siguiente diagrama de flujo y la lista de entradas/salidas para crear un VI que muestre advertencias de temperatura. Este VI forma parte del proyecto de la
estación meteorológica de temperatura estudiado durante el curso.
Diagrama de flujo
El diagrama de flujo en la figura 3-1 ilustra el diseño por flujo de datos.
Figura 3-1. Diagrama de flujo del VI Temperature Warnings
Current Temp
>= Max Temp? No
Yes
Warning Text =
Warning Text =
Heatstroke
No Warning
Warning
Current Temp
No
<= Min Temp?
Yes
Warning
Text = No No
Warning?
Yes
Entradas y salidas
La siguiente tabla describe las entradas y salidas para este ejercicio.
Implementación
Complete los siguientes pasos para crear un panel frontal similar al de la figura 3-2. El usuario introduce la temperatura actual, la máxima y la mínima. A continuación,
el panel frontal muestra la cadena de caracteres de advertencia y el LED booleano de advertencia.
Seleccione File»New del menú de LabVIEW y luego seleccione Project»Empty Project del árbol Create New.
1
4
2
3
1 Control numérico—Haga clic con el botón derecho y seleccione Representation»DBL para confirmar que el control numérico es de doble precisión.
2 Cree copias del control numérico Current Temperature presionando y sosteniendo la tecla <Ctrl> y arrastrando el control Current Temperature.
3 Indicador de cadena de caracteres—Cambie el tamaño del indicador para que pueda contener cadenas de caracteres más largas.
4 LED redondo
Consejo Este subVI podría utilizarse para Fahrenheit, Kelvin u otra escala de temperatura, siempre que todas las entradas utilicen la misma escala. Por
lo tanto, no es necesario añadir unidades de escala a las etiquetas.
1 4 6
2 3 5
1 Greater or Equal?—Compara valores de entrada y devuelve un valor TRUE si Current Temperature es mayor o igual a Max Temperature.
2 Less or Equal?—Compara valores de entrada y devuelve un valor TRUE si Current Temperature es menor o igual a Max Temperature.
3 Constante de cadena de caracteres—Cree constantes de cadena de caracteres para Heatstroke Warning, Freeze Warning y No Warning.
4 Select—Devuelve la cadena de caracteres Heatstroke Warning si Current Temperature es mayor o igual a Max Temperature; de otra forma devuelve la
cadena de caracteres No Warning.
5 Select—Devuelve la cadena de caracteres Freeze Warning si Current Temperature es menor o igual a Min Temperature; de otra forma devuelve la cadena
de caracteres No Warning.
6 Not Equal?—Devuelve un valor TRUE al indicador Warning? si el valor Warning Text es diferente a No Warning.
4. Modifique la descripción y consejo asociados con el indicador Warning Text para cambiar el contenido de la ventana Context Help.
Escriba Muestra la cadena de caracteres indicando Heatstroke Warning, Freeze Warning o No Warning dependiendo de las
condiciones del clima en el cuadro de texto “Warning Text” Description.
Nota El texto que ingrese en la caja de texto “Warning Text” Tip es mostrado en una etiqueta de ayuda. Las ayudas son breves descripciones que
aparecen cuando mueve el cursor sobre un control o indicador mientras se ejecuta un VI.
2
4
1 Etiquetas propietarias—Haga clic con el botón derecho en una función y seleccione Visible Items»Label en el menú contextual para mostrar la etiqueta
propietaria para esa función.
2 Mueva la etiqueta—Haga clic en la etiqueta propietaria de la función Greater or Equal? con la herramienta de posicionamiento y muévala abajo de la función.
3 Función de mover—Use la herramienta de posicionamiento para mover la función. Note que la etiqueta propietaria se mueve con la función.
4 Etiqueta propietaria—Haga clic con el botón derecho en el cable y seleccione Visible Items»Label en el menú contextual. Mueva la etiqueta con la herramienta
de posicionamiento.
5 Etiqueta libre—Haga doble clic en un área libre del diagrama de bloques y use la herramienta de etiquetado para crear comentarios en el código.
6. Documente las propiedades del VI, ofreciendo una descripción general del VI, una lista de entradas y salidas, su nombre y la fecha en que se creó el VI. Para
accesar el cuadro de diálogo VI Properties, seleccione File»VI Properties y seleccione Documentation del menú desplegable Category.
7. Guarde el VI.
Prueba
1. Pruebe el VI introduciendo un valor para Current Temperature, Max Temperature y Min Temperature y ejecutando el VI para cada configuración.
La tabla 3-2 muestra la cadena esperada Warning Text y Warning? Valor booleano de cada configuración de valores de entrada.
Nota El rango de temperatura en la tabla es solo un ejemplo de temperaturas seleccionadas para indicar advertencias de congelamiento o golpe de calor.
¿Qué ocurre si el valor de su entrada de temperatura máxima es menor que la temperatura mínima? ¿Qué podría esperar que ocurriese? Va a aprender a manejar
situaciones como esta en el ejercicio 3-6.
Objetivo
Usar un bucle While y un terminal de iteración y pasar datos por un túnel.
Escenario
Cree un VI que genere continuamente números aleatorios entre 0 y 1.000 hasta que genere un número que coincida con el que seleccione el usuario. Determine cuántos
números aleatorios generó el VI antes de que el número coincidiera.
Diseño
Use el siguiente diagrama de flujo y la lista de entradas/salidas para crear el VI de este ejercicio.
Diagrama de flujo
El diagrama de flujo en la figura 3-5 ilustra el diseño por flujo de datos.
Figura 3-5. Diagrama de flujo de Auto Match
Generate a
Random Number No
Between 0 and 1
Multiply by 1000
Add 1 to
Round to Nearest Display Value = Number
Yes Iteration
Integer Value to User to Match?
Terminal
Display Number
of Iterations
Entradas y salidas
La siguiente tabla describe las entradas y salidas para este ejercicio.
Control numérico Number to Match Doble precisión, coma flotante entre 0 y 1000, convertir al número natural más
cercano, valor predeterminado = 50
Indicador numérico Current Number Doble precisión y coma flotante
Indicador numérico Number of Iterations Número entero
Implementación
1. Cree y guarde un proyecto en blanco como Auto [Link] en el directorio <Exercises>\LabVIEW Core 1\Auto Match.
2. Cree un VI nuevo en el proyecto y guárdelo como Auto [Link] en el mismo directorio del proyecto.
3. Construya el panel frontal de la figura 3-6.
Figura 3-6. Panel frontal del VI Auto Match
1 Configure el valor predeterminado del control Number to Match en 50—Ingrese 50 en el control Number to Match y luego haga clic con el botón derecho en
el control y seleccione Data Operations»Make Current Value Default.
2 Configure el indicador Number of Iterations para que su salida sea un entero largo con signo—Haga clic con el botón derecho en el indicador y seleccione
Representation»I32.
4. Configure las propiedades del control Number to Match para que el tipo de dato sea un número entero sin signo de 32-bits, el intervalo de datos sea de 0 a 1000,
el valor de incremento sea 1 y los dígitos de precisión sean 0.
Haga clic con el botón derecho en el control Number to Match y seleccione Representation»U32 en el menú contextual.
Haga clic con el botón derecho en el control Number to Match y seleccione Data Entry en el menú contextual. Establezca las propiedades en las pestañas
Data Entry y Display Format como se muestra en la figura 3-7.
Figura 3-7. Propiedades numéricas de Number to Match
1 2
Haga clic con el botón derecho en el indicador Current Number y seleccione Representation»U32 en el menú contextual.
Haga clic con el botón derecho en el indicador Current Number y seleccione Display Format. Configure las propiedades como se muestra en la figura 3-8.
Figura 3-8. Propiedades de formato del indicador Current Number
1 2 9
3 4 5 6 7 8
Consejo Los puntos de coerción pueden causar que un VI use más memoria durante su ejecución, así que trate de mantener los tipos de datos consistentes
en los VIs que cree.
7. Actualice el VI para eliminar los puntos de coerción.
Haga clic con el botón derecho en el cable la función Round To Nearest y seleccione Insert»Numeric Palette»Conversion»To Unsigned Long Integer
como se muestra en la figura 3-10. Esto inserta la función To Unsigned Long Integer en el cable.
Figura 3-10. Insertando la función To Unsigned Long Integer en el cable
8. Note que convertir la salida de la función Round To Nearest elimina todos los puntos de coerción en el diagrama de bloques, como se muestra en la figura 3-11.
Figura 3-11. VI Auto Match Completo
10. Haga clic con el botón derecho en el indicador Current Number y seleccione Advanced»Synchronous Display.
Nota Si se habilita la visualización sincrónica, cada vez que el diagrama de bloques envíe un valor al indicador Current Number, el diagrama de bloques
deja de ejecutarse hasta que el panel frontal haya actualizado el valor del indicador. En este ejercicio activa la visualización síncrona, de modo que puede
ver el indicador Current Number actualizándose repetidamente en el panel frontal. Normalmente la visualización síncrona se deshabilita para aumentar
la velocidad de ejecución, ya que habitualmente no necesita ver cada valor actualizado de un indicador en el panel frontal.
Prueba
1. Cambie el número en Number to Match a un número que se encuentre en el rango de datos, que es de 0 a 1000 con un incremento de 1.
2. Ejecute el VI.
3. Cambie el valor de Number to Match y ejecute el VI de nuevo. Current Number se actualiza en cada iteración del bucle porque se encuentra dentro de él. Number
of iterations se actualiza al completarse porque se encuentra fuera del bucle.
4. Para ver cómo el VI actualiza los indicadores, habilite el resaltado de ejecución.
En el diagrama de bloques, haga clic en el botón Highlight Execution para habilitar el resaltado de ejecución. El resaltado de la ejecución muestra el
movimiento de datos en el diagrama de bloques desde un nodo a otro para que pueda ver cada número según lo genera el VI.
7. Intente hacer coincidir un número que se encuentre fuera del rango de datos.
Cambie el valor Number to Match a un número que se encuentre fuera del rango, 0 – 1000.
Ejecute el VI.
Note que LabVIEW coacciona el valor fuera del rango al valor más cercano en el rango de datos que especifique en el paso 4 de la sección Implementación.
8. Cierre el VI.
Objetivo
Comprender cuándo se usa un bucle While y cuándo uno For.
Descripción
En los siguientes escenarios, decida si usar un bucle While o For.
Escenario 1
Adquiere datos de presión en un bucle que se ejecuta una vez cada segundo durante un minuto.
Escenario 2
Adquiere datos de presión hasta que ésta es mayor o igual que 1.400 psi.
Escenario 4
Genera una rampa de tensión que comienza en cero, aumentando incrementalmente en 0,5 V cada segundo, hasta que la tensión de salida es igual a 5 V.
Respuestas
Escenario 1
Adquiere datos de presión cada segundo durante un minuto.
Escenario 2
Adquiere datos de presión hasta que ésta sea 1.400 psi.
1. Bucle While: Pressure = 1400 psi
2. Bucle For: Desconocido
3. Un bucle While. Aunque puede añadir un terminal condicional a un bucle For, debe cablear un valor al terminal de contaje. Sin más información, no conoce el
valor apropiado para cablear al terminal de contaje.
Escenario 3
Adquiere datos de presión y temperatura hasta que ambos valores son estables durante dos minutos.
1. Bucle While: Bucle While: [(Última Temperatura = Temperatura Previa) durante 2 minutos o más] y [(Última presión = Presión Previa) durante 2 minutos o más]
2. Bucle For: Desconocido
3. Un bucle While. Aunque puede añadir un terminal condicional a un bucle For, debe cablear un valor al terminal de contaje. Sin más información, no conoce el
valor apropiado para cablear al terminal de contaje.
Escenario 4
Genera una rampa de tensión que comienza en cero, aumentando incrementalmente en 0,5 V cada segundo, hasta que la tensión de salida es igual a 5 V.
Objetivo
Usar un bucle While y registros de desplazamiento para hallar el promedio de datos.
Escenario
El VI Temperature Monitor adquiere y muestra la temperatura. Modifique el VI para hallar el promedio de las cinco últimas mediciones de temperatura y mostrar el
promedio móvil en el gráfico tipo “waveform chart”.
Diseño
La figura 3-12 y la figura 3-13 muestran el panel frontal y el diagrama de bloques del VI Temperature Monitor.
Figura 3-12. Panel frontal del VI Temperature Monitor
Para modificar este VI, debe conservar los valores de temperatura de las cuatro iteraciones anteriores de el bucle While y hallar el promedio de los valores. Para lograr
esto, modifique este VI de esta manera:
• Use un registro de desplazamiento con elementos adicionales para conservar los datos de las cuatro iteraciones anteriores.
• Inicialice el registro de desplazamiento con una lectura desde el sensor de temperatura simulado.
Implementación
1. Pruebe el VI.
1 3 4
1 Registros de desplazamiento—Múltiples registros de desplazamiento recolectan múltiples lecturas de temperatura. Haga clic con el botón derecho en el borde
del bucle While y seleccione Add Shift Register. Arrastre el nodo inferior de cambio de tamaño del registro de desplazamiento para mostrar cuatro registros
de desplazamiento.
2 Cree una copia del VI Thermometer (Demo)—Presione <Ctrl> mientras arrastra el subVI afuera del bucle While para crear una copia. El VI Thermometer (Demo)
devuelve una medida de temperatura e inicializa los registros de desplazamiento izquierdos antes de que se inicie el bucle.
3 Compound Arithmetic—Devuelve la suma de la temperatura actual y las cuatro lecturas anteriores de la temperatura. Cambie el tamaño de la función para
tener cinco terminales.
4 Divide—Devuelve el promedio de las cinco últimas lecturas de temperatura.
4. Guarde el VI.
Prueba
1. Ejecute el VI.
Durante cada iteración en el bucle While, el VI Thermometer toma una medida de temperatura. El VI añade este valor a las cuatro últimas mediciones almacenadas
en los terminales izquierdos del registro de desplazamiento. El VI divide el resultado entre cinco para averiguar la media de las cinco mediciones (la medida actual
más las cuatro anteriores). El VI muestra el promedio en el gráfico tipo “waveform chart”. Observe que el VI inicializa el registro de desplazamiento con una
medida de temperatura.
Objetivo
Representar varios conjuntos de datos en un solo gráfico tipo “waveform chart” y personalizar su vista.
Escenario
Modifique el VI del ejercicio 3-4 para representar la temperatura actual y el promedio móvil en el mismo gráfico. Además, el usuario debe poder examinar una parte
de la curva mientras los datos se están adquiriendo.
Diseño
La figura 3-15 muestra el panel frontal del VI Temperature Monitor existente y la figura 3-16 muestra el diagrama de bloques.
Figura 3-15. Panel frontal del VI Temperature Monitor
Para que el usuario pueda examinar una parte de la curva mientras los datos se están adquiriendo, muestre la leyenda escalas y la paleta del gráfico tipo “waveform
chart”. Asimismo, expanda la leyenda para mostrar curvas adicionales.
Para modificar el diagrama de bloques de la figura 3-16, debe modificar el terminal del gráfico para aceptar varios datos. Use una función Bundle para combinar la
temperatura media y la actual en un cluster y cablearlo al terminal del gráfico Temperature History.
Figura 3-16. Diagrama de bloques original del VI Temperature Monitor
Implementación
1. Abra el VI Temperature Monitor creado en el ejercicio 3-4.
1 Muestra ambas gráficas en la leyenda de las curvas—Use la herramienta de posicionamiento para cambiar el tamaño de la leyenda de curvas para mostrar dos
objetos. Haga doble clic en la etiqueta para editar los nombres. El orden de las curvas que aparecen en la leyenda de curvas es el mismo que el de los elementos
cableados a la función Bundle del diagrama de bloques.
2 Cambie el tipo de gráfica de Current Temperature—Use la herramienta operacional para seleccionar la curva en la leyenda de curvas. Haga clic en en el ícono
de la curva, seleccione Common Plots del menú y escoja la curva que quiere.
3 Muestra la paleta Graph—Haga clic con el botón derecho en el gráfico Temperature History y seleccione Visible Items»Graph Palette.
4 Muestra la leyenda de escala—Haga clic con el botón derecho en el gráfico Temperature History y seleccione Visible Items»Scale Legend.
4. Guarde el VI.
Prueba
1. Ejecute el VI. Use las herramientas de la leyenda de escalas y la paleta de gráfico para examinar los datos que genere.
Objetivo
Modificar un VI para utilizar una estructura Case y tomar una decisión software.
Escenario
Ha creado un VI en el que el usuario introduce una temperatura, una temperatura máxima y una mínima. Se genera una cadena de caracteres de advertencia en función
de la relación de las entradas. No obstante, una situación podría hacer que el VI funcionara incorrectamente. Por ejemplo, el usuario podría introducir una temperatura
máxima inferior a la temperatura mínima. Modifique el VI para generar otra cadena de caracteres que alerte al usuario del error: Upper Limit < Lower Limit
Configure el indicador Warning? en TRUE para indicar el error.
Diseño
Modifique el diagrama de flujo creado para el VI Temperature Warnings original como en la figura 3-19.
Figura 3-19. Diagrama de flujo de Temperature Warnings modificado
Output
M
Min
inTTeem
mpp>= No CMuirnreTnetmTpem>=
p No Current Temp No No Warning
Max Temp MMaaxxTT eemmpp Min Temp and
FALSE
Output Output
Heatstroke Freeze Warning
Create Error
Warning and and
TRUE TRUE
Output
Upper Limit
< Lower Limit
and TRUE
El diagrama de bloques original del VI Temperature Warnings aparece en la figura 3-20. Debe añadir una estructura Case al VI Temperature Warnings para ejecutar
el código si la temperatura máxima es menos o igual que la temperatura mínima. De otra manera, el VI no ejecuta el código. En su lugar, el VI genera una nueva
cadena de caracteres y el indicador Warning? está establecido como TRUE.
Figura 3-20. Diagrama de bloques original del VI Temperature Monitor
Implementación
1. Abra Weather [Link] en el directorio <Exercises>\LabVIEW Core 1\Weather Warnings.
2. Abra Temperature [Link] de la ventana Project Explorer. Creó el VI Temperature Warnings en el ejercicio 3-1.
3. Coloque un cluster Error In y Error Out en el panel frontal como se muestra en la figura 3-21.
Figura 3-21. Panel frontal del VI Temperature Warnings con clusters de error
4. Abra el diagrama de bloques y cree espacio para añadir la estructura Case.
Seleccione las terminales de los controles Current Temperature, Max Temperature, Min Temperature y Error In.
Consejo Para seleccionar más de un elemento, pulse la tecla <Shift> mientras selecciona los elementos.
Mientras los terminales siguen seleccionados, use la tecla de flecha izquierda del teclado para mover los controles a la izquierda.
Consejo Mantenga pulsada la tecla <Mayús> para mover los objetos en incrementos de cinco píxeles.
Consejo Presione la tecla <Ctrl> y use la herramienta de posicionamiento para arrastrar una región del tamaño que quiera insertar.
Figura 3-22. Diagrama de bloques del VI Temperature Warnings—No error, caso False
4 3
1 Less?—Compara el Max Temperature y Min Temperature. Asegúrese que la función Less? este fuera de la estructura Case.
2 Estructura Case—No incluya las terminales Current Temperature, Max Temperature, Min Temperature, Error In, Warning?, Warning Text o Error Out
en la estructura Case debido a que estos controles e indicadores son usados en ambos casos.
3 Establezca los casos True y False—Con el caso True visible, haga clic con el botón derecho en el borde de la estructura Case y seleccione Make this Case
False.
4 Etructura Case—Cablee la terminal Error In a el terminal selectora para crear los casos No Error y Error. Por defecto, la estructura Case tiene casos True y
False. Estos casos cambian a Error y No Error solo después de cablear Error In a la terminal selectora.
Figura 3-23. VI Temperature Warnings—No Error, caso True
1 Caso True—Si Max Temperature es menor que Min Temperature, el caso True se ejecuta. Haga clic en la etiqueta del selector de caso para escoger el caso True.
2 Constante True—Cuando el caso True se ejecuta, el LED Warning? se ilumina.
3 Constante de cadena de caracteres—Si Max Temperature es menor que Min Temperature, la advertencia Upper Limit < Lower Limit se muestra en
el panel frontal. Ingrese el texto en la constante de cadena de caracteres.
6. Cree el caso Error en la estructura Case externa para que este VI pueda ser usado como un subVI.
Figura 3-24. VI Temperature Warnings—Caso Error
7. Guarde el VI.
Prueba
1. Cambie al panel frontal del VI.
2. Cambie el tamaño del indicador Warning Text para que pueda contener la nueva cadena de caracteres.
3. Pruebe el VI introduciendo un valor de la tabla 3-4 en los controles Current Temperature,Max Temperature y Min Temperature y ejecutando el VI para
cada configuración.
La tabla 3-4 muestra la cadena esperada Warning Text y Warning? Valor booleano de cada configuración de datos.
4. Pruebe el caso Error. Para usar este VI como subVI, el VI debe ser capaz de gestionar un error entrando al VI. Prueba el caso Error para asegurarse que este VI
puede emitir la información que recibe.
En el panel frontal, use la herramienta operacional para hacer clic en el indicador booleano status dentro del cluster Error In para que el indicador cambie
a rojo e ingrese 7 en el control code.
Ejecute el VI. La información de error que ingresó pasa por caso Error en el VI y es la salida en el cluster Error Out.
Muestre el diagrama de bloques, seleccione el caso No Error, resaltado de ejecución y luego ejecute el VI de nuevo para ver el error pasar por el caso Error.
En el panel frontal, haga clic con el botón derecho en el borde de el cluster Error Out y seleccione Explain Error para mostrar información acerca del error
que fue devuelto.
Ejercicio
Ejercicio 4-1 VI Temperature Warnings—Como subVI
Objetivo
Crear el icono y panel de conectores para un VI de modo que pueda utilizar el VI como un subVI.
Escenario
Ha creado un VI que determina una cadena de caracteres de advertencia en función de las entradas existentes. Cree un icono y panel de conectores de modo que pueda
utilizar el VI como un subVI.
Diseño
El VI Temperature Warnings contiene las siguientes entradas y salidas:
Entradas Salidas
Use el panel de conectores estándar para garantizar espacio para una futura expansión.
Implementación
1. Abra Weather [Link] en el directorio <Exercises>\LabVIEW Core 1\Weather Warnings.
2. Abra Temperature Warnings VI desde la ventana Project Explorer. Creó el VI Temperature Warnings en el ejercicio 3-1 y lo modificó en el ejercicio 3-6.
3. Conecte las entradas y salidas al conector como en la figura 4-1.
Figura 4-1. Conexiones del panel de conectores para el VI Temperature Warnings
1 2
1 Panel de conectores—Localizado en la esquina superior derecha de la ventana del VI, el panel de conectores muestra terminales potenciales para el VI. El
panel de conectores mostrado aquí muestra el patrón de terminales estándar. Puede hacer clic con el botón derecho en el panel de conectores y seleccionar
Patterns para escoger diferentes diseños de terminales.
2 Conexiones—La ventana Context Help muestra las conexiones del VI.
Con la herramienta de cableado, haga clic en el terminal superior derecho del panel de conectores.
Haga clic en el control del panel frontal correspondiente, Current Temperature.
Observe que el terminal del panel de conectores se rellena con un color para coincidir con el tipo de datos del control conectado a él.
Haga clic en la terminal del panel de conectores abajo de la terminal Current Temperature.
Haga clic en el control del panel frontal correspondiente, Max Temperature.
Siga cableando el panel de conectores hasta que todos los controles e indicadores estén cableados y la ventana Context Help coincida con la mostrada en la
figura 4-1.
4. Cree un icono.
Consejo Haga doble clic en la herramienta de selección para seleccionar el gráfico existente. Pulse la tecla <Suprimir> para eliminar el gráfico. A
continuación, haga doble clic en la herramienta de rectángulo para crear automáticamente un borde para el icono.
Consejo Haga doble clic en la herramienta de texto para modificar las fuentes. Puede seleccionar Small Fonts si desea fuentes de tamaño inferior a 9
puntos.
Consejo Seleccione la ficha Glyphs y filtre los símbolos con la palabra clave warning. Después arrastre un símbolo de advertencia a su icono.
5. Haga clic en OK cuando haya terminado para cerrar el cuadro de diálogo Icon Editor.
Prueba
Pruebe el VI Temperature Warnings como un subVI.
1. Añada archivos al proyecto LabVIEW Weather Warnings como se muestra en la figura 4-3.
Figura 4-3. Proyecto Weather Warnings
Añada una carpeta de relleno automático al proyecto LabVIEW Weather Warnings. LabVIEW continuamente monitorea carpetas de relleno automático y
actualiza la carpeta en la ventana Project Explorer de acuerdo a los cambios hechos en el proyecto y en el disco.
– Haga clic con el botón derecho en My Computer en el proyecto Weather Warnings y seleccionar Add»Folder (Auto-populating) en el menú contextual.
– Navegue a <Exercises>\LabVIEW Core 1\Shared Files y haga clic en el botón Select Folder.
La carpeta Shared Files contiene archivos compartidos que puede usar en este y otros ejercicios.
– Navegue a <Exercises>\LabVIEW Core 1\Weather Warnings\Test VIs\SubVI [Link] y haga clic en Add File.
2. Abra el VI SubVI Tester y complete el diagrama de bloques como se muestra en la figura 4-4.
Figura 4-4. Diagrama de bloques del subVI Test
1 2
1 Thermometer (Demo)—Localice este VI en la carpeta Shared Files en la ventana Project Explorer, arrástrelo al diagrama de bloques y cabléelo como se
muestra. Este VI genera ejemplos de valores de temperatura.
2 Temperature Warnings—Debido a las modificaciones hechas al VI Temperature Warnings, puede usarlo como un subVI. Cablee el VI Temperature Warnings
usando la conexiones que creó.
3 Enum Constant—Haga clic con el botón derecho en la entrada Units (0:Celsius) del VI Thermometer (Demo) y seleccione Create»Constant. Crear la
constante enum del VI Thermometer (Demo) automáticamente rellena el enum con las opciones apropiadas. Use la herramienta operacional para seleccionar
Celsius.
4 Or—Use la función Or para detener el VI si el usuario haga clic en el botón Stop o si el VI Temperature Warnings devuelve un error en el cluster Error Out.
3. En el panel frontal del VI SubVI Tester, ingrese los valores de prueba para los controles Max Temperature y Min Temperature.
4. Ejecute el VI.
El VI Thermometer (Demo) genera ejemplos de temperatura, las cuales son mostradas por el VI SubVI Tester en el indicador Thermometer.
5. Note como la cadena de caracteres en el indicador Warning Text cambia mientras la temperatura sube o baja.
Ejercicio
Ejercicio 5-1 Concepto: Manipulando Arrays
Ejercicio 5-2 Concepto: Clusters
Ejercicio 5-3 Concepto: Definiciones tipo
Objetivo
Manipular arrays con varias funciones de LabVIEW.
Descripción
Recibe un VI y debe mejorarlo para varios fines. El panel frontal de este VI está hecho. Complete el diagrama de bloques para practicar diferentes técnicas para
manipular arrays.
Implementación
1. Abra Manipulating [Link] en el directorio <Exercises>\LabVIEW Core 1\Manipulating Arrays.
2. Abra el VI Array Manipulation de la ventana Project Explorer. El panel frontal, mostrado en la figura 5-1, ya está creado para usted.
Figura 5-1. Panel frontal del VI Array Manipulation
3. Abra el diagrama de bloques y complete cada uno de los casos que corresponde a las pestañas en el panel frontal como en las figuras 5-2 hasta 5-8.
Figura 5-2. VI Array ManipulationI—Caso Concatenate Channels
2 1
1 Build Array—Expanda este nodo para aceptar dos entradas y luego haga clic con el botón derecho y seleccione Concatenate inputs en el menú contextual.
2 Cablee las salidas de las ondas sinusoidal y cuadrada a la función Build Array para crear un array de 1D con ambas curvas.
1 2
1 Subtract?—Cablee este a la terminal selectora de caso para que el caso correcto se ejecute cuando haga clic en el botón Subtract? en el panel frontal.
2 Estructura Case—Coloque la función Subtract en el caso True, para que el VI reste los elementos del array cuando el botón Subtract? en el panel frontal es
presionado.
Figura 5-4. VI Array Manipulation—Caso False Add/Subtract Channels
1 Cuando el valor del control booleano Subtract? es False, el array de elementos es añadido.
Nota Este caso demuestra la funcionalidad polimórfica añadiendo y restando elementos del array.
1 2
Nota El caso Select a Channel usa un nodo de propiedad para cambiar el color de la gráfica. Aprenderá sobre nodos de propiedad en LabVIEW Core 2.
El tipo de dato de forma de onda es un tipo especial de cluster que contiene información adicional del tiempo de forma de onda.
Figura 5-6. VIArray Manipulation—Waveform Data
1 Add—Usa el valor del control Offset para modificar el valor de la forma de onda en el tipo de dato de forma de onda. Note que el valor del controlOffset debe
ser coaccionado para ser usado con el tipo de dato de forma de onda.
Nota Polimorfismo es la habilidad de VIs y funciones de adaptarse automáticamente para aceptar diferentes tipos de datos, incluyendo arrays, escalares
y formas de onda. VIs y funciones son polimórficos en diferentes grados.
2 3 4
1 Add—Modifica los mismos datos en un array añadiendo el valor de Channel 1 Offset a cada elemento del array.
2 Bucle For—Extrae cada elemento del array usando auto indexado para que la función Add en el bucle For pueda sumar un valor escalar.
3 Build Array—Toma los dos arrays de 1D y construye un array de 2D. Cada array de 1D se convierte en una fila en el array de 2D.
4 Array Size—Devuelve un array de 1D donde cada elemento muestra el tamaño de cada dimensión. En este ejercicio, debe tener 2 elementos de datos para
cada número de las filas y columnas.
5Los indicadores All Data Channel y Data Channel Array muestran la misma información.
Nota La funcionalidad polimórfica de las funciones de LabVIEW le permite realizar la misma operación en cada elemento sin extraer elementos del
array, como lo hace con las dos funciones Add en el caso All Data Channel.
2 1
1 Array Subset—Extrae un subgrupo de un array existente. En este ejercicio, use esta función para acercarse a un subgrupo de la forma de onda que generó.
2 Constante Numérica—Estas constantes especifican que la función extrae las primeras dos columnas empezando por el elemento 0.
3 Start Value—Establece el índice de inicio. El valor predeterminado está configurado para empezar en el elemento 0.
4 Length—Establece el número de elementos por extraer. El valor predeterminado está configurado para dar una salida de 1000 elementos.
Complete los siguientes pasos para usar el NI Example Finder para localizar VIs de ejemplos para demostrar diferentes formas de usar la función Array.
4. Haga clic en uno de los ejemplos en los resultados de la búsqueda y lea la descripción.
6. Lea los comentarios en el panel frontal y en el diagrama de bloques para aprender más acerca de los que este ejemplo demuestra.
7. Ejecute el ejemplo, examine los diferentes casos y haga clic en el botón Stop para salir.
Objetivo
Cree un cluster conteniendo los datos que serán pasados a través de la aplicación y en el proceso, crea código escalable y legible.
Descripción
Cree un cluster que contiene los datos usados por el VI Temperature Warnings que creó en la lección 3. Modifique el VI Temperature Warnings para recibir y devolver
datos en la forma del mismo cluster como en la figura 5-9. El VI modificado funciona de una manera más modular con otros subVIs en toda la aplicación.
Figura 5-9. Panel frontal del VI Temperature Warnings con clusters
3. Coloque los controles e indicadores existentes en un cluster llamado Weather Data como en la figura 5-10.
Figura 5-10. Cree el cluster
1 3
1 Cambie el tamaño del cluster automáticamente—LabVIEW puede reordenar y cambiar el tamaño del cluster por usted. Haga clic con el botón derecho en el
borde del cluster Weather Data y seleccione AutoSizing»Arrange Vertically.
1 Haga clic con el botón derecho en el borde del cluster y seleccione Reorder Controls in Cluster.
2 Haga clic en los números negros para alternar el orden de los objetos en el cluster.
3 Haga clic en el botón Confirm para guardar los cambios.
6. Modifique el VI para recibir y devolver datos de cluster.
Figura 5-13. Temperature Warnings—Clusters Weather Data In y Weather Data Out
1
2
1 Weather Data—<Ctrl>-haga clic en el cluster Weather Data y arrástrelo para crear una copia. Cambie el nombre de la copia Weather Data In.
2 Weather Data—Haga clic con el botón derecho en el cluster original y seleccione Change to Indicator. Cambie el nombre del indicador Weather Data Out.
3 Cablee el panel de conectores—Cablee el control Weather Data In a la esquina superior izquierda del conector. Cablee Weather Data Out a la esquina superior
derecha.
7. Modifique el diagrama de bloques como en la figura 5-14 para extraer datos del cluster de entrada.
1 Unbundle By Name—Cablee el control Weather Data In y expanda la función Unbundle by Name para mostrar tres elementos. Cablee las salidas de la función
Unbundle by Name a los cables rotos en el orden mostrado. Debido a que usted movió controles e indicadores individuales a un solo cluster, debe usar la función
Unbundle by Name para cablear controles e indicadores internos independientemente de cada uno.
2 Bundle By Name—Cablee el cluster Weather Data In alrededor de la estructura Case al cluster de entrada de la función Bundle by Name. Muestre dos
elementos y use la herramienta operacional para seleccionar los elementos Warning? y Warning Text. Conecte los cables rotos a las entradas de la función
Unbundle By Name como se muestra.
Nota Si el orden de los elementos en las funciones Unbundle by Name y Bundle By Name es diferente que el que usted desea, puede usar la herramienta
operacional para cambiar el orden.
En el diagrama de bloques, borre los indicadores Thermometer, Warning? y Warning Text y cualquier otro cable roto. Presione <Ctrl-B> para limpiar
todos los cables rotos.
Modifique el VI SubVI Tester para trabajar con el VI Temperature Warnings que ahora usa clusters como en la figura 5-15.
Figura 5-15. Diagrama de bloques del VI SubVI Tester modificado para trabajar con el VI Temperature Warnings modificado.
1 Weather Data—Haga clic con el botón derecho en la salida Weather Data Out del VI Temperature Warnings y seleccione Create»Indicator. Cablee la salida
al borde del bucle While, haga clic con el botón derecho en el túnel y seleccione Replace with Shift Register en el menú contextual. El registro de
desplazamiento almacena los datos del cluster de una iteración a la siguiente.
2 Constante—Haga clic con el botón derecho en el registro de desplazamiento y seleccione Create constant para inicializar los valores. Cambie el nombre de
la constante Initialize Weather.
3 Bundle By Name—Cablee la constante del registro de desplazamiento Initialize Weather al cluster de entrada de la función Bundle by Name. Expanda la
función Bundle By Name a tres elementos.
Objetivo
Mejorar la escalabilidad de su aplicación usando definiciones tipo compuestas de clusters de controles personalizados, indicadores y constantes de un tipo de dato
particular.
Escenario
Como desarrollador de LabVIEW, usted puede encontrar situaciones donde necesite definir sus propios tipos de datos personalizados en la forma de clusters y enums.
Un reto asociado a usar tipos de datos personalizados es que puede que necesite cambiarlos más tarde en el desarrollo. Además, puede que los tenga que cambiar tras
haberlos usado en VIs. Por ejemplo, usted crea copias de un tipo de datos personalizado y los usa como controles, indicadores o constantes en uno o en más VIs.
Luego se da cuenta de que el tipo de datos personalizado necesita ser cambiado. Necesita añadir, eliminar o cambiar los objetos en el tipo de datos cluster o el enum.
• ¿Qué pasará a las copias de los tipos de datos personalizados usados en los VIs que ya están guardados?
• ¿Deberían las copias mantenerse sin cambios o deberían actualizarse para reflejar los cambios en el original?
Usualmente, se desea que todas las copias de tipo de datos personalizados se actualicen si cambia el tipo de datos personalizado original. Para lograr esto, se necesita
que las copias de los tipos de datos personalizados estén asociadas a una definición tipo, la cual se define de la siguiente manera:
Definición tipo—Una copia maestra de tipo de datos personalizado que puede ser utilizada por múltiples VIs.
Implementación
En este ejercicio, se modifica el VI Temperature Warnings que fue revisado en el ejercicio 5-2 de manera tal que los cambios hechos en el tipo de datos personalizado
Weather Data se propaguen a través de la aplicación.
Una vez completada, la aplicación Weather Station monitoriza información de temperatura y de viento. Este ejercicio modifica el VI Temperature Warnings. En el
ejercicio Reto, se modifica el VI Windspeed Warnings.
Haga clic con el botón derecho en el borde del control Weather Data In y seleccione Make Type Def.
En el diagrama de bloques la terminal Weather Data In ahora tiene un triángulo negro en la esquina indicando que está conectada a una definición tipo.
Haga clic con el botón derecho en el borde del control Weather Data In y seleccione Open Type Def para mostrar la ventana Custom Control Editor como
en la figura 5-17.
La ventana parece el panel frontal de un VI pero no tiene diagrama de bloques.
Figura 5-17. Ventana Custom Control Editor
1 El tipo de control es un Type Def, el cual mantiene el enlace entre el archivo y las copias del control personalizado usados en VIs.
Guarde el control personalizado como Weather [Link] en el directorio <Exercises>\LabVIEW Core 1\Weather Warnings y cierre la ventana
editora de controles.
En el diagrama de bloques del VI Temperature Warnings, note el punto de coerción en la terminal del indicador Weather Data Out. Esto indica que el
indicador no está ligado a la definición tipo.
Haga clic con el botón derecho en el borde del indicador Weather Data Out en el panel frontal y seleccione Replace»Select a Control en el menú contextual.
Nota Ya no puede añadir o remover elementos del cluster de controles e indicadores en el panel frontal. Debe abrir la definición tipo y añadir o remover
el elemento de la ventana editora de controles.
Haga clic con el botón derecho en el borde del control Weather Data In y seleccione Open Type Def.
Modifique el panel frontal como en la figura 5-18.
Figura 5-18. Definición tipo Weather Data con unidades de temperatura
1 Enum (Silver)—Coloque el enum en el cluster y nómbrelo Units. Haga clic con el botón derecho en el enum y seleccione Edit Items. Cree un ítem para
Celsius y Fahrenheit.
Guarde la definición tipo Weather Data y la ventana editora de controles.
Note que el control Weather Data In y el indicador Weather Data Out en el VI Temperature Warnings ha sido actualizado con los cambios hechos a la
definición tipo Weather Data. Organice el panel frontal del VI como en la figura 5-19.
Figura 5-19. VI Temperature Warnings con controles e indicadores Type Def
• Cualquier cable roto. Presione <Ctrl-B> para limpiar todos los cables rotos.
Modifique el VI SubVI Tester para trabajar con el VI Temperature Warnings que ahora usa definiciones tipo como en la figura 5-20.
Figura 5-20. Diagrama de bloques modificado del VI SubVI Tester para probar el subVI Temperature Warnings
1 3 2
1 Inicialice el registro de desplazamiento—Haga clic con el botón derecho en el registro de desplazamiento y seleccione Create»Constant para inicializar el
registro de desplazamiento. Haga clic con el botón derecho en el cluster y seleccione View Cluster as Icon.
2 Bundle By Name—Expanda el nodo para mostrar cuatro elementos. Use la herramienta operacional para seleccionar Units.
3 Cablee la constante Units (0:Celsius) al elemento Units de la función Bundle By Name.
Disponga el panel frontal de la figura 5-21.
Figura 5-21. Panel frontal del VI SubVI Tester modificado con Type Def
Reto
En este ejercicio reto, se modifica el VI Windspeed Warnings para aumentar la aplicación Weather Station. Luego se modifica el VI Windspeed Warnings como un
subVI.
En ventana Project Explorer, haga clic con el botón derecho en My Computer y seleccione Add»File desde el menú contextual.
Navegue al fichero <Exercises>LabVIEW Core 1\Weather Warnings\Support VIs y seleccione Windspeed [Link].
2. Abra el VI Windspeed Warnings.
4. Haga clic con el botón derecho en el cluster Weather Data In y seleccione Open Type Def en el menú contextual.
5. Modifique la definición tipo Weather Data con controles de velocidad de viento como en la figura 5-22.
Figura 5-22. Controles e indicadores de la definición tipo del VI Windspeed Warnings
6. Modifique el diagrama de bloques del VI Windspeed Warnings para usar la nueva definición tipo Weather Data en lugar de controles e indicadores individuales,
como en la figura 5-23.
Figura 5-23. VI Windspeed Warnings usando definiciones tipo
7. Modifique el VI SubVI Tester para trabajar con el VI Windspeed Warnings, como en la figura 5-24.
Figura 5-24. Diagrama de bloques modificado del VI SubVI Tester para probar el subVI TWindspeed Warnings
8. Ejecute el VI SubVI Tester y verifique que los valores mostrados en el indicador Weather Data Out son correctos.
Ejercicio
Ejercicio 6-1 Concepto: VI Spreadsheet Example
Ejercicio 6-2 VI Temperature Monitor—Registro de datos
Objetivo
Guardar un array 2D en un fichero de texto para que una aplicación de hoja de cálculo pueda acceder al fichero y explorar cómo mostrar datos numéricos en una tabla.
Descripción
Complete los pasos siguientes para examinar un VI que guarda arrays numéricos en un fichero con un formato al que puede acceder con una hoja de cálculo.
El VI Spreadsheet Example genera datos sinusoidales, cosenoidales y ruido para 128 puntos. Luego el VI almacena esta información en un array de 2D que es
de 128 filas × 3 columnas. El indicador Table en la figura 6-1 muestra los datos de tres columnas (Sine, Noise, and Cosine) para las primeras 14 filas del array.
El indicador Waveform Graph muestra las curvas de cada columna. Finalmente, el VI Spreadsheet Example guarda la información en un archivo de registro.
Figura 6-1. Panel frontal del VI Spreadsheet Example
3. Ejecute el VI.
4. Guarde el archivo, cuando se le indique, como [Link] en el directorio <Exercises>\LabVIEW Core 1\Spreadsheet Example y haga clic en el
botón OK. Este archivo se examinará más tarde.
• VI Sine Pattern—Devuelve un array numérico de 128 elementos que contienen un patrón sinusoidal. La constante 90.0, en la segunda copia del VI Sine
Pattern, especifica la fase del modelo sinusoidal la cual genera el modelo cosenoidal.
• VI Uniform White Noise—Devuelve un array numérico de 128 elementos que contienen un patrón de ruido.
• La función Build Array—Crea el siguiente array 2D a partir del array sinusoidal, array de ruido y array cosenoidal.
Array sinusoidal …
Array de ruido …
Array cosenoidal …
• La función Transpose 2D Array—Reordena los elementos del array 2D para que el elemento [i,j] se convierta en el elemento [j,i], de este modo.
S N C
… … …
• El VI Write To Spreadsheet File—Convierte el array 2D en una cadena de caracteres de hoja de cálculo y escribe la cadena de caracteres en un archivo. La
cadena de caracteres tiene el siguiente formato, donde una flecha () indica una tabulación y un símbolo de párrafo (¶) indica el final de un carácter de línea.
S N C
¶
¶
¶
… … …
¶
• La función Number To Fractional String—Convierte un array de valores numéricos en un array de cadenas de caracteres que se muestra en la tabla.
Nota Este ejemplo almacena sólo tres arrays en el fichero. Para incluir más arrays, aumente el número de entradas en la función Build Array.
7. Abra el fichero [Link] con un procesador de texto, una aplicación de hoja de cálculo o un editor de texto y vea su contenido.
Abra un procesador de texto, una aplicación de hoja de cálculo o un editor de texto, como el Bloc de notas o WordPad.
Abra [Link]. Los datos de la forma de onda sinusoidal aparecen en la primera columna, los datos de la forma de onda aleatoria aparecen en la segunda
columna y los datos de la forma de onda cosenoidal aparecen en la tercera columna.
Objetivo
Modificar un VI para crear un fichero ASCII usando el flujo continuo de datos a disco.
Descripción
Ha recibido un VI que representa la temperatura actual y la media de las tres últimas temperaturas. Modifique el VI para registrar la temperatura actual en un fichero
ASCII.
Implementación
1. AbraTemperature [Link] en el directorio <Exercises>\LabVIEW Core 1\Temperature Monitor.
2. AbraTemperature [Link] de la ventana Project Explorer. Este VI fue creado en el ejercicio 3-5
3. Modifique el diagrama de bloques como en la figura 6-3.
Figura 6-3. Diagrama de bloques del VI Temperature Monitor with Logging
1 3 2 4 5 6 7
1 Open/Create/Replace File—Crea o reemplaza un archivo existente por el registro de datos. Haga clic con el botón derecho en la entrada operation y
seleccione Create»Constant. Configure la constante en replace or create.
2 Format Into String—Cambia el formato de la temperatura a una cadena de caracteres. Expanda el nodo para que acepte dos entradas.
3 End of Line Constant—Añade una constante de final-de-línea después de cada trozo de datos para que los valores sean separados en líneas.
4 Write to Binary File—Escribe datos binarios en un archivo.
5 Or—Detiene el VI cuando un error ocurre o cuando el botón Stop Button es presionado.
6 Close File—Cierra el archivo de registro de datos o lo reemplaza cuando el VI comienza a ejecutarse.
7 Simple Error Handler—Indica si ocurrió algún error. Si un error ocurrió, este VI devuelve una descripción del error y opcionalmente muestra un cuadro de
diálogo.
1
2
1 Format Into String—Haga doble clic en la función Format Into String para abrir el cuadro de diálogo Edit Format String.
2 Use specified precision—Coloque una marca en la casilla de verificación e ingrese un 3 en el cuadro de texto para especificar que los datos tienen una
precisión coma flotante de tres dígitos.
3 Corresponding format string—Este cuadro de texto automáticamente se actualiza basado en la configuración que especifique. Tras hacer clic en el botón OK
en el cuadro de diálogo, el diagrama de bloques se actualiza para mostrar el formato de la cadena de caracteres.
4 Botón Help—Haga clic en el botón Help para más información acerca de elementos más específicos de formato, como %3f y opciones de configuración de la
función Format Into String.
5. Pruebe el VI.
Ejecute el VI.
Dé al fichero de texto un nombre y una ubicación.
Haga clic en el botón Stop luego que el VI haya estado ejecutándose por algunas muestras.
Abra el fichero de texto creado y explórelo.
6. Cierre el VI y el fichero de texto tras terminar.
Reto
Objetivo 1: Crear un archivo de registro con un solo encabezado
Para mejorar la utilización del archivo de registro, se le pide incluir un encabezado al inicio del archivo de registro como en la figura 6-5.
Figura 6-5. Archivo de registro con encabezado del VI Temperature Monitor
• Debido a que el encabezado se escribe solo una vez al archivo de texto, se debe escribir al encabezado por fuera del bucle While.
• Use las funciones en la paleta Strings para manipular y dar formato a una cadena de caracteres para usarla en un procesador de texto o en una aplicación de
hoja de cálculo.
1 2
1 Columnas tabuladas en un editor de texto. 2 Columnas tabuladas en una aplicación de hoja de cálculo.
Consejo:
• Use una función Format Into String expandida para convertir y cambiar el formato de los datos a cadenas de caracteres.
Ejercicio
Ejercicio 7-1 VI State Machine
Objetivo
Crear un VI que implemente una máquina de estados usando una definición de tipo enum.
Escenario
Debe diseñar un VI para una máquina de estados de interfaz de usuario. El VI adquiere una temperatura cada medio segundo, analiza cada temperatura para determinar
si es demasiado alta o baja y alerta al usuario si hay peligro de golpe de calor o congelación. El programa registra los datos si hay una advertencia. Si el usuario no
ha hecho clic en el botón de parada, se repetirá todo el proceso. La máquina de estados también debe permitir la expansión, ya que pueden añadirse procesos en el
futuro.
Diseño
Use el siguiente diagrama de flujo y la lista de estados para crear el VI de este ejercicio.
Diagrama de flujo
El diagrama de flujo en la figura 7-1 ilustra el diseño por flujo de datos.
Figura 7-1. Diagrama de flujo del VI Temperature Warnings
Initialize
Acquistion
Warning = TRUE
Analysis
Data log
Stop = TRUE
Transiciones de estado
La siguiente tabla describe los estados de esta máquina de estados.
Implementación
1. Abra Weather [Link] en el directorio <Exercises>\LabVIEW Core 1\Weather Station.
La figura 7-3 muestra el punto de partida del diagrama de bloques para el VI Weather Station UI. Edite el diagrama de bloques para implementar una máquina
de estados para la aplicación Weather Station.
Figura 7-3. Inicio del diagrama de bloques del VI Weather Station UI
3. Cree una nueva definición tipo para controlar la aplicación Weather Station.
Abra el diagrama de bloques y cree una constante Enum a la izquierda del bucle While.
Haga clic con el botón derecho en la constante enum en el diagrama de bloques y seleccione Make Type Def.
4. Modifique la nueva definición tipo y añádala al proyecto Weather Station.
Haga clic con el botón derecho en la constante enum y seleccione Open Type Def.
5. Controle la máquina de estados con un enum definición tipo y actualice el marco como en la figura 7-5.
Figura 7-5. Diagrama de bloques del VI Weather Station UI
1 3
1 Registro de desplazamiento—Haga clic con el botón derecho en el bucle While y seleccione Add Shift Register.
2 Definición tipo constante enum—Haga clic con el botón derecho y seleccione Visible Items»Label. Cambie la etiqueta a Beginning State. Cablee la
constante Beginning State al registro de desplazamiento para inicializar el registro de desplazamiento al estado Acquisition. Cablee el registro de
desplazamiento al selector de casos de la estructura Case.
3 Agregue más casos—Haga clic con el botón derecho en la estructura Case y seleccione Add Case for Every Value para añadir un caso por cada elemento
del enum.
4 Weather Data In—Arrastre el Weather [Link] de la ventana Project Explorer al diagrama de bloques para crear una constante de cluster definición tipo.
Haga clic con el botón derecho en el cluster y seleccione View Cluster As Icon.
5 Registro de desplazamiento—Coloque un registro de desplazamiento en el bucle While y cablee la constante Weather Data In a él.
Nota Luego que termina de cablear el caso Acquisition en el paso 6, algunos túneles están vacios debido a que no todos los casos han sido cableados aún.
6. Complete el estado Acquisition como en la figura 7-6.
Figura 7-6. Estado Acquisition VI Weather Station UI
1 2 3 4
1 Thermometer o Thermometer (Demo)—Arrastre uno de estos VIs de la carpeta Shared Files en la ventana Project Explorer al diagrama de bloques. Arrastre
el VI Thermometer si tiene hardware y arrastre el VI Thermometer (Demo) si no tiene hardware.
2 Temperature History—Mueva este indicador al estado Acquisition de la estructura Case.
3 Bundle By Name—Cablee la salida Temperature Value del VI Thermometer a la entrada Current Temperature.
4 Next State enum—<Ctrl>-haga clic en enum Beginning State y arrastre una copia al caso Acquisition. Cambie el nombre de esta copia de la definición tipo
Weather Station States a Next State. Establezca el enum en Analysis y cabléelo a través de un túnel en la estructura Case al registro de desplazamiento
en el bucle While.
5 Constante True—Cree una constante True y cabléela a través de la estructura Case al registro de desplazamiento Elapsed Time. La constante True reinicia
el contador Elapsed Time cada vez que el VI ejecuta el caso Acquisition.
1 2 3 4 7 5
1 Upper Limit y Lower Limit—Mueva estos controles numéricos fuera del bucle While.
2 Bundle By Name—Reemplace los ítems Max Temperature y Min Temperature con los valores de los controles Upper Limit y Lower Limit. La función Bundle
By Name hace posible cablear los valores Upper Limit y Lower Limit a la entrada Weather Data In del VI Temperature Warnings.
3 Temperature Warnings—Arrastre el VI Temperature Warnings de la carpeta Supporting Files en la ventana Project Explorer.
4 Unbundle By Name—Devuelve el valor de un ítem específico de un cluster.
5 Select—Determina cual estado se ejecutará a continuación dependiendo si ocurre una alerta o no.
6 Weather Station States—Cablee dos copias de la definición tipo Weather Station States a la función Select. Puede crear estas copias del enum Beginning
State.
6 Warning—Mueva este indicador de afuera del bucle While.
8. Complete el caso Data Log como en la figura 7-8.
Figura 7-8. VI Weather Station UI—Caso Data Log
1 2 3 4
5 6
1 2 4
3 5
1 Next State—Cablee dos copias de la definición tipo Weather Station States a la función Select.
2 Select—Determina cual estado se ejecutará a continuación dependiendo si el tiempo ha pasado o no.
3 Stop Button—Mueva la terminal Stop Button de afuera del bucle While. Cablee la terminal Stop Button a la función Or afuera de la estructura Case.
4 Cable Next State—Cablee el túnel del cable Next State al registro de desplazamiento.
5 Use predeterminados si no están cableados—Haga clic con el botón derecho en estos túneles y seleccione Use Default If Unwired.
4. Note los cambios en los valores superiores e inferiores y la colocación de las tabulaciones y cortes de líneas.
Ejercicio
Ejercicio 8-1 VI Weather Station UI con variables locales
Objetivo
Usar una variable local para escribir en un control y leer desde él.
Escenario
Tiene un proyecto de LabVIEW que implementa una estación meteorológica de temperatura. La estación meteorológica adquiere una temperatura cada medio
segundo, analiza cada temperatura para determinar si es demasiado alta o baja y alerta al usuario si hay peligro de golpe de calor o congelación. El VI registra los
datos si hay una alarma.
Dos controles del panel frontal determinan los puntos de ajuste: el límite superior de temperatura y el inferior. Sin embargo, nada impide al usuario configurar un
límite inferior que sea mayor que el límite superior.
Use una variable local para establecer el límite inferior menor que el límite superior si el usuario configura un límite inferior que sea mayor que el límite superior.
Diseño
Su tarea es modificar el VI que creó en el ejercicio 7-1 para que el límite inferior sea menor que el límite superior cuando sea necesario.
Definiciones de estados
La siguiente tabla describe los estados de la máquina de estados.
Registro de datos Registrar los datos en un archivo ASCII delimitado con Comprobar el tiempo
tabulaciones
Comprobar el Comprobar si el tiempo es superior o igual a 0,5 segundos Adquisición si ha transcurrido el tiempo, comprobar el tiempo si no ha
tiempo transcurrido el tiempo
El cambio del valor del control de límite de temperatura inferior debe suceder después de que el usuario haya introducido el valor pero antes de que el valor determine
el nivel de alarma. Por lo tanto, realice modificaciones en el VI en el estado Adquisición o Análisis o coloque un nuevo estado entre ambos.
Antes de determinar qué opción usar, observe el contenido de los estados Adquisición y Análisis:
Opciones de diseño
Tiene tres opciones de diseño distintas para modificar este proyecto.
1 Inserte una estructura Case en el estado Adquisición para Mal diseño: El estado de adquisición tiene otra tarea añadida, en lugar
reiniciar los controles antes de que una variable local escriba los de centrarse sólo en la adquisición.
valores en el cluster.
2 Inserte un nuevo estado en la máquina de estados que Capacidad de control cuando ocurre el estado
compruebe los controles y los reinicie si es necesario.
3 Modifique el subVI Determine Warnings para restablecer los Fácil de implementar porque la funcionalidad ya se encuentra
controles. parcialmente. Sin embargo, si se usa la funcionalidad actual, siempre se
pierde un conjunto de datos al reiniciar el control de límite inferior.
Adquisición 0
Comprobación de rango 1
Análisis 2
Registro de datos 3
Comprobar el tiempo 4
3. Establezca el enum Next State en el caso Acquisition a Range Check como en la figura 8-1.
Figura 8-1. VI Weather Station UI con variables locales—Estado Acquisition completo
4. Complete el caso Analysis como en la figura 8-2.
Figura 8-2. VI Weather Station UI con variables locales—Estado Analysis completo
1 Borre la función Bundle By Name y conecte el cable Weather Data directamente al VI Temperature Warnings. Presione <Ctrl-B> para borrar los cables rotos de
los controles Upper Limit y Lower Limit.
2 Mueva los controles Upper Limit y Lower Limit fuera del bucle While.
Cuando el valor del control Upper Limit es menor que o igual que el valor del control Lower Limit, use una variable local para escribir un valor, límite superior
-1, al control Lower Limit.
Figura 8-3. VI Weather Station UI con variables locales—Caso Range Check True
3 4 5 6 7
1 Estructura Case—Coloque una estructura Case dentro del caso Range Check.
2 Mueva los controles Upper Limit y Lower Limit fuera del caso Range Check.
3 Less or Equal?—Compara los valores de los límites superior e inferior. Debido a que la función Less or Equal? está cableada al selector de casos de la
estructura Case interna, cuando el límite superior es menor o igual al límite inferior, el caso True se ejecuta.
4 Decrement—Subtrae 1 del valor del control Upper Limit para que el caso True escribe un valor menor al control Lower Limit.
5 Variable local Lower Limit—Haga clic con el botón derecho en el control Lower Limit y seleccione Create»Local Variable. Coloque la variable local en el caso
True.
6 Bundle by Name—Expanda la función para mostrar dos elementos y use la herramienta operacional para seleccionar los elementos correctos del cluster.
7 Next State—Cree una copia del control type def Weather Station States y establezca el siguiente estado en Analysis.
6. Complete el caso Range Check False como en la figura 8-4.
Si el valor del control Upper Limit es menor o igual que el valor del control Lower Limit, el caso False se ejecuta y los valores son pasados, sin cambios, a
través del cluster de temperatura.
Figura 8-4. VI Weather Station UI con variables locales—Caso Range Check False
7. Cierre el VI y el proyecto.
Prueba
1. Ejecute el VI.
3. Cierre el VI y el proyecto.
Objetivo
Modificar un VI con el fin de crear programáticamente una carpeta si esta no existe o reemplazarla si ya existe.
Implementación
1. Abra el proyecto Create folder and [Link] en el directorio <Exercises>\LabVIEW Core 1\Create folder and file.
2. Haga clic con el botón derecho en Create folder and [Link] en la ventana del Project Explorer y seleccione Explore. Observe los archivos en la carpeta y
observe que no hay ninguna carpeta llamada Logged Data.
1 2 3 4
6 7
1 Application Directory — Retorna la ruta al directorio que contiene la aplicación. Esto es útil porque está utilizando un subVI para crear el archivo de datos.
2 Build Path — Añade “Logged Data” al nombre de la ruta del archivo.
3 Create Folder — Si la carpeta Logged Data no existe, esta función la crea.
4 Build Path — Esta instancia de la función Build Path añade el nombre de archivo auto generado Acquired Data <Date><Time>.txt a la ruta del archivo.
5 Open/Create/Replace File — Reemplaza o crea el archivo.
6 Format Date/Time String — Genera una cadena de caracteres que contiene la fecha y la hora actual.
7 Format Into String — Concatena las cadenas de caracteres para crear el nombre del archivo.
5. Utilice la ayuda contextual y la ayuda detallada para la función Format Date/Time String y para identificar el significado de los códigos de formato relacionados
con el tiempo utilizados en este VI.
Lea la ayuda de la función Format Date/Time String, para comprender el significado de los siguientes códigos:
• %b
• %d
• %y
• %H
• %M
Abra el directorio <Exercises>\LabVIEW Core 1\Create folder and file y note que una nueva carpeta llamada Logged Data ha sido creada
y contiene un archivo vacío. Compruebe que el nombre del archivo incluye los componentes de fecha y hora, usando los códigos utilizados en el VI.
7. Ejecute el VI nuevamente.
8. Modifique el código para verificar que la carpeta Logged Data ya existe, como en la figura 4-2.
9. Solamente si la carpeta no existe, cree una. Por lo tanto, se encierra la función Create Folder en la estructura Case. Se utiliza la salida del VI Check if File or
Folder Exists para llamar condicionalmente a la función Create Folder.
10. Modifique el diagrama de bloques para crear condicionalmente la carpeta.
Figura 4-2. Diagrama de bloques del VI Create Data File — Completo
1 2
1 VI Check if File or Folder Exists — Comprueba si el archivo o la carpeta existen y envía la información a la función Create Folder.
2 Estructura Case — Añada una estructura Case alrededor de la función Create Folder y haga clic en el borde de la estructura Case y seleccione Make this Case
False. Esta carpeta es creada solo si no existe.
Cablee la referencia y los cables de error a través del caso True.
11. Guarde el VI y ejecútelo nuevamente. Note que se crea el nuevo archivo .txt y que el VI no retorna ningún error.
Objetivo
Construir VIs coherentes, modulares y de fácil lectura que le permitan a la aplicación tener escalabilidad y ser de fácil mantenimiento.
Los arrays en LabVIEW almacenan canales en filas y los archivos de texto típicamente almacenan el canal de datos en columnas (por ejemplo, Excel usualmente
almacena datos en columnas)
Utilice las funciones de LabVIEW para convertir fácilmente arrays numéricos en cadenas de caracteres.
Implementación
1. Abra Write Multiple Channels with Simple [Link] desde el directorio <Exercises>\LabVIEW Core 1\File IO
-MultiChannel with Header.
2. Abra Write Multiple Channels with Simple [Link] desde la ventana Project Explorer, y abra el diagrama de bloques.
Este Vi utiliza varios subVIs para hacer más modular y más legible el código. En este ejercicio se completará el VI Format File Property y el VI MultiChannel
Write.
Figura 4-3. Diagrama de bloques del VI Write Multiple Channels with Simple Header.
2 3
1 VI Format File Property — Se utilizan cuatro copias de este VI para agregar fecha, hora, nombre del operador, y número de serie UUT a la cabecera del archivo.
2 VI Create Data File — Como se vió en el ejercicio 9-1, este VI crea y guarda un archivo programáticamente.
3 VI MultiChannel Write
3. En el diagrama de bloques del VI Write Multiple Channels with Simple Header, haga doble clic en el subVI Format File Property y modifique el diagrama de
bloques como se muestra en la figura 4-4.
Figura 4-4. Diagrama de bloques del VI Format File
1 2 3
1 Constante tabulación
2 Constante de final de línea
3 Format Into String — Haga doble clic en el nodo para abrir el cuadro de diálogo Edit String Format y seleccione Format string (abc) del menú desplegable
Selected operation (example)
Haga clic en el botón Add New Operation tres veces para añadir tres operaciones más del tipo Format string a la lista Current format sequence.
Haga clic en OK para cerrar el cuadro de diálogo.
Observe que la función Format Into String ahora tiene cuatro entradas que corresponden a las cuatro operaciones que han añadido.
Nota Cuando se añaden operaciones a la secuencia de formato en el cuadro de diálogo Edit Format String, LabVIEW añade un espacio entre cada uno
de forma predeterminada. Se pueden eliminar los espacios en la sección Corresponding format string del cuadro de diálogo.
1 2
1 Transpose 2D Array — Debido a que LabVIEW almacena datos del array en las filas de forma predeterminada, esta función transpone el array para escribir los
datos en columnas.
2 Array to Spreadsheet String — Convierte el array a una tabla en forma de cadenas de caracteres.
3 Write to Text File — Escribe una cadena de caracteres o un array de cadenas de caracteres a líneas en un archivo.
Prueba
1. Ejecute el VI Write Multiple Channels with Simple Header y cree un nuevo archivo de datos.
Este VI utiliza el VI Create Data File usado en el ejercicio 9-1, para programáticamente crear un directorio de Logged Data y el archivo de datos en el mismo
directorio que contiene la aplicación.
En la ventana del proyecto “Write Multiple Channels with Simple Header “, haga clic con el botón derecho en en My Computer y seleccione Add»Folder
(Auto-populating).
Navegue a <Exercises>\LabVIEW Core 1\File IO - MultiChannel with Header\Logged Data y haga clic en el botón Select Folder.
Abra el directorio Logged Data de la ventana de LabVIEW Project Explorer y note que contiene el archivo que se creó cuando se ejecutó el VI Save
Multiple Channels with Simple Header.
Navegue a <Exercises>\LabVIEW Core 1\File IO - MultiChannel with Header\Logged Data y seleccione el archivo de datos que acaba
de crear.
4. Guarde y cierre todos los VIs. Guarde y cierre el proyecto Write Multiple Channels with Simple Header.