Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Ejercicios Core 2 Parte 1-3
Manual Ejercicios Core 2 Parte 1-3
LabVIEW Core 2
io ts
Ejercicios
ut en
n
ib m
tr u
is tr
Versión del software actual 2012
Edición de Agosto 2012
D s
Número de parte 325293D-0154
LabVIEW Core 2 Manual de Ejercicios
r In
Copyright
© 1993–2012 National Instruments. Todos los derechos reservados.
fo al
En virtud de las leyes de copyright y de protección de los derechos de autor, esta publicación no puede reproducirse ni transmitirse en ninguna forma, electrónica o mecánica, incluidas las fotocopias,
grabación, almacenamiento en un sistema de recuperación de información, o traducción, 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
ot on
de la propiedad intelectual. Aunque el software de NI puede utilizarse para reproducir software u otro material perteneciente a otros, el software de NI sólo podrá utilizarse para reproducir material que
pueda reproducir conforme a los términos de cualquier licencia aplicable u otra restricción legal.
El 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 <National Instruments>\_Legal Information y <National Instruments>.
a
Marcas comerciales
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 página ni.com/trademarks para información sobre otras marcas de National Instruments.
Otros nombres de productos y de empresas mencionados aquí son marcas o nombres comerciales de sus respectivas empresas.
Patentes
Para obtener información sobre las patentes que protegen los productos o la tecnología de National Instruments, consulte el apartado: Help»Patents 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.
N
a
N ti
ot on
fo al
r In
D s
is tr
tr u
ib m
ut en
io ts
n
io ts
ut en
n
ib m
tr u
is tr
D s
r In
fo al
ot on
N ti
a
Oficinas internacionales
Visite ni.com/niglobal para acceder a las páginas web de las oficinas internacionales, las cuales incluyen información actualizada de contacto, teléfonos de soporte técnico, direcciones de email y
eventos actuales.
Para realizar comentarios a National Instruments sobre la documentación, consulte la página web de National Instruments Web ni.com/info e introduzca el código de información feedback.
N
a
N ti
ot on
fo al
r In
D s
is tr
tr u
ib m
ut en
io ts
n
Más allá del flujo de datos
1
io ts
ut en
Ejercicios
n
Ejercicio 1-1 Concepto: Comparación de colas con variables locales
ib m
Ejercicio 1-2 Concepto: Comparando diseños de estructura Event con diseños de sondeo.
tr u
is tr
D s
r In
fo al
ot on
N ti
a
N
io ts
Objetivo
En este ejercicio se ejecutará y examinará un VI de patrón de diseño productor/consumidor que transfiere datos generados por el bucle productor a cada bucle
ut en
consumidor utilizando variables y colas.
n
Descripción
ib m
Las secciones siguientes describen cómo el VI Queues vs Local Variables hace lo siguiente.
tr u
• Creación de una cola
is tr
• Colas de datos que genera el bucle productor.
D s
• Espera a que la cola se vacíe antes de salir del VI.
r In
• Utiliza las variables locales para leer y mostrar datos del bucle productor.
fo al
ot on
N ti
a
N
1. Abra Queues vs Local Variables.vi en el directorio <Exercises>\LabVIEW Core 2\Queues versus Local Variables.
2. Haga doble clic en Queues vs Local Variables.vi en la ventana del Project Explorer para abrir el VI. El panel frontal de este VI aparece en la figura 1-1.
io ts
Figura 1-1. Panel frontal del VI Queues vs Local Variables
ut en
n
ib m
tr u
is tr
D s
r In
fo al
ot on
N ti
a
N
3. Ejecute el VI. El bucle productor genera datos y los transfiere a cada bucle consumidor mediante una variable local y una cola. Observe el comportamiento del
VI cuando los bucles consumidores se ajustan a la misma velocidad que el bucle productor.
4. Detenga el VI.
5. Abra y examine el diagrama de bloques de este VI. Las siguientes secciones describen las partes de este diagrama de bloques con más detalle.
Figura 1-2. Diagrama de bloques del VI Queues vs Local Variables
io ts
ut en
n
ib m
tr u
is tr
D s
r In
fo al
ot on
N ti
a
N
Creación de una cola
Crear la cola con el código que se muestra en la Figura 1-3. Este código se encuentra a la izquierda del bucle productor.
io ts
Figura 1-3. Creando la cola
ut en
1
n
2
ib m
3
tr u
1 Max queue size — Establece el número máximo de elementos que puede contener la cola.
2 La constante numérica Data Type — cableada a la entrada element data type de la función Obtain Queue, especifica el tipo de datos que desea que contenga
is tr
la cola.
3 Obtain Queue — Crea la cola y define el tipo de datos.
D s
r In
Introduccion en cola de datos que genera el bucle productor
fo al Figura 1-4. Poniendo en cola datos que el bucle productor genera
ot on
1
N ti
a
N
1 Enqueue Element — Agrega cada elemento de datos, que el VI Generate Sine genera en el bucle productor a la parte posterior de la cola.
Extracción de datos de la cola del bucle productor dentro de la cola del bucle consumidor
Figura 1-5. Extracción de datos en el bucle consumidor
io ts
ut en
n
2
1
ib m
tr u
is tr
1 Dequeue Element — Elimina un elemento de la parte delantera de la cola y se envía el elemento de datos al “waveform chart” de la cola del bucle consumidor.
D s
2 Get Queue Status — Indica cuántos elementos permanecen en la cola. Para procesar estos datos, debe ejecutar la cola del bucle consumidor más rápido que
el bucle productor, o seguir procesando una vez que se haya detenido el bucle productor.
r In
fo al
ot on
N ti
a
N
Espera hasta que se vacíe la cola
Figura 1-6. Espera hasta que se vacíe la cola
io ts
ut en
1
n
2 5
ib m
4
3
tr u
is tr
D s
r In
fo al
ot on
1 While Loop — Espera a que la cola se vacíe antes de salir del VI. Haga referencia a este bucle While como Queue Wait Loop.
2 Get Queue Status — Retorna información acerca de el estado actual de la cola, como el número de datos que contiene actualmente.
3 Equal To 0? — Cableada a la condición de parada del Queue Wait Loop comprueba si la cola está vacía.
N ti
io ts
datos de la onda sinusoidal desde la misma variable local.
Figura 1-7. Local Variable Consumer Loop
ut en
n
ib m
tr u
is tr
D s
1
1
r In
Update Counters — Actualiza los contadores para muestras duplicadas o perdidas.
fo al
Prueba
ot on
2. Ejecute el VI.
a
3. Seleccione diferentes velocidades para el bucle Local Variable Consumer Loop y observe el gráfico del Local Variable Consumer Loop y los resultados generados
N
Asegúrese de que se selecciona Same as Producer Loop en Loop Speed y observe el gráfico del bucle productor y el gráfico del bucle Local Variable
Consumer Loop. Puede ocurrir una condición de carrera a raíz de puntos omitidos o datos duplicados.
Seleccione 2x del menú desplegable del control Loop Speed y observe el gráfico del bucle Local Variable Consumer Loop. Ocurre una condición de carrera
porque los datos se consumen más rápidamente de lo que se producen, lo que hace que la variable local lea el mismo valor varias veces.
io ts
Seleccione 1/2 as Producer del menú desplegable del control Loop Speed y observe el gráfico de el bucle Local Variable Consumer Loop. Ocurre una
condición de carrera porque los datos se producen más rápidamente de lo que se consumen. Los datos cambian antes de que la variable local pueda leerlos.
ut en
Seleccione las opciones restantes del menú desplegable del control Loop Time y observe la recuperación de los datos.
n
4. Detenga el VI.
ib m
La transferencia de datos entre dos bucles paralelos no sincronizados utilizando variables locales produce una condición de carrera. Esto ocurre cuando el bucle
productor está escribiendo un valor en una variable local, mientras que el bucle Local Variable Consumer Loop lee periódicamente el valor desde la misma
tr u
variable local. Como los bucles paralelos no están sincronizados, el valor puede escribirse antes de que se haya leído o viceversa, lo que produce la inanición de
datos o el exceso de datos.
is tr
Queue Consumer Loop
D s
1. Ejecute el VI.
r In
2. Seleccione la velocidad del tiempo del bucle Queue Consumer Loop y observe la gráfica tipo “waveform graph” de este bucle y los resultados generados en el
indicador Samples in Queue. fo al
Asegúrese de que el Loop Speed seleccionado es Same as Producer; observe el valor del indicador Samples in Queue. El valor debe permanecer en cero.
Por lo tanto, con las colas no perderá datos cuando los bucles productor y consumidor se estén ejecutando a la misma velocidad.
ot on
Seleccione 2x en el menú desplegable del control Loop Speed y observe el valor del indicador Samples in Queue. El valor debe permanecer en cero. Por lo
tanto, con las colas no perderá datos cuando el bucle consumidor se esté ejecutando más rápidamente que el productor.
Seleccione 1/2 as Producer en el menú desplegable del control Loop Speed y observe el valor del indicador Samples in Queue. Los puntos de datos se
N ti
acumularán en la cola. Tendrá que procesar los elementos acumulados en la cola antes de llegar al tamaño máximo de ésta para no perder datos.
a
Seleccione las opciones restantes del menú desplegable del control Loop Time y observe la sincronización de la transferencia de datos entre el bucle
productor y el bucle consumidor utilizando colas.
N
3. Detenga el VI.
Cuando el bucle productor y el bucle Queue Consumer Loop se ejecutan a la misma velocidad, no cambiará el número de elementos de la cola. Cuando el bucle
io ts
Queue Consumer Loop se ejecuta más lentamente, la cola se llena rápidamente y el bucle productor debe esperar a que el bucle Queue Consumer Loop elimine
los elementos. Cuando el bucle Queue Consumer Loop se ejecuta más rápidamente, la cola se vacía rápidamente y el bucle consumidor debe esperar para insertar
nuevos elementos. Así, las colas sincronizan la transferencia de datos entre los dos bucles paralelos independientes y se evita la pérdida o duplicación de datos.
ut en
4. Cierre el VI. No guarde los cambios.
n
Fin del ejercicio 1-1
ib m
tr u
is tr
D s
r In
fo al
ot on
N ti
a
N
Ejercicio 1-2 Concepto: Comparando diseños de estructura Event con diseños de sondeo.
io ts
Objetivo
Convertir una aplicación basada en sondeo en una aplicación basada en eventos
ut en
Descripción
n
En primer lugar se observa el comportamiento de un VI de sondeo.
ib m
A continuación, modifique el VI de sondeo para crear un VI más eficiente basado en eventos y observe los cambios en el comportamiento.
tr u
Por último, añada diferentes tipos de eventos al VI.
is tr
La tabla 1-1 enumera los eventos que se implementan en el VI UI Event Handler.
D s
Tabla 1-1. Eventos de la interfaz de usuario
r In
Eventos Descripción de eventos
“Time Check”: Value Change Muestra una marca de tiempo cuando se hace clic en el botón Time Check.
“Pane”: Mouse Down Muestra las coordenadas del punto del panel frontal donde se hace clic.
ot on
Panel Close? Controla el evento en el que el usuario intenta cerrar el VI en ejecución haciendo clic en el botón cerrar de la
ventana.
N ti
“Stop”: Mouse Enter Produce un sonido cuando se mueve el cursor sobre el botón Stop.
a
1. Abrir y ejecutar el VI
io ts
Haga clic en la pestaña Performance en la ventana del Administrador de tareas
ut en
Ejecute el VI.
n
ib m
Detenga el VI y observe cómo el uso del CPU cae.
tr u
4. Tenga en cuenta la frecuencia en la que el terminal Time Check envía los datos a la estructura Case y con qué frecuencia el bucle While itera.
is tr
5. Detenga el VI y desactive “execution highlighting”
D s
r In
Modificación del VI de sondeo para utilizar eventos en lugar de sondeo
1. Guarde el VI como UI Event Handler.vi para poder modificarlo.
3. Abra el diagrama de bloques de Events.vi y mueva el terminal Stop y el terminal de Time Check fuera del bucle While. Mueva estos terminales hacia el evento
apropiado más adelante en este ejercicio.
N ti
5. Coloque una estructura Event dentro del bucle While entre el terminal de itereción y el terminal condicional.
N
6. Haga clic con el botón derecho en la estructura Event y seleccione Edit Events Handled by This Case en el menú contextual.
7. Configure el evento como en la figura 1-8.
Figura 1-8. Configuranto el evento “Stop”: Value Change Event
io ts
ut en
n
ib m
tr u
2
is tr
1
D s
r In
fo al
ot on
N ti
a
9. Ponga una constante True dentro del nuevo evento “Stop”: Value Change y cableelo al terminal condicional del bucle While como en la figura 1-9.
Figura 1-9. Estructura Event con “Stop”: Value Change Event
io ts
ut en
n
ib m
1
tr u
is tr
D s
1 NewVal event data — Redimensiona la lista de elementos de datos de eventos para que sólo una muestra aparezca. Haga clic en el elemento y seleccione
r In
NewVal.
4. Tenga en cuenta que el bucle While se está ejecutando en su primera iteración. La estructura Event está esperando un evento.
N ti
7. Tenga en cuenta que el VI detiene la ejecución, aunque el botón Stop esté desconectado.
8. Observe que el botón Stop se mantiene presionado a pesar de que la acción mecánica se ajusta a Latch When Released. La razón de que el botón se mantenga
presionado es porque el VI dejó de funcionar después de hacer clic en el botón.
9. Reinicie el botón Stop haciendo clic en él nuevamente.
10. Arrastre el terminal del botón Stop dentro del evento “Stop”: Value Change event, como en la figura 1-10.
io ts
Figura 1-10. “Evento Stop”: Value Change con un botón terminal Stop
ut en
n
ib m
tr u
is tr
D s
r In
11. Ejecute el VI y haga clic en Stop nuevamente.
io ts
Haga clic con el botón derecho en la estructura Event y seleccione Add Event Case.
Figura 1-11. Estructura Event con evento “Time Check”: Value Change
ut en
n
ib m
1
tr u
3
is tr
4
D s
1
r In
En la ventana Edit Events, seleccione Time Check en el panel Event Sources y seleccione Value Change en el panel Events.
fo al
2 Mueva el terminal de Time Check fuera del bucle While en “Time Check”: Value Change evento.
3 Get Date/Time In Seconds — Crea una estampa de tiempo en memoria.
ot on
4 Indicator — Muestra la salida current time (tiempo actual) de la función Get Date/Time In Seconds.
2. Ejecute el VI.
N ti
3. Haga clic en el botón Time Check para ver el tiempo actual en el indicador current time.
a
4. Abra el Administrador de tareas de windows y observe que el uso de CPU se ha reducido al utilizar eventos en lugar de sondeo.
N
5. Detenga el VI.
Adición de más eventos Notifier para el VI
1. Añadir un nuevo caso a la estructura de eventos Mouse Down como se muestra en la figura 1-12.
io ts
Figura 1-12. Estructura Event con el evento “Pane”: Mouse Down
ut en
1
n
ib m
2
tr u
is tr
D s
1 En la ventana Edit Events, seleccione Panes»Pane en el panel Event Sources y seleccione Mouse»Mouse Down en el panel Events.
r In
2 Coords event data — Haga clic en el event data node y seleccione Coords»All Elements.
3 Coords indicator — Haga clic con el botón derecho en la salida del elemento de datos del evento Coords y seleccione Create»Indicator en el menú contextual.
fo al
2. Ejecute el VI.
Observe que el indicador Coords muestra las coordenadas de cada punto en el que se hace clic.
4. Detenga el VI.
a
N
io ts
Figura 1-13. Estructura Event con el evento “Panel Close?”
ut en
1
n
4
ib m
5
tr u
3
is tr
2
D s
r In
1 En la ventana Edit Events, seleccione <This VI> en el panel Event Sources y seleccione Panel Close? en el panel Events.
2 Nodo event data — Haga clic en el nodo Event Data y seleccione Source en el menú.
3
fo al
Funciones Two Button Dialog y Not — Cablee la salida T button? a la función Not y cablee la función Not al event filter node “Discard?”
4 Constante de cadena de caracteres — Cablee Are you sure you want to close the window? a la entrada de message.
5 Constantes de cadenas de caracteres Yes y No — Cablee Yes a la entrada de T button name (“OK”) y cablee No a la entrada F button name (“Cancel”).
ot on
3. Haga clic en la “X” en la parte superior derecha de la ventana del panel frontal.
N ti
4. Note que haciendo clic en el botón No, se cancela el evento y se retorna al VI.
a
6. Detenga el VI si es necesario.
Reto
1. Si usted tiene una tarjeta de sonido, añadir un evento que produce un sonido cuando el cursor está sobre el botón Stop.
io ts
Consejo Utilice Quick Drop para encontrar Beep.vi.
ut en
Fin del ejercicio 1-2
n
ib m
tr u
is tr
D s
r In
fo al
ot on
N ti
a
N
io ts
ut en
Ejercicios
n
Ejercicio 3-1 Visualización de temperatura y límites
ib m
Ejercicio 3-2 Personalización de la Ventana del VI
Ejercicio 3-3 Uso de subVIs
tr u
is tr
D s
r In
fo al
ot on
N ti
a
N
io ts
Objetivo
Use Nodos de Propiedad para cambiar las propiedades de los objetos del panel frontal programáticamente.
ut en
Escenario
n
Complete un VI que registre la temperatura en un gráfico tipo “waveform chart”. Durante la ejecución, el VI realiza las siguientes tareas:
ib m
• Desactivar y activar los controles en el inicio y la finalización de la ejecución.
tr u
• Configurar el valor x del gráfico tipo “chart” con el valor que define el usuario.
is tr
• Borrar el gráfico tipo “waveform chart” para que inicialmente no contenga datos.
D s
• Reto: Cambiar el color de una curva si los datos superan cierto valor.
r In
Diseño
Se debe construir este VI en cuatro etapas, incluyendo un desafío.
fo al
Parte 1 — Deshabilitar controles
ot on
io ts
Parte 1 — Deshabilitar controles
1. Abra el VI Temperature Limit.vi situado en el directorio <Exercises>\LabVIEW Core 2\Temp Limit - Ctl Props.
ut en
Figura 3-1. Panel frontal de Temperature Limit
n
ib m
tr u
is tr
D s
r In
fo al
ot on
Tenga en cuenta que mientras que el VI se ejecuta, los controles siguen habilitados. Se pueden cambiar los valores de los controles, mientras que el VI se
ejecuta.
N ti
3. Modificar el diagrama de bloques como se muestra en la figura 3-2 para desactivar los controles cuando el VI se ejecuta.
N
io ts
ut en
n
1
ib m
tr u
is tr
2 3
D s
5
1
r In
Nodo de propiedad Delta t (ms) — Haga clic con el botón derecho en el control Delta t (ms) y seleccione Create»Property Node»Disabled. Haga clic con el
fo al
botón derecho en el nodo de propiedad y seleccione Change All to Write.
2 Nodo de propiedad High Limit — En el caso Timeout del estructura event, haga clic con el botón derecho en el control High Limit y seleccione Create»Property
Node»Disabled.
ot on
Coloque el nodo de propiedad fuera del bucle While, para que pueda moverse dentro de “Start”: Value Change.
Haga clic con el botón derecho en el nodo de propiedad y seleccione Change All to Write.
N ti
3 Nodo de propiedad Temperature — En el caso Timeout de la estructura event, haga clic con el botón derecho en el indicador Temperature y seleccione Create»
Property Node»X Scale» Offset and Multiplier»Multiplier.
a
Coloque el nodo de propiedad fuera del bucle While, para que pueda moverse dentro de “Start”: Value Change.
Haga clic con el botón derecho en el nodo de propiedad y seleccione Change All to Write.
N
io ts
2. Detenga el VI.
ut en
3. Ejecute nuevamente el VI, haga clic en el botón Start Acquisition y note que los controles aún estás dehabilitados.
n
ib m
Se quieren deshabilitar los controles mientras el VI se ejecuta, sin embargo, se desea habilitarlos de nuevo la próxima vez que se ejecute el VI.
1. Modificar el diagrama de bloques como se muestra en la figura 3-3 para habilitar los controles cuando el VI se ejecuta.
tr u
Figura 3-3. VI Temperature Limit — Habilitar los controles desde el diagrama de bloques
is tr
D s
r In
1
fo al
2
ot on
N ti
a
1 Cree una copia de los nodos de propiedad de Delta t (ms) y High Limit y arrástrelos a la izquierda, fuera del bucle While.
N
Prueba
1. Ejecute el VI y observe que los controles se activan de nuevo antes de hacer clic en el botón Start Acquisition.
io ts
2. Establezca diferentes valores para los controles y haga clic en el botón “Start Acquisition”. Tenga en cuenta que los datos que se muestran en el gráfico comienzan
a partir de donde se detuvo la última vez que se ejecutó el VI.
ut en
Parte 3 — Limpiar el gráfico
n
Se desea borrar el contenido del gráfico cada vez que ejecute el VI.
ib m
1. Modificar el diagrama de bloques como se muestra en la figura 3-4 para borrar los datos antiguos del gráfico cada vez que ejecute el VI.
tr u
Figura 3-4. VI Temperature Limit — Eliminar los datos del gráfico desde el diagrama de bloques
is tr
D s
r In
fo al
ot on
2
N ti
a
1 Nodo de propiedad Temperature — Crear una copia del nodo de propiedad Temperature y arrastrarlo a la izquierda del bucle While.
N
io ts
2. Ejecute el VI nuevamente. Observe que el gráfico está limpio antes de hacer clic en el botón Start Acquisition y que se escriben nuevos datos en este.
ut en
Parte 4 — Desafío: Cambiar el color del contenido del gráfico
Modificar el VI para que la trama de datos en el gráfico cambie de color cuando se excede el límite máximo.
n
ib m
Fin del ejercicio 3-1
tr u
is tr
D s
r In
fo al
ot on
N ti
a
N
io ts
Objetivo
Modificar los atributos de un VI usando Nodos de Propiedad y Nodos de Invocación.
ut en
Escenario
n
Puede configurar las propiedades de aspecto de un VI estáticamente usando la página de propiedades del VI. Sin embargo, las interfaces de usuario robustas a menudo
ib m
deben modificar el aspecto de un panel frontal mientras se ejecuta el programa.
Modificar el VI Temperature Limit para presentar el siguiente aspecto y comportamiento cuando el VI se ejecuta:
tr u
is tr
• Esconder la barra de herramientas
D s
• Esconder las barra de desplazamiento
r In
• Moverse al centro de la pantalla
Propiedades
Use las siguientes propiedades y métodos de la clase VI:
N ti
• ShowMenuBar — Cuando esta propiedad tiene un valor False, la barra de menús no se muestra en el VI.
a
io ts
ut en
Métodos
A diferencia de las propiedades, un método tiene un efecto cada vez que lo llame. Por lo tanto, debe llamar a métodos sólo cuando desee realizar una acción. Por
n
ejemplo, si llama al método Fp.Center usando cada iteración de un bucle, el VI se centra continuamente, impidiendo que lo mueva el usuario. Puede usar una estructura
ib m
Case para controlar la llamada al método en una determinada iteración de un bucle. Use el siguiente método de la clase VI:
tr u
• Center: cada vez que llame a este método, el VI se mueve al centro de la pantalla.
is tr
Consejo Use la ventana Context Help para ver descripciones de cada propiedad y método.
D s
r In
fo al
ot on
N ti
a
N
Después de implementar los cambios en el VI, al ejecutar el VI Temperature Limit, este debe moverse hacia el centro de la pantalla y tener un aspecto similar a la
figura 3-7.
io ts
Figura 3-7. Panel frontal del VI Temperature Limit con apariencia personalizada
ut en
n
ib m
tr u
is tr
D s
r In
fo al
ot on
Implementación
Parte 1 — Configurar las propiedades de apariencia
N ti
1. Abra el VI “Temperature Limit.vi” situado en el directorio <Exercises>\LabVIEW Core 2\Temp Limit - Methods.
a
2. Modifique el diagrama de bloques como en la figura 3-8 para ocultar las barras de desplazamiento, la barra de menús y la de herramientas y centrar el panel frontal
cuando el VI se encuentre en ejecución.
N
Figura 3-8. VI Temperature Limit — Métodos del diagrama de bloques
io ts
ut en
n
ib m
tr u
2 1 3 4
is tr
D s
1 Property Node — Haga clic con el botón derecho en el nodo de propiedad y seleccione Link to»Pane»Pane.
r In
Haga clic con el botón derecho y seleccione Change All to Write.
Expanda el nodo para mostrar dos propiedades y configúrelas a Horizontal Scroll Bar Visibility y Vertical Scrollbar Visibility.
2 Constante Off While Running — Haga clic con el botón derecho en una de las entradas del nodo de propiedad Pane y seleccione Create»Constant.
fo al
3 Nodo de propiedad — Haga clic con el botón derecho en el nodo de propiedad y seleccione Select Class»VI Server»VI»VI.
Haga clic con el botón derecho y seleccione Change All to Write.
ot on
4 Nodo de Invocación — Haga clic en el método y seleccione Front Panel»Center. Usted debe cablear la referencia del nodo de propiedad antes de configurar
este método.
N
Nota Note que las propiedades de visibilidad de la barra de desplazamiento se aplican a la clase Pane, no a la clase del VI. El panel frontal se puede
dividir en varios paneles utilizando la barra de división horizontal o barra de división vertical. Cada panel puede tener sus propias barras de desplazamiento.
3. Guarde el VI.
Prueba
io ts
1. Ejecute el VI.
ut en
2. Verifique que las barras de desplazamiento, barra de herramientas y barra de menús no se muestran, y que la ventana del panel frontal está centrada en la pantalla,
cuando el VI se encuentra en ejecución.
n
3. Detenga el VI.
ib m
Parte 2 — Exportar datos
tr u
Agregue un método para exportar datos del gráfico temperature a Excel.
is tr
1. Modificar el diagrama de bloques como se muestra en la figura 3-9 para exportar los datos mostrados en el gráfico Temperature a Excel.
D s
Figura 3-9. VI Temperature Limit — Diagrama de bloques para exportar a excel
r In
fo al
ot on
1
N ti
a
N
1 Nodo de Invocación Temperature — Haga clic con el botón derecho en el indicador Temperature y seleccione Create»Invoke Node»Export Data to Excel.
2. Guarde el VI.
Prueba
1. Ejecute el VI.
io ts
2. Haga clic en Stop. Para que el método de exportar los datos a excel cree un archivo temportal de Excel con los datos del gráfico con la forma de onda. Vea los
datos en el archivo de Excel.
ut en
3. Guarde y cierre el VI.
n
Fin del ejercicio 3-2
ib m
tr u
is tr
D s
r In
fo al
ot on
N ti
a
N
io ts
Objetivo
Use referencias de control para crear un subVI que modifique propiedades de gráficos tipo “graph” o “chart”.
ut en
Escenario
n
Crear subVIs para el VI Temperature Limit que le permitan manejar algunas de las funciones que ha habilitado en el ejercicio 3-1 y en el ejercicio 3-2.
ib m
Implementación
tr u
1. Abra el VI “Temperature Limit.vi” desde el proyecto Temperature Limit situado en el directorio <Exercises>\LabVIEW Core 2\Temp Limit - SubVIs.
is tr
2. El diagrama de bloques, como el de la figura 3-10 incluye código para:
D s
• Ocultar las barras de desplazamiento mientras se ejecuta
r In
• Configurar propiedades de diálogos
fo al
ot on
N ti
a
N
• Habilitar nuevamente los controles cuando se detiene el VI
Figura 3-10. Temperature Limit — SubVI
io ts
ut en
n
ib m
tr u
is tr
D s
r In
fo al
ot on
N ti
a
N
En este ejercicio, se modificará el diagrama de bloques para utilizar subVIs y utilizar referencias de control. La figura 3-11 describe los subVIs que creará y utilizará
para hacer el VI Temperature Limit más modular y escalable.
io ts
Figura 3-11. VI Temperature Limit — Diagrama de bloques
ut en
1 2
n
ib m
tr u
is tr
D s
r In
1 SubVI Set Scroll Bar State — Oculta las barras de desplazamiento cuando se ejecuta el VI.
fo al
2 SubVI Set Dialog Properties — Oculta la barra de herramientas y de menú cuando se ejecuta el VI.
3 VI Set Enable State on Multiple Controls — Configura todos los controles en el array de entrada con el valor del estado Enable.
ot on
En el VI Temperature Limit, resalte el código mostrado en la figura 3-12 y seleccione Edit»Create SubVI.
N ti
4. Abra el subVI.
Haga doble clic en el icono del subVI en el diagrama de bloques para abrir y modificar el panel frontal del subVI que se acaba de crear, como en la figura 3-13.
Figura 3-13. Panel frontal del subVI Set Scroll Bar State
io ts
2
ut en
n
ib m
tr u
1
is tr
D s
r In
fo al
ot on
N ti
1 Indicador de salida Pane Ref — cree una copia del control Pane Ref. Haga clic con el botón derecho en la copia y seleccione Change to Indicator y cambie la
etiqueta.
a
2 Asigne la salida del indicador Pane Ref a la salida del terminal superior derecho del panel de conectores. Las conexiones para los otros controles e indicadores
ya deben estar creadas.
N
5. Modifique el diagrama de bloques del subVI Set Scroll Bar State como se muestra en la figura 3-14.
Figura 3-14. Diagrama de bloques del subVI Set Scroll Bar State
io ts
ut en
n
ib m
tr u
is tr
6. Cablee la referencia y los cables de error a través del caso error en la estructura.
D s
7. Cree un icono significativo para el subVI y guárdelo como Set Scroll Bar State.vi en el directorio <Exercises>\LabVIEW Core 2\
Temp Limit - SubVI.
r In
8. Cree el subVI Set Dialog Properties.
9. En el VI Temperature Limit, resalte el código mostrado en la figura 3-15 y seleccione Edit»Create SubVI.
fo al
Figura 3-15. Destacando el código Set Dialog Properties
ot on
N ti
a
N
10. Abra el subVI que acaba de crear y modifique el panel frontal como se muestra en la figura 3-16.
Figura 3-16. Panel frontal del subVI Set Dialog Properties
io ts
2
ut en
n
ib m
tr u
1
is tr
D s
r In
fo al
ot on
1 Indicador de salida VI Ref — Cree una copia del control VI Ref. Haga clic con el botón derecho en la copia y seleccione Change to Indicator y cambie la
N ti
etiqueta.
2 Asigne la salida del indicador VI Ref a la salida del terminal superior derecha del panel de conectores. Las conexiones para los otros controles e indicadores
a
io ts
ut en
n
ib m
1
tr u
1 Función Not — Invertir la lógica del botón Enable Dialog Properties cableándolo al nodo de propiedad para mostrar la barra de menús y barra de herramientas
is tr
11. Cablee la referencia y los cables de error a través del caso error en la estructura.
D s
12. Cree un icono significativo para el subVI y guárdelo como Set Dialog Properties.vi en el directorio <Exercises>\LabVIEW Core 2\
r In
Temp Limit - SubVI.
13. Agregue el VI “Set Enable State on Multiple Controls” al diagrama de bloques del VI Temperature Limit.
fo al
El VI Set Enable State on Multiple Controls se proporciona en el proyecto de Temperature Limit.
ot on
N ti
a
N
Arrastre dos copias del VI desde la ventana Project Explorer al diagrama de bloques de Temperature Limit y complete el diagrama de bloques como se
muestra en la Figura 3-18.
io ts
Figura 3-18. Diagrama de bloques completo de Temperature Limit
ut en
n
ib m
tr u
is tr
3
D s
r In
1
1 VI Server References — Cree referencias para el control Delta t (ms), el control High Limit, y el control botón Start.
Haga clic con el botón derecho en cada control y seleccione Create»Reference.
fo al
El control High Limit está en el evento Timeout.
2 Build Array — Expanda el nodo para que acepten tres entradas.
ot on
3 SubVI Set Enable State on Multiple Controls — Cree una copia del subVI y la constante Disabled State y coloquelos en el “Start”: Value Change.
Prueba
N ti