76

Click here to load reader

181266365 LabVIEW Core 2 Curso PDF

Embed Size (px)

Citation preview

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    LabVIEW Core 2Manual de Curso

    ni.com/training

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    LabVIEWTM

    Core 2Manual de Curso

    Versin del software actual 2012Edicin de Agosto 2012Nmero de parte 325292D-0154

    Manual de Curso LabVIEW Core 2

    Copyright 19932012 National Instruments. Todos los derechos reservados. En virtud de las leyes de copyright y de proteccin de los derechos de autor, esta publicacin no puede reproducirse ni transmitirse en ninguna forma, electrnica o mecnica, incluidas las fotocopias, grabacin, almacenamiento en un sistema de recuperacin de informacin, o traduccin, 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 slo podr utilizarse para reproducir material que pueda reproducir conforme a los trminos de cualquier licencia aplicable u otra restriccin legal.

    Contrato de licencia de usuario final y avisos legales a tercerosEl contrato de licencia de usuario final (EULA) y avisos legales a terceros se puede encontrar en las siguientes localidades: Los avisos se localizan en los directorios \_Legal Information y . Contrato de licencia de usuario final se localiza en el directorio \Shared\MDF\

    Legal\License. Revise \_Legal Information.txt para ms informacin legal sobre los instaladores

    desarrollados con productos de NI.

    Marcas comercialesCVI, LabVIEW, National Instruments, NI, ni.com, 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 pgina ni.com/trademarks para informacin sobre otras marcas de National Instruments.The mark LabWindows is used under a license from Microsoft Corporation. Windows is a registered trademark of Microsoft Corporation in the United States and other countries. Otros nombres de productos y de empresas mencionados aqu son marcas o nombres comerciales de sus respectivas empresas.Los miembros del National Instruments Alliance Partner Program son entidades comerciales independientes de National Instruments y no tienen relacin de agencia, asociacin ni empresa conjunta con National Instruments.

    PatentesPara obtener informacin sobre las patentes que protegen los productos o la tecnologa de National Instruments, consulte el apartado: HelpPatents en su software, el archivo patents.txt en el soporte del mismo, o el Aviso sobre las Patentes de National Instruments (National Instruments Patent Notice) en ni.com/patents.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Informacin del producto y soporte tcnico mundialni.com

    Oficinas internacionalesVisite ni.com/niglobal para acceder a las pginas web de las oficinas internacionales, las cuales incluyen informacin actualizada de contacto, telfonos de soporte tcnico, direcciones de email y eventos actuales.

    Oficinas centrales de National Instruments Corporation11500 North Mopac Expressway Austin, Texas 78759-3504 USA Tel: 512 683 0100

    Para obtener informacin adicional de soporte, consulte el apndice Informacin Adicional y Recursos. Para realizar comentarios a National Instruments sobre la documentacin, consulte la pgina web de National Instruments Web ni.com/info e introduzca el cdigo de informacin feedback.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    National Instruments | iii

    Contenido

    Gua del estudianteA. Certificacin de NI................................................................................................vB. Descripcin del curso............................................................................................vC. Lo que necesita para empezar ...............................................................................viD. Instalacin del software del curso.........................................................................viiE. Objetivos del curso ...............................................................................................viiF. Convenciones del curso ........................................................................................viii

    Leccin 1Ms all del flujo de datos

    A. Comunicacin asncrona.......................................................................................1-2B. Colas .....................................................................................................................1-2C. Programacin orientada a eventos ........................................................................1-5

    Leccin 2Implementando patrones de diseo

    A. Patrones de diseo ................................................................................................2-2B. Patrones de diseo simple.....................................................................................2-2C. Patrones de diseo de bucles mltiples.................................................................2-8D. Gestores de errores................................................................................................2-15E. Generando cdigos de error y mensajes ...............................................................2-18F. Temporizar un patrn de diseo ...........................................................................2-20G. Patrn de diseo variable global funcional..........................................................2-25

    Leccin 3Control de la interfaz de usuario

    A. Arquitectura del VI Server....................................................................................3-2B. Nodos de Propiedad ..............................................................................................3-3C. Nodos de Invocacin ............................................................................................3-4D. Referencias de control ..........................................................................................3-5

    Leccin 4Tcnicas de E/S de fichero

    A. Comparando formatos de archivo.........................................................................4-2B. Crear rutas de archivos y carpetas ........................................................................4-4C. Lectura y escritura de archivos binarios ...............................................................4-6D. Trabajar con archivos de texto y encabezados multicanal....................................4-12E. Acceso de archivos TDMS en LabVIEW y Excel................................................4-17

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    National Instruments | v

    Gua del estudiante

    Gracias por comprar el paquete del curso LabVIEW Core 2. Despus de completar el curso, podr empezar a desarrollar una aplicacin. El manual del curso y el software adjunto se utilizan en el curso prctico de dos das LabVIEW Core 2.

    Puede aplicar la adquisicin completa de este paquete de curso a la cuota de registro correspondiente, si se inscribe antes de 90 das desde la compra del paquete. Visite ni.com/training para consultar en lnea la programacin, el contenido, los centros de formacin y la inscripcin a la clase del curso.

    A. Certificacin de NIEl curso LabVIEW Core 2 forma parte de una serie de cursos diseados para dominar LabVIEW y ayudarle a prepararse para el examen de Desarrollador Asociado Certificado de LabVIEW de NI. La siguiente ilustracin muestra los cursos que forman parte de la serie de formacin de LabVIEW. Consulte ni.com/training para obtener informacin adicional acerca de la certificacin de NI.

    B. Descripcin del cursoEl curso LabVIEW Core 2 le ensea conceptos, tcnicas, caractersticas, VIs y funciones de programacin de LabVIEW que puede utilizar para crear aplicaciones de prueba y medicin, adquisicin de datos, control de instrumentos, registro de datos, anlisis de mediciones y generacin de informes. Este manual del curso supone que est familiarizado con Windows, que tiene experiencia en escribir algoritmos en forma de diagramas de flujo o diagramas de bloques y que ha realizado el curso LabVIEW Core 1 o tiene una experiencia equivalente. Los manuales de ejercicios y del curso estn divididos en lecciones, organizadas de este modo.

    Advanced User

    LabVIEW Core 1*LabVIEW Core 2*

    Certified LabVIEWArchitect Exam

    New User Experienced User

    Advanced Architecturesin LabVIEW

    *Core courses are strongly recommended to realize maximum productivity gains when using LabVIEW.

    Courses

    Certifications

    Other Courses

    Certified LabVIEWAssociate Developer Exam

    LabVIEW Instrument Control

    Modular Instruments Series

    LabVIEW Real-Time 2

    LabVIEW FPGA

    LabVIEW Real-Time 1

    LabVIEW DAQ and Signal Conditioning

    Managing SoftwareEngineering in LabVIEW

    LabVIEW Performance

    Object-Oriented Designand Programming

    in LabVIEW

    LabVIEW Connectivity

    Certified LabVIEWDeveloper Exam

    LabVIEW Core 3*

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Gua del estudiante

    vi | ni.com

    En el manual del curso, cada leccin consta de lo siguiente: Una introduccin que describe el objetivo de la leccin y lo que aprender Una descripcin de los temas de la leccin Un cuestionario de resumen que prueba conceptos y conocimientos importantes desarrollados

    en la leccin

    En el manual de ejercicios, cada leccin consta de lo siguiente: Un conjunto de ejercicios para reforzar esos temas Algunas lecciones incluyen secciones de ejercicios opcionales y de retos o un conjunto de

    ejercicios adicionales para realizar si el tiempo lo permite.

    Nota Para ver actualizaciones y correcciones del manual de ejercicios y del curso, consulte ni.com/info y escriba el Cdigo de Informacin core2.

    Varios ejercicios utilizan un dispositivo multifuncin de adquisicin de datos (DAQ) conectado a un Accesorio de Seales DAQ o BNC-2120 que contiene un sensor de temperatura, un generador de funciones y LEDs.

    Aunque no disponga de este hardware, puede realizar los ejercicios. Se ofrecen otras instrucciones para realizar los ejercicios sin hardware. Tambin puede sustituir otro hardware por los mencionados anteriormente. Por ejemplo, puede utilizar otro dispositivo DAQ de National Instruments conectado a una fuente de seales, como un generador de funciones.

    C. Lo que necesita para empezarAntes de usar este manual del curso, debe tener todos estos elementos:

    Ordenador ejecutando Windows 7/Vista/XP Dispositivo DAQ multifuncin configurado como Dev1 utilizando Measurement &

    Automation Explorer (MAX)

    Accesorio de seales DAQ o BNC-2120, conectores y cable LabVIEW Professional Development System 2012 o posterior DAQmx 9.5.5 o posterior CD del curso LabVIEW Core 2, desde donde instala las siguientes carpetas:

    Directorio Descripcin

    Exercises Contiene los VIs utilizados en el curso

    Solutions Contiene los ejercicios del curso corregidos

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | vii

    D. Instalacin del software del cursoComplete estos pasos para instalar el software del curso.1. Inserte el CD del curso en el ordenador. Aparecern los cuadros de dilogo de

    LabVIEW Core 2 Course Setup2. Haga clic en Install the course materials.3. Siga las instrucciones en la pantalla para completar la instalacin y configuracin.

    Los archivos de ejercicios se encuentran en la carpeta \LabVIEW Core 2\ .

    Nota Los nombres de carpetas entre corchetes angulares, como , hacen referencia a carpetas del directorio raz de su ordenador.

    E. Objetivos del cursoEste curso le prepara para hacer lo siguiente: Aplicar patrones de diseo comunes que utilicen notificadores, colas y eventos Usar la programacin de eventos de forma eficaz Controlar programticamente objetos de la interfaz de usuario Evaluar formatos de E/S de ficheros binarios y utilizarlos en aplicaciones Modificar cdigo existente para mejorar la usabilidad Preparar, crear y desplegar aplicaciones independientes

    Este curso no describe nada de lo siguiente: Mtodos de programacin de LabVIEW tratados en el curso LabVIEW Core 1. Cada VI, funcin u objeto integrado; consulte la Ayuda de LabVIEW para obtener informacin

    adicional acerca de las funciones de LabVIEW no descritas en este curso. Desarrollar una aplicacin completa para cualquier estudiante de la clase; consulte el

    NI Example Finder seleccionando HelpFind Examples, para ver ejemplos de VIs que puede utilizar e incorporar en los VIs que cree

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Gua del estudiante

    viii | ni.com

    F. Convenciones del cursoLos siguientes convenios aparecen en este manual del curso:

    El smbolo le gua por los elementos de men anidados y las opciones de cuadros de dilogo a una accin final. La secuencia ToolsInstrumentationFind Instrument Drivers le guia a desplegar men Tools , seleccionar Instrumentation , y finalmente seleccionar la opcin Find Instrument Drivers.

    Este icono indica un consejo, que le alerta de recomendaciones.

    Este icono indica una nota, que le alerta de informacin importante.

    Este icono indica una precaucin, para que tome precauciones y evite lesiones, prdida de datos o una cada del sistema.

    negrita El texto en negrita indica que debe seleccionar el software o hacer clic en l, como elementos de men y opciones del cuadro de dilogo. El texto en negrita denota tambin las secciones de los cuadros de dilogo y etiquetas de hardware.

    cursiva El texto en cursiva indica variables, nfasis, una referencia cruzada o una introduccin a un concepto clave. El texto en cursiva tambin indica texto que es un parmetro de sustitucin para una palabra o un valor que debe proporcionar.

    monospace El texto con esta fuente indica texto o caracteres que debe escribir con el teclado, secciones de cdigo, ejemplos de programacin y ejemplos de sintaxis. Esta fuente tambin se utiliza para los nombres propios de unidades de disco, rutas, directorios, programas, subprogramas, subrutinas, nombres de dispositivos, funciones, operaciones, variables, nombres de archivos y extensiones.

    monospace bold El texto en negrita con esta fuente indica los mensajes y las respuestas que el ordenador imprime automticamente en la pantalla. Esta fuente tambin enfatiza lneas de cdigo distintas de los otros ejemplos.

    Platform El texto con esta fuente indica una plataforma concreta y que el texto que le sigue se aplica slo a esa plataforma.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    National Instruments | 1-1

    1Ms all del flujo de datosComo usted aprendi en LabVIEW Core 1, LabVIEW es un lenguaje donde el flujo de datos determina el orden de ejecucin de los elementos de un diagrama de bloques. Un nodo del diagrama de bloques se ejecuta cuando se reciben todas las entradas requeridas. Cuando se ejecuta un nodo, produce datos de salida y pasa los datos al siguiente nodo de la ruta del flujo de datos. El movimiento de los datos a travs de los cables y nodos determina el orden de ejecucin de los VIs y las funciones del diagrama de bloques. Este tipo de comunicacin entre nodos se denomina comunicacin sncrona.

    TemasA. Comunicacin asncronaB. ColasC. Programacin orientada a eventos

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 1 Ms all del flujo de datos

    1-2 | ni.com

    A. Comunicacin asncronaAunque LabVIEW es un lenguaje de flujo de datos que utiliza cables para transferir datos entre funciones, hay situaciones en las que la comunicacin asncrona, o sin cables, es deseable. En esta leccin aprenders dos tcnicas importantes para la comunicacin asncronacolas para comunicacin entre bucles paralelos y eventos para comunicacin entre la interfaz de usuario y el diagrama de bloques.

    B. ColasUtilice colas para comunicar datos entre los bucles paralelos en LabVIEW. Una cola puede contener datos de cualquier tipo y adems almacenar mltiples piezas de datos. De forma predeterminada las colas funcionan con la estrategia primero en entrar, primero en salir, en ingls First In First Out (FIFO). Por lo tanto, el primer dato de una cola es el primero en salir de ella. Use una cola cuando desee procesar todos los datos que contenga.

    Las variables resultan tiles en LabVIEW para pasar datos entre procesos paralelos. Sin embargo, cuando se usan variables a menudo es difcil sincronizar la transferencia de datos, que puede causar leer datos duplicados o perder datos. Adicionalmente, se debe tener cuidado para evitar las condiciones de carrera. Esta leccin presenta las colas como mtodos alternativos para pasar datos entre procesos paralelos. Los colas tienen ventajas respecto al uso de variables por la posibilidad de sincronizar la transferencia de datos.

    Operaciones de colaUtilice las funciones de operacin de cola para crear y utilizar las colas en la comunicacin de datos entre las distintas secciones del VI y otros VIs.

    Tabla 1-1 describe las funciones de operacin de cola a utilizar en este curso.

    Tabla 1-1. Funciones de operacin de cola

    Funciones Descripcin

    Dequeue Element Elimina un elemento de la parte frontal de una cola y retorna este elemento.

    Enqueue Element Aade un elemento en la parte posterior de la cola.

    Enqueue Element at Opposite End

    Aade un elemento en la parte frontal de la cola.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 1-3

    Consulte el tema Queue Operations Functions en la Ayuda de LabVIEW para obtener una lista completa y una descripcin de las operaciones de cola.

    Cuando se usa el patrn de diseo productor/consumidor, las colas pasan datos y sincronizan los bucles como se muestra en la figura 1-1.

    Figura 1-1. Patrn de diseo (datos) del productor/consumidor usando colas

    Get Queue Status Retorna informacin sobre el estado actual de una cola, tales como el nmero de elementos actualmente en la cola.

    Obtain Queue Retorna la referencia a una cola.

    Release Queue Libera la referencia de una cola.

    Tabla 1-1. Funciones de operacin de cola (Continuacin)Funciones Descripcin

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 1 Ms all del flujo de datos

    1-4 | ni.com

    La cola se crea antes de que los bucles empiecen a usar la funcin Obtain Queue. El bucle productor usa la funcin Enqueue Element para aadir datos a la cola. El bucle consumidor elimina los datos de la cola utilizando la funcin Dequeue Element. El bucle consumidor no se ejecuta hasta que haya datos en la cola. Una vez que el VI ha terminado de usar las colas, la funcin Release Queue las libera. Cuando se libera la cola, la funcin Dequeue Element genera un error, deteniendo efectivamente el bucle consumidor. As no hay por qu utilizar una variable para detener los bucles.

    Estas son las ventajas de usar colas en el patrn de diseo productor / consumidor: Ambos bucles se sincronizan con el bucle productor. El bucle consumidor slo se ejecuta

    cuando haya datos en la cola. Puede utilizar colas para crear datos en cola disponibles globalmente, eliminando la posibilidad

    de prdida de datos en la cola cuando se aadan datos nuevos a ella. El uso de colas crea cdigo eficaz. No necesita sondear para determinar cundo habr datos

    disponibles desde el bucle productor.

    Las colas tambin son tiles para albergar solicitudes de estado en una mquina de estados. En la implementacin de una mquina de estados que ha aprendido, si se solicitan dos estados simultneamente, puede perder uno de ellos. Una cola almacena la segunda solicitud de estado y la ejecuta cuando ha terminado la primera.

    Caso de Estudio: Proyecto de Estacin MeteorolgicaEl proyecto de la estacin meteorolgica adquiere datos de temperatura y de velocidad del viento y los analiza para determinar si la situacin requiere una alarma. Si la temperatura es demasiado alta o baja, alerta al usuario de un peligro de golpe de calor o congelacin. Tambin controla la velocidad del viento para generar una alarma de fuerte viento en su caso.

    El diagrama de bloques consta de dos bucles paralelos, que se sincronizan utilizando colas. Un bucle adquiere datos para la temperatura y la velocidad del viento y el otro analiza los datos. Los bucles del diagrama funcional usan el patrn de diseo productor / consumidor y pasan los datos a travs de la cola. Las colas ayudan a procesar cada lectura adquirida con el DAQ Assistant.

    El cdigo para adquirir la temperatura y la velocidad del viento se sita en el bucle productor. El cdigo que contiene la mquina de estados para analizar las condiciones de temperatura-tiempo se encuentra en el caso sin error del bucle consumidor. El cdigo que utiliza una cola es ms legible y eficiente que el que usa slo arquitectura de la mquina de estados. La funcin Obtain Queue crea la referencia de la cola. El bucle productor usa la funcin Enqueue Element para aadir datos obtenidos del DAQ Assistant a la cola. El bucle consumidor usa la funcin Dequeue Element para obtener los datos de la cola y suministrarlos a la mquina de estados para su anlisis. La funcin Release Queue marca el final de la cola destruyndola. El uso de colas tambin elimina la necesidad de una variable compartida para detener los bucles, porque la funcin Dequeue Element detiene el bucle consumidor cuando se libera una cola.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 1-5

    La figura 1-2 muestra el diagrama de bloques que consta de un bucle productor y consumidor. Las funciones de cola permiten la transferencia de datos y la sincronizacin entre los bucles.

    Figura 1-2. Transferencia de datos y sincronizacin de bucles paralelos usando colas

    C. Programacin orientada a eventosProgramacin orientada a eventos es un mtodo de programacin, donde el programa espera que se produzca un acontecimiento antes de ejecutar una o varias funciones. Las caractersticas de programacin orientada a eventos amplan el entorno de flujo de datos de LabVIEW, para permitir que el usuario interacte directamente con el panel frontal y permitir otra actividad asncrona que influya ms en la ejecucin del diagrama de bloques.

    EventosQu son los eventos?Un evento es una notificacin asncrona de que algo ha ocurrido. Los eventos pueden provenir de la interfaz de usuario, E/S externa u otras partes del programa. Los eventos de la interfaz de usuario son clics del ratn, pulsaciones de teclas, etc. Los eventos de E/S externas son temporizadores o triggers de hardware que sealan cundo se completa la adquisicin de datos o cundo ocurre una condicin de error. Otros tipos de eventos pueden generarse programticamente y utilizarse para comunicarse con distintas partes del programa. LabVIEW admite eventos generados por la interfaz de usuario o programticamente. LabVIEW tambin admite eventos generados por ActiveX y .NET, que son eventos de E/S externas.

    En un programa orientado a eventos, los eventos que ocurren en el sistema influyen directamente en el flujo de ejecucin. Por el contrario, un programa de procedimiento se ejecuta en un orden predeterminado y secuencial. Los programas orientados a eventos suelen incluir un bucle que espera que ocurra un evento, ejecuta el cdigo para responder al evento y se vuelve a iterar para esperar al siguiente evento. El modo en que el programa responde a cada evento depende del

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 1 Ms all del flujo de datos

    1-6 | ni.com

    cdigo escrito para ese evento. El orden en que se ejecuta un programa orientado a eventos depende de qu eventos ocurran y en qu orden ocurran. Algunas secciones del programa podran ejecutarse con frecuencia porque los eventos que controlan ocurren frecuentemente. Quiz no se ejecuten otras secciones del programa porque los eventos nunca ocurren.

    Sondeo vs estructura eventoUse eventos de interfaz de usuario en LabVIEW para sincronizar acciones del usuario en el panel frontal con la ejecucin del diagrama de bloques. Los eventos permiten ejecutar un caso de control de eventos especfico cada vez que un usuario realice una accin concreta. Sin los eventos, el diagrama de bloques debe sondear el estado de objetos del panel frontal en un bucle, comprobando si ha ocurrido algn cambio. Sondear el panel frontal requiere una cantidad de tiempo significativa de la CPU y quiz no detecte cambios si ocurren con demasiada rapidez.

    Al usar eventos para responder a acciones especficas del usuario, no necesita sondear el panel frontal para determinar qu acciones realiz el usuario. LabVIEW notifica activamente al diagrama de bloques cada vez que ocurre una interaccin que especific. El uso de eventos reduce los requisitos de CPU del programa, simplifica el cdigo del diagrama de bloques y garantiza que el diagrama de bloques pueda responder a todas las interacciones que realice el usuario.

    Use eventos generados programticamente para comunicarse entre varias partes del programa que no tengan dependencia del flujo de datos. Los eventos generados programticamente comparten muchas ventajas con los eventos de la interfaz de usuario y pueden compartir el mismo cdigo de control de eventos, lo que facilita la implementacin de arquitecturas avanzadas, como las mquinas de estados con colas que usan eventos.

    Componentes de la estructura EventUse la estructura Event, mostrada a continuacin, para controlar eventos en un VI.

    La estructura Event funciona como una estructura Case con una funcin Wait on Notification integrada. La estructura Event puede tener varios casos, cada uno de los cuales es una rutina de control de eventos distinta. Puede configurar cada caso para controlar uno o ms eventos, pero slo uno de estos eventos puede ocurrir a la vez. Cuando se ejecuta la estructura Event, espera hasta que ocurra uno de los eventos configurados y despus ejecuta el caso correspondiente a ese evento. La estructura Event completa su ejecucin tras controlar exactamente un evento. No hace implcitamente un bucle para controlar varios eventos. Como una funcin Wait on Notification, la estructura Event puede superar su lmite de tiempo mientras espera una notificacin de evento. Cuando esto ocurre, se ejecuta un caso Timeout especfico.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 1-7

    La etiqueta del selector de evento en la parte superior de la estructura Event indica que eventos hacen que el caso que se muestra actualmente sea ejecutado.

    Vea otros casos de eventos haciendo clic en la flecha abajo junto al nombre del caso y seleccionando otro caso del men contextual.

    El terminal Timeout de la esquina superior izquierda de la estructura Event especifica el nmero de milisegundos que hay que esperar antes de que un evento supere el tiempo lmite.

    El valor predeterminado es -1, que especifica esperar indefinidamente hasta que ocurra un evento. Si cablea un valor al terminal Timeout, debe proporcionar un caso Timeout.

    El Event Data Node acta de igual modo que la funcin Unbundle By Name.

    Este nodo se acopla al borde interior izquierdo de cada caso de evento. El nodo identifica los datos que proporciona LabVIEW cuando ocurre un evento. Puede cambiar el tamao de este nodo verticalmente para aadir ms elementos de datos y puede configurar stos en el nodo para acceder a cualquier elemento de datos de evento. El nodo proporciona varios datos en cada caso de la estructura Event en funcin de qu eventos configure para que controle ese caso. Si configura que un solo caso controle varios eventos, el Event Data Node proporciona slo los datos de evento que son comunes para todos los eventos configurados para ese caso.

    El Event Filter Node es similar al Event Data Node.

    Este nodo se acopla al borde interior derecho de los casos de eventos de filtrado. El nodo identifica el subconjunto de datos disponibles en el Event Data Node que puede modificar el caso de evento. El nodo muestra varios datos en funcin de qu eventos configure para que controle ese caso. De forma predeterminada, estos elementos se encuentran en los elementos de datos correspondientes del Event Data Node. Si no cablea un valor a un dato de un Event Filter Node, ese dato permanecer inalterado.

    Consulte la seccin Eventos de notificacin y de filtrado de esta leccin para obtener informacin adicional acerca de los eventos de filtrado.

    Puede acceder a los terminales de eventos dinmicos haciendo clic con el botn derecho en la estructura Event y seleccionando Show Dynamic Event Terminals en el men contextual.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 1 Ms all del flujo de datos

    1-8 | ni.com

    Estos terminales slo se usan para el registro de eventos dinmicos.

    Consulte el tema Using Events in LabVIEW de la Ayuda de LabVIEW para obtener informacin sobre el uso de estas terminales.

    Nota Al igual que una estructura Case, la estructura Event admite tneles. Sin embargo, de forma predeterminada no tiene que cablear tneles de salida de la estructura Event en cada caso. Todos los tneles sin cablear usan el valor predeterminado para el tipo de dato de tnel. Haga clic con el botn derecho en un tnel y deseleccione Use Default If Unwired en el men contextual para volver al comportamiento de la estructura Case predeterminada en el que debe cablear los tneles en todos los casos. Tambin puede configurar los tneles para cablear los tneles de entrada y salida automticamente en los casos sin cablear.

    Consulte la Ayuda de LabVIEW para obtener informacin de los valores predeterminados para cada tipo de datos.

    Uso de eventos en LabVIEWLabVIEW puede generar numerosos eventos distintos. Para evitar generar eventos indeseados, use el registro de eventos para especificar qu eventos desea que le notifique LabVIEW. LabVIEW admite dos modelos de registro de eventos: esttico y dinmico.

    El registro esttico permite especificar qu eventos del panel frontal de un VI desea controlar en cada caso de la estructura Event en el diagrama de bloques de ese VI. LabVIEW registra estos eventos automticamente cuando se ejecuta el VI, por lo que la estructura Event empieza a esperar eventos en cuanto se ejecuta el VI. Cada evento se asocia con un control del panel frontal del VI, la ventana del panel frontal del VI en conjunto o la aplicacin de LabVIEW. No puede configurar estticamente una estructura Event para controlar eventos para el panel frontal de otro VI. La configuracin es esttica porque no puede cambiar en el tiempo de ejecucin qu eventos controla la estructura Event.

    El registro de eventos dinmico evita las limitaciones del registro esttico integrando el registro de eventos con el VI Server, que permite usar referencias de aplicacin, VI y control para especificar en el tiempo de ejecucin los objetos para los que desea generar eventos. El registro dinmico ofrece ms flexibilidad en el control de qu eventos genera LabVIEW y cundo los genera. Sin embargo, el registro dinmico es ms complejo que el esttico porque requiere usar referencias de VI Server con funciones del diagrama de bloques para registrar y desregistrar eventos en lugar de controlar el registro automticamente usando la informacin que configur en la estructura Event.

    Nota En general, LabVIEW genera eventos de interfaz de usuario slo como resultado de la interaccin directa del usuario con el panel frontal activo. LabVIEW no genera eventos, como Value Change, cuando usa variables compartidas, variables globales, variables locales, etc. Sin embargo, puede usar la propiedad Value (Signaling) para generar un evento Value Change programticamente. En muchos casos, se pueden usar eventos generados programticamente en lugar de colas.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 1-9

    Los datos de evento que proporciona un evento de LabVIEW siempre incluyen una marca de hora, una enumeracin que indica qu evento ocurri, as como una referencia de VI Server al objeto que activ el evento. La marca de hora es un contador de milisegundos que puede usar para calcular el tiempo transcurrido entre dos eventos o para determinar el orden en que sucedieron. La referencia al objeto que gener el evento se escribe estrictamente en la clase de VI Server de ese objeto. Los eventos se agrupan en clases segn el tipo de objeto que genera el evento, como una aplicacin, VI o control. Si un solo caso controla varios eventos para objetos de distintos tipos de VI Server, el tipo de referencia es la clase primaria comn de todos los objetos. Por ejemplo, si configura un solo caso en la estructura Event para controlar eventos en un control numrico y un control de rampa de color, el tipo de referencia de control del origen del evento es numrico porque los controles numrico y rampa de color estn en la clase Numeric. Si se registra para el mismo evento en la clase VI y Control, LabVIEW genera el evento VI primero.

    Nota Los clusters son los nicos objetos contenedores para los que puede generar eventos. LabVIEW genera eventos Control para clusters, antes de generar eventos para los objetos que contienen, salvo en el caso del evento Value Change. El evento Value Change genera el evento en un elemento del cluster, despus en el cluster mismo. Si el caso de la estructura Event de un evento VI o de un evento Control en un objeto de un contenedor desecha el evento, LabVIEW no generar ms eventos.

    Cada estructura Event y funcin Register For Events del diagrama de bloques posee una cola que usa LabVIEW para almacenar eventos. Cuando ocurre un evento, LabVIEW coloca una copia suya en cada cola registrada para l. Una estructura Event controla todos los eventos de su cola y los eventos de la colas de cualquier funcin Register For Events que cable a los terminales de eventos dinmicos de la estructura Event. LabVIEW usa estas colas para que los eventos se entreguen correctamente a cada estructura Event registrada en el orden en que ocurren los eventos.

    De forma predeterminada, cuando un evento entra en una cola, LabVIEW bloquea el panel frontal que contiene el objeto que gener ese evento. LabVIEW mantiene bloqueado el panel frontal hasta que todas las estructuras Event terminen de procesar el evento. Mientras est bloqueado el panel frontal, LabVIEW no procesa la actividad del panel frontal sino que coloca las interacciones en un bfer y las controla cuando se desbloquea el panel frontal.

    Por ejemplo, un usuario podra prever que un caso de evento lance una aplicacin que requiera introducir texto. Como el usuario ya sabe que hay que escribir texto, podra empezar a escribir antes de que la aplicacin aparezca en el panel frontal. Si est habilitada la opcin Lock front panel (defer processing of user action) until this event case completes, una vez que se lance la aplicacin y aparezca en el panel frontal, procesar las pulsaciones de teclas en el orden en que ocurrieron. Si est inhabilitada la opcin Lock front panel (defer processing of user action) until this event case completes, las pulsaciones de teclas podran procesarse en otra parte del panel frontal, ya que LabVIEW no pone en cola su ejecucin para que dependa de que termine el caso de evento.

    El bloqueo del panel frontal no afecta a ciertas acciones, como mover la ventana, interactuar con las barras de desplazamiento y hacer clic en el botn Abort.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 1 Ms all del flujo de datos

    1-10 | ni.com

    LabVIEW puede generar eventos aunque ninguna estructura Event est esperando para controlarlos. Como la estructura Event controla slo un evento cada vez que se ejecuta, coloque la estructura Event en un bucle While para que sta pueda controlar todos los eventos que ocurran.

    Precaucin Si no se ejecuta una estructura Event para controlar un evento y se habilita el bloqueo del panel frontal, la interfaz de usuario del VI no responder. Si esto ocurre, haga clic en el botn Abort para detener el VI. Puede desactivar el bloqueo del panel frontal haciendo clic con el botn derecho en la estructura Event y desmarcando la casilla de verificacin Lock front panel (defer processing of user action) until this event case completes en el cuadro de dilogo Edit Events. No puede desactivar el bloqueo del panel frontal para eventos de filtrado.

    Registro de eventos estticosEl registro de eventos estticos slo se permite para eventos de la interfaz de usuario. Use el cuadro de dilogo Edit Events para configurar una estructura Event que controle un evento registrado estticamente. Seleccione el origen del evento, que puede ser la aplicacin, el VI o un solo control. Seleccione un evento que pueda generar el origen del evento, como Panel Resize, Value Change, etc. Modifique el caso para controlar los datos de evento conforme a los requisitos de la aplicacin.

    LabVIEW registra estticamente eventos de forma automtica y transparente, cuando ejecuta un VI que contiene una estructura Event. LabVIEW genera eventos para un VI slo mientras se est ejecutando el VI o cuando otro VI en ejecucin llama al VI como un subVI.

    Cuando ejecuta un VI, LabVIEW configura ese VI de alto nivel y la jerarqua de subVIs a los que llama el VI en su diagrama de bloques para un estado de ejecucin llamado reservado. No puede modificar un VI ni hacer clic en el botn Run mientras el VI est en estado reservado, porque se puede llamar al VI como un subVI en cualquier momento mientras su VI primario se ejecuta. Cuando LabVIEW configura un VI al estado reservado, automticamente registra los eventos que configur estticamente en todas las estructuras Event del diagrama de bloques de ese VI. Cuando el VI de alto nivel termina la ejecucin, LabVIEW lo configura (y su jerarqua de subVI) al estado de ejecucin inactivo y automticamente desregistra los eventos.

    Configuracin de eventosAntes de configurar eventos para que los controle la estructura Event, consulte el tema Caveats and Recommendations when Using Events in LabVIEW de la Ayuda de LabVIEW.

    Siga estos pasos para configurar un caso de estructura Event para controlar un evento.1. (Opcional) Si desea configurar la estructura Event para que controle el evento de un usuario,

    un control booleano de un control de botones de radio o un evento de interfaz de usuario que se genera basndose en una referencia a una aplicacin, VI o control, primero debe registrar dinmicamente ese evento. Consulte el tema Dynamically Registering Events de la Ayuda de LabVIEW para obtener informacin adicional acerca de usar eventos dinmicos.

    2. Haga clic con el botn derecho en el borde de la estructura Event y seleccione Edit Events Handled by This Case en el men contextual para ver el cuadro de dilogo Edit Events y

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 1-11

    modificar el caso actual. Tambin puede seleccionar Add Event Case en el men contextual para crear un nuevo caso.

    3. Especifique un origen de evento en el panel Event Sources.4. Seleccione el evento que desee configurar para el origen de evento, como Key Down, Timeout

    o Value Change en la lista Events. Cuando seleccione un origen de evento dinmico en la lista Event Sources, la lista Events mostrar ese evento. Es el mismo evento que seleccion cuando registr el evento. Si ha registrado eventos dinmicamente y ha cableado event reg refnum out en el terminal de eventos dinmicos, los orgenes aparecern en la seccin Dynamic.

    5. Si desea aadir eventos adicionales para que los gestione el caso actual, haga clic en el botn + y repita los pasos 3 y 4 para especificar cada evento adicional. La seccin Event Specifiers de la parte superior del cuadro de dilogo muestra todos los eventos que controlar el caso. Cuando hace clic en un elemento de esta lista, la seccin Event Sources se actualiza para resaltar el origen de evento que seleccion. Puede repetir los pasos 3 y 4 para redefinir cada evento o hacer clic en el botn X para eliminar el evento seleccionado.

    6. Haga clic en el botn OK para guardar la configuracin y cerrar el cuadro de dilogo. Los casos de eventos que configur aparecern como opciones de seleccin en la etiqueta del selector de eventos en la parte superior de la estructura Event y el nodo Event Data mostrar los datos comunes a todos los eventos controlados en ese caso.

    7. (Opcional) Puede usar un evento Timeout para configurar una estructura Event para que espere un tiempo determinado a que ocurra un evento. Cablee un valor al terminal Timeout en la parte superior izquierda de la estructura Event para especificar el nmero de milisegundos que debe esperar la estructura Event a que ocurra un evento antes de generar un evento Timeout. El valor predeterminado del terminal Timeout es -1, que especifica esperar indefinidamente hasta que ocurra un evento.

    8. Repita los pasos 1 al 6 para cada caso de evento que desee configurar.

    Eventos de notificacin y de filtradoLos eventos de notificacin indican que ya ha ocurrido una accin del usuario, como cambiar el valor de un control. Use eventos de notificacin para responder a un evento cuando haya ocurrido y LabVIEW lo haya procesado. Puede configurar cualquier nmero de estructuras Event para responder al mismo evento de notificacin en un objeto concreto. Cuando ocurre el evento, LabVIEW enva una copia de sta a cada estructura Event configurada para controlar el evento en paralelo.

    Los eventos de filtrado le informan de que el usuario ha realizado una accin antes de que LabVIEW la procese, lo que permite personalizar el modo en que el programa responde a interacciones con la interfaz de usuario. Use eventos de filtrado para participar en el control del evento, posiblemente invalidando el comportamiento predeterminado del evento. En un caso de estructura Event de un evento de filtrado, puede validar o cambiar los datos del evento antes de que LabVIEW termine de procesarlo, o puede desechar el evento totalmente para evitar que el cambio afecte al VI. Por ejemplo, puede configurar una estructura Event para desechar el evento Panel Close?, que evitar que el usuario cierre interactivamente el panel frontal del VI.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 1 Ms all del flujo de datos

    1-12 | ni.com

    Los eventos de filtrado tienen nombres que terminan con un signo de interrogacin, como Panel Close?, para ayudar a distinguirlos de eventos de notificacin. La mayora de los eventos de filtrado tienen un evento de notificacin asociado con el mismo nombre, pero sin el interrogante, que genera LabVIEW tras el evento de filtrado si ningn caso de evento desech el evento.

    Por ejemplo, puede usar los eventos de filtrado Mouse Down? y Shortcut Menu Activation? para mostrar un men contextual cuando haga clic con el botn izquierdo en un control. Para realizar esta accin, modifique los datos que devuelve el campo de datos de evento Button del evento de filtrado Mouse Down?. El valor del botn izquierdo del ratn es 1 y el valor del botn derecho del ratn es 2. Para ver el men contextual cuando hace clic con el botn izquierdo en un control, cambie el campo de datos de evento Button a 2, para que LabVIEW considere el clic con el botn izquierdo igual que con el derecho.

    Al igual que con los eventos de notificacin, puede configurar cualquier nmero de estructuras Event para responder al mismo evento de filtrado en un objeto concreto. Sin embargo, LabVIEW enva eventos de filtrado secuencialmente a cada estructura Event configurada para el evento. El orden en que LabVIEW enva el evento a cada estructura Event depende de en qu orden se registraran los eventos. Cada estructura Event debe completar su caso de evento para el evento en concreto, antes de que LabVIEW pueda notificar la siguiente estructura Event. Si una estructura Event cambia cualquiera de los datos del evento, LabVIEW pasa los datos cambiados a las siguientes estructuras Event de la cadena. Si una estructura Event de la cadena desecha el evento, LabVIEW no pasa ste a las estructuras Event que queden en la cadena. LabVIEW completa el procesamiento de la accin del usuario que activ el evento slo cuando todas las estructuras Event configuradas controlen el evento sin desecharlo.

    Nota National Instruments recomienda usar eventos de filtrado slo cuando desee intervenir en el control de la accin del usuario, desechando el evento o modificando los datos del evento. Si slo desea saber que el usuario realiz una accin concreta, use eventos de notificacin.

    Los casos de la estructura Event que controlan eventos de filtrado tienen un Event Filter Node. Puede cambiar los datos de evento cableando nuevos valores a estos terminales. Si no cablea un valor al dato del Event Filter Node, el valor predeterminado ser el valor que devuelva el elemento correspondiente del Event Data Node. Puede desechar completamente cualquier evento cableando un valor TRUE al terminal Discard?.

    Nota Un solo caso de la estructura Event no puede controlar eventos de notificacin y de filtrado. Un caso puede controlar varios eventos de notificacin, pero solo puede controlar varios eventos de filtrado si los datos del evento son idnticos para todos los eventos.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 1-13

    Consulte la seccin Uso de eventos en LabVIEW de esta leccin para obtener informacin adicional acerca del registro de eventos.

    Consejo En el cuadro de dilogo Edit Events, los eventos de notificacin se indican con una flecha verde, mientras que los eventos de filtrado tienen una roja.

    Ejemplo de eventosLa figura 1-3 muestra una estructura Event configurada con el evento Menu Selection (User). Este VI usa la estructura Event para capturar selecciones de men realizadas con el men definido por el usuario y llamado sample.rtm. El ItemTag devuelve el elemento del men que se seleccion y MenuRef devuelve el refnum a la barra de mens. Esta informacin se pasa a la funcin Get Menu Item Info. Consulte examples\general\uievents.llb para ver ms ejemplos de uso de eventos.

    Figura 1-3. Evento Menu Selection (User)

    Nota Si usa la funcin Get Menu Selection con una estructura Event configurada para controlar el mismo elemento de men, la estructura Event tiene prioridad, y LabVIEW ignora la funcin Get Menu Selection. En cualquier VI, use la estructura Event o la funcin Get Menu Selection para controlar eventos de men, no ambas.

    Advertencias y recomendacionesLa siguiente lista describe algunas de las advertencias y recomendaciones que hay que considerar al incorporar eventos en aplicaciones de LabVIEW. Evite utilizar una estructura Event fuera de un bucle.

    LabVIEW puede generar eventos aunque ninguna estructura Event est esperando para controlarlos. Como la estructura Event controla slo un evento cada vez que se ejecuta, coloque la estructura Event en un bucle While que se termine cuando el VI ya no est interesado en eventos y para que sta pueda controlar todos los eventos que ocurran.

    Recuerde leer el terminal de un control booleano bloqueado en su caso de evento Value Change. Cuando active un evento en un control booleano configurado con una accin mecnica de bloqueo, el control booleano no se reinicia a su valor predeterminado hasta que el diagrama de bloques lea el terminal en el control booleano. Debe leer el terminal dentro del caso de evento para que la accin mecnica funcione correctamente.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 1 Ms all del flujo de datos

    1-14 | ni.com

    Evite colocar dos estructuras Event en un bucle.National Instruments recomienda que coloque slo una estructura Event en un bucle. Cuando ocurre un evento en esta configuracin, la estructura Event gestiona el evento, el bucle se itera y la estructura Event espera a que ocurra el siguiente evento. Si coloca dos estructuras Event en un solo bucle, ste no puede iterarse hasta que ambas estructuras Event gestionen un evento. Si ha habilitado el bloqueo del panel frontal para las estructuras Event, la interfaz de usuario del VI quiz no responda, en funcin de cmo interacte el usuario con el panel frontal.

    Consulte el tema Caveats and Recommendations when Using Events in LabVIEW de la Ayuda de LabVIEW para ver ms advertencias y recomendaciones cuando utilice eventos en LabVIEW.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 1-15

    Autorrevisin: Cuestionario1. Cul de los siguientes elementos almacena temporalmente datos?

    a. Colas b. Eventosc. Variables locales

    2. Una los siguientes elementos:

    3. Cules de los siguientes elementos son tipos de datos vlidos para colas?a. Cadena de caracteres b. Numricoc. Enumerard. Array de booleanose. Cluster de una cadena de caracteres y un valor numrico

    4. La estructura Event gestiona slo un evento cada vez que se ejecuta.a. Verdaderob. Falso

    Obtain Queue Destruye la referencia de la cola

    Get Queue Status Asigna el tipo de datos de la cola

    Release Queue Aade un elemento a la parte posterior de la cola

    Enqueue Element Determina el nmero de elementos actualmente en cola

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 1-17

    Autorrevisin: Respuestas1. Cul de los siguientes elementos almacena temporalmente datos?

    a. Colasb. Eventosc. Variables locales

    2. Una los siguientes elementos:

    3. Cules de los siguientes elementos son tipos de datos vlidos para colas?a. Cadena de caracteres b. Numricoc. Enumerard. Array de booleanose. Cluster de una cadena de caracteres y un valor numrico

    4. La estructura Event gestiona slo un evento cada vez que se ejecuta.a. Verdaderob. Falso

    Obtain Queue Asigna el tipo de datos de la cola

    Get Queue Status Determina el nmero de elementos actualmente en cola

    Release Queue Destruye la referencia de la cola

    Enqueue Element Aade un elemento a la parte posterior de la cola

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 1 Ms all del flujo de datos

    1-18 | ni.com

    Notas

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    National Instruments | 2-1

    2Implementando patrones de diseo

    Puede desarrollar mejores programas en LabVIEW y en otros lenguajes de programacin si sigue tcnicas de programacin sistemticas. Los patrones de diseo representan tcnicas que han resultado siempre tiles. Para facilitar el desarrollo, LabVIEW incluye plantillas para varios patrones de diseo comunes. Esta leccin describe dos tipos de patrones de diseo de programacin: bucles simples y bucles mltiples.

    Los patrones de diseo de bucle simple incluyen el VI simple, el VI general y la mquina de estados.

    Los patrones de diseo de mltiples bucles son el VI de bucles paralelos, el maestro/esclavo y el productor/consumidor.

    Comprender el uso apropiado de cada patrn de diseo ayuda a crear VIs de LabVIEW ms eficientes.

    TemasA. Patrones de diseoB. Patrones de diseo simpleC. Patrones de diseo de bucles mltiplesD. Gestores de erroresE. Generando cdigos de error y mensajesF. Temporizar un patrn de diseoG. Patrn de diseo variable global funcional

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 2 Implementando patrones de diseo

    2-2 | ni.com

    A. Patrones de diseoLos patrones de diseo de aplicaciones representan implementaciones y tnicas de cdigo de LabVIEW que son soluciones para problemas concretos en el diseo de software. Los patrones de diseo normalmente evolucionan gracias a los esfuerzos de muchos desarrolladores y se ajustan para conseguir simplicidad, mantenibilidad y legibilidad. Los patrones de diseo representan las tcnicas que han resultado siempre tiles. Adems, a medida que gana aceptacin un modelo, resulta ms fcil de reconocer, lo que le ayuda a leer y realizar cambios en el cdigo.

    B. Patrones de diseo simpleUsted aprendi a disear tres tipos distintos de patrones de diseo en el curso LabVIEW Core 1: la arquitectura simple, la arquitectura general y la mquina de estados.

    Patrones de diseo de VI simplePara realizar clculos o mediciones rpidas en el laboratorio, no necesita una arquitectura complicada. Su programa podra constar de un solo VI que realice una medicin o un clculo y muestre los resultados o los grabe en el disco. El patrn de diseo del VI simple normalmente no requiere una accin de inicio o parada especfica por parte del usuario. El usuario slo hace clic en el botn Run. Use esta arquitectura para aplicaciones sencillas o para componentes funcionales dentro de aplicaciones ms grandes. Puede convertir estos VIs simples en subVIs que use como bloques de construccin para aplicaciones ms grandes.

    La figura 2-1 muestra el diagrama de bloques del VI Determine Warnings, que era el proyecto del curso LabVIEW Core 1. Este VI ejecuta una sola tarea: determina qu alarma generar en funcin de un conjunto de entradas. Puede utilizar este VI como un subVI cuando tenga que determinar el nivel de alarma.

    Observe que el VI de la figura 2-1 no contiene acciones de inicio o parada por parte del usuario. En este VI todos los objetos del diagrama de bloques se conectan mediante el flujo de datos. Puede determinar el orden general de las operaciones siguiendo el flujo de datos. Por ejemplo, la funcin Not Equal no se puede ejecutar hasta que se hayan ejecutado las funciones Greater Than or Equal, Less Than or Equal y ambas funciones Select.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 2-3

    Figura 2-1. Arquitectura del VI simple

    Patrn de diseo del VI generalUn patrn de diseo de VI general tiene tres fases principales: arranque, aplicacin principal y cierre. Cada una de estas fases puede contener cdigo que usa otro tipo de patrn de diseo. Arranque: inicializa el hardware, lee la informacin de configuracin de los archivos o solicita

    al usuario ubicaciones de archivos de datos. Aplicacin principal: consta de al menos un bucle que se repite hasta que el usuario decida

    salir del programa o ste termine por otras razones, como la finalizacin de E/S. Cierre: cierra archivos, escribe informacin de configuracin en el disco o restablece E/S al

    estado predeterminado.

    La figura 2-2 muestra el patrn de diseo del VI general.

    Figura 2-2. Patrn de diseo del VI general

    En la figura 2-2, los cables del cluster de error controlan el orden de ejecucin de las tres secciones. El bucle While no se ejecuta hasta que el VI Start Up termine de ejecutarse y devuelva los datos del cluster de error. Como consecuencia, el VI Shut Down no puede ejecutarse hasta que termine la aplicacin principal del bucle While y los datos del cluster de error abandonen el bucle.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 2 Implementando patrones de diseo

    2-4 | ni.com

    Consejo La mayora de los bucles requieren una funcin Wait, especialmente si ese bucle monitoriza la interaccin del usuario con el panel frontal. Sin la funcin Wait, el bucle podra ejecutarse continuamente y usar todos los recursos del sistema. La funcin Wait obliga al bucle a ejecutarse asncronamente aunque especifique 0 milisegundos como periodo de espera. Si las operaciones del bucle principal reaccionan a las entradas del usuario, puede aumentar el periodo de espera a un nivel aceptable para los tiempos de reaccin. Una espera de 100 a 200 ms suele ser buena porque la mayora de los usuarios no puede detectar ese retardo entre hacer clic en un botn del panel frontal y la ejecucin del evento siguiente.

    Para aplicaciones simples, el bucle de la aplicacin principal es obvio y contiene cdigo que utiliza el patrn de diseo del VI simple. Cuando la aplicacin incluye interfaces de usuario complicadas o varias tareas como acciones del usuario, triggers de E/S, etc., la fase de la aplicacin principal se complica ms.

    Patrn de diseo de mquina de estados (Por sondeo)El patrn de diseo de mquina de estados es una modificacin del patrn de diseo general. Normalmente tiene una fase de arranque y de cierre. Sin embargo, la fase de la aplicacin principal consta de una estructura Case embebida en el bucle. Esta arquitectura permite ejecutar cdigo diferente cada vez que se ejecuta el bucle, en funcin de alguna condicin. Cada caso define un estado de la mquina, de ah el nombre mquina de estados. Use este patrn de diseo para VIs que se dividan fcilmente en varias tareas ms simples, como VIs que actan como una interfaz de usuario.

    Una mquina de estados en LabVIEW consta de un bucle While, una estructura Case y un registro de desplazamiento. Cada estado de la mquina de estados es un caso distinto en la estructura Case. Debe colocar los VIs y el resto de cdigo que el estado deba ejecutar dentro del caso apropiado. Un registro de desplazamiento almacena el estado que debe ejecutarse en la siguiente iteracin del bucle. La figura 2-3 muestra el diagrama de bloques de un VI de mquina de estados con cinco estados. La figura 2-4 muestra los otros casos, o estados, de la mquina de estados.

    Figura 2-3. Mquina de estados con estado de arranque

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 2-5

    Figura 2-4. Estados Idle (predeterminado), Event 1 y Event 2

    En el patrn de diseo de mquina de estados, usted disea la lista de posibles tareas, o estados, y despus los asigna a cada caso. Para el VI del ejemplo anterior, los posibles estados son Startup, Idle, Event 1 y Event 2. Una constante de enumeracin guarda los estados. Cada estado tiene su propio caso en la estructura Case. El resultado de un caso determina qu caso ejecutar despus. El registro de desplazamiento almacena el valor que determina el prximo caso a ejecutar.

    El patrn de diseo de mquina de estados puede hacer el diagrama de bloques mucho ms pequeo y, por lo tanto, ms fcil de leer y de depurar. Otra ventaja de la arquitectura de la mquina de estados es que cada caso determina el siguiente estado, a diferencia de las estructuras Sequence, que deben ejecutar cada marco secuencialmente.

    Una desventaja del patrn de diseo de mquina de estados es que con el enfoque del ejemplo anterior, es posible saltar estados. Si se llama a dos estados de la estructura a la vez, este modelo gestiona slo uno de ellos mientras que el segundo no se ejecuta. Saltar estados puede producir errores difciles de depurar porque son complicados de reproducir. Versiones ms complejas del patrn de diseo de la mquina de estados contienen cdigo adicional que crea una cola de eventos, o estados, para que no se pierda un estado. Consulte la leccin 1, Ms all del flujo de datos, para obtener informacin adicional acerca de las mquinas de estados basadas en colas.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 2 Implementando patrones de diseo

    2-6 | ni.com

    Patrn de diseo de mquina de estados (Basada en eventos)El patrn de diseo de la mquina de estados basada en sondeo, monitorea la actividad en el panel frontal usando tcnicas estndar de flujo de datos. Una mquina de estados basada en eventos, combina el poder de la interaccin del usuario en una interfaz de usuario de un controlador de eventos con la flexibilidad de transicin de una mquina de estados. Debido a que esta combinacin es tan til para una amplia gama de aplicaciones, LabVIEW proporciona una plantilla basada en proyectos, la mquina de estados simple, para simplificar el proceso de creacin de una aplicacin basada en este patrn de diseo.

    La plantilla de la mquina de estados simple es una aplicacin personalizable que se encuentra en forma de un archivo .lvproj con soporte de los VIs y los controles de definicin tipo. La aplicacin se basa en el patrn de diseo de una mquina de estados basada en eventos. La plantilla incluye una amplia documentacin acerca de cmo modificar el cdigo para crear una aplicacin personalizada con mquinas de estados.

    Utilice el cuadro de dilogo de Crear Proyecto para crear un proyecto a partir de una plantilla o muestra. Las plantillas proporcionan arquitecturas comunes que se pueden modificar para lograr metas especficas. Proyectos de ejemplo demuestran cmo una plantilla se puede modificar para lograr metas especficas.

    Consulte el proyecto de ejemplo Single Shot Measurement, disponible en el cuadro de dilogo de Crear Proyecto, para un ejemplo de la adaptacin de la plantilla de una mquina de estados simple en una aplicacin de medicin.

    Figura 2-5. Diagrama de transicin de estados en una mquina de estados simple.

    Despus de la inicializacin, la mquina de estados transiciona al estado Esperar Evento. Este estado contiene una estructura Event que espera los cambios en el panel frontal. Cuando un usuario hace clic en un botn, LabVIEW reconoce el evento y cambia al subdiagrama apropiado en la estructura Event. Este subdiagrama inicia una transicin al estado apropiado.

    Slo un estado se ejecuta a la vez, y el nico bucle While ejecuta todas las tareas en un solo ciclo. Si usted necesita tareas con distintas velocidades o en paralelo, considere un patrn de diseo multi-bucle. En esta leccin usted aprender sobre el patrn de diseo del productor/consumidor.

    Initialize

    Wait forEvent

    Stop

    UserState 2

    UserState 1

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 2-7

    En los cursos posteriores se aprender acerca de otros patrones de diseo de otros LabVIEW para los cuales se dispone de plantillas, como las plantillas Queued Message Handler o Actor Framework.

    El estado Esperar por Evento es el nico que reconoce la entrada del usuario. La mquina de estados debe estar en este estado para aceptar cualquier entrada del usuario. Por lo tanto, cada estado debe ser rpido para que el cdigo pueda volver al estado Esperar por Eventos.

    Patrn de diseo del controlador de eventos de la interfaz de usuarioEl patrn de diseo del controlador de eventos de la interfaz de usuario incluye una arquitectura potente y eficaz para controlar la interaccin del usuario con LabVIEW. Use el controlador de eventos de la interfaz de usuario para detectar cundo un usuario cambia el valor de un control, mueve el ratn, hace clic en l o pulsa una tecla.

    La plantilla estndar del controlador de eventos de la interfaz de usuario consta de una estructura Event contenida en un bucle While, como en la figura 2-6. Configure la estructura Event para tener un caso para cada categora de evento que desee detectar. Cada caso de evento contiene el cdigo de control que se ejecuta inmediatamente despus de que ocurra un evento.

    Como el bucle del controlador de eventos se activa precisamente cuando ocurre un evento y se suspende entre eventos, no tiene que sondear ni leer valores de control constantemente para detectar cundo un usuario hace clic en un botn. El controlador de eventos de la interfaz de usuario permite minimizar el uso del procesador sin sacrificar la interactividad.

    Figura 2-6. Patrn de diseo del controlador de eventos de la interfaz de usuario

    Un problema comn al usar el controlador de eventos de la interfaz de usuario es que computa la condicin de terminacin del bucle While antes de que se ejecute la estructura Event. Esto puede hacer que el bucle While se itere una vez ms de lo esperado. Para evitar esta situacin, calcule el final del bucle While en todo el cdigo de control de eventos.

    1 Estructura Event2 Bucle While

    3 Terminal Timeout4 Event Data Node

    3

    2

    1

    4

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 2 Implementando patrones de diseo

    2-8 | ni.com

    El cdigo del controlador de eventos debe ejecutarse rpidamente, en general en menos de 200 ms. Si es ms lento, puede parecer que la interfaz de usuario se bloquea. Asimismo, si el cdigo del controlador de eventos tarda mucho en ejecutarse, la estructura Event podra bloquearse. De forma predeterminada, el panel frontal se bloquea mientras se controla un evento. Puede desactivar el bloqueo del panel frontal para cada caso de evento para que la interfaz de usuario sea ms sensible. Sin embargo, los nuevos eventos que se generen mientras se est controlando un evento no se controlarn inmediatamente. Por lo tanto, la interfaz de usuario an parecer que no responde.

    Todo cdigo que est en un caso de evento no puede compartirse con otra estructura Event. Debe utilizar un buen diseo de cdigo al usar la estructura Event. Modularice el cdigo que se compartir entre varios casos de estructura Event.

    La estructura Event incluye un evento Timeout, que permite controlar cundo se ejecuta el evento Timeout. Por ejemplo, si configura un Timeout de 200 ms, el caso del evento Timeout se ejecuta cada 200 ms en ausencia de otros eventos. Puede usar el evento Timeout para realizar la temporizacin crtica de su cdigo.

    C. Patrones de diseo de bucles mltiplesHay varios patrones de diseo de bucles mltiples, algunos de los cuales estn ms all del alcance de este curso. Este curso se enfoca en el patrn de diseo del productor/consumidor debido a su versatilidad y flexibilidad .

    Patrn de diseo de productor / consumidorEl patrn de diseo de productor / consumidor se basa en el patrn de diseo de maestro / esclavo y mejora la comparticin de datos entre varios bucles que se ejecutan a distintas velocidades. Al igual que el patrn de diseo de maestro / esclavo, el patrn de diseo de productor / consumidor separa tareas que producen y consumen datos a distintas velocidades. Los bucles paralelos en el patrn de diseo de productor / consumidor estn separados en dos categoras: los que producen datos y los que consumen los datos producidos. Las colas de datos comunican datos entre los bucles. Las colas de datos tambin almacenan temporalmente datos en un bfer entre los bucles productor y consumidor.

    Consejo Un bfer es un dispositivo de memoria que almacena datos temporales entre dos dispositivos o, en este caso, mltiples bucles.

    Use el patrn de diseo de productor / consumidor cuando tenga que adquirir varios conjuntos de datos que deben procesarse en orden. Suponga que desea crear un VI que acepte datos mientras procesa los conjuntos de datos en el orden en que se recibieron. El patrn de productor / consumidor es ideal para este tipo de VI, porque poner en cola (producir) los datos se realiza mucho ms rpidamente que el procesamiento de stos (consumir). Podra colocar al productor y al consumidor en el mismo bucle para esta aplicacin, pero la cola de procesamiento no podra recibir ms datos hasta que el primer dato se procesara completamente. El enfoque de productor / consumidor para este VI pone en cola los datos en el bucle productor y procesa los datos en el bucle consumidor, como en la figura 2-7.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 2-9

    Consejo Las funciones de manejo de colas permiten almacenar un conjunto de datos que puede pasarse entre bucles mltiples que se ejecutan simultneamente o entre VIs. Consulte la leccin 1, Ms all del flujo de datos, para obtener informacin adicional acerca de colas e implementacin de aplicaciones que utilicen el patrn de diseo productor / consumidor.

    Figura 2-7. Patrn de diseo de productor / consumidor

    Este patrn de diseo permite que el bucle consumidor procese los datos a su propio ritmo, mientras que el bucle productor sigue poniendo en cola datos adicionales.

    Tambin puede usar el patrn de diseo de productor / consumidor para crear un VI que analice la comunicacin de red. Este tipo de VI requiere dos procesos simultneos y a distintas velocidades. El primer proceso sondea constantemente la lnea de red y captura paquetes. El segundo proceso analiza los paquetes que captura el primer proceso.

    En este ejemplo, el primer proceso acta como productor porque suministra datos al segundo proceso, que acta de consumidor. El patrn de diseo de productor / consumidor es una arquitectura efectiva para este VI. Los bucles paralelos productor y consumidor controlan la captura y el anlisis de datos fuera de la red. La comunicacin en cola entre los dos bucles permite el almacenamiento temporal de los paquetes de red recuperados. El uso del bfer puede ser importante si la comunicacin de red es intensa. Mediante el bfer, los paquetes pueden capturarse y comunicarse ms rpidamente de lo que pueden analizarse.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 2 Implementando patrones de diseo

    2-10 | ni.com

    Patrn de diseo de productor/consumidor (Datos)El patrn de diseo del productor/consumidor mejora el intercambio de datos entre mltiples bucles que funcionan a diferentes velocidades. Hay dos categoras de bucles paralelos en el patrn de diseo productor/consumidorlos que producen los datos y los que consumen los datos. Las colas de datos comunican datos entre los bucles. Las colas de datos tambin almacenan temporalmente datos en un bfer entre los bucles productor y consumidor. Utilice el patrn de diseo productor/consumidor para adquirir varios conjuntos de datos que se deben procesar en orden, por ejemplo, un VI que acepta datos al procesar los conjuntos de datos en el orden en que se reciban. Introducir datos en la cola (producir) ocurre mucho ms rpido que el procesamiento de datos (consumidos). El enfoque de productor/consumidor pone en cola los datos en el bucle productor y procesa los datos en el bucle consumidor, como en la figura 2-8.

    Figura 2-8. Patrn de diseo de productor/consumidor (Datos)

    Este patrn de diseo permite que el bucle consumidor procese los datos a su propio ritmo, mientras que el bucle productor sigue poniendo en cola datos adicionales. Tambin puede utilizar el productor/consumidor para crear un VI que analice la comunicacin de red en la que dos procesos operan al mismo tiempo y a diferentes velocidades. El primer proceso sondea constantemente la lnea de red y captura paquetes. El segundo proceso analiza los paquetes que captura el primer proceso. El primer proceso acta como productor porque suministra datos al segundo proceso, que acta de consumidor. Los bucles paralelos productor y consumidor controlan la captura y el anlisis de datos fuera de la red. La comunicacin en cola entre los dos bucles permite el almacenamiento temporal de los paquetes de red recuperados.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 2-11

    La figura 2-8 muestra cmo puede usar los VIs de Sincronizacin y las funciones para aadir funcionalidad al patrn de diseo. Las colas pueden transferir cualquier tipo de datos. El tipo de datos transferido de la figura 2-8 es una cadena de caracteres. Una cadena de caracteres no es el tipo de datos ms eficaz para pasar datos en patrones de diseo. Un tipo de datos ms eficaz para pasar datos en patrones de diseo es un cluster que consta de un estado y elementos de datos.

    Demostracin de Productor/consumidor (datos)El proyecto de productor/consumidor, ubicado en el directorio \LabVIEW Core 2\Demonstrations\Producer Consumer - Data, demuestra el patrn de diseo. El panel frontal incluye un botn que controla cuando el valor de la cadena de caracteres es aadido a la cola. El control deslizante cableado a la funcin Wait (ms) en el del blucle Consumidor simula el tiempo de procesamiento intensivo dentro del bucle. Esto demuestra el efecto sobre la ejecucin general del programa. Mientras que el bucle consumidor se ejecuta, el usuario puede poner en cola ms elementos. La cola retiene cada elemento y los ejecuta en orden despus del procesamiento simulado del elemento en el bucle consumidor. Con esta implementacin, cuando el bucle consumidor est ocupado, la interfaz de usuario sigue respondiendo y los comandos de usuario siguen siendo registrados.

    Patrn de diseo Productor/Consumidor (Eventos)Uno de los patrones de diseo ms verstiles y flexibles combina los patrones de diseo productor/ consumidor y el controlador de eventos de interfaz de usuario. Un VI creado usando el patrn de diseo productor/consumidor (eventos) responde a la interfaz de usuario asncronamente, para que la interfaz de usuario pueda responder continuamente al usuario. El bucle consumidor de este patrn responde cuando ocurren eventos, al igual que el bucle consumidor del patrn de diseo de (datos) productor / consumidor.

    El patrn de diseo productor / consumidor (eventos) usa la misma implementacin que el patrn de diseo productor / consumidor (datos), salvo que el bucle productor usa una estructura Event para responder a los eventos de la interfaz de usuario, como se ve en la figura 2-9. La estructura Event permite la respuesta continua a la interaccin del usuario.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 2 Implementando patrones de diseo

    2-12 | ni.com

    Figura 2-9. Patrn de diseo Productor/Consumidor (Eventos)

    Demostracin de productor/consumidor (eventos)El proyecto de productor/consumidor, ubicado en el directorio \LabVIEW Core 2\Producer Consumer - Event, demuestra el patrn de diseo. El panel frontal incluye botones para poner en cola un mensajes con una prioridad normal o bien un mensaje con una prioridad alta. Cuando un mensaje con prioridad normal es puesto en la cola, el estado del consumidor se establece a prioridad normal, los datos booleanos se establecen a falso, y el valor del dato numerico se establece a la cantidad de iteraciones en el bucle While. Cuando un mensaje con prioridad alta es puesto en la cola, el estado del consumidor se establece a prioridad alta, los datos booleanos se establecen a verdadero, y el valor del dato numerico se establece a 1000. El indicador State to Execute muestra el estado actual a ser ejecutado en el bucle del Consumidor.

    El bucle consumidor se implementa con una espera de 1 segundo para demostrar el efecto del tiempo de procesamiento intensivo. Mientras que el bucle consumidor se ejecuta, el usuario puede poner en cola ms elementos (hacer clic en otros botones). Con esta implementacin, cuando el bucle consumidor est ocupado, la interfaz de usuario sigue respondiendo y los comandos de usuario siguen siendo registrados. Debido a que el bucle de productores recurre a una estructura Event, menos procesamiento se produce debido a que los controles dentro de la estructura Event son de slo lectura cuando sus valores cambian. La interfaz de usuario es totalmente responsable de determinar las acciones a ser realizadas en el bucle consumidor. Incluso si hay un retraso acumulado de elementos con prioridades normales en la cola, un elemento de cola de prioridad alta se aade en la parte delantera de la cola y se procesa antes que los mensajes de prioridad normal.

    Cuando el usuario hace clic en el botn Stop, un mensaje de apagado se enva al bucle consumidor el cual termina enviando un valor True al terminal condicional del bucle.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 2-13

    Ayuda de TrabajoUse la tabla 2-1 para determinar la mejor forma de usar los patrnes de diseo descritos en esta leccin.

    Tabla 2-1. Comparacin entre patrones de diseo

    Patrones de diseo Uso Ventajas DesventajasSimple subVIs estndar

    Clculos / algoritmos, procesamiento modular

    Equivalente de LabVIEW de una subrutina en otros lenguajes de programacin

    Permite aplicaciones modulares

    No es adecuado para el diseo de la interfaz de usuario o VIs de alto nivel

    General Control de flujo estndar

    Bueno para prototipos rpidos o aplicaciones sencillas y directas que no crecen en complejidad

    Diferencia entre fases de inicializacin, ejecucin y de parada

    No puede retornar a una fase anterior

    Mquina de estados (sondeo)

    Controla la funcionalidad de un VI mediante la creacin de una secuencia

    Secuencias de control

    Mantenimiento del cdigo es sencillo porque se pueden aadir fcilmente nuevos estados.

    Para aplicaciones simples, no tienen que manejar ambos diagramas: eventos y mquinas de estados.

    Una Interfaz de usuario basada en sondeo no es escalable a medida que la aplicacin crece

    No es apto para el paralelismo

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 2 Implementando patrones de diseo

    2-14 | ni.com

    Mquina de estados (Basada en eventos)

    Controla la funcionalidad de un VI mediante la creacin de una secuencia

    Secuencias de control

    Mantenimiento del cdigo es sencillo porque se pueden aadir fcilmente nuevos estados.

    El uso de la estructura de eventos es ms eficiente que un control por sondeo

    No es apto para el paralelismo

    Controlador de eventos de interfaz de usuario

    Procesa mensajes desde la interfaz de usuario

    Maneja los mensajes de la interfaz de usuario

    No permite el procesamiento intensivo

    No es apto para el paralelismo

    Productor/consumidor (datos)

    Procesa o analiza los datos en paralelo con otro procesamiento de datos o anlisis

    Comunicacin por medio de un bfer entre procesos de una aplicacin

    No proporciona sincronizacin entre bucles

    Limitado a un tipo de dato, a menos que los datos estn contenidos en un cluster

    Tabla 2-1. Comparacin entre patrones de diseo (Continuacin)Patrones de diseo Uso Ventajas Desventajas

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 2-15

    D. Gestores de erroresDe forma predeterminada, LabVIEW controla automticamente cualquier error cuando un VI se ejecuta suspendiendo la ejecucin, resaltando el subVI o la funcin donde ocurri el error y mostrando un cuadro de dilogo de error. La gestin automtica de errores es conveniente para el desarrollo de prototipos rpidos y pruebas de concepto, pero no se recomienda para el desarrollo de aplicaciones profesionales. Si confa en la gestin automtica de errores, su aplicacin podra detenerse en una parte crtica de su cdigo por un cuadro de dilogo de error. Quiz el usuario no pueda continuar ejecutando la aplicacin o solucionar el problema.

    Al implementar manualmente la gestin de errores, usted controla cundo aparecen cuadros de dilogo emergentes. Si piensa crear una aplicacin independiente, debe incorporar la gestin manual de errores porque LabVIEW no muestra cuadros de dilogo de gestin automtica de errores en LabVIEW Run-Time Engine.

    Un gestor de errores es un VI o cdigo que cambia el flujo normal del programa cuando ocurre un error. El VI Simple Error Handler es un ejemplo de un gestor de errores integrado que se utiliza en LabVIEW. Puede aplicar otros gestores de errores personalizados para su aplicacin. Por ejemplo, puede elegir registrar informacin del error en un archivo. Otro gestor de errores comn es un VI que redirecciona cdigo a una rutina de limpieza o cierre cuando ocurre un error, para que su aplicacin salga correctamente. La figura 2-10 muestra un gestor de errores de mquina de estados que configura el siguiente estado en Shutdown cuando un error tiene el estado TRUE.

    Productor/consumidor (eventos)

    Responde a la interfaz de usuario con aplicaciones de uso intensivo del procesador

    Separa la interfaz de usuario del cdigo de procesamiento intensivo

    No integra eventos no realcionados con la interfaz de usuario

    Variables globales funcionales

    Utilizar como un subVI que necesita mantener los datos globales y realizar acciones en esos datos.

    Almacena datos siempre que el VI est en memoria

    Ejecuta operaciones en funcin de la seleccin de entrada

    Una buena manera de proteger las secciones crticas de cdigo para eliminar las condiciones de carrera

    No es adecuado para VIs reentrantes

    Problemtico al duplicar o ampliar los datos globales con mltiples copias y realizar acciones en dichas copias

    Tabla 2-1. Comparacin entre patrones de diseo (Continuacin)Patrones de diseo Uso Ventajas Desventajas

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 2 Implementando patrones de diseo

    2-16 | ni.com

    Figura 2-10. Gestor de errores de la mquina de estados

    Gestin de errores en el patrn de diseo productor/consumidor (eventos) El diagrama del productor/consumidor que se muestra en la Figura 2-9 es til para la comprensin de la arquitectura fundamental del patrn de diseo. Adems de pasar comandos y datos entre los bucles, el patrn de diseo para ambos bucles cuando el usuario hace clic en el botn Stop. Sin embargo, si se produce un error en cualquier bucle, no existe ningn mecanismo para comunicar esta informacin al otro bucle. Por lo tanto, es posible que uno de los bucles se ejecute indefinidamente despus de que el otro se haya detenido.

    Por lo tanto, es necesario aadir el cdigo de gestor de errores con el patrn de diseo para que los bucles productor y consumidor se detengan elegantemente cuando se produce un error. Hay muchas tcnicas para comunicar informacin de error entre los dos bucles, algunos de los cuales estn cubiertos en cursos posteriores. Algunas tcnicas implican la adicin de un canal de comunicacin adicional, como una cola adicional. Otra tcnica es utilizar el cluster de cola actual para ejecutar un caso de apagado en el bucle consumidor. Este enfoque se demuestra usando el VI gestor de errores que se muestra en la figura 2-11 y el productor/consumidor llamando al VI Error Handler ilustrado en la figura 2-12.

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 2-17

    Figura 2-11. VI gestor de errores

    Figura 2-12. Productor/Consumidor llamando al VI Error Hander

    Si se produce un error en el bucle productor, el VI Error Handler pone en cola el estado de apagado junto con la informacin de cluster de error. Puesto que se deseara volver a utilizar este VI Error Handler en el bucle consumidor, es necesario eliminar el error en el cable de error despus de poner en cola la informacin. De lo contrario, el bucle consumidor terminara antes de que tuviera la oportunidad de ejecutar el caso de apagado. Si falla la funcin Enqueue en el VI Error Handler, la

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Leccin 2 Implementando patrones de diseo

    2-18 | ni.com

    comunicacin entre los bucles se detiene por lo que el nico curso razonable de accin es dar por terminada la ejecucin del bucle inmediatamente.

    Dado que el estado de procesamiento, incluyendo el procesamiento de cierre, se produce en el bucle consumidor y no en el bucle de productor, todava necesita algn mecanismo en el bucle consumidor para informar al bucle productor que detenga la ejecucin. Un enfoque, como se muestra en la figura 2-13, es utilizar una variable local que se sondea en el caso del evento Timeout. Si se produce un error en el bucle consumidor, el caso de apagado se ejecuta y detiene el bucle. La variable local Consumer Shutdown? puede entonces detener el bucle productor.

    Figura 2-13. Productor/Consumidor usando una variable local

    E. Generando cdigos de error y mensajesLa gestin de errores en LabVIEW sigue el modelo de flujo de datos. Al igual que los valores de datos fluyen por un VI, tambin lo hace la informacin de errores. Mientras se ejecuta el VI, LabVIEW comprueba si hay errores en cada nodo de ejecucin. Si LabVIEW no encuentra errores, el nodo se ejecuta con normalidad. Si LabVIEW detecta un error, el nodo pasa el error al siguiente

  • Natio

    nal In

    strum

    ents

    Not

    for di

    stribu

    tion

    Manual de Curso LabVIEW Core 2

    National Instruments | 2-19

    nodo sin ejecutar esa parte del cdigo. El siguiente nodo hace lo mismo y as sucesivamente. Al final del flujo de ejecucin, el error se expresa a travs del Simple Error Handler.vi o a travs de un cluster de error.

    Configurar un error cuando un nodo o VI falla no debera estar limitado a los errores cuyas funciones y VIs de LabVIEW ya reportan. Como desarrollador de un VI, tambin se deben detectar las condiciones de error y el reporte de estos errores los subVIs. Hay muchas situaciones en las que puede que desee reportar una condicin de error que se detect en su cdigo. A continuacin se presentan algunos ejemplos para configurar o invalidar los cdigos de error y mensajes: Comprobar las entradas no vlidas a subVIs o algoritmos. Verificar si existen arrays o cadenas

    de caracteres vacas antes de procesar. Si una entrada es invlida, se debe configurar un cdigo de error y mensaje apropiados. Un ejemplo podra ser comprobar si una entrada es un valor positivo antes de intentar obtener la raz cuadrada del nmero. Si un valor es negativo, se generar un error con un mensaje apropiado con el fin de notificar al usuario como se podra arreglar el valor de la entrada.

    Verificar salidas invlidas en diferentes algoritmos. Por ejemplo, la funcin Search 1D Array retorna un valor ndice de -1 si la bsqueda de un elemento no es exitosa en un array. En esta situacin, es posible que desee informar de un error con un mensaje que indica que el valor del elemento no se encuentra en el array.

    Sobrescribir mensajes de error de LabVIEW con detalles ms especficos. La funcin Open/Create/Replace devuelve el cdigo de error 7 al intentar abrir un archivo que no existe. El cdigo de error 7 est asociado al mensaje de error genrico file not found. En lugar del mensaje de error genrico, es posible que se desee un mensaje de error ms especfico teniendo en cuenta la ruta del archivo especfico que fall, adems de informacin sobre cmo el usuario puede corregir el problema y volver a intentar la operacin.

    Error RingSe utiliza el Error Ring para seleccionar y pasar de forma rpida cdigos de error personalizados a travs de un VI. Se puede configurar el ring para devolver un mensaje de error integrado, o se puede crear un mensaje de error personalizado para un solo uso. De forma predeterminada, la cadena