Practica 1: Introduction to LabVIEW PDF
Document Details
Uploaded by ExquisiteBay
upna
Patxi Cilveti Jiménez, Ignacio Del Villar Fernández
Tags
Summary
This document is an introduction to LabVIEW®, a graphical programming language used in electrical and electronic engineering. It details the concepts, environment, and basic operations of LabVIEW. The document appears to be part of a university course.
Full Transcript
COMUNICACIONES INDUSTRIALES GRADO EN INGENIERÍA ELÉCTRICA Y ELECTRÓNICA PRÁCTICA 1 Introducción a LabVIEW® Patxi Cilveti Jiménez Ignacio Del Villar 0 Fernández Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® ÍNDICE 1. OBJETIVOS 1 2. INTRODUCCIÓN A LABVIEW® 2...
COMUNICACIONES INDUSTRIALES GRADO EN INGENIERÍA ELÉCTRICA Y ELECTRÓNICA PRÁCTICA 1 Introducción a LabVIEW® Patxi Cilveti Jiménez Ignacio Del Villar 0 Fernández Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® ÍNDICE 1. OBJETIVOS 1 2. INTRODUCCIÓN A LABVIEW® 2.1. Conceptos generales 1 2.2. “Instrumento virtual” 1 2.3. Estructura del software 1 3. ENTORNO DE TRABAJO 3.1. Fundamentos 2 3.2. Menús de herramientas 5 3.3. Controles 6 3.4. Funciones 7 3.5. Tipos de datos 4. CREACIÓN DE PROGRAMAS 10 11 5. EJERCICIOS DE INICIACIÓN A LABVIEW® 5.1. Operaciones aritméticas sobre números 12 5.2. Comparativas entre valores 14 5.3. Operaciones con strings 15 5.4. Estructura “While” 16 5.5. Estructura “For” 17 5.6. Rellenado de “arrays” 18 5.7. Tipos de gráficos 19 5.8. Estructura “Case” 20 5.9. Estructura “Flat Sequence” 21 5.10. Creación de subVis 22 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® 1. OBJETIVOS La presente práctica tiene como objetivo el descubrimiento, a través de una serie de ejercicios guiados, del lenguaje de programación LabVIEW®. Tras una introducción acerca de las características principales, se procederá a la resolución de varios ejercicios, en los cuales será necesario el uso de las funciones, tipos de datos y estructuras más importantes de LabVIEW®. 2. INTRODUCCIÓN A LABVIEW® 2.1. Conceptos generales LabVIEW® es un lenguaje de programación de alto nivel, que hereda las estructuras internas del lenguaje C, pero que ofrece una mayor sencillez y funcionalidad cuando se trata de realizar cálculos de procesado de señal y técnicas de control de instrumentos y dispositivos electrónicos en general. La principal ventaja que ofrece LabVIEW® es que es un lenguaje gráfico. Los programas en este lenguaje tienen, desde el punto de vista del usuario, la misma apariencia que el panel frontal de un dispositivo electrónico cualquiera, con botones, pantallas gráficas, indicadores numéricos, etc. LabVIEW® ofrece la posibilidad de construir las mismas estructuras de control con la apariencia de “módulos” interconectados entre sí a través de cables que llevan la información de unos a otros (similar al esquema de un circuito electrónico). En este sentido, dichos módulos –llamados en LabVIEW® instrumentos virtuales- son el equivalente a las “funciones” en un lenguaje clásico de programación estructurada, y los “cables” que los interconectan hacen de medios de transporte para comunicar los parámetros o variables de entrada y salida de dichas funciones. 2.2. “Instrumento virtual” LabVIEW® ofrece la posibilidad de emular y controlar, vía software, equipamiento electrónico real como el disponible en el laboratorio. Este software se ejecutará en un ordenador que tendrá alojado unos elementos hardware concretos: tarjetas de adquisición de datos (analógicas y digitales), tarjetas de interfaz con los buses de instrumentación y unos canales de control también analógicos y digitales. Nuestros instrumentos virtuales permitirán manejar el hardware mediante una interfaz gráfica de usuario que se asemejará al panel de mandos de los aparatos habituales (osciloscopio, multímetro, PLCs, etc.). Mediante la representación en pantalla de los elementos gráficos de visualización y control que servirán de interfaz con el usuario, éste observará los estados de las entradas seleccionadas en la pantalla e interactuará con las salidas directamente o mediante la ejecución de las rutinas que haya programado. 2.3. Estructura del software Básicamente, el software se encargará de comunicar la interfaz de usuario del ordenador con el hardware de adquisición de datos, dotando a la aplicación de la funcionalidad requerida. Podemos realizar una separación de las capas o partes integradas dentro de LabVIEW®: programa de aplicación, controladores de dispositivo (drivers) y librerías de aplicación (API’s), como se muestra en la figura 1. 1 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® Figura 1. Estructura del software de LabVIEW®. 3. ENTORNO DE TRABAJO 3.1. Fundamentos Como se ha comentado, LabVIEW® es una herramienta de programación gráfica. Originalmente estaba orientado a aplicaciones de control de instrumentos electrónicos usadas en el desarrollo de sistemas de instrumentación, lo que se conoce como instrumentación virtual. Por este motivo los programas creados en LabVIEW® se guardarán en ficheros llamados VI y con la misma extensión, “.vi”, que significa instrumento virtual (Virtual Instrument). También, en relación con este concepto, se da nombre a sus dos ventanas principales: un instrumento real tendrá un Panel Frontal donde estarán sus botones, pantallas, etc. y una circuitería interna. En LabVIEW® estas partes reciben el nombre de Panel Frontal y Diagrama de Bloques respectivamente. Panel Frontal (PF) es la parte que verá el usuario, suele tener fondo gris. Diagrama de Bloques (DB) es donde se realizará la programación y suele tener fondo blanco. El Panel Frontal y el Diagrama de Bloques están conectados a través de los terminales que el usuario va programando (elementos que sirven como entradas o salidas de datos). De la misma forma que un indicador luminoso de la carátula de un instrumento está representado como un diodo en la circuitería interna, en un programa en LabVIEW® ese mismo indicador luminoso estará representado en el Diagrama de Bloques como una salida de tipo booleano sobre la que escribir un valor. En la figura 2 pueden verse las dos ventanas mencionadas antes. Para verlo, debemos abrir en la carpeta C:\Program Files (x86)\National Instruments\LabVIEW 2019\templates\Simulated el fichero GenerateDisplay.vi. Si lo hacemos, en primer término veremos el Panel Frontal, con fondo gris, una gráfica (que representa una señal senoidal en el tiempo) y un terminal (un botón de stop). En el Diagrama de Bloques también aparecen estos dos elementos bajo los mismos nombres y representados con dos iconos. Junto a ellos aparece una función que simula una señal senoidal. Al hacer clic sobre la función “RUN” (flecha hacia la derecha justo debajo de la pestaña “Edit”) del Panel Frontal, el programa comenzará a ejecutarse, mostrando una señal sinusoidal que varía en el tiempo. Asimismo, haciendo clic, dentro del Diagrama de Bloques, en la función de simulación de la señal senoidal, se podrán observar los parámetros de la misma. 2 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® En la parte superior de estas ventanas se sitúa una barra con varias herramientas. En el Diagrama de Bloques, esta barra tiene algunas opciones más, como se muestra en la figura 3. Figura 2. Estructura del software de LabVIEW®. Figura 3. Barra de herramientas en el diagrama de bloques de LabVIEW®. El primer grupo de herramientas sirve para controlar la ejecución de un programa en LabVIEW. El primer botón indica si hay errores en el programa (flecha rota). Cuando no los hay (flecha completa), ejecuta una vez el programa. El segundo botón ejecuta de forma continua el programa. Como regla general, este botón no debe usarse. En su lugar, se empleará un bucle, como se verá posteriormente. El tercer botón aborta la ejecución y el cuarto permite realizar una pausa. El segundo grupo de botones sirve para ayudar a la depuración de los .vis. El primer botón es Highlight Execution, una de las herramientas más útiles para depurar. Ralentiza la ejecución permitiendo ver el camino que siguen los datos en el programa. El siguiente, Retain Wire Values, permite que al colocar un probe (sonda) se obtenga el valor anterior. Los tres siguientes se utilizan para ejecutar el programa paso a paso. En el lateral derecho, tanto del Panel Frontal como del Diagrama de Bloques, aparece el icono que representa al VI. Tiene un menú contextual que permite acceder a diversas características que serán tratadas más adelante. Para colocar funciones en el Diagrama de Bloques y terminales en el Panel Frontal se tienen las paletas, o menús flotantes, llamadas paleta de funciones y paleta de controles respectivamente. Además, también se tiene la paleta de herramientas, que consta de diferentes útiles. En la figura 4 puede verse el aspecto de estas tres paletas. Las paletas de funciones y controles se despliegan 3 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® haciendo clic con el botón secundario del ratón sobre una zona vacía del Diagrama de Bloques o del Panel Frontal. También pueden dejarse fijas presionando la chincheta de la esquina superior izquierda. Otra opción de verlas es clicando en View/Tools Palette, View/Functions Palette en el diagrama de bloques o View/Controls Palette en el panel frontal. Figura 4. Diferentes paletas de trabajo: funciones, controles y herramientas en LabVIEW®. Las funciones están asociadas al diagrama de bloques; los controles, al panel frontal y las herramientas están siempre presentes. Otra ventana muy útil es la de ayuda contextual. Puede abrirse en Help / Show Context Help, ejecutando CTRL+H o bien clicando en el interrogante de la esquina superior derecha de la barra de herramientas (ver figura 5). Esta ventana muestra información del objeto que esté situado bajo el cursor, ya sea una función, un VI, un control o un indicador. Además, suele aparecer un enlace a la página de la ayuda relacionada con ese objeto. 4 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® Figura 5. Ventana de ayuda contextual en LabVIEW®. 3.2. Menús de herramientas Mediante la paleta de herramientas se puede seleccionar el instrumento que se desea usar, esto hace cambiar el tipo de cursor del ratón. En la figura 6 se puede ver la paleta de herramientas con 11 botones. Figura 6. Paleta de herramientas. Automatic Tool Selection. Si está activado, sirve para que se seleccione la herramienta de forma automática dependiendo del elemento sobre el que sitúe el cursor. Operate Value. Es el cursor disponible cuando el VI está ejecutándose. Sirve principalmente para cambiar valores en los controles del Panel Frontal. Position/Size/Select. Sirve para posicionar objetos, tanto en el Diagrama de Bloques como en el Panel Frontal. También sirve para cambiar el tamaño y seleccionar elementos. Edit Text. Cambia el cursor para poder escribir texto. Se puede usar, entre otras cosas, para escribir comentarios en el Diagrama de Bloques. Connect wire. Es la herramienta que sirve para cablear. Uniendo unos elementos con otros por cables, los datos fluirán a través de ellos. Si los cables aparecen en color gris y de forma 5 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® discontinua significa que el cable está roto (hay un error de conexiones). Es decir, que el tipo de datos es incompatible o los terminales no son los adecuados. Object Shortcut Menu. Despliega el menú contextual asociado a un elemento. Es equivalente a hacer clic con el botón secundario del ratón. Scroll Window. Sirve para mover el contenido de las ventanas del mismo modo que si se usarán las barras de desplazamiento laterales. Set/Clear Breakpoint. Crea o borra un punto de ruptura en un determinado elemento (función, VI, estructura o cable). Cuando la ejecución llega a ese punto se detiene. Probe Data. Crea un Probe en un cable. Un probe es una ventana flotante (sonda) que muestra el valor que circula por el cable. Get Color. Obtiene el valor del color de un elemento. Set Color. Colorea un elemento. Tiene dos posibles colores, el principal y el de fondo, ambos pueden ser asignados de forma independiente. Uno de los colores disponibles está marcado mediante una T, se trata del color transparente. 3.3. Controles El menú que aparece en el Panel Frontal al pulsar el botón secundario del ratón es el menú de controles, en él se pueden seleccionar las terminales que servirán para interactuar con el usuario. Los terminales de LabVIEW® se dividen en controles e indicadores. Los controles propiamente dichos son las entradas de datos y los indicadores las salidas. Están clasificados según su estilo en varios submenús: Silver, Modern, System y Classic. Dentro de cada submenú hay otros menús que clasifican los controles por el tipo de datos. Los más usados son los que sirven para dibujar gráficas y los de la primera fila del submenú Modern, éstos de izquierda a derecha, corresponden a datos de tipo numérico, booleano, textos y tipos compuestos. Para usar los controles hay que seleccionar el terminal deseado y arrastrarlo al lugar deseado del Panel Frontal. Los indicadores para gráficas merecen un trato aparte debido a su importancia. En la paleta de gráficas hay de varios tipos, siendo los más importantes Waveform Chart y Waveform Graph. 6 Comunicaciones e Instalaciones Industriales Figura 7. Paleta de controles. Práctica 1: Introducción a LabVIEW® Figura 8. Paleta de gráficos. Figura 9. Comparación entre Waveform Graph y Waveform Chart. Los indicadores Waveform Chart se diferencian de los Waveform Graph en que éstos últimos dibujan la gráfica cuando llega el nuevo bloque de datos completo. Sin embargo, los Waveform Chart anexan el nuevo dato a los existentes en tiempo real. El número de datos que se muestran puede ajustarse escribiendo sobre los números que aparecen en los ejes o dejar que LabVIEW® los ajuste automáticamente (AutoScale). En los Waveform Chart también se puede ajustar el número máximo de puntos que se guardan a través de la opción Chart History Length del menú contextual. Mediante los menús contextuales de los elementos de las gráficas se pueden modificar muchos otros aspectos como el color, interpolación, elementos a mostrar, etc. En la imagen de la figura 9 pueden verse ambos indicadores y sus principales diferencias. El código de la parte izquierda repite un bucle 50 veces. En este bucle se genera un número aleatorio por cada iteración. Después se crea un array con los 50 números y se muestran en un Waveform Graph y un Waveform Chart. En el primero sólo se dibujan 50 puntos, y éstos se sobrescriben cada vez que se 7 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® ejecuta el programa. En el segundo los datos nuevos se van colocando después de los antiguos (véase la numeración del eje X). El resultado mostrado corresponde al instante posterior a dos ejecuciones (100 datos generados). La conclusión es que el Waveform Chart tiene memoria, mientras que el Graph no. 3.4. Funciones Esta paleta es la que se muestra al trabajar sobre el Diagrama de Bloques. En ella se puede acceder a las diferentes funciones, subVIs y estructuras disponibles. Al igual que en el menú de controles, en este también hay varios submenús que se dividen dependiendo de la aplicación. Las funciones más usadas son las del submenú Programming. El primero de los submenús de Programming es Structures. Contiene elementos que son equivalentes a las instrucciones de control de los lenguajes convencionales, es decir, son los bucles como WHILE o FOR y la estructura condicional CASE además de otras (figura 11). En los ejercicios propuestos se podrán ver las estructuras con mayor detenimiento. Figura 10. Paleta de funciones. Figura 11. Paleta de estructuras. 8 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® Los siguientes menús de Programming se dividen según el tipo de datos. Pertenecen a ellos los datos simples como los numéricos, booleanos y strings (texto), además de los compuestos como los clusters y arrays. Cada uno de estos menús tiene funciones para trabajar con esos datos. Figura 12. Paletas de tipos de datos numéricos, booleanos y texto. Los datos numéricos se dividen en enteros y de coma flotante y, dentro de cada uno, puede haber distintos tamaños. Se puede cambiar de unos a otros mediante el menú contextual Representation. Si se aplican dos números, por ejemplo, un entero y otro flotante a una función, ésta cambiará automáticamente el tipo de los datos (coerción) para que así se pueda operar con ellos. Los booleanos únicamente pueden tener dos valores: Verdadero (TRUE) o Falso (FALSE). Por esto son los apropiados para crear botones (figura 12). Los tipos de datos compuestos están, como su nombre indica, formados por otros datos. Por lo tanto, no se puede hablar simplemente de arrays, sino que se debe decir array de números, array de booleanos, etc. Los arrays son listas ordenadas de valores, mientras que los clusters son un conjunto desordenado de otros datos (son equivalentes a los STRUCT del lenguaje C). Para indicar los datos de que están compuestos basta con arrastrar constantes de otros tipos de datos en el interior de los arrays o clusters (figura 13). 9 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® Figura 13. Paletas de datos tipo arrays y clusters. En la figura 14 pueden verse varios datos de cada uno de los distintos tipos vistos hasta ahora, en la parte izquierda se representan como controles, en el centro como constantes y en la derecha como indicadores. Obsérvese la posición de la flecha blanca en los laterales de los controles e indicadores. Ésta sirve para diferenciarlos: si está a la izquierda del terminal, apuntando hacia adentro, será un control (escritura de datos) y si está a la derecha, apuntan hacia afuera del terminal, será un indicador (lectura de datos). Además, el color del terminal es indicativo del tipo de datos al que corresponde. Mediante el menú contextual se puede acceder a diferentes opciones. Así, para los datos numéricos se puede elegir su formato de representación, para los strings la forma en que se visualizarán (normal, contraseña, etc.)... A los arrays se les pueden añadir, también, dimensiones. Al igual que con los controles, el método para usar las funciones y los VIs de la paleta de funciones es ‘arrastrar y colocar’. La diferencia entre una función y un VI es que las funciones son objetos con una funcionalidad fija y sin Panel Frontal, mientras que los VIs son programas hechos en LabVIEW® por National Instruments u otros programadores que sí tienen Panel Frontal y se puede acceder a él haciendo doble clic sobre el VI. Los VIs disponibles están en librerías dentro del directorio de instalación de LabVIEW\vi.lib. Las funciones y VIs generalmente operarán sobre una o varias entradas y proporcionarán una o más salidas. A las entradas se le conectará un dato del tipo requerido que puede provenir de un control, una constante o una salida de otro VI o función y a su salida se podrá conectar un indicador o una entrada de algún VI o función. Este concepto se muestra en la figura 15. 10 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® Figura 15. Función AND con su menú contextual. Figura 14. Diferentes tipos de datos. 3.5. Tipos de datos Existen 12 representaciones para los controles o indicadores digitales numéricos: Precisión simple: 32 bits (SGL). Precisión doble: 64 bits (DBL). Precisión extendida (EXT): números de coma flotante. Número entero con signo (I8) de tipo byte (8 bits). Número entero sin signo (U8) de tipo byte (8 bits). Número entero con signo (I16) de tipo palabra (16 bits). Número entero sin signo (U16) de tipo palabra (16 bits). Número entero con signo (I32) de tipo entero extendido (32 bits). Número entero sin signo (U32) de tipo entero extendido (32 bits). Complejos de precisión simple (CSG). Complejos de precisión doble (CDB). Complejos de precisión extendida (CXT): números complejos de coma flotante. Los límites, máximo y mínimo, dependen del tipo; un entero con signo (8 bits) estará entre los valores de -128 a 127. Tabla 1. Representaciones permitidas con LabVIEW®. El tipo de dato puede ser modificado en cada control o indicador, así como en las constantes empleadas en el diagrama de bloques. Para realizar el cambio de la precisión de un dato invocaremos el menú contextual pulsando el botón derecho cuando estemos sobre él y seleccionando el submenú REPRESENTATION del menú emergente. Allí podremos seleccionar cualquiera de los diferentes tipos de representación indicados anteriormente. 11 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® 4. CREACIÓN Y GUARDADO DE PROGRAMAS En LabVIEW® la programación se realiza en el Diagrama de Bloques. Un programa habitualmente está formado por: 1. 2. 3. Controles: sirven de entrada para los datos. Funciones, VIs y estructuras: realizan una o varias operaciones con esos datos. Indicadores: sirven de salida para los datos. Los datos “circulan” por el programa mediante cables, que sirven para unir unos elementos con otros. Para realizar la conexión se utiliza la herramienta Connect Wire de la paleta de herramientas. Un cable tendrá una única fuente (control, constante o salida de otro elemento) y uno o varios destinos (indicador o entradas de otros elementos) de tipos compatibles. El cableado, en general, debe ser lo más corto posible manteniendo una claridad suficiente. Una opción útil que aparece en el menú contextual de los cables es Clean Up Wire que realiza un trazado automático de la ruta del cable. Un buen trazado del cableado no sólo es más elegante, sino que también puede hacer que el programa tenga unas prestaciones superiores en cuanto a memoria utilizada. IMPORTANTE Guardar programas y compatibilidad Una vez creado el vi (File New VI) y realizado el programa, se puede guardar desde cualquiera de las dos ventanas, ya sea desde el Panel Frontal o desde el Diagrama de Bloques. Para ello hay dos opciones que merece la pena tener en cuenta: 1. Save guarda el programa actual en el estado actual y en su versión actual. Es la orden habitual. 2. Save for previous version. La versión actual de LabVIEW® instalada en el Laboratorio de Electrónica Industrial (LEI) es la 19.0 32-bit correspondiente a la primavera de 2019. El alumnado de la asignatura podrá descargarse la versión más actualizada del software a través de la página de National Instruments, mediante el enlace proporcionado por la UPNA: http://www.unavarra.es/servicio-informatico/zerbitzuen-katalogoa/ikasleak?opcion=9 Sin embargo, la versión que se descargue el alumnado para su trabajo a lo largo del curso actual será la última ofrecida por la empresa. Esta versión probablemente esté más actualizada que la instalada en el laboratorio. Es responsabilidad del alumnado asegurarse de que los ejercicios entregables en LabVIEW® se entregan de acuerdo a la versión indicada anteriormente en el LEI. Para ello, siempre que se inicie un ejercicio en un ordenador fuera del LEI, se guardará usando esta opción de guardado, de manera que luego las correcciones vayan de acuerdo a la versión que está instalada en el laboratorio. Simplemente, tras seleccionar Save for previous version, habrá que seleccionar la versión 19.0 en la ventana de diálogo que aparezca y luego buscar la carpeta en la que se desea guardar el programa. 12 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® 5. EJERCICIOS DE INICIACIÓN A LABVIEW® 5.1. Operaciones aritméticas sobre números Tras la realización de las siguientes instrucciones, el objetivo es conseguir un programa que nos realice, a la vez, las 4 operaciones aritméticas básicas sobre dos números cualesquiera. Sirva como guía para la obtención final del ejercicio la figura 16. PASO 1: Insertar los controles e indicadores en el panel frontal Para ello, en el panel frontal insertaremos el elemento Controls/Numeric/Numeric Control de la paleta "Controls". Lo haremos 2 veces: una para el elemento A y otra para el B. Para mostrar el resultado de las operaciones, insertaremos sendos indicadores en vez de controles. Para ello, iremos a Controls/Numeric/Numeric Indicator. Utilizaremos una precisión doble para representar tanto los números como los resultados, con lo que usaremos el formato de datos DBL (naranja) por defecto. A medida que vayamos insertando elementos rellenaremos la casilla de etiqueta para cada uno de ellos. Para mover uno de los elementos insertados podemos hacerlo mediante la flecha de la barra de herramientas, arrastrando el objeto y soltándolo en la posición deseada. NOTA: Cualquier control o indicador puede cambiar su funcionalidad a través de su menú contextual. Si en el diagrama de bloques del ejemplo de la figura 16 se hace clic con el botón derecho del ratón sobre el control A+B, y elegimos la opción Change to control, veremos que aparece un error. Si volvemos a hacer clic con el derecho del ratón sobre el control A+B, y elegimos la opción Change to indicator, veremos que el error desaparece. Se trata de un terminal sobre el que el programa muestra los datos obtenidos, con lo que debe ser un indicador. En cambio, los terminales A y B son de tipo control, porque el programa toma datos de ellos. PASO 2: Insertar los operadores (funciones suma, resta, multiplicación y división) En la ventana de diagrama de bloques (teclear CONTROL+E o clicar en Window Show Block Diagram), seleccionar FUNCTIONS/Programming/Numeric/ y la función deseada. Observar que podemos distinguir entre controles e indicadores en la parte del Diagrama de Bloques, puesto que los primeros son más gruesos que los segundos. PASO 3: Conexión (cableado o wiring) de los elementos Las uniones de los elementos con las operaciones se construyen usando el elemento “Wire” de la paleta de herramientas, tal y como se muestra en la figura 16. PASO 4: Sustitución de controles en el panel frontal También en el panel frontal se ofrece la opción de sustituir los controles por elementos más dinámicos, cosa que puede ser interesante si se pretende crear una interfaz de usuario más dinámica y amigable. Por ejemplo, en el panel frontal de la figura 16 se puede sustituir el control A-B por uno de tipo CONTROLS/NUMERIC/Tank. Obsérvese que solamente cambiamos la parte correspondiente a la interfaz de usuario, o sea, en el Panel Frontal. PASO 5: Ejecución del programa Para ver el resultado de nuestro programa, lo ejecutamos pulsando con el ratón sobre el botón Esto ejecutará el programa una sola vez. Si cambiamos los valores de los controles digitales no veremos el resultado correcto hasta que lo pulsemos de nuevo. NOTA: Al teclear CONTROL+B, se borran de nuestro diagrama las uniones defectuosas realizadas mediante Wire, bien porque no llevan a ningún sitio o bien porque unen elementos no relacionables. 13 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® Figura 16. Solución propuesta para el ejercicio 5.1. NOTA 1: En caso de cerrar, por error, cualquiera de las ventanas del Diagrama de bloques o del Panel Frontal, ir a Window/Show Block Diagram o Front Panel, o bien teclear CONTROL+E para recuperarla. Si, una vez guardado, es el PF el que se cierra, se cierran ambas ventanas. Habrá que volver a abrir el archivo para verlas de nuevo. NOTA 2: Para cambiar las escalas, basta con sobrescribir el valor máximo con la herramienta de escritura. NOTA 3: Podemos realizar el cambio entre las distintas herramientas, ‘flecha’, ‘mano’, ‘carrete de hilo’ con la pulsación del tabulador y el espaciador. Espacio para anotaciones: 14 Comunicaciones e Instalaciones Industriales 5.2. Práctica 1: Introducción a LabVIEW® Comparativas entre valores En este caso, dados dos valores de tipo DBL precisión doble, se trata de operar como en el ejercicio 5.1 para ver si uno de los valores propuestos es igual, mayor, menor o igual que el otro o, en cualquier caso, no nulo (ver figura 17). Las funciones de comparación se encuentran en FUNCTIONS/PROGRAMMING/COMPARISON/. Hay que observar que no es lo mismo introducir un valor en la primera que en la segunda entrada de la comparación. Como no es posible obtener un valor de las operaciones de comparación, se propone usar LEDs como indicadores de “Verdadero” (iluminados) o “Falso” (apagados). Para encontrar los LEDs, los buscaremos en CONTROLS/BOOLEAN. Figura 17. Solución propuesta para el ejercicio 5.2. Espacio para anotaciones: 15 Comunicaciones e Instalaciones Industriales 5.3. Práctica 1: Introducción a LabVIEW® Operaciones con “strings” Los strings o cadenas alfanuméricas, son un tipo de datos compuesto por caracteres. Pueden procesarse de la misma manera que un dato de origen numérico. Longitud de strings En la figura 18 puede verse un programa en LabVIEW®. Consta de dos entradas: una de tipo string y otra numérica de tipo entero. La función Functions/Strings/String Length obtiene el número de caracteres de la entrada de texto. Esta cantidad es numérica y se suma a la otra entrada numérica mediante la función Add. El programa tiene dos salidas. La primera de ellas es una copia duplicada de la entrada tipo string y la segunda es la suma de la longitud del string con la entrada numérica. Una vez creado el programa, se deben introducir los datos iniciales en los controles del Panel Frontal y ejecutarlo presionando el botón Run (CTRL+R). Cuando acabe, se visualizarán los resultados en los indicadores correspondientes. Figura 18. Solución propuesta para el ejercicio 5.3 de longitud de strings. Concatenación de strings Acto seguido se concatenarán varios strings independientes para obtener uno, como composición de todos. La concatenación básica corresponde al ejemplo mostrado en la figura 19, donde usamos la función Functions/Strings/Concatenate strings. Para ello crearemos un programa con varios controles de tipo string y un indicador, cuyo resultado será la concatenación de los valores de entrada con uno constante. 16 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® Figura 19. Solución propuesta para el ejercicio 5.3 de concatenación de strings. 17 Comunicaciones e Instalaciones Industriales 5.4. Práctica 1: Introducción a LabVIEW® Estructura “While” (bucle indefinido) La estructura While-loop permite repetir las acciones que situemos dentro del bucle hasta que deje de cumplirse una condición que nosotros establezcamos. En esta ocasión, la usaremos para visualizar la aparición, en tiempo real, de una serie de números aleatorios entre 0 y 1 (ver figura 20). PASO 1: Creación del bucle While Introduciremos el bucle while haciendo clic en FUNCTIONS/PROGRAMMING/STRUCTURES/While loop. Aquí es muy importante observar que, dentro del bucle, hay dos objetos: el indicador de iteración “i” y la condición de parada. Este tipo de bucles se ejecutará como mínimo una vez hasta comprobar que la condición establecida se cumple. PASO 2: Introducción de los elementos Como se ha mencionado, generaremos un número aleatorio entre 0 y 1 mediante la función FUNCTIONS/NUMERIC/Random Number. El resultado lo representaremos mediante una gráfica en el panel de control: CONTROL/GRAPH/Waveform Chart. La ejecución debe parar cuando el usuario pulse un botón ON/OFF. Se introducirá, además, un retardo entre la generación de uno y otro punto mediante la función FUNCTIONS/PROGRAMMING/Timing/Wait Until Next ms Multiple, como puede verse en la figura 20. La función tiene como entrada un valor en milisegundos. PASO 3: Ejecución (RUN) A lo largo de la ejecución se prestará especial atención a cómo discurre el tiempo y el número de iteraciones. Para ello, se hará uso de la herramienta “bombilla” (Highlight Execution), con la cual se podrá ver la ejecución ralentizada. A lo largo del ejercicio, se sugiere variar el Timer para visualizar lo que ocurre y contabilizar el número de iteraciones total realizado por el programa. Figura 20. Solución propuesta para el ejercicio 5.4. Espacio para anotaciones: 18 Comunicaciones e Instalaciones Industriales 5.5. Práctica 1: Introducción a LabVIEW® Estructura ‘For’ (bucle definido) La estructura For-loop permite repetir las acciones que situemos dentro del bucle un número determinado de veces establecido con antelación. El ejercicio consiste en realizar el mismo programa que en el ejercicio 5.4, pero ahora aplicando un bucle For inicializado con un Numeric Constant de 100 iteraciones (ver figura 21). De nuevo haciendo uso de la herramienta bombilla y estableciendo las diferencias en la ejecución con respecto al anterior, responder a las siguientes cuestiones: Cuestión 1: ¿Cuál es el rango de valores de i: de 0 a 99 o de 0 a 100? ¿Por qué? Cuestión 2: ¿Se aumenta i y después se tira el dado o primero se tira el dado y después se aumenta i? Cuestión 3: ¿Existe alguna diferencia entre ejecutar el algoritmo con un bucle For o con un While? ¿Y si dentro del While se pone la condición i<100? ¿Y si dentro del While se pone la condición i≤100? ¿Cuántas iteraciones ejecuta el programa en cada caso? Figura 21. Solución propuesta para el ejercicio 5.5. Espacio para anotaciones: 19 Comunicaciones e Instalaciones Industriales 5.6. Práctica 1: Introducción a LabVIEW® Rellenado de ‘arrays’ (tablas/matrices) Rellenado automático de arrays Un array es un tipo de dato que permite almacenar y acceder a la información por medio de unos índices que nos indican el valor al que accedemos o estamos almacenando. En LabVIEW®, los arrays funcionan como lo hacen en la programación en C. De esta manera, podemos automatizar el rellenado de un array usando un bucle For. En este ejercicio construiremos un array que contendrá los resultados de las 100 primeras tiradas del dado aleatorio. Para ello, y de acuerdo con lo mostrado en la figura 22: PASO 1: Generar el bucle For con 100 iteraciones, de acuerdo con lo visto en el ejercicio 5.5. PASO 2: Introducción del dado aleatorio con la función random (0 to 1). PASO 3: Generación del array: Primero se debe insertar un visualizador de tipo array: CONTROL/ARRAY & CLUSTER/Array. Después debe introducirse un indicador numérico del tipo deseado dentro del array (arrastrándolo encima), para decirle al programa lo que esperamos introducir dentro de ese array: indicadores de tipo DBL. Los elementos del array se almacenarán en el túnel (punto negro en el marco de la estructura Forloop) sí y sólo sí tenemos habilitada la opción de autoindexado. Si no, sólo el último dato será pasado al exterior del bucle. Esto permite que los valores de las variables empleadas para el cálculo del valor final sólo sean accesibles cuando la condición de final se haya cumplido. Observar, tras ejecutar, cómo el array tiene una longitud de 100 y que sus valores son diferentes entre 0 y 1. Observar, así mismo, la evolución paso a paso del For-loop con la bombilla encendida. Opción de autoindexado habilitada (por defecto) Figura 22. Solución propuesta para el ejercicio 5.6. Rellenado manual de arrays Para generar y rellenar manualmente un array, tomaremos un Array Constant de la paleta de funciones del Diagrama de Bloques y lo rellenaremos con una constante del tipo de dato al que corresponda el array. Al desplazar el array hacia abajo aparecerán las diferentes posiciones a rellenar con el mismo tipo de dato. Espacio para anotaciones: 20 Comunicaciones e Instalaciones Industriales 5.7. Práctica 1: Introducción a LabVIEW® Tipos de gráficos En la siguiente actividad compararemos la diferencia entre los gráficos Chart y los Graph, calculando el máximo y mínimo de los valores generados aleatoriamente acotados entre 0 y 30. Siguiendo el esquema del diagrama de bloques y el panel frontal de la figura 23, construiremos un bucle For de 40 iteraciones, donde introduciremos un módulo de “timing” fijado a 250 milisegundos. Observar la diferencia en el grosor del cable del array que sale del bucle For. Este hecho es debido a que en cada iteración el bucle sólo computa un valor. Cuando el bucle acaba se obtiene el array final, que posee diferentes valores (de ahí el mayor grosor). Las funciones para encontrar el máximo y el mínimo del array se encuentran en FUNCTIONS/ARRAY/Array Max & min. A la entrada del gráfico hay un control denominado BUNDLE. Se puede encontrar en FUNCTIONS/PROGRAMMING/CLUSTER/BUNDLE. Para hacer el BUNDLE más grande de forma que permita conectar más elementos, situamos el puntero en alguna de las esquinas y estiramos hacia abajo. Figura 23. Vista de las dos representaciones gráficas y el diagrama de bloque del ejercicio 5.7. NOTA 1: Tener en cuenta que incluimos 2 tipos de gráficos, Graph y Chart. Para dar sentido temporal al eje x del Graph se debe introducir un bundle (paleta de clusters) con tres elementos: la matriz de puntos, su separación en el tiempo y el origen. Como hemos fijado pausas de 250 ms entre muestras entonces delta X es 0,25 (segundos). X0 establece el origen del eje x, en este caso 0. NOTA 2: Para borrar todos los datos del Waveform Chart o del Waveform Graph, se debe clicar en ellos con el botón secundario y seleccionar las opciones Data Operations/Clear Chart o Graph. Espacio para anotaciones: 21 Comunicaciones e Instalaciones Industriales 5.8. Práctica 1: Introducción a LabVIEW® Estructura ‘Case’ (condicional) Esta estructura de programación permite que se ejecute una porción de código u otro según se cumpla o no una condición impuesta por el usuario. Esta función permite realizar diferentes acciones en función del valor de una variable o de un cambio de estado de algún elemento del programa. A continuación se programará el ejemplo de las figuras 24 y 25, donde la condición viene dada por una pestaña denominada “Ring” en LabVIEW®. En esta pestaña introduciremos las operaciones que queremos realizar (SUMA y RESTA). Usaremos dos controles numéricos de entrada con los que operaremos. El Ring lo encontraremos al seleccionar el botón derecho del ratón en CONTROL/TEXT CONTROLS/Text ring. Para acceder a las opciones del Ring, en propiedades del control, tras abrirse la ventana elegimos EDIT ITEMS donde asignaremos a cada operación (suma = 1, resta = 0) un número que la identificará. Usaremos una estructura CASE básica. Para la comparación emplearemos un comparador ubicado en FUNCTIONS/PROGRAMMING/COMPARISON a cuya entrada pondremos el ring y que lo compara con el valor 0. Similarmente, pondremos un elemento de suma en el caso cierto y uno de resta en el caso falso. Por último, conectaremos las entradas a los elementos de suma y resta en cada caso de la estructura. Figura 24. Programación y ejecución del ejercicio 5.8. OPCIÓN MÚLTIPLE DE LA ESTRUCTURA CASE Aunque en el ejemplo sólo existe el caso verdadero y falso, pueden ponerse tantos casos como se necesiten: 22 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® Para añadir un caso más, ya sea antes o después, deberemos seleccionar pulsando con el botón derecho del ratón en el borde Add case before o Add case After respectivamente. Evidentemente, la entrada al selector ya no podrá ser binaria, sino que deberá corresponder a un número entero. 5.9. Estructura ‘Flat Sequence’ Esta estructura de programación permite ejecutar porciones de código de forma secuencial. Viene muy bien a la hora de enviar y recibir instrucciones en las comunicaciones con instrumentos externos al programa. La estructura flat sequence se encuentra en FUNCTIONS/PROGRAMMING/STRUCTURES. Para añadir una trama (frame) más, basta con colocarnos en el lateral correspondiente de la trama y, con el botón derecho, ordenarle al programa que añada una trama más antes o después. El programa expuesto en la figura 25 consiste en ir actualizando 3 indicadores originalmente inicializados a 0 según van pasando los segundos. Programaremos el .vi y observaremos el comportamiento de los indicadores numéricos en presencia y en ausencia del marco de la secuencia. Figura 25. Diagrama de Bloques del ejercicio 5.9 (flat sequence). Espacio para anotaciones: 23 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® 5.10. Creación de subVIs Los subVI’s, son el equivalente a las subrutinas en los lenguajes de programación basados en texto. Con ellos conseguimos una programación mejor estructurada y por tanto más legible, así como evitar la repetición de código. La diferencia respecto a las tradicionales subrutinas es que un subVI puede ejecutarse de forma autónoma sin necesidad de que esté incluido en un VI. Al hacer doble clic sobre un subVI se abre el panel de control correspondiente a dicho subprograma. Para crear un subVI volveremos al ejercicio 5.3, donde planteábamos la concatenación de varios strings, así como el cálculo del número de caracteres total del string generado (ver figura 19). Observar que, por comodidad, se ha borrado el indicador “Palabra 3” que mostraba la conjunción “y”. La forma más sencilla de conseguir el subVI es seleccionando la parte deseada del Diagrama de Bloques e ir a Edit > Create SubVI. Al hacerlo el código seleccionado será sustituido por el icono de un VI (ver figura 26). Con un doble clic sobre este icono se accederá al código de este subVI. NOTA: Antes de crear el subVI, se recomienda extender los terminales de entrada y de salida a ambos lados, para que LabVIEW® entienda qué parte del programa es la que exactamente se desea como subVI al crearlo. De lo contrario, puede haber problemas de conexiones innecesarias. Figura 26. Creación de un subVI tras la selección de la parte del programa deseada. Una vez ejecutados estos pasos, si hacemos doble clic sobre el icono que se nos ha creado, se nos abrirá un nuevo panel frontal titulado “SubVI” donde veremos las conexiones que LabVIEW® nos ha realizado. Concretamente, en la esquina superior derecha de la pantalla, veremos dichas conexiones coloreadas según el tipo de dato que entra/sale de dicho terminal. Antes de guardar el programa SubVI para que pueda ser usado en otras ocasiones, conviene revisar que todas las conexiones están bien realizadas. En concreto, las salidas de la subrutina aparecerán con el borde resaltado en negro, mientras que las entradas no tendrán este resaltado, tal y como se ve en la figura 27. Asimismo, también es posible variar el diseño del subVI, sin más que haciendo doble clic en el que LabVIEW® proporciona por defecto, al lado de la señalización de los terminales del subVI. 24 Comunicaciones e Instalaciones Industriales Práctica 1: Introducción a LabVIEW® Finalmente, se guardará tanto el subVI creado como el .VI del cual procedía. Para insertar un subVI dentro de un programa de LabVIEW®, se puede usar el método de arrastrar y soltar, desde el directorio donde esté almacenado hasta el Diagrama de Bloques del VI. También se puede usar Select a VI desde la paleta de funciones o colocar el VI dentro un menú de la paleta de funciones. Terminales asignados Icono del subVI Figura 27. Conexiones de un subVI y diseño por defecto del icono de la subrutina. 25