LabVIEW: Entorno gráfico de programación. José Pelegrí Sebastià
Чтение книги онлайн.
Читать онлайн книгу LabVIEW: Entorno gráfico de programación - José Pelegrí Sebastià страница 12
Figura 1-23. Programa para analizar el flujo de ejecución.
El primer paso de la ejecución llevará los datos de los controles Operando A, Operando B y Operando C a las entradas de las funciones Add y Multiply. En la figura 1-24 puede verse que las entradas disponibles están marcadas con un punto. El flujo de datos se indica con flechas en paralelo a los cables.
Figura 1-24. Valores disponibles en las entradas de la función Add.
La función Add tiene disponibles los valores de sus dos entradas; sin embargo, la función Multiply necesita el valor de otra entrada que no tiene disponible. Por lo tanto, en el siguiente paso se podrá ejecutar la función Add pero no Multiply. Cuando se ejecute el resultado de la suma, su valor pasará al indicador A+B, que lo mostrará en el Panel Frontal, y también circulará hasta la entrada que faltaba de la multiplicación, lo que permite que en el siguiente paso pueda ejecutarse.
Figura 1-25. Siguiente paso de la ejecución.
Finalmente, el resultado de la multiplicación pasa al indicador (A+B)*C y el programa finaliza.
En el ejemplo anterior el orden de ejecución es fijado por la forma de cablear unas funciones con otras. En la figura 1-26 pueden verse dos programas. En el primero ocurre lo mismo; el orden de ejecución lo fija el cableado: primero se ejecutará Increment y después Square Root. En el segundo programa hay dos funciones pero entre ellas no existe ninguna dependencia de datos, por lo que no habrá ningún orden en la ejecución de Decrement y Square; podemos considerar que ambas se ejecutan en paralelo.
Figura 1-26. Flujo de ejecución.
1.5. VI y subVI
Los ficheros con los programas creados en LabVIEW se llaman VI (Virtual Instrument). En muchas ocasiones un programa será de un tamaño tal que habrá que separarlo en varios ficheros o habrá alguna sección de código que convenga reutilizarla varias veces. Un VI puede contener a otro de forma que el segundo sería un subVI del primero; el concepto es equivalente a las funciones o procedimientos de un lenguaje tradicional.
Figura 1-27. Programa que utiliza diferentes funciones.
En el ejemplo de la figura 1-27 puede verse un programa que tiene como entradas Límite superior y Límite inferior. Estas entradas se limitan de forma programada a 360 y 0 respectivamente mediante las funciones de comparación Less?, Greater? y Select. A las salidas de las funciones de comparación se obtendrá un valor TRUE si la comparación es cierta y FALSE en caso contrario. Select funciona como un multiplexor: a su salida estará el valor de la entrada superior (T) si la señal de selección (?) es cierta, y el de la entrada inferior (F) si es falsa. Por otra parte, Random Number (0-1) genera un número aleatorio entre cero y uno.
La parte central del programa resta las dos entradas y el resultado lo multiplica por la suma del límite inferior y el número aleatorio. Con esto se consigue generar un número aleatorio comprendido entre los dos límites indicados, que nunca serán mayores de 360 y menores de 0.
Finalmente, este número generado se empleará como el valor de un ángulo en coordenadas polares, y de él se obtendrá la parte real e imaginaria.
En el ejemplo anterior puede ser deseable hacer una función que se encargue de la generación del número aleatorio entre dos límites, es decir, hacer que esa parte del código sea un VI distinto, de forma que pueda ser usado en otras ocasiones. La forma más sencilla de conseguir esto 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. Con un doble clic sobre este icono se accederá al código de este subVI.
Figura 1-28. Crear un subVI seleccionando una parte del programa.
Otra forma de crear un VI es definiendo de forma manual su interfaz. La interfaz es la forma en que se realizarán las conexiones cuando se use como subVI dentro de otro VI. El primer paso será guardar el VI, después situarse en su Panel Frontal y hacer clic con el botón secundario del ratón sobre el icono del VI (parte superior derecha) para desplegar su menú contextual, como se puede ver en la figura 1-29. En el menú contextual se mostrará el conector, que es el equivalente a la cabecera de las funciones en otros lenguajes. En el conector se podrán añadir o eliminar terminales, que son los lugares donde se conectarán los cables cuando se use como subVI. Para asignar un control o indicador a un Terminal, se debe seleccionar la herramienta Connect Wire y hacer clic en el terminal y en el control o indicador asociado del Panel Frontal. En ese momento el terminal se coloreará indicando el tipo de datos.
Por claridad se recomienda conectar las entradas a la izquierda y las salidas a la derecha. También se puede indicar si la conexión de un terminal debe ser obligatoria (Required), normal (Recommended) u opcional (Optional). En la ventana de ayuda contextual los terminales se mostrarán en negrita, de forma normal u ocultos respectivamente. Si en el Panel Frontal se había indicado algún valor por defecto en alguna entrada, éste será el valor que tenga el control si no se le conecta un cable cuando se use como subVI. Como regla de estilo podemos recomendar que se indique el valor por defecto en el Label de cada control al final entre paréntesis.
Además del terminal, también se puede crear un icono que represente al VI cuando se coloque en el Diagrama de Bloques de otro VI. En la ventana de la figura 1-30, aparecen en la parte izquierda diferentes pestañas con las diversas opciones para hacer el dibujo, y a la derecha el icono y una barra de herramientas típica de un programa de edición de imágenes.
Figura 1-29. Creación del terminal de un subVI.
Esta herramienta se ha mejorado desde la versión 2009. Entre las nuevas mejoras destaca el empleo de capas (pestaña Layers), de plantillas (Templates) y de imágenes prediseñadas (Glyphs).
Dentro de las plantillas podemos hacer que el icono de un VI sea rectangular en lugar de cuadrado. Esto se suele utilizar cuando únicamente hay una en trada o una salida. Yendo un paso más allá, podemos hacer cualquier forma al icono, como triángulos, borrando todo el contenido en el icono fuera del contorno que queramos darle.
Si se está creando una librería o familia de subVI, es conveniente dar a todos un estilo parecido. Para ello, se pueden usar las plantillas que vienen por defecto o crear y emplear nuestras propias plantillas e imágenes prediseñadas (File > Save as > Template).
Por último, hay que decir que puede accederse a opciones especiales haciendo doble clic sobre algunas herramientas, como seleccionar el tipo de letra con doble clic sobre la herramienta de texto, seleccionar todo con la de select