LabVIEW: Entorno gráfico de programación. José Pelegrí Sebastià
Чтение книги онлайн.
Читать онлайн книгу LabVIEW: Entorno gráfico de programación - José Pelegrí Sebastià страница 14
Los ficheros se pueden agrupar en directorios. Para organizar el código también puede ser útil emplear librerías. En el contexto de un proyecto estas librerías no deben confundirse con ficheros LLB, ya que simplemente es otro fichero XML con referencias a los ficheros contenidos y la descripción de sus propiedades. Dentro de las librerías los elementos pueden ser públicos (accesibles desde otras partes del proyecto), privados (accesibles sólo desde otros VI de la misma librería) o community (accesibles desde VI de la misma librería o desde VI de otras librerías marcadas como ‘amigos’ en sus propiedades), lo que es útil para distribuir código entre varios programadores. Para definir los elementos públicos o privados hay que acceder a las propiedades de la librería desplegando su menú contextual > Properties > Item Settings/Friends.
La ventana del proyecto se divide inicialmente en tres ítems:
• My Computer: es el target. En él se muestran los ficheros que componen el proyecto y sus propiedades. De cada target descienden Dependencies y Build Specifications. Al programar sobre otras plataformas también aparecerán otros targets, como una PDA o una FPGA.
• Dependencies: muestra las dependencias del proyecto, por ejemplo librerías compartidas (*.dll).
• Build Specifications: guarda la configuración para las distribuciones del proyecto como archivos comprimidos, ejecutables, librerías, instaladores, librerías empaquetadas, servicios web, etc.
La creación de ejecutables y dll se verá en la sección 12.3, mientras que los servicios web en la sección 9.4. Ahora veremos las librerías empaquetadas. Para crear una debemos acceder al menú contextual de la opción Build Specifications del proyecto. En ese momento aparecerá un asistente en el que, a través del menú de categorías, hay que configurar el nombre de la librería, los ficheros que la componen (los VI visibles se marcarán como top level y deben estar en un lvlib), dónde se guardará, etc. El resultado es un único fichero con extensión *.lvlibp que contiene los VI ya compilados.
1.7. Depuración de código
Cuando se hace un programa es normal cometer errores. Depurar es el proceso de encontrar y corregir los fallos del programa. LabVIEW dispone de varias herramientas para ayudar al programador en esta tarea.
La detección de errores de lo que se podría llamar la sintaxis del lenguaje es automática y simplemente consiste en impedir que se ejecute el VI que contiene un error. Para ello, el botón RUN se sustituye por List Errors y se cambia el icono de la barra de herramientas por uno que simboliza una flecha rota
Al presionar este botón aparece una lista de los errores y warnings del programa. Al seleccionar un error aparece una descripción en la parte inferior, y haciendo doble clic o presionando el botón Show Error se traslada el foco del programa a la parte donde se ha producido el fallo.
En la figura 1-36 se indica que hay tres errores en el código:
• Una estructura CASE cuyo selector no tiene nada cableado.
• Una función de suma que presenta errores en sus terminales.
• Un cable ‘roto’, más concretamente que no tiene final.
Figura 1-36. Lista de errores de un VI.
Aparte de los errores sintácticos, puede haber otros debido a innumerables motivos. Una herramienta muy usada en este caso es la Highlight Execution, representada por un icono con forma de bombilla de luz en la barra de herramientas. Cuando esta opción está activada, la ejecución se ralentiza y se puede ver el fluir de los datos por el Diagrama de Bloques. Ésta es una de las herramientas más utilizadas en LabVIEW y muy útil para entender el funcionamiento de otros VI.
A veces, en un programa grande puede ser inviable esperar a que el flujo de ejecución llegue a la parte deseada con la Highlight Execution. Para ello se pueden usar los breakpoints o puntos de ruptura. Éstos se seleccionan en la paleta de herramientas y después se presionan sobre el objeto en el que se desea establecer el punto de ruptura. El objeto puede ser un cable o una estructura o una función (Figura 1-37). Al crear un breakpoint aparece una marca roja indicando su situación. En la siguiente imagen se pueden apreciar tres puntos de ruptura: en el interior de la estructura WHILE, en el cable entre el control de x y la función suma y en la propia función.
Figura 1-37. Utilización de puntos de ruptura para depuración de código.
Una vez seleccionados los puntos de ruptura, se puede ejecutar el programa de forma normal y al llegar la ejecución a uno de ellos, ésta se detendrá automáticamente, igual que si se hubiera pulsado el botón Pause de la barra de herramientas (el cual pasa a tener fondo rojo y se transforma en Continue). Cuando se detiene la ejecución, se puede volver a reanudar con la opción Highlight Execution activada.
Desde la versión 8.6 se dispone de un manejador de breakpoints al que se puede acceder desde View > Breakpoint Manager. En este programa se podrán habilitar, deshabilitar y borrar los breakpoints colocados en el programa.
Si lo que se desea es obtener el valor de un dato cualquiera sin detener ni ralentizar la ejecución, se puede usar la herramienta Probe (Figura 1-38). Se puede activar sobre un control, indicador o cable usando la paleta de herramientas o el menú contextual del cable; cuando se coloque aparecerá una ventana flotante llamada Probe Watch Window en la que puede verse el valor del dato seleccionado en tiempo real de cada uno de los probe del programa. Incluso en determinados tipos de datos se puede disponer de una visualización en gráficos o tablas.
Otra utilidad de los probe es crear un Custom Probe con una condición. En ese caso, cuando se cumpla la condición, el VI se detendrá igual que si hubiera un breakpoint. En este caso aparecerá en Probe Watch Window una nueva pestaña en la que definir las condiciones en las cuales parará la ejecución del programa. Por ejemplo, una condición puede ser que el contenido de un indicador sea un determinado valor. Cuando se coloca un probe sobre un cluster de error, esta opción aparece como una nueva pestaña.
También se puede dotar a un probe de características avanzadas programándolas. A esta opción se puede acceder desde el menú contextual de los cables Custom Probe > New… Al crear un Custom Probe aparece un asistente que guía en su creación. Finalmente, se guarda el VI que implementa el Custom Probe. El Custom Probe permite crear un nuevo programa dentro del propio probe que, por ejemplo, puede guardar los valores en un fichero, parar el programa con una condición que no puede ser especificada mediante el método anterior o enviar una alarma por email. El VI creado como Custom Probe dispone de un indicador con el valor del cable y otro control booleano para indicar si se debe detener la ejecución.
Otro método más para detectar errores es revisar el valor de ciertos datos, como los clusters de error que tienen muchas funciones a la entrada y salida; para esto, hay VI especializados en la paleta Programming > Dialog & User Interface.
Los cluster de error son un dato especial. Se componen de tres parámetros: