1 Entorno de Programación LabVIEW 1.1 Introducción LabVIEW es un lenguaje de programación de alto nivel, de tipo gráfico, inicialmente enfocado a la realización de aplicaciones para el control de instrumentación. Desde su aparición, LabVIEW se ha convertido en un auténtico lenguaje y entorno integrado de programación, ya que cuenta con todos los recursos necesarios para elaborar cualquier tipo de algoritmo en aplicaciones muy variadas. Los programas desarrollados con LabVIEW se llaman Instrumentos Virtuales, o VIs, lo que da una idea de su uso en origen: el control de instrumentos. El lema de LabVIEW es: "La potencia está en el Software". Entre sus objetivos están la reducción del tiempo de desarrollo de aplicaciones y facilitar el desarrollo de aplicaciones a programadores no expertos en informática. Pero una de sus mayores cualidades es la existencia de numerosos paquetes que permiten combinar este software con todo tipo de hardware, como tarjetas de adquisición de datos, controladores, autómatas programables, sistemas de visión, FPGAs, etc. En este capítulo y en los sucesivos, se intentarán establecer las bases necesarias para que lectores puedan desarrollar aplicaciones enfocadas al campo de la adquisición de datos, supervisión y control y, más concretamente, para la automatización de sistemas de riego. A continuación, comenzaremos proporcionando una visión general sobre el entorno LabVIEW. 1.2 Programación Gráfica LabVIEW (Laboratory Virtual Instrument Engineering Workbech) fue creado por la empresa National Instruments (fundada en 1976 en Austin, Texas) para funcionar sobre máquinas MAC, salió al mercado por primera vez en 1986. En la actualidad se encuentra disponible para las plataformas Windows, UNIX, Mac y Linux. La última versión (8.6), liberada en Agosto de 2008, cuenta con soporte para el sistema operativo Windows Vista. En la Tabla 1.1 se puede observar la evolución de este entorno y las principales características aportadas con cada una de las versiones. La programación G constituye el corazón de LabVIEW, y difiere de otros lenguajes de programación como C ó Basic, en que éstos están basados en texto, mientras que en G se utiliza programación gráfica. Los programas en G, o VIs (acrónimo de Virtual Instrument) constan de una interfaz interactiva de usuario y un diagrama de flujo de datos que hace las funciones de código fuente. Programación Gráfica para Ingenieros Año 1986 1990 1992 1993 1994 1994 1995 1996 1997 1998 1999 2000 2001 2003 2004 2005 2005 2006 2007 2008 Versión LabVIEW 1.0, primera versión en Mac OS LabVIEW 2.0, máximo aprovechamiento de los resultados LabVIEW 2.5, primera versión en Windows 3.1 y Solaris LabVIEW 3.0 LabVIEW 3.0.1, primera versión en Windows NT LabVIEW 3.1 LabVIEW 3.1.1, integración del Application Builder (creación de archivos ejecutables) LabVIEW 4.0 LabVIEW 4.1 LabVIEW 5.0, multitarea, contenedores ActiveX, asistente para la adquisición de dato (tarjetas de adquisición DAQ) e asistente para el control de instrumentos LabVIEW 5.1, primera versión para Linux, primera versión de LabVIEW RT (Real Time) LabVIEW 6.0, controles gráficos en 3D, referencias de controles LabVIEW 6.1, mejoramiento y correcciones, primera versión en Palm OS LabVIEW 7.0, VI Express, primera versión en Windows Mobile 2003 LabVIEW 7.1, traducción en francés, alemán y japonés LabVIEW 8.0, Project Explorer, XControls, shared variables LabVIEW 8.1, mejoras y correcciones LabVIEW 8.20, Programación orientada a objetos LabVIEW 8.5, primera versión del toolkit FPGA y del toolkit Statechart LabVIEW 8.6, limpieza automática de los diagramas Tabla 1.1. Diferentes versiones de LabVIEW aparecidas en el mercado. De forma más específica, el entorno de programación gráfico LabVIEW se estructura siguiendo la analogía con los instrumentos de laboratorio a los que trataba de emular en sus primeras versiones. Así, un instrumento virtual consta de: • Panel Frontal. Es la interfaz interactiva de usuario de un VI, debido a que simula el panel de un instrumento físico. El panel frontal puede contener botones, interruptores, pulsadores, gráficas y otros controles e indicadores. Los datos se introducen utilizando el ratón y el teclado, y los resultados se muestran en la pantalla del ordenador. • Diagrama de Bloques. Se construye en G y constituye el código fuente del programa o VI. Supone una solución gráfica a un determinado problema de programación. Los VIs son jerárquicos y modulares. Pueden utilizarse como programas de alto nivel o como subprogramas de otros programas o subprogramas. Cuando un VI se usa dentro de otro VI, se denomina subVI. El icono y los conectores de un VI 4 Entorno de programación LabVIEW funcionan como una lista de parámetros gráficos de forma que otros VIs puedan pasar datos a un determinado subVI. 1.3 Instrumentos Virtuales Los programas de LabVIEW se denominan instrumentos virtuales o VI, debido a que su apariencia y operación imita a los instrumentos físicos, tales como osciloscopios y multímetros. LabVIEW contiene un amplio abanico de herramientas para adquisición, análisis, despliegue y almacenamiento de datos, así como herramientas que ayudan a especificar su código de ejecución. En LabVIEW, se construye una interfaz de usuario, o panel frontal (véase la Figura 1.1), con controles e indicadores. Los controles son texto, botones de acción, interruptores y otros dispositivos de entrada. Los indicadores son gráficos, LED, objetos para mostrar texto o números y otros elementos. Una vez construida la interfaz, el código se agrega en el diagrama de bloques utilizando subVIs y estructuras para controlar los objetos del panel frontal. Barra de herramientas del panel frontal Icono Control Booleano Leyenda del gráfico Gráfico de Forma de onda Leyenda de la escala Leyenda de La grafica Figura 1.1. Panel Frontal. El diagrama de bloques (véase la Figura 1.2) contiene el código fuente gráfico. Los objetos del panel frontal aparecen como terminales en el diagrama de bloques. Adicionalmente, el diagrama de bloques contiene funciones y estructuras incorporadas en las bibliotecas de LabVIEW. Los cables conectan cada uno de los nodos en el diagrama de bloques, incluyendo controles e indicadores de terminal, funciones y estructuras. 5 Programación Gráfica para Ingenieros Barra de herramientas Funcion de dividir SubVI Terminal grafica Cableado de datos Estructura While loop Constante numerica Funcion de tiempo Terminal de control booleano Figura 1.2. Diagrama de bloques. En este diagrama de bloques se llama al subVI Temp, que implementa una subrutina que obtiene una temperatura desde una tarjeta de adquisición de datos (DAQ). Esta temperatura es representada, junto con el valor medio de la temperatura, en la gráfica de forma de onda Temperature History. El interruptor (Power) es un control booleano que se colocó en el panel frontal para detener la ejecución del bucle de iteración While Loop. Esta estructura iterativa (While Loop) también contiene un terminal (i) que indica el número de iteración que se está ejecutando (la primera iteración es la número 0). A partir de LabVIEW 7.0 se introdujo un nuevo tipo de subVI denominado Express VI. Estos son VIs interactivos que tienen una configuración mediante un cuadro de diálogo que permite al usuario personalizar su funcionalidad de manera rápida e intuitiva. A partir de esta configuración LabVIEW genera un subVI basado en dichos argumentos. Los VIs estándar están constituidos a su vez por un panel frontal y un diagrama de bloques que son usados dentro de otro VI. Las funciones son los bloques básicos para la construcción de todos los VIs, pero no tienen un panel frontal o un diagrama de bloques (por ejemplo, funciones aritméticas de suma, resta, multiplicación, etc.). 1.4 Menús de LabVIEW La barra de menús de la parte superior de las ventanas de LabVIEW contiene diversos menús pull-down (desplegables). Cuando hacemos clic sobre un ítem o 6 Entorno de programación LabVIEW elemento de esta barra, aparece un menú por debajo de ella. Dicho menú contiene elementos comunes a otras aplicaciones Windows, como Open (Abrir), Save (Guardar) y Paste (Pegar), y muchas otras particulares de LabVIEW. La Figura 1.3 muestra la barra de menús para la versión 8.6.1, común para el panel frontal y el diagrama de bloques. Figura 1.3. Barra de menús de la versión 8.6. File (Archivo) Sus opciones se usan básicamente para abrir, cerrar, guardar, imprimir VI, etc. Edit (Edición) Se usa principalmente para organizar el panel frontal y el diagrama de bloques y establecer nuestras preferencias. View (Ver) Muestra las distintas paletas, errores, navegadores, etc. Project (Proyecto) Presenta los niveles de jerarquía, los subVIs que lo integran, los que están sin abrir, busca VIs, etc. Operate (Función) Sus comandos sirven para ejecutar el VI. Tools (Herramientas) Se accede a una serie de herramientas para compilar el VI, publicarlo como página Web, etc. Windows (Ventanas) Se utiliza básicamente para mostrar (Show) ventanas. Help (Ayuda) Muestra una ayuda sobre los diferentes iconos y otros aspectos de LabVIEW. El menú de LabVIEW que utilizaremos con más frecuencia es el menú de contexto o emergente (Pop-up) de objetos, al que se accede situando el cursor sobre un objeto y pulsando el botón derecho del ratón. Si la pulsación se hace sobre un espacio vacío, el menú que se obtendrá variará en función de la herramienta seleccionada. 1.5 Barra de Herramientas (Toolbar) Bajo la barra de menús se sitúa la barra de herramientas, que incluye una serie de botones para editar o ejecutar los VIs. Tal como se ilustra en la Figura 1.4, esta barra se muestra con más o menos opciones dependiendo de si estamos en modo de ejecución o de edición. Además, en el diagrama de bloques se dispone de algunas opciones adicionales. La función de los distintos botones es la siguiente: 7