Apuntes del curso
Tpicos Selectos de Ingeniera Bsica:
Programacin por Flujo de Datos
Catedrtico:
Dr. Gerardo Trujillo Schiaffino
Universidad Autnoma de Chihuahua
Facultad de Ingeniera
Ingeniera en Sistemas Computacionales
Enero 2012
Programa de la Materia:
Tpicos Selectos de Ingeniera Bsica
(Programacin por Flujo de Datos)
Objetivo General.
Proporcionar al alumno conocimientos terico-prcticos en el paradigma de la
programacin por flujo de datos utilizando el lenguaje de programacin LabVIEW como
una alternativa en el desarrollo de programas de aplicacin.
Unidad I. Fundamentos de LabVIEW.
Objetivo Particular.
Conocer y aplicar el ambiente de programacin de LabVIEW y su paradigma de
programacin por flujo de datos para el desarrollo de programas de aplicacin.
Contenido.
1.1. Ambiente de programacin grafica
1.2. Paradigma de programacin por flujo de datos.
1.3. Opciones de ayuda
1.4. Tcnicas de depuracin de errores
1.5. Documentacin del VI
1.6. Sub-instrumentos virtuales
Unidad II. Estructuras de Programacin.
Objetivo Particular.
Conocer y aplicar las principales estructuras de programacin de LabVIEW para el
desarrollo de estructuras de control en programas de aplicacin.
Contenido.
2.1. Ciclo While
2.2. Ciclo For
2.3. Registros de corrimiento
2.4. Nodos de retroalimentacin
2.5. Case
2.6. Secuencias
2.7. Nodos de formula
Unidad III. Funciones de Programacin.
Objetivo Particular.
Conocer y aplicar las principales funciones de programacin de LabVIEW para el
desarrollo de programas de aplicacin.
Contenido.
3.1. Arreglos
3.2. Clusters
3.3. Cadenas de caracteres.
3.4. Archivos
Unidad IV. Graficacin de Datos.
Objetivo Particular.
Conocer y aplicar las principales grficas de LabVIEW para la graficacin de datos en el
desarrollo de programas de aplicacin.
Contenido.
4.1. Registrador de Formas de Onda
4.2. Graficador de Formas de Onda
4.3. Grfica XY
Unidad V. Herramientas de Programacin.
Objetivo Particular.
Conocer y aplicar las principales herramientas de programacin de LabVIEW para el
desarrollo de programas de aplicacin.
5.1. Variables locales
5.2. Variables globales
5.3. Nodos de propiedad
Unidad VI. Arquitecturas de Programacin.
Objetivo Particular.
Conocer y aplicar las principales arquitecturas de programacin de LabVIEW para el
desarrollo de programas de aplicacin.
Contenido.
6.1. VI simple
6.2. VI general
6.3. Maquina de estados
Bibliografa.
1. LabVIEW 8 Student Edition
Robert H. Bishop, Pearson Prentice Hall; (2007), ISBN: 0131999184
2. LabVIEW GUI: Essential Techniques
David J. Ritter, McGraw-Hill Professional; (2001), ISBN: 0071364935
3. A Software Engineering Approach to LabVIEW
Jon Conway, Prentice Hall PTR; (2003), ISBN: 0130093653
Evaluacin.
Primer Parcial 30%
Segundo Parcial 30%
Tercer Parcial 40%
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 5 Dr. Gerardo Trujillo Schiaffino
Unidad I.
FUNDAMENTOS DE LABVIEW.
1.1 AMBIENTE DE PROGRAMACION GRAFICA (LABVIEW).
LabVIEW es el acrnimo para Laboratory Virtual Instrument Engineering
Workbench y representa en la actualidad una poderosa y flexible plataforma de desarrollo de
software. LabVIEW se basa en el paradigma de la programacin por flujo de datos, pero
tambin puede ser aplicado bajo los paradigmas de programacin por maquinas de estados,
programacin por eventos y programacin orientada a objetos. En general, tambin se le
conoce como lenguaje G por ser un lenguaje esencialmente grafico.
Los programas en LabVIEW son llamados instrumentos virtuales (VIs). Cada VI
contiene tres partes principales:
Panel frontal
Diagrama de bloque
Icono/Conector
Fig. 1.1. Panel frontal de un instrumento virtual
El panel frontal, como el mostrado en la figura 1.1, es utilizado para interaccionar con
el usuario cuando el programa est corriendo. El usuario puede controlar el programa, cambiar
entradas, y ver datos actualizados en tiempo real.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 6 Dr. Gerardo Trujillo Schiaffino
Fig. 1.2. Diagrama a bloques de un instrumento virtual
Cada control o indicador del panel frontal tiene una terminal correspondiente en el
diagrama de bloques, como se muestra en la figura 1.2. Cuando un VI se ejecuta, los valores
de los controles fluyen a travs del diagrama de bloques, en donde estos son usados en las
funciones del diagrama, y los resultados son pasados a otras funciones o indicadores.
El tercer elemento del VI es su icono conector, tal como se muestra en la figura 1.3,
este se encuentra localizado en la esquina superior derecha del panel frontal y del diagrama a
bloques, su funcin es representar al VI cuando se utiliza como subVI (sub-programa) dentro
otro VI y proporcionar las terminales de conexin adecuadas, pero esto ser a tratado a detalle
ms delante.
Fig. 1.3. Icono - Conector de un instrumento virtual
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 7 Dr. Gerardo Trujillo Schiaffino
1.1.2 Panel Frontal.
El panel frontal es la interfaz del usuario con el VI. El panel frontal se construye con
controles e indicadores, que son las entradas y salidas que interactan con las terminales del
VI, respectivamente. Los controles son usados como entradas, por ejemplo, ajustando
controles de deslizamiento para colocar un valor de alarma, encendiendo o apagando un
interruptor, o deteniendo un programa. Los controles son interruptores, botones, perillas, cajas
de texto y otros componentes de entradas. Los controles simulan dispositivos de entrada de
equipos y suministra datos al diagrama de bloques del VI.
Los indicadores son usados como salidas, por ejemplo, termmetros, luces, y otros
indicadores indican valores del programa. Esto puede incluir datos, estados de programa y
otra [Link] indicadores son las graficas, luces y otros dispositivos. Los indicadores
simulan salidas de instrumentos y suministra datos que el diagrama de bloques adquiere o
genera.
Fig. 1.4. Ejemplo de un panel frontal sencillo
La figura 1.4 muestra un ejemplo de panel frontal, en esta imagen, el interruptor de
encendido es un control booleano. Un valor booleano contiene ambos un valor verdadero o
falso. El valor es falso hasta que el interruptor se presione. Cuando el interruptor se presiona,
el valor se convierte en verdadero. El indicador del historial de temperatura es una grafica de
forma de onda. Esta muestra valores mltiples. En este caso, la grafica indica grados
Fahrenheit vs. Tiempo.
El panel frontal tambin contiene una barra de herramientas, y sus funciones sern
discutidas ms delante.
Barra de herramientas
del panel frontal
Leyenda del
grfico
Control
Booleano
Grfico de
Forma de onda
Icono
Leyenda de
la grfica
Leyenda de
la escala
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 8 Dr. Gerardo Trujillo Schiaffino
1.1.3 Diagrama de Bloque.
El diagrama de bloque contiene el cdigo fuente grafico. Los objetos del panel frontal
aparecen como terminales en el diagrama de bloque. Adicionalmente, el diagrama de bloque
contiene funciones y estructuras incorporadas en las bibliotecas de LabVIEW VI. Los cables
conectan cada uno de los nodos en el diagrama de bloques, incluyendo controles e
indicadores de terminal, funciones y estructuras, estableciendo un flujo de datos que
representa la lgica del programa.
Fig. 1.5. Ejemplo de un diagrama a bloques sencillo
La figura 1.5 muestra un ejemplo de un diagrama de bloque. En este diagrama de
bloque, el subVI Temp llama a una subrutina, la cual obtiene una temperatura desde una
tarjeta de adquisicin de datos (DAQ). Esta temperatura es graficada junto con el valor
promedio de la temperatura en la grafica de forma de onda Temperature History. El
interruptor de encendido (Power) es un control booleano en el panel frontal el cual va a
detener la ejecucin de la estructura de ciclo While. La estructura de ciclo While tambin
contiene una funcin de tiempo para controlar que tan frecuentemente la estructura se repite.
Adems de las terminales de controles e indicadores y funciones propias de LabVIEW,
el diagrama puede contener sub-instrumentos virtuales (subVIs) que en realidad son
programas independientes que fueron encapsulados para ser utilizados como funciones dentro
de un programa principal, los subVIs pueden ser de dos tipos esenciales: subVIs express, o
subVIs estndar.
Cableado
de datos
Terminal
grfica
SubVI
Estructura
de ciclo
While
Barra de
herramientas
del diagrama a
bloques
Funcin de
dividir
Constante
numrica
Funcin
Retardo
tiempo
Terminal de control
booleano
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 9 Dr. Gerardo Trujillo Schiaffino
[Link]. SubVI express
A partir de LabVIEW 7.0 se introduce un nuevo tipo de sub-instrumento virtual llamado
VIs Express. Estos son VIs interactivos que tienen como medio de configuracin una ventana
de dialogo que permite al usuario personalizar la funcionalidad del VI Express seleccionando
los distintos parmetros y argumentos. LabVIEW entonces genera un subVI de funcionalidad
especfica basado en estos argumentos. La figura 1.6 muestra un ejemplo de un VI Express
con su ventana de configuracin abierta.
Fig. 1.6. Ejemplo de un subVI express
Cuando se coloca por primera vez un subVI express en el diagrama a bloques de un
programa de LabVIEW, su ventana de configuracin se abre automticamente para permitir la
configuracin inicial del subVI; una vez finalizada la configuracin inicial el subVi se recompila
quedando con la funcionalidad seleccionada. Si fuera necesario realizar cambios en la
configuracin de un subVI express, es necesario hacer un doble clic sobre el subVI para abrir
de nuevo la ventana de configuracin.
Su rpida reconfiguracin hace de estos sub-instrumentos una herramienta muy
efectiva para economizar tiempo de desarrollo del programa, es conveniente recordar que uno
de los propsitos principales de LabVIEW es precisamente el ahorrar tiempo en la
implementacin de los programas. Sin embargo, esta ventaja en velocidad de desarrollo se
contrapone con la flexibilidad ya no es posible tener acceso el cdigo interno de estos subVis
ni hacer cambios o modificaciones en funcionalidad fuera de las caractersticas configurables
desde su ventana.
Una vez colocados en el diagrama a bloques los subVIs express se pueden reconocer
por el recuadro azul cielo que rodea el icono del SubVI. Para efectos de ahorro de espacio en
el diagrama este recuadro puede ser removido.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 10 Dr. Gerardo Trujillo Schiaffino
[Link]. SubVI estndar
Por otro lado los sub-instrumentos estndar, que son un concepto clsico desde las
primeras versiones de LabVIEW, son en realidad programas hechos en LabVIEW con su
propio panel frontal y diagrama a bloques que son encapsulados dentro de un icono conector
para ser usados adentro de otro VI. La figura 1.7 muestra un ejemplo de un VI estndar.
Fig. 1.7. Ejemplo de un subVI estndar
Estos sub-instrumentos no son tan rpidamente reconfigurables como los express, sin
embargo haciendo doble clic sobre su icono se abre la ventana de su panel frontal y se tiene
acceso a su diagrama a bloques, el cual de ser necesario puede ser modificado.
Una vez colocados en el diagrama a bloques los subVIs estndar se pueden reconocer
por el recuadro amarillo que rodea el icono del SubVI. Para efectos de ahorro de espacio en el
diagrama este recuadro puede ser removido.
En secciones posteriores los subVis estndar sern tratados a detalle.
[Link]. Funciones
Las funciones son los bloques de construccin bsicos de todos los VIs. Las funciones
no tienen un panel frontal o un diagrama de bloque, fueron desarrollados en lenguaje C y
constituyen las funciones primitivas de LabVIEW. La figura 1.8 muestra el ejemplo de una
funcin aritmtica de multiplicacin.
Fig. 1.8. Ejemplo de una funcin
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 11 Dr. Gerardo Trujillo Schiaffino
1.1.4 Paleta de Controles.
La paleta de controles (Controls) se utiliza para colocar los controles e indicadores en
el panel frontal. La paleta de controles est disponible solamente en el panel frontal.
Para acceder a la paleta de controles, seleccione View Controls Palette en la barra
de men principal, esto activa de manera fija la paleta de controles o haga clic derecho en el
espacio de trabajo en el panel frontal esto la activa de manera temporal. Para desaparecer la
paleta de controles fija presione el botn de cerrar, caracterstico de Windows, en la parte
superior derecha de la paleta, para cerrar la paleta temporal haga clic izquierdo sobre el panel
o clic derecho sobre la misma paleta de controles. Para fijar la paleta temporal haga clic sobre
el sujetador de la esquina superior izquierda.
a) b)
Fig. 1.9. Paleta de controles a) fija, b) temporal.
En esta paleta los controles e indicadores estn agrupados de acuerdo al tipo de
variable o aplicacin correspondiente: controles e indicadores numricos, controles e
indicadores booleanos, controles e indicadores de texto, indicadores de grficos, entradas /
salidas, etc. Tambin es tan clasificados en diferentes categoras como modernos, de sistema,
clsicos, express, .NET & ActiveX o seleccin del usuario.
Las distintas categoras contienen un sin nmero de grupos de controles e indicadores
diferentes en funcionalidad o en presentacin.
Aunque por default cuando se llama a la paleta de funciones aparece seleccionada la
categora de controles e indicadores modernos, es posible cambiar esta seleccin y utilizar los
elementos de cualquier otra categora, e incluso es posible activarlas todas para mostrar
simultneamente todos los grupos y tipos de controles disponibles tal como se muestra en la
figura 1.10. Para lograr esto se parte de la paleta fija y se van seleccionado una a una las
distintas categoras.
Si esto mismo se intenta con la paleta temporal, solo se podr tener acceso a una
categora a la vez.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 12 Dr. Gerardo Trujillo Schiaffino
Fig. 1.10. Despliegue simultneo de todas las categoras de controles e indicadores en la paleta de controles.
Para colocar un control o indicador en el panel primero se selecciona la categora,
luego el grupo y finalmente el elemento deseado, el cual se arrastra y se coloca en la posicin
que tendr sobre el panel. La figura 1.11 muestra el ejemplo de colocacin de un control
numrico tipo dial sobre el panel frontal
Fig. 1.11. Colocacin de un control sobre el panel frontal.
1) clic
3) Arrastre
4) clic
2) clic
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 13 Dr. Gerardo Trujillo Schiaffino
1.1.5 Paleta de Funciones.
La paleta de funciones (Functions), se utiliza para construir un diagrama de bloque. La
paleta de funciones est disponible solamente en el diagrama de bloque. Seleccione View
Functions Palette en la barra de men esto activa de manera fija la paleta de funciones o
haga clic derecho en el espacio de trabajo del diagrama esto la activa de manera temporal.
Para desaparecer la paleta de funciones fija presione el botn de cerrar, caracterstico de
Windows, en la parte superior derecha de la paleta, para cerrar la paleta temporal haga clic
izquierdo sobre el diagrama o clic derecho sobre la misma paleta de controles. Para fijar la
paleta temporal haga clic sobre el sujetador de la esquina superior izquierda.
a) b)
Fig. 1.12. Paleta de funciones a) fija, b) temporal.
Al igual que en la paleta de controles, en la paleta de funciones, estas estn ordenadas
en grupos dentro de diferentes categoras: programacin, instrumentos de entrada/salida,
visin y movimiento, matemticas, procesamiento de seales, comunicacin de datos,
conectividad y express.
Esta paleta opera de manera muy similar a la paleta de controles del panel, tanto en su
forma fija como temporal.
La figura 1.13 muestra el ejemplo de la colocacin de una funcin numrica de
generacin de un nmero aleatorio en el diagrama a bloques.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 14 Dr. Gerardo Trujillo Schiaffino
Fig. 1.13. Colocacin de una funcin sobre el diagrama a bloques.
1.1.6. Paleta de Herramientas.
Por ser LabVIEW un lenguaje grfico, la mayor parte del manejo del ambiente de
programacin se hace a travs del ratn o dispositivo de sealizacin de la computadora, esto
implica entonces la necesidad poder cambiar la funcionalidad del apuntador para ejecutar
tareas muy diversas.
La paleta de herramientas es una paleta flotante que permite cambiar la funcionalidad
del cursor. Esta paleta contiene herramientas de edicin y depuracin Generalmente se
encuentra activada por default, sin embargo, de no ser as se le puede activar manualmente
seleccionando WindowShow Tools Palette en la barra de men principal. Para desaparecer
la paleta de funciones presione el botn de cerrar, caracterstico de Windows, en la parte
superior derecha de la paleta. Esta paleta permite seleccionar entre 11 herramientas
diferentes. La figura 1.14 muestra la apariencia que tiene la paleta de herramientas.
Fig. 1.14. Paleta estndar de herramientas
1) clic
3) Arrastre 4) clic
2) clic
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 15 Dr. Gerardo Trujillo Schiaffino
[Link]. Herramienta automtica
Si la herramienta de seleccin automtica est habilitada y usted mueve el cursor
sobre un objeto en el panel frontal o en el diagrama de bloque, LabVIEW automticamente
selecciona la herramienta correspondiente de la paleta de controles. Cambie a la herramienta
de seleccin automtica tecleando el botn de Seleccin de Herramienta Automtica en la
paleta de Herramientas.
[Link]. Herramienta de operacin
Utilice la herramienta de operacin para cambiar valores o para seleccionar texto de un
control.
[Link]. Herramienta de posicin / seleccin
Utilice la herramienta de posicionamiento para seleccionar, mover o redimensionar
objetos. La herramienta de posicionamiento cambia las formas cuando se mueve sobre una
esquina de un objeto reajustable permitiendo cambiar su tamao.
[Link]. Herramienta de Etiquetado
Utilice la herramienta de etiquetado para editar textos y crear etiquetas libres. La
herramienta de etiquetado se convierte en cursor cuando usted crea etiquetas libres.
[Link]. Herramienta de cableado
Utilice la herramienta de cableado para cablear objetos juntos en el diagrama de
bloque y establecer el flujo de los datos en el programa.
[Link]. Herramienta de men
Utilice la herramienta de men emergente para acceder a los mens emergentes de los
objetos colocados en el panel frontal o en el diagrama de bloque, para modificar sus
configuraciones.
[Link]. Herramienta de arrastre
Utilice la herramienta de arrastre para mover todo el panel frontal o diagrama de
bloque.
[Link]. Herramienta de punto de quiebre
Utilice la herramienta de punto de quiebre para colocar puntos de quiebre a lo largo del
diagrama de bloque y detener momentneamente la ejecucin del programa con el fin de
depurar el programa.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 16 Dr. Gerardo Trujillo Schiaffino
[Link]. Herramienta de punto de prueba
Utilice la herramienta de punto de prueba para colocar puntos de prueba a lo largo del
diagrama de bloque y observar los valores correspondientes durante la ejecucin del programa
con el fin de depurar el programa.
[Link]. Herramienta de muestra de color
Utilice la herramienta de muestra de color para obtener una muestra (copia) del color
de un objeto.
[Link]. Herramienta de colorear
Utilice la herramienta de colorear para cambiar el color de un objeto.
1.1.7. Barra de Herramientas.
La barra de herramientas es una barra fija que contiene herramientas de ejecucin, y
cosmticas, se encuentra tanto en el panel frontal como en el diagrama de bloque, ambas
presentan casi las mismas herramientas salvo una herramienta cosmtica que solo aparece en
el panel frontal y cuatro herramienta de depuracin que solo aparecen en el diagrama de
bloque. La figura 1.15 muestra las barras de herramientas del a) panel frontal y b) diagrama de
bloque
a)
b)
Fig. 1.15. Barra de herramientas del a) panel frontal, b) diagrama de bloque
[Link]. Botn de ejecucin
Pulse el botn de ejecucin (Run) para ejecutar el VI. Mientras el VI se est
ejecutando, el botn de ejecucin aparecer con una flecha negra si es que el VI es un VI
principal, lo que significa que no ha sido llamado por otro VI y por lo tanto este no es un subVI.
[Link]. Botn de ejecucin contina
Pulse el botn de ejecucin continua (Continuous Run) para ejecutar el VI hasta que
el botn de cancelacin de ejecucin o de pausa sea presionado. Usted tambin puede pulsar
este botn nuevamente para deshabilitar la ejecucin continua.
[Link]. Botn de cancelacin
Mientras el VI se est ejecutando, El botn de cancelacin de ejecucin (Abort
Execution) aparece. Presione este botn para detener el VI inmediatamente.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 17 Dr. Gerardo Trujillo Schiaffino
NOTA: Evite usar el botn de cancelacin de ejecucin (Abort Execution) para
detener el VI. Ya sea deje que el VI complete su flujo de datos o disee un mtodo para
detener el VI programticamente. Al hacer esto el VI se encuentra en un estado conocido. Por
ejemplo, coloque un botn en el panel frontal que detenga el VI cuando sea presionado.
[Link]. Botn de pausa
Pulse el botn de pausa (Pause) para detener momentneamente la ejecucin de un
VI. Cuando usted presiona el botn de Pausa, LabVIEW seala la posicin donde usted
detuvo la ejecucin en el diagrama de bloque. Pulse el botn de Pausa nuevamente para que
el VI contine ejecutndose.
[Link]. Men de configuracin de textos
Seleccione el men Configuracin de Textos (Text Settings) para cambiar el tipo de
fuente (letra) del VI, incluyendo el tamao, estilo y color.
[Link]. Men de alineacin de objetos
Seleccione el men Alineacin de Objetos (Align Objects) para alinear objetos con
respecto a los ejes, incluyendo eje vertical, superior, izquierdo, etc.
[Link]. Men de distribucin de objetos
Seleccione el men Distribucin de Objetos (Distribute Objects) para espaciar objetos
uniformemente, incluyendo espacios vacos, compresiones, etc.
[Link]. Men de redimensionamiento
Seleccione el Redimensionamiento de Objetos (Resize Objects) para cambiar el
ancho y alto de objetos del panel frontal. Este men solo est disponible en el panel frontal
[Link]. Men de reordenamiento
Seleccione el men Reordenamiento (Reorder) cuando tenga objetos superpuestos
unos con otros y usted quiera definir cual est enfrente de quien y cual atrs. Seleccione uno
de los objetos con la herramienta de posicionamiento y seleccione entre Move Forward
(mover hacia adelante), Move Backward (mover hacia atrs), Move to Front (mover al frente)
y Move to Back (mover hacia atrs).
NOTA: Los siguientes botones solo estn disponibles en el diagrama de bloque.
[Link]. Botn de ejecucin resaltada
Pulse en el botn de ejecucin resaltada (Highlight Execution) para ver el flujo de
informacin en el diagrama de bloques. Pulse el botn nuevamente para detener este tipo de
ejecucin resaltada.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 18 Dr. Gerardo Trujillo Schiaffino
[Link]. Botn de entrada al ciclo
Pulse el botn de entrada al ciclo (Step Into) para entrar un paso adentro de un ciclo,
un SubVI, etc. Entrando un paso a la vez adentro de un VI le permite introducirse en la VI nodo
a nodo. Cada nodo se resalta para sealar cuando est listo para ejecutarse. Al entrar un paso
adentro de un nodo usted est listo para caminar paso a paso adentro del nodo.
[Link]. Botn de saltar ciclo
Pulse el botn de saltar ciclo (Step Over) para posicionarse encima de un ciclo, un
SubVI, etc. Al posicionarse encima del nodo, usted ejecuta el nodo sin entrar paso a paso
adentro del nodo.
[Link]. Botn de salida del ciclo
Pulse el botn de Salida del ciclo (Step Over) para salirse de un ciclo, SubVI, etc. Al
posicionarse fuera del nodo, usted completa la ejecucin de un nodo y puede moverse al
siguiente nodo.
Ejercicio 1.1 Abrir y Ejecutar un VI
1. Seleccione Start Programs National Instruments LabVIEW 7.0 LabVIEW para
lanzar LabVIEW. Aparece la ventana de dialogo de LabVIEW.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 19 Dr. Gerardo Trujillo Schiaffino
2. Seleccione Find Examples del recurso Examples. La ventana de dialogo que aparece da la
lista y enlaces a todos los VIs de ejemplo de LabVIEW.
3. Usted puede buscar ejemplo por categoras, o puede utilizar palabras claves en su
bsqueda. Haga clic en la vieta de bsqueda (Search) para abrir el buscador de palabras
claves.
4. En la caja de Enter Keyword(s) escriba Signal.
5. Una lista de temas relacionados aparecer en la ventana de ejemplos (examples). Haga
doble-clic en signals, esto generara una lista de ejemplos en el lado derecho.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 20 Dr. Gerardo Trujillo Schiaffino
6. Haga clic en cualquier programa para ver una descripcin detallada del ejemplo. Haga doble
clic sobre Signal Generation and [Link] para lanzar el ejemplo. Esto abrir el
panel frontal del VI Signal Generation and [Link]
7. Examine el VI y ejectelo. Cambie las frecuencias y tipos de seales de entradas y note
como el despliegue de las graficas cambia. Cambie la ventana de procesamiento de
seales (Signal Processing Window) y opciones de filtrado (Filter options). Despus de
que haya examinado el VI y las diferentes opciones que puede cambiar, pare el VI
presionando el botn de paro (Stop button).
1.2 PARADIGMA DE PROGRAMACION POR FLUJO DE DATOS.
Como se ha mencionado con anterioridad, LabVIEW se basa en un nuevo paradigma:
la programacin por flujo de datos; este concepto es tan antiguo y tradicional en la enseanza
de los principios bsicos de la programacin que resulta innovador al ser aplicado
directamente como un lenguaje.
Generalmente, en cualquier curso inicial de programacin, lo primero que se ensea es
la elaboracin de un diagrama de flujo para representar la lgica de nuestro programa, de ah
se sigue una secuencia de pasos hasta implementacin del programa en algn lenguaje de
programacin. LabVIEW es un compilador grfico en el cual se construye un diagrama con el
flujo de los datos del programa que se quiere desarrollar y listo, este diagrama que representa
nuestro lenguaje de programacin se compila para ser ejecutado.
A continuacin se describen los aspectos fundamentales sobre este paradigma de
programacin.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 21 Dr. Gerardo Trujillo Schiaffino
1.2.1 Creacin de un Instrumento Virtual
Cuando se coloca un objeto en el panel frontal, una terminal es creada en el diagrama
de bloques. Estas terminales le dan acceso a los objetos del panel frontal del cdigo creado
mediante el diagrama de bloque.
Cada terminal contiene informacin til referente al objeto al cual corresponde en el
panel frontal. Por ejemplo, el color y los smbolos proporcionan el tipo de dato: las variables
numricas de punto flotante son representados con terminales anaranjadas y las letras DBL,
SGL o EXT (doble precisin, precisin sencilla o precisin extendida); las variables numricas
enteras tienen terminales azules y las letras I8, I16, I32, U8, U16, U32 (enteros de 8,16 y 32
bits o enteros sin signo del 8,16 y 32 bits respectivamente); las variables booleanas tienen
terminales verdes y son representadas por las letras TF (true/false); las variables string
(cadenas de caracteres) tienen terminales de color rosa y las letras ABC.
En general, las terminales anaranjadas deben unirse (cablearse) con las terminales
anaranjadas, verdes con verdes, y as sucesivamente. Pero, esta no es una regla que no se
puede romper; por ejemplo LabVIEW permitir al usuario conectar una terminal azul (valor
entero) a una terminal anaranjada (valor fraccional) o viceversa. Pero en la mayora de casos,
busque mejor una igualdad en colores.
Los controles tienen una flecha en el lado derecho y tienen un borde grueso. Los
indicadores tienen una flecha en el lado izquierdo y un borde fino. Reglas lgicas pueden ser
aplicadas al conectar en LabVIEW: Cada cable debe tener una (pero solo una) fuente (o
control), y cada cable puede tener varios destinos (o indicadores). El programa mostrado en la
figura 1.16 toma datos de los controles A y B y pasa valores a una funcin de adicin y a una
funcin de resta. Los resultados son mostrados en los indicadores A+B y A-B respectivamente.
a) b)
Fig. 1.16. Ejemplo de un instrumento virtual, a) panel frontal, b) diagrama de bloque
1.2.2 Cableado de funciones en el diagrama de bloque
Adems de los terminales del panel frontal, el diagrama de bloques contiene funciones.
Cada funcin puede tener mltiples terminales de entradas y salidas. La conexin de estas
terminales es una parte muy importante de la programacin en LabVIEW.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 22 Dr. Gerardo Trujillo Schiaffino
Una vez que se tenga cierta experiencia programado en LabVIEW, la conexin de
cables se le har ms fcil. Primero puede que necesite ayuda. En seguida se le muestra
algunas recomendaciones para comenzar:
La herramienta para conectar o de cableado es utilizada para conectarse a los nodos
de las funciones. Cuando apunte con la herramienta de cableado, apunte con el extremo del
cable que cuelga del carrete. Aqu es donde el cable ser colocado. La figura 1.17 muestra el
punto sensible de la herramienta de cableado.
Fig. 1.17. Punto sensible de la herramienta de cableado
Mientras se mueve la herramienta de cableado sobre las funciones, observe la vieta
amarilla que aparece. Esto le dir el nombre de la terminal al que se est conectando.
Mientras se mueva la herramienta de cableado encima de una terminal, esta va a mostrar
informacin. Esto le ayudara a identificar donde se va a unir el cable. La figura 1.18 muestra
un ejemplo de este tipo de identificacin de terminales.
Fig. 1.18. Identificacin de terminales
Para ms ayuda con los terminales, haga clic derecho en la funcin y seleccione
Visible Items >>Terminals. Un dibujo de la funcin ser colocada atrs para revelar las
terminales de la conexin. Note los colores - estos corresponden a los tipos de datos utilizados
por los terminales del panel frontal. La figura 1.19 muestra un ejemplo al respecto.
Fig. 1.19. Opcin para mostrar terminales
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 23 Dr. Gerardo Trujillo Schiaffino
LabVIEW cablea automticamente los objetos a medida que usted los coloca en el
diagrama de bloque. Tambin puede cablear automticamente objetos que ya estn colocados
en el diagrama de bloque. LabVIEW conecta la terminal que mejor combina (match) y deja las
terminales que no combinan (match) sin conectar. A medida que usted mueve un objeto
seleccionado cerca de otros objetos en el diagrama de bloque, LabVIEW dibuja cables
temporales para mostrarle conexiones validas. Cuando usted suelta el botn del ratn para
poner el objeto en el diagrama de bloque, LabVIEW conecta automticamente los cables.
Fig. 1.20. Cableado de objetos en el diagrama de bloque
Cambie al cableado automtico presionando el espaciador (spacebar) mientras mueve
un objeto utilizando la herramienta de posicionamiento (Positioning tool). Puede ajustarlas
opciones del cableado automtico seleccionando Tools >> Options y seleccionando Block
Diagram de el men superior principal.
No se preocupe por el color de los cables. LabVIEW seleccionar automticamente el
cable correcto y adecuado para cada situacin.
Fig. 1.21. Opcin de limpieza de cables
Si el cableado no se mira muy bien, haga clic derecho en el cable que se desea
arreglar y escoja la opcin de Clean Up Wire (Limpieza del Cable) para que automticamente
el cable haga su ruta de nuevo.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 24 Dr. Gerardo Trujillo Schiaffino
El cableado es muy flexible en LabVIEW. Experimente con combinaciones de clics y/o
teclas cuando este cableando. Aqu hay algunas de las caractersticas ms a menudo
utilizadas.
Fig. 1.22. Seleccin de cables
El hacer un simple, doble, y triple clic en el cable selecciona el cable para moverlo o
para borrarlo, tal como se muestra en la figura 1.22
El hacer un clic mientras se est cableando hace un doblez en el cable.
Haciendo clic derecho o presionando el botn Esc mientras se est cableando cancela
la operacin de cableado.
1.2.3 Programacin por Flujo de Datos
LabVIEW sigue un modelo de flujo de datos para correr los VIs. Un nodo del diagrama
de bloque se ejecuta cuando todas sus entradas estn disponibles. Cuando un nodo completa
la ejecucin, suministra datos a sus terminales de salida y pasa los datos de salida al siguiente
nodo en la trayectoria del flujo de datos. Visual Basic, C++, JAVA y otros lenguajes de
programacin basados en texto, siguen un modelo de control de flujo de la ejecucin de un
programa. En control de flujo, el orden secuencial de los elementos del programa determina el
orden de ejecucin de un programa.
Considere el diagrama de bloque que se muestra en la figura 1.23. Este suma dos
nmeros y luego resta 50 del resultado de la suma. En este caso, el diagrama de bloque se
ejecuta de izquierda a derecha, no porque los objetos estn puestos en ese orden, sino porque
una de las entradas de la funcin de resta no es vlida hasta que la funcin de suma o adicin
haya terminado su ejecucin y pasado los datos a la funcin de resta. Recuerde que un nodo
se ejecuta solamente cuando tiene datos disponibles en todas sus terminales de entrada, y
suministra datos a sus terminales de salidas solamente cuando termina su ejecucin.
Fig. 1.23. Ejemplo de cdigo dependiente
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 25 Dr. Gerardo Trujillo Schiaffino
En el cdigo de la figura 1.24, considere cual segmento del cdigo se ejecutara primero
la suma, el nmero aleatorio, o la funcin de divisin. No se puede saber porque las entradas
a las funciones de suma y divisin estn disponibles al mismo tiempo, y la funcin de nmero
aleatorio no tiene entradas. En una situacin en donde un segmento del cdigo se debe
ejecutar antes que otro, y no existe dependencia de datos entre las funciones, utilice una
estructura de Secuencia para forzar el orden de la ejecucin.
Fig. 1.24. Ejemplo de cdigo independiente
Ejercicio 1.2 Construir un Instrumento virtual para convertir de C a F
1. Construya un VI que convierta de C a F.
2. Cuando lo ejecute, el VI deber de tomar un valor de entrada (C), multiplicarlo por 1.8,
sumarle 32, y desplegar el resultado (F).
3. El panel frontal deber mostrar el valor de entrada y el resultado.
4. Guarde el VI como Conversin C a [Link]
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 26 Dr. Gerardo Trujillo Schiaffino
1.3. OPCIONES DE AYUDA
Utilice la ventana de Context Help (Ayuda Contextual) y LabVIEW Help (Ayuda de
LabViEW) para ayudarle a construir o editar los VIs. Refirase a la ayuda de LabVIEW y a los
manuales para ms informacin.
1.3.1. Ventana de Ayuda Contextual (Context Help Window )
Para desplegar la ventana de Context Help, seleccione Help>>Show Context Help o
presione las teclas <Ctrl-H>. Cuando mueva el cursor sobre el panel frontal y los objetos del
diagrama de bloque, la ventana de Context Help despliega el icono de los subVIs, funciones,
constantes, controles e indicadores, con cables adjuntos a cada una de sus terminales.
Cuando mueva el cursor sobre la caja de opciones de dialogo, la ventana de Context Help
despliega descripciones de esas opciones. En la ventana, las conexiones requeridas estn en
negrilla, las conexiones recomendadas en texto normal, y las conexiones opcionales estn
poco claras o no aparecen. La figura 1.25 presenta un ejemplo de la ventana de Context Help.
Fig. 1.25. Ejemplo de ventana de ayuda contextual
Haga un clic en el botn de Simple/Detailed Context Help localizado en la esquina
inferior izquierda de la ventana de Context Help para distinguir entre la ayuda contextual
simple y detallada. El modo simple enfatiza las conexiones importantes. Las terminales
opcionales son mostradas por segmentos de cables, informndole de la existencia de otras
conexiones.
Haga clic en el botn de Lock Context Help para congelar el contenido actual de la
ventana de la Context Help. Cuando los contenidos estn congelados, el mover el cursor
sobre otros objetos no cambia los contenidos de la ventana. Para descongelar la ventana,
haga clic nuevamente en el botn. Usted tambin puede tener acceso a esta opcin desde el
men de ayuda (Help).
Haga clic en el botn de More Help (mas ayuda) para desplegar el tema
correspondiente en LabVIEW Help, el cual describe el objeto en forma detallada.
Ayuda en lnea
Congelar Ayuda
Ayuda del Diagrama
Simple/Complejo
Referencias en Lnea
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 27 Dr. Gerardo Trujillo Schiaffino
1.3.2. LabVIEW Help (Ayuda de LabVIEW)
Puede acceder a LabVIEW Help ya sea haciendo clic en el botn de More Help en la
ventana de Context Help, seleccionando HelpVI, Function, & How-To Help, haciendo clic
en la oracin Click here for more help en la ventana de Context Help o presionando <Ctrl-
?>.
Fig. 1.26. Ejemplo de ventana de ayuda de LabVIEWl
La ayuda LabVIEW Help contiene descripciones detalladas de casi todos los mens,
herramientas, VIs y funciones. Tambin incluye instrucciones paso-a-paso para la utilizacin
de muchas caractersticas de LabVIEW y enlaces al Tutorial de LabVIEW, versiones en PDF
de todos los manuales y Notas de Aplicacin de LabVIEW, adems de recursos de soporte
tcnico en el sitio web de National Instruments ([Link]).
1.3.3. Tips y Atajos en LabVIEW
LabVIEW tiene muchas teclas de atajo que hacen el trabajo ms fcil.
Mientras que la Herramienta de Seleccin Automtica (Automatic Selection Tool) es
muy til para escoger la herramienta que usted deseara utilizar en LabVIEW, a veces hay
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 28 Dr. Gerardo Trujillo Schiaffino
casos cuando usted desea controles manuales. Utilice la tecla Tab para cambiar entre las
cuatro herramientas ms comunes Operate Value (valor de operacion), Position/Size/Select,
(Posicin/Tamao/Seleccin), Edit Text (editar texto), Set Color on Front Panel (establecer
color en panel frontal), Connect wire on Block Diagram (conectar cable en el diagrama de
bloque). Una vez que se ha terminado con la seleccin de herramientas, puede presionar
<Shift-Tab> para activar la Herramienta de Seleccin Automtica.
En el dialogo de Tools >> Options , hay muchas opciones configurables para el
Panel Frontal, Diagrama de Bloque, Colores, Impresin y mucho mas.
Similar a las opciones de LabVIEW, se pueden configurar propiedades especificas del
VI al ir a File >> VI Properties Ah se puede documentar el VI, cambiar la apariencia de la
ventana, y personalizarlos de varias maneras.
1.4. TCNICAS PARA DEPURACIN DE ERRORES.
Cuando el VI contiene errores de sintaxis y por lo tanto no es posible ejecutarlo, se
despliega una flecha quebrada en el botn de correr en la paleta de herramientas.
1.4.1. Lista de errores
Para hacer una lista de los errores, haga clic en la flecha quebrada. Para localizar el
objeto malo, haga clic en el mensaje del error.
Fig. 1.27. Lista de errores
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 29 Dr. Gerardo Trujillo Schiaffino
1.4.2. Resaltando la Ejecucin:
Anima el diagrama y traza el flujo de datos, permitindole ver los valores intermedios.
Haga clic en el bombillo incandescente (light bulb) en la barra de herramientas
Fig. 1.28. Ejecucin resaltada
1.4.3. Ventanas de prueba (Probe):
Utilizado para ver los valores en cualquier cable del diagrama de bloque. Haga clic en
los cables con la herramienta Probe o haga clic derecho en el cable para seleccionar Probe.
Fig. 1.29. Puntos de prueba
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 30 Dr. Gerardo Trujillo Schiaffino
1.4.4. Punto de Paro (Breakpoint):
Coloca pausas en diferentes lugares del diagrama. Haga clic en los cables o en los
objetos con la herramienta de Punto de Paro para colocar los puntos de paro. El punto de
quiebre quedar resaltado con un marco color rojo.
Fig. 1.30. Punto de quiebre
2.5. DOCUMENTACIN DEL VI.
Al abrir VIs properties (propiedades del VI) un desarrollador puede aadir
documentacin a su VI. La documentacin colocada en el Description field (espacio para la
descripcin) de la ventana Documentation (documentacin) del VI es mostrada en Context
Help (ayuda en contexto), y se imprime con el VI.
Si un usuario tiene una aplicacin que est siendo desarrollada continuamente, l o
ella pueden seguir los cambios en el desarrollo con Revision History (historial de revisiones),
tambin encontrado en VI Properties.
Cualquier control o indicador en el Panel Frontal puede ser documentado al hacer clic
derecho con el ratn y elegir Description and Tip (Descripcin y sugerencia) La
informacin de descripcin aparece en el men Context Help (ayuda en contexto) cuando un
usuario pasa el cursor sobre el objeto, y la informacin de sugerencia es mostrada en una
pequea ventana pegada al cursor cuando el usuario pausa el movimiento del cursor sobre el
objeto.
Al igual que los comentarios en un lenguaje basado en texto, el desarrollador podra
querer explicar una porcin de su cdigo, o proveer direcciones en el panel de frontal.
Cualquiera de estas necesidades puede ser cumplida al usar la herramienta de etiquetado
(labeling tool) para crear una caja de texto libre con tantas instrucciones o explicaciones
como sean necesarias.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 31 Dr. Gerardo Trujillo Schiaffino
1.6. SUB-INSTRUMENTOS VIRTUALES (SubVI).
Despus de haber construido un VI, y creado su propio icono y panel de conexin, este
puede ser utilizado en otro VI. Un VI dentro de otro VI se llama un subVI. Un subVI
corresponde a una subrutina en lenguajes de programacin basados en texto. La utilizacin de
subVIs le ayuda a manejar cambios y a eliminar errores del diagrama de bloque rpidamente.
1.6.1 Conceptos Bsicos
Los sub-instrumentos virtuales (subVI), son en realidad VIs que se utilizan dentro de
otros VIs como funciones o subrutinas, por lo tanto tienen sus propios panel frontal y diagrama
de bloque, los cuales se pueden acceder haciendo doble click sobre el icono del subVI.
Fig. 1.31. Sub-instrumento virtual
As como en las terminales de control o de indicador en el diagrama de bloque pueden
ser vistos como un icono o como una simple terminal, los subVIs pueden ser vistos como un
icono, un nodo expandible o un nodo expandido. Las diferentes vistas dependen en la
preferencia del usuario y no cambia la funcionalidad del subVI. En sus modos expandible y
expendido el campo amarillo designa un VI estndar para diferenciarlo de los VI express que
presentan un campo azul.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 32 Dr. Gerardo Trujillo Schiaffino
Fig. 1.32. Presentaciones de un sub-VI
Cada VI muestra un icono, mostrado arriba, en la esquina superior derecha de las
ventanas del panel frontal y del diagrama de bloque. Un icono es una representacin grafica
de un VI. Puede contener texto, imgenes, o una combinacin de ambos. Si usted utiliza un VI
como subVI, el icono identifica el subVI en el diagrama de bloque del VI.
El conector muestra terminales disponibles para la transferencia de datos hacia y
desde el subVI. Hay varios patrones de conectores para elegir. Haga un clic-derecho sobre el
conector y seleccione el patrn del men de patrones. A partir de ah usted puede asignar
controles e indicadores en el panel frontal al conector terminal, como veremos ms adelante.
Fig. 1.33. Icono conector
1.6.2 Creacin de SubVIs
Como se mencion con anterioridad un subVI es en realidad un VI empaquetado o
encapsulado que se puede utilizar dentro de otro VI. Para convertir un VI en subVI se siguen
tres sencillos pasos:
1) disear un icono
2) crear el conector
3) asignar terminales.
Icono
Conector
Icono Nodo Expandible Nodo Expandido
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 33 Dr. Gerardo Trujillo Schiaffino
[Link]. Diseo del Icono.
Para crear iconos personalizados para reemplazar los iconos predeterminados se hace
clic-derecho en la esquina superior derecha del panel frontal o del diagrama de bloques y se
selecciona Edit Icon del men de atajo o bien haciendo un doble clic en el icono en la esquina
superior derecha del panel frontal. Tambin se puede corregir iconos seleccionando File >> VI
Properties, seleccionando General del Menu Category, y haciendo clic en el botn de editar
(Edit Icon). Utilice las herramientas del lado izquierdo de la casilla de dialogo del Icon Editor
para crear el diseo del icono en el rea de edicin. El tamao normal de la imagen del icono
aparece en la casilla apropiada en la parte derecha del rea de edicin.
Fig. 1.34. Editor de Iconos
Tambin se puede arrastrar un grfico desde cualquier archivo y colocarlo en la
esquina superior derecha del panel frontal o del diagrama de bloque. LabVIEW convierte el
grfico a un icono de 32 32 pxeles.
[Link]. Creacin del Conector
Para utilizar un VI como un subVI, usted necesita crear un conector. El conector es una
serie de terminales que corresponden a los controles y a los indicadores de ese VI, similar a la
lista de parmetros de una funcin basada en un lenguaje de programacin de texto. El
conector define las entradas y las salidas que usted puede cablear al VI para que pueda
utilizarlo como subVI.
Defina las conexiones asignando un control del panel frontal o un indicador a cada una
de las terminales del conector. Para definir un conector, de un clic-derecho sobre el icono en la
esquina superior derecha de la ventana del panel frontal y seleccione Show Connector del
men. El conector substituye el icono. Cada rectngulo en el conector representa una terminal.
Utilice los rectngulos para asignar entradas y salidas. El nmero de terminales que LabVIEW
muestra en el conector depende del nmero de controles e indicadores en el panel frontal.
Para el panel frontal mostrado en la figura 1.35, el cual tiene cuatro controles y un indicador,
LabVIEW mostrara cuatro terminales de entradas y una terminal de salida en el conector.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 34 Dr. Gerardo Trujillo Schiaffino
Fig. 1.35. Creacin de conector
[Link]. Asignacin de terminales
Despus que seleccione un patrn para utilizar en su conector, debe definir las
conexiones asignando un control del panel frontal o indicador a cada uno de los terminales
del conector. Cuando usted hace vnculos entre controles e indicadores y el conector, coloque
las entradas en la izquierda y las salidas a la derecha para evitar patrones complicados y poco
claros en su VI. Para asignar una terminal a un control de panel frontal o indicador, presione
una terminal del conector. Presione el control del panel frontal o indicador que usted desea
asignar a la terminal. Haga clic en un rea abierta del panel frontal. La terminal cambia al color
del tipo de datos del control para indicar que usted conect la terminal. Usted tambin puede
seleccionar el control o el indicador primeramente y despus seleccionar la terminal.
Fig. 1.36. Asignacin de terminales
Asegurase que salv el VI despus de haber hecho las asignaciones de las terminales.
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 35 Dr. Gerardo Trujillo Schiaffino
1.6.3 Libreras de SubVIs
Hay varias maneras de organizar sus subVIs. La manera ms comn es organizarlos
por aplicacin. En este caso, son salvados en el mismo directorio o dentro de un archivo de
librera de VI todos los VIs para una aplicacin en particular. Salvarlos en un archivo de
librera permite que usted transporte una aplicacin entera dentro de un solo archivo.
Salvar dentro de una librera es simple. Despus de presionar Save As (guardar
como), presione New VI Library (nueva librera de VI). Esto permitir que usted nombre la
librera, y entonces guardar su VI en l. Para agregar VI subsecuentes, simplemente haga un
doble-clic al archivo .llb de la ventana estndar de guardar, y dar un nombre al VI.
1.6.4 Uso de los subVIs
Despus de construir un VI y crear su icono y conector, usted puede utilizarlo como un
subVI. Para colocar un subVI en el diagrama de bloque, seleccione Functions>> Select VI.
Navegue y haga un doble-clic en el VI que usted desea utilizar como subVI y colquelo en el
diagrama de bloques.
Tambin puede colocar un VI abierto en el diagrama de bloque de otro VI abierto
usando la herramienta de colocacin (Positioning Tool) para hacer clic en el icono en la
esquina superior derecha del panel frontal o diagrama de bloque del VI que usted desea
utilizar como subVI y arrastrar el icono al diagrama de bloque del otro VI.
Fig. 1.37. Acceso a los subVIs en la paleta de funciones
Seleccionar
TSIB: Programacin por Flujo de Datos Fundamentos de LabVIEW
Facultad de Ingeniera UACH 36 Dr. Gerardo Trujillo Schiaffino
Ejercicio 1.3 Convierta en SubVI el programa Conversin C a [Link]
1. Abra el programa Conversin C a [Link].
2. Siguiendo el procedimiento antes descrito edite un icono apropiado
3. Asigne terminales en el conector.
4. Guarde de nuevo el VI como Conversin C a [Link], pero hgalo dentro de una librera de
iinstrumentos virtuales (LLB), asigne a esta librera el nombre Ejercicios + su nmero de
matrcula.
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 37 Dr. Gerardo Trujillo Schiaffino
Unidad II.
ESTRUCTURAS DE PROGRAMACIN.
2. ESTRUCTURAS DE PROGRAMACION.
LabVIEW, como cualquier otro lenguaje de programacin, contiene estructuras de
programacin como ciclos While, ciclos For, estructuras Case, y estructuras de Secuencias
entre otras. El uso correcto de todas estas estructuras de programacin permite desarrollar un
mejor control en la programacin del flujo de los datos. Para tener acceso a todas las
estructuras de programacin se debe seleccionar en la paleta de funciones la sub-paleta
Programming y luego seleccionar la sub-paleta Structures como se muestra en la Figura 2.1.
Fig. 2.1. Acceso a las estructuras en la paleta de funciones
2.1 Ciclo While.
El ciclo While es similar al ciclo Do o al ciclo Repeat-Until en lenguajes de
programacin basados en texto, un ciclo While, como el mostrado en la figura 3.2, ejecuta el
cdigo contenido dentro de este hasta que una cierta condicin sea cumplida, es decir, el ciclo
While ejecuta el cdigo de manera repetida hasta que la terminal del control del condicional,
recibe un valor booleano especfico.
El comportamiento y la apariencia de la terminal de control condicional de iteraciones
puede ser Continue if True (contine si es verdadero), que es el valor por default, o Stop if
True (detngase si es verdadero).
Cuando el control condicional de iteraciones es Continue if True, el ciclo While
ejecuta repetidamente su sub-diagrama hasta que la terminal recibe un valor falso.
click
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 38 Dr. Gerardo Trujillo Schiaffino
Cuando el control condicional de iteraciones es Stop if True, el ciclo While ejecuta
repetidamente su sub-diagrama hasta que la terminal recibe un valor verdadero.
La terminal del contador de iteraciones i, mostrada en la esquina inferior izquierda del
ciclo, contiene el nmero de iteraciones completas que se han realizado. El contador de
iteraciones siempre empieza en 0 durante la primera iteracin.
Fig. 2.2. Estructura de ciclo While.
Cuando un valor entra o sale de la estructura de ciclo, se genera automticamente en
el recuadro de la estructura una terminal llamada tnel, cuando se trata de un tnel de entrada
esta terminal almacena el valor externo para que est disponible en cada iteracin del ciclo,
como este almacenamiento se hace antes de entrar al ciclo, una vez adentro el programa no
puede leer el valor externo.
NOTA IMPORTANTE: Nunca conecte el control del condicional del ciclo de
manera externa pues el programa se quedara ciclado
Cuando se trabaja con ciclos While siempre es conveniente incluir una funcin de
retardo de al menos 1 milisegundo para liberar tiempo de uso del CPU de la computadora, de
no hacerlo la ejecucin del ciclo acapara el procesador haciendo lenta la respuesta del
mismo para otras aplicaciones.
Para colocar ciclos While en el diagrama se selecciona While Loop de la sub-paleta
Structures en el diagrama de bloque como se muestra en la figura 2.3.
Fig. 2.3. Acceso a la estructura de ciclo While en la sub-paleta de estructuras.
click
Tnel
Contador de Iteraciones
Control del Condicional
de Iteraciones
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 39 Dr. Gerardo Trujillo Schiaffino
Una vez que se ha seleccionado esta estructura el cursor del ratn se convierte en un
puntero especial que se utiliza para encerrar la seccin del cdigo que se desea repetir.
Dando un primer click al botn del ratn se define la esquina superior-izquierda de lo que ser
el rea del ciclo, dando un segundo click al botn del ratn se define lo que ser la esquina
inferior izquierda, de esta manera se coloca la frontera del ciclo While alrededor del cdigo
seleccionado. Tambin es posible agregar nodos adicionales arrastrndolos dentro del ciclo
While si es necesario.
Ejercicio 2.1 Uso del Ciclo While
1. Utilizando una estructura de ciclo While crear un programa que genere un nmero aleatorio
cada segundo hasta que el usuario lo detenga.
2. Conecte la terminal del control del condicional del ciclo a un botn de paro en el panel
frontal
3. Coloque la funcin Express VI Time Delay (demora de tiempo) dentro de su ciclo While.
4. Programe un retardo de 1 segundo haciendo doble clck en la funcin Time Delay.
5. Ejecute su programa
6. Guarde el VI como Ciclo [Link]
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 40 Dr. Gerardo Trujillo Schiaffino
2.2 Ciclo For
Un ciclo For, como el mostrado en la figura 3.4, ejecuta el cdigo contenido dentro de
l una cierta cantidad de veces determinada por el valor numrico conectado en la terminal del
control de iteraciones N.
La terminal del contador de iteraciones i, mostrada en la esquina inferior izquierda,
contiene el nmero de iteraciones completas que se han realizado. Al igual que en el ciclo
While el contador de iteraciones siempre empieza en 0 durante la primera iteracin.
Como el ciclo ejecuta la cantidad de iteraciones conectadas a la terminal N y el
contador i siempre empieza con un valor de 0, entonces el valor final del contador de
iteraciones siempre ser igual a N-1.
Considere para los ciclos For el mismo comportamiento de generacin de tneles para
la conexin de valores externos que el definido para los ciclos While.
Fig. 2.4 Estructura de ciclo For.
Coloque ciclos For en su diagrama seleccionando For Loop de la sub-paleta
Structures en el diagrama de bloque como se muestra en la figura 2.5.
Fig. 2.5. Acceso a la estructura de ciclo For en la sub-paleta de estructuras.
click
Contador de Iteraciones
Control de Iteraciones
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 41 Dr. Gerardo Trujillo Schiaffino
Una vez que se ha seleccionado esta estructura el cursor del ratn se convierte en un
puntero especial que se utiliza para encerrar la seccin del cdigo que se incluir dentro del
ciclo. Dando un primer click al botn del ratn se define la esquina superior-izquierda de lo
que ser el rea del ciclo, dando un segundo click al botn del ratn se define lo que ser la
esquina inferior izquierda. Tambin es posible agregar nodos adicionales arrastrndolos dentro
del ciclo si es necesario.
Ejercicio 2.2 Uso del Ciclo For
1. Utilizando una estructura de ciclo For crear un programa que genere 10 nmeros aleatorios
a una velocidad definida por el usuario.
2. Agregue un control de deslizamiento (slider control) al panel de control.
3. Ajuste la escala de este control de deslizamiento de 0 a 5.
4. Conecte este control a la entrada de la funcin Express VI Time Delay (demora de tiempo)
dentro de su ciclo For.
5. Ejecute su programa.
6. Vare el valor del retardo de tiempo.
7. Guarde el VI como Ciclo [Link]
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 42 Dr. Gerardo Trujillo Schiaffino
2.3. Registros de Corrimiento
Los registros de corrimiento son terminales que se pueden activar en las estructuras de
los ciclos While y For para almacenar temporalmente los valores generados en variables
determinadas durante la iteracin actual para ser utilizados en iteraciones posteriores
Para agregar un registro de corrimiento en una estructura de ciclo, haga click derecho
sobre el contorno de la estructura y seleccione Add Shift Register del men emergente como
se muestra en la figura 2.6.
Fig. 2.6 Agregando un registro de corrimiento en la estructura de un ciclo
Por omisin (default) los registros de corrimiento permiten almacenar solo el valor la
iteracin anterior, cuando necesitamos aumentar esta capacidad de almacenamiento para ms
iteraciones, simplemente agregamos elementos de almacenamiento al mismo registro de
corrimiento haciendo un click derecho en la terminal del registro y seleccionando Add Element
del men emergente, tal como se muestra en la figura 2.7. Se pueden adicionar tantos
elementos de memoria como sean necesarios
Fig. 2.7. Agregando elementos de memoria a un registro de corrimiento
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 43 Dr. Gerardo Trujillo Schiaffino
La operacin de los registros de corrimiento es muy sencilla. Antes de iniciar las
iteraciones del ciclo, los elementos de memoria son inicializados con los valores conectados
por fuera del ciclo, este paso es importante debido a que si no se inicializan con un valor
conocido, los elementos de memoria podran contener basura que podra afectar el
desempeo del cdigo.
En la primer iteracin del ciclo, i=0, los elementos de memoria transfieren se contenido
hacia el interior del ciclo y se efecta el cdigo programado, en este paso tambin se asigna
en la terminal correspondiente el nuevo valor que ser almacenado en el registro.
Antes de ejecutar la siguiente iteracin, i=1, el valor almacenado en la iteracin anterior
es transferido al primer elemento de memoria, el valor contenido en este se transfiere al
segundo y as sucesivamente efectuando un corrimiento de los valores almacenados en el
registro, el valor en el ltimo elemento de memoria se elimina y un nuevo valor es almacenado
en la terminal correspondiente para ser transferido en la siguiente iteracin, este
comportamiento se repite para el resto de las iteraciones del ciclo.
La figura 2.8 muestra de manera grfica la operacin de un registro de corrimiento con
cuatro terminales de memoria.
Fig. 2.8. Operacin del registro de corrimiento a)antes de ejecutar i=0, b) i=0, c)antes de ejecutar i=1,2,3N-1,
d) i=1,2,3N-1
Los registros de corrimiento pueden almacenar cualquier tipo de variable y tambin se
pueden activar en los ciclos While.
Ejercicio 2.3 Uso de Registros de Corrimiento
1. Utilizando una estructura de ciclo For con registros de corrimiento crear un VI que genere
cuatro nmeros aleatorios y muestre en el panel, adems de los nmeros aleatorios, el
promedio de ellos.
2. No olvide inicializar el registro de corrimiento
3. Ejecute su programa
4. Guarde el VI como Registros de Corrimiento .vi
a) b) c) d)
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 44 Dr. Gerardo Trujillo Schiaffino
2.4. Nodos de Retroalimentacin
Los nodos de retroalimentacin son una estructura que nos permite retroalimentar un
valor de salida en la iteracin de un ciclo para utilizarlo como entrada en la siguiente iteracin,
su funcin es similar a la de un registro de corrimiento con solo un elemento de memoria.
Al igual que en caso de los registros de corrimiento, es conveniente siempre inicializar
los nodos de retroalimentacin en la terminal respectiva.
Fig. 2.9. Nodo de retroalimentacin en un ciclo For.
Coloque nodos de retroalimentacin en su diagrama seleccionando Feedback Node
de la sub-paleta Structures en el diagrama de bloque como se muestra en la figura 2.10.
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 45 Dr. Gerardo Trujillo Schiaffino
Fig. 2.10. Acceso a los Nodos de Retroalimentacin
Los nodos de retroalimentacin, al igual que los registros de corrimiento, tambin
aceptan cualquier tipo de variable para su almacenamiento.
Ejercicio 2.4 Uso Nodos de Retroalimentacin
1. Utilizando la estructura de un ciclo For con un nodo de retroalimentacin crear un programa
que calcule la funcin n! (n factorial).
n! = (1) - (2) - (S) - (n)
2. El panel debe contener un control numrico para introducir el valor de n (solo nmeros
enteros) y un indicador numrico para mostrar el resultado de n!.
3. Recuerde que la terminal i del contador de iteraciones del ciclo siempre empieza en 0.
4. Utilice la funcin incremento (+1) de la sub-paleta Numeric en la paleta de funciones del
diagrama de bloque para que el primer valor sea 1.
5. No olvide inicializar el Nodo de Retroalimentacin en 1 a travs de su terminal de
inicializacin.
6. Ejecute su programa.
7. Pruebe para diferentes valores de n.
8. Guarde el VI como Nodo de Retroalimentacin .vi
click
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 46 Dr. Gerardo Trujillo Schiaffino
2.5. Case
Las estructuras Case (de caso) nos permiten ejecutar un cdigo especfico
dependiendo del valor de una variable de entrada en una terminal de selector. Solo se puede
ver un cuadro de caso a la vez, as que para cambiar de un cuadro de caso a otro se hace un
click en las flechas correspondientes en el encabezado del cuadro.
Cuando un valor exterior entra a un cuadro de caso se genera un tnel que pone el
mismo valor de entrada disponible para todos los cuadros de caso.
Cuando un valor debe salir de un cuadro de caso, el tnel de salida que se genera
debe tener algn valor asignado para todos los casos o se mostrara en color blanco (vaco) y
generar un error de sintaxis.
Dependiendo del tipo de variable de entrada las estructuras Case pueden ser:
booleano, string (cadenas de caracteres) o numrico.
a) b) c)
Fig. 2.11. Estructura Case a) booleano, b) string, c) numrico.
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 47 Dr. Gerardo Trujillo Schiaffino
Coloque estructuras Case en su diagrama seleccionando Case Structure de la sub-
paleta Structures en el diagrama de bloque como se muestra en la figura 2.12
Fig. 2.12. Acceso a la estructura Case en la paleta de funciones
2.5.1. Case Booleano
Para una entrada Booleana la estructura Case se comporta de manera similar a los
enunciados if-then-else (si-entonces-de otro modo) comunes en otros lenguajes de
programacin basados en texto. Si el valor booleano de la entrada es verdadero (true), se
ejecuta el cdigo dentro del cuadro del caso verdadero; de otra manera se ejecutara el cdigo
dentro del cuadro del caso falso (false)
Ejercicio 2.5 Uso del Case Booleano
1. Utilizando una estructura de Case booleano crear un programa que lea un valor numrico
del panel y si este valor es positivo calcule el valor de su raz cuadrada y lo enve a un
indicador numrico en el panel, pero si es negativo entonces que encienda un led en el
panel y enve al indicador numrico el mismo valor negativo.
2. La funcin de comparacin >= (mayor o igual) la encuentra en la sub-paleta Comparison.
3. La funcin de raz cuadrada la encuentra en la sub-paleta Numeric.
4. No olvide asignar valores en ambos casos a los tneles de salida.
5. Ejecute su programa.
6. Pruebe para valores de entrada positivos y negativos.
click
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 48 Dr. Gerardo Trujillo Schiaffino
7. Guarde el VI como Case [Link]
2.5.2. Case String
Para una entrada de cadena de caracteres (string), se ejecuta solamente el cdigo
contenido en el cuadro del caso que corresponda exactamente con la cadena en la entrada de
selector, si el valor no coincide con ninguno de los casos, entonces se ejecuta el caso que
este marcado como caso por omisin (default).
Por omisin (default) todas las estructuras case aparecen como Case Booleano, para
convertir a Case String simplemente conecte una variable tipo string en la terminal de
selector y la estructura Case se convertir automticamente. Con la herramienta de texto
cambie las cadenas True y False que aparecen por default tecleando la cadena que quiere
asignar en cada caso especifico. Para agregar ms cuadros de caso haga click derecho
tocando el cuadro de la estructura Case y seleccione Add Case After del men emergente.
Es posible agregar tantos cuadros de caso diferentes como sea necesario
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 49 Dr. Gerardo Trujillo Schiaffino
Ejercicio 2.6 Uso del Case String
1. Utilizando una estructura de Case String crear un VI tome dos valores numricos del panel
y realice una operacin aritmtica determinada por un control de cadena de caracteres
(string) en el panel.
2. Las operaciones son suma, resta, multiplicacin y divisin para entradas de tres caracteres
sum, res, mul y div respectivamente en la entrada de selector de la estructura Case.
3. Las funciones aritmticas las encuentra en la sub-paleta Numeric.
4. No olvide asignar valores en todos los casos al tnel de salida.
5. Ejecute su programa.
6. Cambie los valores numricos de entrada y seleccione distintas operaciones, incluyendo
algunas invlidas.
7. Guarde el VI como Case String .vi
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 50 Dr. Gerardo Trujillo Schiaffino
2.5.3. Case Numrico
Para una entrada de valor numrico conectada en la entrada del selector de la
estructura Case se ejecuta solamente el cdigo contenido en el cuadro del caso que
corresponda exactamente con el valor numrico en la entrada de selector. Si el valor de
entrada esta fuera de rango de los casos definidos, al igual que en los Case String, LabVIEW
escoger el caso designado por omisin (default).
Ejercicio 2.7 Uso del Case Numrico
1. Utilizando una estructura de Case Numrico crear un programa que tome dos valores
numricos del panel y realice una operacin aritmtica determinada por un control numrico
en el panel.
2. Las operaciones son suma, resta, multiplicacin y divisin para entradas con valores 0, 1, 2
y 3 respectivamente en la entrada de selector de la estructura Case.
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 51 Dr. Gerardo Trujillo Schiaffino
3. Utilice el Vi generado en el ejercicio 3.6 y simplemente sustituya el control string por un
control numrico del tipo pointer slide localizado en la subpaleta de controles numricos,
cambie los nombres de los cuadros de caso sum, res, mul y div por 0,1, 2, y 3
respectivamente.
4. Re-escale el slide de 0 a 3, cambie su representacin a entero sin signo de 8 bits (U8),
cambie el estilo de la escala para visualizar solo las marcas principales y con la herramienta
de texto coloque etiquetas suma, resta, multiplicacin y divisin donde correspondan.
5. Ejecute su programa.
6. Cambie los valores numricos de entrada y seleccione distintas operaciones.
7. Guarde el VI como Case Numerico .vi
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 52 Dr. Gerardo Trujillo Schiaffino
2.6. Estructuras de Secuencia
En un lenguaje basado en texto, las declaraciones del programa generalmente se
ejecutan en el orden en que aparecen.
Por otro lado, en un lenguaje basado en flujo de datos como LabVIEW, un nodo se
ejecuta cuando los datos estn disponibles en todas sus terminales de entrada por lo cual
algunas veces es difcil determinar el orden exacto de ejecucin de las funciones.
Cuando se necesita controlar de manera estricta el orden de la ejecucin del cdigo en
el diagrama de bloques, se hace necesario utilizar una estructura de secuencia (Sequence
Structure).
Las estructuras de secuencia lucen como un pedazo de rollo de pelcula.
Como se muestra en la figura 2.13 existen dos tipos diferentes para esta estructura: la
estructura de secuencia apilada y la estructura de secuencia extendida.
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 53 Dr. Gerardo Trujillo Schiaffino
a) b)
Fig. 2.13. Estructura de secuencia a) apilada, b) extendida.
Coloque estructuras de secuencia en su diagrama seleccionando Stacked Secuence o
Flat Secuence de la sub-paleta Structures en el diagrama de bloque como se muestra en la
figura 2.14.
Fig. 2.14. Acceso a la estructura de secuencia en la paleta de funciones
2.6.1. Secuencias Apiladas
Las estructuras de secuencia apiladas solo muestran un cuadro de secuencia a la vez,
de manera similar a las estructuras de caso, solo que a diferencia de estas, todos los cuadros
ejecutan de manera secuencial el cdigo contenido en ellos.
Para agregar cuadros a una secuencia se hace un click derecho sobre la estructura y
se selecciona Add Frame After o Add Frame Before del men emergente, tal como se
muestra en la figura 2.15.
click
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 54 Dr. Gerardo Trujillo Schiaffino
Fig. 2.15. Agregando cuadros a una secuencia.
Cuando se requiere transferir valores entre diferentes cuadros de una estructura de
secuencia apilada, se debe activar las terminales de almacenamiento local haciendo un click
derecho sobre la estructura y seleccionando Add Local Secuence, tal como se muestra en la
figura 2.16. Este tipo de terminal almacena un valor generado en un cuadro de secuencia
para que pueda ser utilizado en los cuadros siguientes.
Fig. 2.16. Agregando terminal de almacenamiento local a una estructura de secuencia.
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 55 Dr. Gerardo Trujillo Schiaffino
Ejercicio 2.8 Uso de las Estructuras de Secuencia Apiladas
1. Utilizando una estructura de Secuencia Apilada crear un programa que lea un valor
numrico entero entre 0 y 1000 del panel, genere los nmeros aleatorios necesarios hasta
encontrar ese nmero y al finalizar indique en el panel cuantas iteraciones hizo y cuanto
tiempo tardo en realizarlas.
2. El primer paso es leer el registro de ticks de reloj de la computadora (este registro se
incrementa cada milisegundo), utilice la funcin Tick Count localizada en la subpaleta Time
& Dialog de la paleta de funciones, almacene este valor en una terminal de
almacenamiento local.
3. Luego, con un ciclo While genere nmeros aleatorios hasta encontrar el nmero
especificado en el panel, tenga en cuenta que la funcin para generar nmeros aleatorios
solo los genera entre 0 y 1 as que deber adecuarlos, recuerde tambin que va a comparar
con un numero entero por lo que necesitara de una funcin de redondeo.
4. Finalmente vuelva a leer el registro de ticks de reloj y rstele el valor almacenado en la
terminal de almacenamiento local, esto le dar el tiempo transcurrido en milisegundos, no
olvide indicar tambin el nmero de iteraciones efectuadas
5. Ejecute su programa.
6. Ejecute varias veces con el mismo valor y con valores diferentes.
7. Guarde el VI como Secuencia Apilada .vi
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 56 Dr. Gerardo Trujillo Schiaffino
2.6.2. Secuencias Extendidas
Las estructuras de secuencia extendida realizan exactamente la misma funcin que las
estructuras de secuencia apiladas descritas anteriormente, la nica diferencia es que las
secuencias extendidas muestran simultneamente todos los cuadros de secuencia de manera
que se puede visualizar simultneamente el cdigo contenido en toda la estructura.
La transferencia de valores entre distintos cuadros de una secuencia extendida se
realiza a travs de tneles simples como los empleados en otras estructuras.
Para convertir una secuencia apilada en secuencia extendida y viceversa se hace click
sobre la estructura y se selecciona Replace / Replace with Flat Secuence o Replace with
Stacked Secuence segn sea el caso, tal como se muestra en la figura 2.17.
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 57 Dr. Gerardo Trujillo Schiaffino
Fig. 2.17. Acceso a la estructura de secuencia en la paleta de funciones
Ejercicio 2.9 Uso de las Estructuras de Secuencia Extendidas
1. Utilizando una estructura de Secuencia Extendida crear un VI que lea un valor numrico
entero entre 0 y 1000 del panel, genere los nmeros aleatorios necesarios hasta encontrar
ese nmero y al finalizar indique en el panel cuantas iteraciones hizo y cuanto tiempo tard
en realizarlas
2. Remplace la secuencia apilada del ejercicio 3.8 por una secuencia extendida
3. Ejecute su programa
4. Guarde el VI como Secuencia Extendida .vi
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 58 Dr. Gerardo Trujillo Schiaffino
2.7. Nodos de Frmula
Algunas veces es preferible programar expresiones matemticas con funciones
basadas en texto, en lugar de hacerlo con iconos (los que pueden tomar mucho espacio en el
diagrama). Los nodos de frmula nos permiten implementar ecuaciones complicadas usando
instrucciones basadas en texto.
Compare los ejemplos mostrados en la figura 2.18 de una misma expresin
matemtica evaluada en forma de diagrama y con un nodo de frmula.
a)
b)
Fig. 2.18. Expresin matemtica evaluada a) en diagrama, b) en nodo de frmula
Coloque nodos de frmula en su diagrama seleccionando Formula Node de la sub-
paleta Structures en el diagrama de bloque como se muestra en la figura 2.19.
Fig. 2.19. Acceso a los nodos de frmula en la paleta de funciones
click
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 59 Dr. Gerardo Trujillo Schiaffino
La cajas de este nodo pueden cambiar de tamao para introducir formulas algebraicas
directamente a los diagramas de bloque. Para agregar variables, se hace un click derecho
sobre la estructura y se selecciona la opcin de agregar entrada (Add Input) o agregar salida
(Add Output), tal como se muestra en la figura 2.20
Fig. 2.20. Agregando terminales de entrada y de salida a un nodo de frmula
Hay que nombrar las variables de la misma manera en que sern usadas dentro del
nodo de formula (los nombres son sensibles a las maysculas).
Todas las declaraciones independientes entre s deben terminar siempre con un punto
y coma (;).
Al usar varias frmulas en un solo nodo de frmula, cada variable asignada (las que
aparecen en la parte izquierda de cada frmula) deben de tener una terminal de salida en el
nodo de frmula. Sin embargo, estas terminales de salida no necesitan estar cableadas si no
se requiere su valor de salida
En los nodos de frmula es posible utilizar funciones estndar como: abs, acos, acosh,
asin, asinh, atan, atan2, atanh, ceil, cos, cosh, cot, csc, exp, expm1, floor, getexp, getman, int,
intrz, In, Inp1, log, log2, max, min, mod, pow, rand, rem, sec, sign, sin, sinc, sinh, sqrt, tan,
tanh.
Tambin se puede utilizar estructuras de programacin como If then, for, case, entre
muchas otras, utilizando la sintaxis del lenguaje C (especficamente ANSI C).
Ejercicio 2.10 Uso de los Nodos de Frmula
1. Utilizando un nodo de frmula crear un programa que resuelva las siguientes ecuaciones:
y= x
2
+10x+1
z= 16x
3
+5
w= 2y-z
2. Leer en el panel frontal el valor correspondiente a x y mostrar solo el resultado para w
TSIB: Programacin por Flujo de Datos Estructuras de Programacin
Facultad de Ingeniera UACH 60 Dr. Gerardo Trujillo Schiaffino
3. Ejecute su programa.
4. Guarde el VI como Nodo de Formula .vi
Ejercicio 2.11 Adicional
1. Utilizando las estructuras de programacin necesarias, construir un VI que simule los tiros
de un dado (valores posibles de 1 a 6) y lleve un registro de cuantas veces cay cada
valor.
2. El parmetro de entrada para este programa es el nmero de tiros de dado que se debe
simular, mostrar como resultados de salida el valor correspondiente a cuantas veces cay
cada valor.
3. Es muy importante que el dado no est cargado, es decir, que todos los nmeros tengan la
misma probabilidad de caer.
4. Cada vez que se ejecute el programa se reinicia la acumulacin de los resultados de
salida.
5. Documente completamente el programa.
6. Convirtalo en un subVI.
7. Ejecute su programa.
8. Guarde el VI como [Link]
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 61 Dr. Gerardo Trujillo Schiaffino
Unidad III.
FUNCIONES DE PROGRAMACION.
3.1 ARREGLOS
Al igual que en otros lenguajes de programacin, en LabVIEW los arreglos agrupan
elementos de datos del mismo tipo. Un arreglo consiste de elementos ordenados a travs de
ndices y dimensiones. Los elementos son los datos que componen el arreglo, el ndice es el
lugar o posicin que ocupa el elemento dentro del arreglo y la dimensin es la cantidad de
ndices que se utilizan para indicar una posicin nica dentro del arreglo. Un arreglo puede
tener una o ms dimensiones y hasta 2^31 1 elementos por dimensin, si lo permite la
memoria de la computadora. El ndice es basado en cero, lo que significa que tiene un rango
de 0 a n 1, donde n es el nmero de elementos en el arreglo. Por ejemplo, n = 9 para los
nueve planetas, as que el ndice recorre de 0 a 8. La Tierra es el tercer planeta, as que tiene
un ndice de 2.
La figura 3.1 muestra el esquema de un arreglo unidimensional en el cual cada
elemento se accesa a travs de un solo ndice.
Fig. 3.1. Arreglo unidimensional
La figura 3.2 muestra el esquema de un arreglo bidimensional en el cual cada elemento
se accesa a travs de dos ndices
Fig. 3.2. Arreglo bidimensional n X m
elemento elemento elemento elemento elemento
ndices 0 1 2 3 n
elemento elemento elemento elemento elemento
elemento elemento elemento elemento elemento
elemento elemento elemento elemento elemento
elemento elemento elemento elemento elemento
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0
1
2
3
.
.
.
m
Arreglo
elemento elemento elemento elemento elemento Arreglo
ndice 0 1 2 3 n
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 62 Dr. Gerardo Trujillo Schiaffino
Se pueden construir arreglos de tipos de datos numricos, booleanos, rutas, cadenas,
formas de onda y clusters.
3.1.1. Controles e Indicadores de Arreglo
Para crear un control o indicador de un arreglo en el panel frontal, primero se
selecciona una preforma de arreglo (array) en la paleta Controls Modern Array, Matrix &
Cluster, y se coloca en el panel frontal, como se muestra en la figura 3.3.
Fig. 3.3. Acceso a la preforma para un arreglo en el panel frontal
Luego, como se muestra en la figura 3.4, se arrastra un control o un indicador adentro
de la preforma para asignarle el tipo de dato correspondiente, por ejemplo, si se requiere un
arreglo indicador numrico se debe colocar dentro de la preforma de arreglo un indicador
numrico, si lo que se desea el arreglo control booleano entonces de debe colocar dentro de la
preforma un control booleano. Si se intenta arrastrar un control o indicador invlido, tal como
una grfica XY, no ser posible colocarlo dentro de la preforma de arreglo.
Para poder utilizar un arreglo se debe asignar el tipo de variable, de otro modo, la
terminal del arreglo en el diagrama de bloques aparece negra con un parntesis vaco.
Click
Click
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 63 Dr. Gerardo Trujillo Schiaffino
Fig. 3.4. Asignacin del tipo de dato al arreglo
Para agregar dimensiones a un arreglo, se hace click derecho en el indicador del ndice
y seleccione Add Dimension del men emergente como se muestra en la figura 3.5. Tambin
se puede utilizar la herramienta que posicionamiento para cambiar el tamao del indicador del
ndice hasta que se obtengan las dimensiones requeridas.
Fig. 3.5. Adicionando dimensiones a un arreglo
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 64 Dr. Gerardo Trujillo Schiaffino
3.1.2. Arreglos Auto Indexados
El manejo de auto-indexamiento de arreglos es una capacidad novedosa de LabVIEW
que le da una gran versatilidad en el uso de los ciclos For y While.
El Auto-indexamiento es una caracterstica propia de los tneles de entrada o salida en
las estructuras de ciclos y se activa o desactiva seleccionando Enable Indexing o Disable
Indexing en los mens emergentes al hacer click derecho sobe un tnel.
[Link]. Auto-indexamiento de salida
Cuando se utiliza el auto-ndice en tnel de salida, se genera de manera automtica un
arreglo de salida que recibe un nuevo elemento por cada iteracin del ciclo. El tnel de salida
contiene corchetes cuadrados representando un arreglo que al alambrarse al exterior del ciclo
transfiere el arreglo que contiene los elementos almacenados en cada una de las iteraciones
del ciclo. Si el auto-ndice esta desactivado, entonces el tnel no crea un arreglo para
almacenar los valores de las distintas iteraciones y al finalizar el ciclo solo se transfiere al
exterior el ultimo valor generado. En este caso el tnel tiene una apariencia normal y no
muestra corchetes como en caso anterior.
La figura 3.6 muestra un ejemplo de un ciclo For con dos tneles de salida, en el
primero (parte superior) el auto- indexamiento est habilitado por lo cual genera un arreglo de
salida, mientras que en el segundo (parte inferior) el auto-indexamiento esta deshabilitado por
lo cual solo sale un valor numrico simple.
Fig. 3.6. Ejemplo de auto-indexamiento en tneles de salida
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 65 Dr. Gerardo Trujillo Schiaffino
El auto-indexamiento en los tneles de salida aplica por igual a los ciclos While y a los
ciclos For. Sin embargo, por omisin (default) en el caso de los ciclos For el auto-
indexamiento est habilitado, mientras que en los ciclos While por default el auto-
indexamiento est deshabilitado.
[Link]. Auto-indexamiento de entrada
Cuando se alambra un arreglo a un tnel de entrada de un ciclo For o un ciclo While, si
el auto-indexamiento se encuentra activado, entonces en cada iteracin solo pasar a travs
del tnel un elemento, cuyo ndice coincida con el contador de iteraciones i del ciclo. Por otro
lado, si el auto-indexamiento se encuentra desactivado entonces el arreglo completo pasar
por el tnel en cada iteracin. Un ejemplo de este comportamiento se muestra en la figura 4.7.
Fig. 3.7. Ejemplo de auto-indexamiento en tneles de entrada
Ntese que el primer tnel de entrada (parte superior) tiene el auto-ndice habilitado por
lo que al ciclo entran los elementos de manera individual, mientras que en segundo tnel
(parte inferior) el auto-ndice se encuentra deshabilitado por lo cual al interior del ciclo llega el
arreglo completo. Ntese tambin como cambia la representacin de la terminal del tnel
cuando est activado el auto-indexamiento.
Otra caracterstica particular de LabVIEW con respecto a los arreglos alambrados en
tneles de entrada en ciclos For se presenta cuando existe uno o ms tneles que tengan
habilitado el auto-ndice, el tamao de los arreglos se puede utilizar para controlar el numero
de iteraciones del ciclo, incluso la terminal N del ciclo pude quedar desconectada.
En el caso de existan arreglos de entrada de diferentes tamaos o incluso si estuviera
alambrada la terminal N, el control de las iteraciones lo tiene el que tenga el tamao menor.
Por ejemplo, si se cablean un arreglo con 10 elementos y otro de 5 elementos a tneles de
entrada de entrada de un ciclo For y se pone la terminal del contador a 15, el ciclo se ejecuta
solo 5 veces.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 66 Dr. Gerardo Trujillo Schiaffino
[Link]. Arreglos auto-indexados multidimensionales
Adems de los arreglos auto-indexados unidimensionales, es muy comn requerir de
arreglo auto-indexados multidimensionales, los cuales se obtienen de manera general
anidando ciclos While o For.
Por ejemplo, se pueden utilizar dos ciclos For anidados uno dentro del otro, para crear
arreglos bidimensionales. El ciclo For externo crea las filas de elementos y el ciclo For interno
crea las columnas de elementos.
El ejemplo especfico mostrado en la figura 3.8 genera un arreglo bidimensional de 3
renglones y seis columnas de nmeros aleatorios
Fig. 3.8. Creacin de arreglos bidimensionales.
De esta misma manera, anidando ms ciclos, se pueden crear arreglos
multidimensionales.
3.1.3. Constantes de Arreglo
Tambin, en algunas ocasiones puede ser necesario disponer de arreglos de valores
constantes en nuestro programa.
Para ello es posible crear constantes de arreglo en el diagrama a bloques, el
procedimiento es muy parecido al utilizado para la creacin de controles o indicadores de
arreglo en el panel frontal.
Primero se selecciona una preforma de arreglo constante (Array Constant) en la
paleta Functions Programming Array en el diagrama a bloques, tal y como se muestra en
la figura 3.9.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 67 Dr. Gerardo Trujillo Schiaffino
Fig. 3.9. Acceso a la preforma para constante de arreglo.
Luego simplemente asigne el tipo de constante a la preforma de arreglo.
La figura 3.10a muestra la construccin de una constante de arreglo booleano. La
figura 3.10b Muestra la construccin de una constante de arreglo numrico bidimensional.
Ntese que cada elemento del arreglo puede tener valor diferente entre s.
Click
Click
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 68 Dr. Gerardo Trujillo Schiaffino
Fig. 3.10. Construccin de una constante de arreglo a) booleano, b) numrico bidimensional.
3.1.4. Funciones para Arreglos
LabVIEW cuenta con una gran cantidad de funciones para crear, manipular o trabajar
con arreglos. Estas funciones estn situadas en la paleta Functions All Functions Array.
Las principales funciones para trabajar con arreglos incluyen:
[Link]. Tamao de Arreglo (Array Size)
Fig. 3.11. Funcin Array Size.
La funcin Array Size (tamao de arreglo) devuelve el nmero de elementos en cada
dimensin de un arreglo. Si el arreglo es de n-dimensiones, el tamao (size) de la salida es un
arreglo de n elementos, donde cada elemento es el tamao del arreglo en esa dimensin
a)
b)
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 69 Dr. Gerardo Trujillo Schiaffino
[Link]. Inicializar Arreglo (Initialize Array)
Fig. 3.12. Funcin Initialize Array.
La funcin Inicialize Array (inicializar el arreglo) crea un arreglo de n dimensiones en
donde cada elemento ha sido inicializado al valor conectado en la entrada del elemento
(element). Se puede cambiar el tamao de la funcin para incrementar el nmero de
dimensiones del arreglo de salida.
[Link]. Construir Arreglo (Build Array)
Fig. 3.13. Funcin Build Array.
La funcin Build Array (construir de arreglo) puede realizar dos funciones distintas.
Concatena mltiples arreglos o aade elementos a un arreglo de n dimensiones. Se puede
cambiar el tamao de la funcin para incrementar el nmero de dimensiones del arreglo de
salida. Para concatenar las entradas en un arreglo ms largo de la misma dimensin, se hace
click derecho en el nodo de la funcin y seleccione Concatenate Inputs (Concatenar
Entradas) desde el men emergente.
[Link]. Subconjunto de Arreglo (Array Subset)
Fig. 3.14. Funcin Array Subset.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 70 Dr. Gerardo Trujillo Schiaffino
La funcin Array Subset (subconjunto de arreglo) devuelve parte de un arreglo
comenzando en el ndice indicado y con una longitud (cantidad de elementos) tambin
indicada. Para arreglos multidimensionales se puede cambiar el tamao de la funcin para
incrementar el nmero de dimensiones.
[Link]. ndice del Arreglo (Index Array)
Fig. 3.15. Funcin Index Array.
La funcin Index Array (ndice del arreglo) devuelve el elemento de un arreglo
almacenado en el ndice indicado. Tambin se puede utilizar la funcin ndice del Arreglo para
extraer una fila o una columna de un arreglo bidimensional para as crear un sub-arreglo del
original. Para hacer esto se conecta un arreglo bidimensional a la entrada de la funcin, la cual
se auto-ajusta para mostrar dos terminales de ndice disponibles. La terminal del ndice
superior indica la fila, y la segunda terminal indica la columna. Se puede cablear entradas a
ambas terminales de ndice para indicar un solo elemento, o se puede cablear solamente una
terminal para extraer una fila o una columna de datos.
Ejercicio 3.1 Uso de los Arreglos
1. Crear un programa para generar un arreglo auto-indexado de 5 nmeros aleatorios entre 0 y
10, crear una constante de arreglo con los valores [3,8,0,2,1], crear un arreglo inicializado
de 5 elementos con valor de 4, concatenar los tres arreglos anteriores formando un solo
arreglo.
2. Mostrar en el panel frontal el arreglo final y el tamao del arreglo final
3. Extraer el valor del elemento 4 del arreglo y mostrarlo en el panel frontal
4. Extraer un sub-conjunto de 5 elementos empezando en el elemento 2 y mostrarlo en el
panel frontal
5. Ejecute su programa
6. Guarde el VI como Arreglos .vi
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 71 Dr. Gerardo Trujillo Schiaffino
3.2. CLUSTERS
Los clusters son otra manera de empaquetar datos en LabVIEW, son equivalentes a un
record en Pascal o una struct en C.
A diferencia de los arreglos en cuales todos los elementos deben de ser del mismo
tipo, los componentes de los clusters pueden ser de diferentes tipos de datos. Sin embargo, se
debe respetar siempre que todos los elementos de un cluster deben ser ya sea Indicadores o
controles. No se puede tener controles e Indicadores juntos en el mismo cluster.
Los clusters se pueden considerar como un grupo de alambres individuales (datos)
juntos en un cable (cluster). Uno de los principales usos de los clusters es disminuir la cantidad
de terminales de conexin en los subVIs. Un grupo de entradas y/o salidas se pueden
empaquetar para utilizar solo una lnea de conexin.
3.2.1. Controles e Indicadores de Clusters
Para crear un cluster se selecciona Cluster en el panel frontal desde la paleta
Controls Modern Array, Matrix & Cluster. Tal como se muestra en la figura 3.16.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 72 Dr. Gerardo Trujillo Schiaffino
Fig. 3.16. Acceso a la preforma de cluster en el panel frontal.
Esta opcin genera una preforma (shell) parecida a la preforma obtenida al crear
arreglos, solo que sin el control de ndice.
Una vez que esta se ha seleccionado se puede cambiar el tamao a la preforma. Al
hacer click derecho adentro de la preforma se puede aadir objetos de cualquier tipo como se
muestra en la figura 3.17. Inclusive se puede tener un cluster adentro de otro cluster.
Los componentes (controles o indicadores) que son introducidos a un cluster, no
generan terminal en el diagrama de bloque, estos componentes se accesan a travs de la
terminal del cluster.
a) b)
Fig. 3.17. Ejemplo de un cluster en el panel frontal a) control, b) indicador.
Click
Click
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 73 Dr. Gerardo Trujillo Schiaffino
El cluster se convierte en un indicador o control basado en el primer objeto que fue
ingresado dentro del grupo.
3.2.2. Constante de Clusters
Tambin se puede crear una constante de cluster en el diagrama de bloque
escogiendo Cluster Constant de la paleta Cluster, esto brinda una preforma (shell) de cluster
vaca. Una vez ingresado se puede dar cualquier tamao al cluster, dentro de la preforma de
se puede introducir otras constantes, tal como se muestra en la figura 3.18.
Fig. 3.18. Ejemplo de una constante de cluster en el diagrama de bloque.
No se puede colocar terminales para los objetos del panel frontal en una constante de
cluster en el diagrama de bloques, ni tampoco puede colocar constantes especiales como el
Tab o una cadena de caracteres vaca dentro de una pre-forma de cluster.
3.2.3. Orden de Cluster
Dentro del cluster, los componentes estn acomodados de acuerdo al orden en que
fueron introducidos a la pre-forma. Este orden es importante debido a que para poder
interconectar los clusters, estos deben tener la misma cantidad de elementos y el mismo
orden, de lo contrario LabVIEW no permitir la conexin.
Para visualizar o modificar el orden de los elementos de un cluster se hace un click
derecho tocando la estructura del cluster y se selecciona Reorder Controls in Cluster del
men emergente como se muestra en la figura 3.19.
El nmero en fondo blanco muestra el orden actual de los elementos en el cluster y el
nmero en fondo negro indica el nuevo orden de los elementos, esto se cambia haciendo click
en el elemento que se desea modificar.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 74 Dr. Gerardo Trujillo Schiaffino
Fig. 3.19. Reordenar elementos en un control o indicador de cluster.
3.2.4. Funciones para Clusters
LabVIEW cuenta con funciones para crear, manipular o trabajar con clusters. Estas
funciones estn situadas en la paleta Functions Modern Clusters.
Las principales funciones para trabajar con clusters incluyen:
[Link]. Agrupar (Bundle)
Fig. 3.20. Funcin Bundle.
La funcin Bundle (agrupar) forma un cluster conteniendo los objetos dados en las
entradas de elementos
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 75 Dr. Gerardo Trujillo Schiaffino
[Link]. Agrupar por Nombre (Bundle by Name)
Fig. 3.21. Funcin Bundle by Name.
Actualiza valores de objetos localizados en grupos especficos (los objetos deben tener
su propia clasificacin).Se debe de tener un cluster existente cableado a la terminal de en
medio de la funcin para poder utilizar Bundle by Name (agrupar por nombre).
[Link]. Desagrupar (Unbundle)
Fig. 3.22. Funcin Unbundle.
La funcin Unbundle (desagrupar) se utiliza para acceder a todos los objetos del
cluster. Esta funcin debe tener exactamente el mismo nmero de terminales como se tienen
elementos en el cluster. Aadiendo o Removiendo elementos en el cluster se rompen los
cables en el diagrama.
[Link]. Desagrupar por Nombre (Unbundle by Name)
Fig. 3.23. Funcin Unbundle by Name.
La Funcin Unbundle by Name (desagrupar por nombre) se utiliza para acceder
objetos especficos (uno o ms) en el cluster. Solamente los objetos en el cluster que tengan
su propia marca (Label) pueden ser accesados. Cuando se desagrupe por nombre, haga click
en la terminal con la herramienta de operacin para escoger el elemento que quiere acceder.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 76 Dr. Gerardo Trujillo Schiaffino
Tambin se puede obtener las funciones de Bundle (agrupar), Unbundle
(desagrupar), Bundle by Name (agrupar por nombre), y Unbundle by Name (Desagrupar por
Nombre) al hacer click derecho con el ratn en la terminal del cluster en el diagrama de
bloques y eligiendo Cluster Tools (herramientas de cluster) del Men. Cuando usted escoge
Cluster Tools las funciones Bundle (agrupar) y Unbundle (desagrupar) automticamente
contienen el nmero correcto de terminales. Las funciones Bundle by Name (agrupar por
nombre) y Unbundle by Name (desagrupar por nombre) aparecen con el primer elemento del
Cluster.
3.2.5. Cluster de Error
Los clusters de errores son un medio poderoso que utiliza LabVIEW para indicar y
manejar errores en funciones especficas. Los VI de adquisicin de datos (DAQ VIs) las
funciones de manejo de entradas y salidas de archivo (File I/O), los VIs de manejo de redes, y
muchos otros VIs utilizan este mtodo para pasar informacin entre nodos acerca de errores.
La figura 3.24 muestra el indicador de un cluster de error.
Fig. 3.24. Indicador de cluster de error.
El cluster para errores contiene tres elementos: status, code y source.
[Link]. Status.
Es una variable de tipo booleano a la cual se le asigna un valor verdadero si ocurre
algn error.
[Link]. Code.
Es una variable de tipo valor numrico entero a la cual se le asigna un nmero de
cdigo correspondiente al error que ha ocurrido.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 77 Dr. Gerardo Trujillo Schiaffino
[Link]. Source.
Es una variable de tipo cadena de caracteres que identifica el VI en donde ocurri el
error.
Los clusters de errores son tiles para determinar cuando ocurre un error durante la
ejecucin de un VI. Para ello simplemente se deben encadenar las funciones conectando la
salida Error Out de una a la entrada Error In de la siguiente, tal como se muestra en la figura
3.25.
Al hacer esto tambin se establece una secuencia de ejecucin de las funciones
interconectadas a travs de los clusters de error, pues el flujo de datos establece que una
funcin deba esperar a que se ejecute primero la funcin cuya salida Error Out est
conectada a su entrada Error In.
Fig. 3.25. Conexin de los cluster de error.
Ejercicio 3.2 Uso de los Clusters
1. Crear un programa para generar un control de cluster que contenga en el panel frontal un
control numrico, un control booleano y un control string.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 78 Dr. Gerardo Trujillo Schiaffino
2. Desempaquetar el cluster en el diagrama de bloque para multiplicar el numrico por 10,
invertir el booleano y dejar igual el string
3. Empaquetar nuevamente y mostrar el resultado en un indicador de cluster en el panel frontal
4. Ejecute su programa
5. Guarde el VI como Clusters .vi
3.4. CADENAS DE CARACTERES (STRINGS)
Una cadena de caracteres (strings) es una secuencia de caracteres ASCII que pueden
ser texto imprimible o no imprimible.
Las cadenas de caracteres se usan frecuentemente para enviar comandos a
instrumentos, para proveer informacin acerca de pruebas (tales como el nombre del operador
y la fecha), o para desplegar en forma de texto resultados al usuario.
3.4.1 Controles e Indicador String
Los controles e indicadores de string se encuentran en la sub-paleta Modern/String &
Path de la paleta de Controles como se muestra en la figura 3.26.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 79 Dr. Gerardo Trujillo Schiaffino
Fig. 3.26. Ubicacin del Control String y del Indicador String en el panel frontal.
Para introducir o cambiar el contenido de texto en los controles string se utiliza la
herramienta de texto (Text Tool). Las cadenas de caracteres pueden variar en su tamao.
3.4.2. Activacin del Scrollbar
Los indicadores y controles string pueden tener barras de movimiento (Scroll Bars)
Estos se activan haciendo click con el botn derecho del mouse y seleccionando Visible
Items Scrollbar. Como se muestra en la figura 3.27.
Fig. 3.27. Activacin del Scrollbar en los controles e indicadores string.
click
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 80 Dr. Gerardo Trujillo Schiaffino
La barra de movimiento no se activara si el Control o el Indicador no son lo
suficientemente grandes.
3.4.3. Modos de despliegue del texto
Tanto los controles como los indicadores string tiene la capacidad de desplegar el texto
contenido en ellos de tres maneras diferentes: normal, cdigos diagonal, password y
hexadecimal.
En el modo de despliegue normal aparece solo el texto imprimible, en el modo de
despliegue de cdigos diagonal aparece el texto imprimible y los caracteres de control en
forma se los cdigos diagonal respectivos, en el modo password el texto es sustituido para su
despliegue por asteriscos para proteger el contenido tecleado y en el modo de despliegue
hexadecimal aparecen los valores hexadecimales de cada carcter.
La figura 2.28 muestra el mismo contenido de texto desplegado en los distintos modos
en un indicador string.
Fig. 3.28. Modos de despliegue de texto.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 81 Dr. Gerardo Trujillo Schiaffino
3.4.5. Funciones para Manejo de Texto
LabVIEW cuenta con muchas funciones para manejo de texto, algunas de las
principales son:
[Link]. Longitud de texto (String Length)
Fig. 3.29. Funcin String Length.
Esta funcin cuenta el nmero de caracteres que contiene una cadena, es importante
hacer notar que el conteo incluye todos los carates, tanto los imprimibles como los caracteres
de control.
[Link]. Concatenar Strings (Concatenate Strings)
Fig. 3.30. Funcin Concatenate Strings.
Esta funcin forma una nueva cadena de caracteres en base a la concatenacin
consecutiva de las cadenas de caracteres de entrada
[Link]. Sub-conjunto de Strings (Subset Strings)
Fig. 3.31. Funcin Subset Strings.
Esta funcin extrae un subconjunto de una cadena de caracteres iniciando en el
carcter que se encuentra en la posicin indicada por offset y con una longitud indicada en
length.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 82 Dr. Gerardo Trujillo Schiaffino
[Link]. Constantes de Strings (Subset Strings)
Adems de las normales constantes string en las que se puede establecer el texto
necesario, LabVIEW cuenta tambin con una gran cantidad de constantes string que
corresponden a caracteres de control tales como: retorno de carro, fin de lnea, tabulador, etc.
Ejercicio 3.6 Uso de las Cadenas de Caracteres
1. Utilizando Controles, indicadores, constantes y funciones de cadenas de caracteres crear un
programa para la generar un encabezado de texto.
2. El encabezado deber contener Nombre de la Empresa, nombre del empleado, Fecha y
Hora actual.
3. El nombre de la Empresa deber ser una constante en el diagrama.
4. El nombre del empleado deber ser proporcionado a travs de un control en el panel
5. La fecha y la hora actual de la computadora se puede obtener mediante la funcin Get
Date/Time en la sub paleta de Timming de la paleta de funciones.
6. Utilice las constantes string que sean necesarias para cambios de lnea.
7. Ejecute su programa
8. Guarde el VI como [Link]
3.5. ARCHIVOS
Cuando se requiere guardar informacin en disco o recuperar informacin previamente
guardada, LabVIEW cuenta con funciones especializadas para realizar operaciones de
entrada/salida de archivo (I/O File). Estas funciones estn localizadas en la paleta
Programming File I/O para manejar todos aspectos relativos a entrada/salida de archivos
de distintos tipos: archivos de texto y archivos de hoja de clculo entre otros. La figura 3.32
muestra el acceso a estas funciones.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 83 Dr. Gerardo Trujillo Schiaffino
Fig. 3.32. Ubicacin del las funciones de entrada/salida para archivos.
3.5.1. Archivos de Texto.
Para el manejo de archivos de texto, LabVIEW cuenta con diversas funciones entre las
que destacan Escribir en Archivo de Texto (Write to Text File) y Leer de Archivo de Texto
(Read from Text File).
[Link]. Escribir en Archivo de Texto (Write to Text File).
Fig. 3.33. Funcin Escribir en Archivo de Texto.
click
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 84 Dr. Gerardo Trujillo Schiaffino
Esta funcin escribe una cadena de caracteres o un arreglo de caracteres como lneas
en un archivo. Si se alambre una trayectoria de archivo valida a la entrada file (use dialog), la
funcin abre o crea e archivo antes de escribir en l y reemplaza cualquier contenido previo
del archivo. Si se alambre una referencia de archivo (file refnum) a la entrada file (use
dialog), la escritura comienza en la posicin de archivo actual. Para agregar contenido a un
archivo existente (append to file) se debe poner la posicin de archivo al final de este usando
la funcin Set File Position.
[Link]. Leer de Archivo de Texto (Read from Text File).
Fig. 3.34. Funcin Leer de Archivo de Texto.
Esta funcin lee un determinado nmero de caracteres o lneas de un archivo de texto.
Por default, esta funcin lee todos los caracteres del archivo de texto. Alambre un valor entero
a la entrada count para especificar el nmero de caracteres individuales que desee leer
empezando por el primer carcter. Haga click derecho y del men emergente (popup menu)
seleccione la opcin Read Lines para leer lneas completas del archivo de texto. Al
seleccionar la opcin Read Lines alambre un valor a la entrada count para especificar el
nmero de lneas individuales que desee leer en el archivo a partir de la primera lnea.
Introduzca un valor de -1 en la entrada count para leer todos los caracteres y las lneas del
archivo de texto.
3.5.2. Archivos de Hoja de Clculo
Cuando se requiere escribir o leer un archivo de texto que contenga informacin
numrica tal como los valores de medicin de una variable y se requiere adems que dicha
informacin sea accesible a travs de algn programa de hoja electrnica de clculo, como
Excel por ejemplo, entonces se pueden utilizar las funciones de LabVIEW especficas para
esto que son: Escribir en Archivo de Hoja de Clculo (Write to Spreadsheet File) y Leer de
Archivo de Hoja de Clculo (Read from Spreadsheet File).
[Link]. Escribir en Archivo de Hoja de Clculo (Write to Spreadsheet File)
Fig. 3.35. Funcin Escribir en Archivo de Hoja de Clculo.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 85 Dr. Gerardo Trujillo Schiaffino
Esta funcin convierte un arreglo numrico 2D o 1D del tipo entero o flotante a una
cadena de texto y escribe esta cadena a un nuevo archivo o agrega la cadena a un archivo
existente. El tipo de datos que se cablea a la entrada de datos 2D Data o 1D Data determina
la instancia polimrfica a usar. Tambin se puede obtener la transpuesta de la matriz de
datos. El VI abre o crea el archivo antes de grabar en l y se cierra despus. Puede utilizar
esta VI para crear un archivo de texto legible por la mayora de las aplicaciones de hoja de
clculo.
[Link]. Leer de Archivo de Hoja de Clculo (Read from Spreadsheet File)
Fig. 3.36. Funcin Leer de Archivo de Hoja de Clculo.
Esta funcin lee un determinado nmero de lneas o filas de un archivo de texto
numrico a partir de un determinado carcter (offset) y convierte los datos en un arreglo
numrico 2D o 1D del tipo flotante en doble precisin. Se debe seleccionar manualmente el
formato de texto que desea utilizar. Tambin se puede, opcionalmente, hacer la transpuesta
de la matriz. El VI abre el archivo antes de la lectura del mismo y se cierra despus. Puede
utilizar esta VI para leer un archivo de hoja de clculo en formato de texto.
[Link]. Identificadores (Refnums)
En LabVIEW existe un tipo de variable especial llamada refnum que se utiliza como
identificador nico de objetos, tales como archivos, dispositivos, o conexiones de red.
Debido a que un refnum es un apuntador temporal a un objeto, este es vlido
nicamente durante el perodo en que el objeto est abierto. Si se cierra el objeto, LabVIEW
desasocia el refnum con el objeto, este refnum se convierte en obsoleto. Si se abre de
nuevo el objeto, LabVIEW crea un nuevo refnum que es diferente al anterior. LabVIEW
asigna memoria para un objeto que se asocia con un refnum por lo cual se debe cerrar el
refnum para liberar el objeto de la memoria.
[Link]. Rutas de Archivo (Paths)
LabVIEW tambin define un tipo de variable especial para manejar rutas de archivo.
Una ruta de archivo (path) contiene la direccin completa de la ubicacin de un archivo
dentro de la jerarqua de archivos.
TSIB: Programacin por Flujo de Datos Funciones de Programacin
Facultad de Ingeniera UACH 86 Dr. Gerardo Trujillo Schiaffino
[Link]. Conversin entre Identificadores y Rutas de Archivo (Refnum to Path)
Debido a que algunas de las funciones para manejo de archivos utilizan como
parmetro de entrada o salida los identificadores (refnum) del archivo y en cambio otras
requieren la ruta (path) del archivo, se hace necesario contar con alguna herramienta de
conversin entre estos tipos de variable como la funcin Convertir de Identificador a Ruta de
Archivo (Refnum to Path) mostrada en la figura 3.37.
Fig. 3.37. Funcin Convertir de Identificador a Ruta de Archivo.
Ejercicio 3.7 Escritura de Archivos
1. Crear un programa para guardar en un archivo un reporte de mediciones.
2. Utilizando el ejercicio anterior (4.6) generar un encabezado con los datos generales
descritos en dicho ejercicio.
3. Simular un proceso de medicin que genera 25 lecturas de temperatura entre 50 y 60
grados.
4. Utilizando la funcin Write to Text File guardar en un archivo el encabezado generado en el
paso 2.
5. Utilizando la funcin Write to Spreadsheet File guardar en el mismo archivo las
temperaturas simuladas en el paso 3.
6. Utilice la funcin Refnum to Path para asegurar que las temperaturas simuladas se
guarden en el mismo archivo que el encabezado.
7. Ejecute su programa
8. Guarde el VI como Escritura [Link]
9. Utilizando Excel abra el archivo generado en este ejercicio
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 87 Dr. Gerardo Trujillo Schiaffino
Unidad IV.
GRAFICACION DE DATOS.
Las grficas son indicadores muy verstiles en LabVIEW. Pueden ser altamente
adaptables y pueden ser usados para mostrar de forma concisa una gran cantidad de
informacin.
LabVIEW cuenta con una gran variedad de graficas para casi todas las aplicaciones,
pero los tres tipos de grficas ms utilizados son: Waveform Chart, Waveform Graph y XY
Graph.
4.1. Registrador de Formas de Onda (Waveform Chart)
Las grficas del tipo Waveform Chart (registrador de forma de onda) es un indicador
numrico especial que muestra en una grfica uno o ms trazos (plots) correspondientes a
variables numricas.
La grfica Waveform Chart est localizada en la paleta Controls Modern Graph,
como se muestra en la figura 4.1.
Fig. 4.1. Ubicacin de una grfica Waveform Chart en el panel frontal.
click
click
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 88 Dr. Gerardo Trujillo Schiaffino
4.1.1. Trazo Sencillo
Cuando se utiliza este tipo de grfica para mostrar un solo trazo o variable,
simplemente se cablea la terminal de la grafica a la salida escalar que se desea graficar como
se muestra en la figura 4.2.
Fig. 4.2. Conexin de una grfica Waveform Chart en el diagrama de bloque para trazo simple.
Bajo estas condiciones la grfica utiliza la configuracin por default y va graficando uno
a uno los valores que va enviando la variable numrica conectada en esta.
4.1.2. Personalizacin de las Grficas
Uno de los aspectos que da mayor versatilidad a las grficas en LabVIEW, es su
capacidad de personalizarlas, de manera que la informacin presentada en la grfica exprese
las caractersticas que el usuario quiere resaltar en ellas.
Por ejemplo, se pueden cambiar los valores mnimo y mximo de los ejes x y y, dando
doble click al valor con la herramientas de etiquetado y escribiendo el nuevo valor. De manera
similar, se puede cambiar las etiquetas asignadas por default a los ejes (Time y Amplitude).
Para personalizar la representacin grfica de cada trazo e la grfica se puede dar un
click derecho a la leyenda de la grafica y cambiar el estilo, forma y color de cada trazo.
Tambin es posible personalizar la grfica seleccionando Properties del men
emergente al hacer click derecho sobre esta, como se muestra en la figura 4.3, en la ventana
de configuracin que aparece se puede personalizar la apariencia, el formato y precisin, los
trazos, las escalas y la documentacin. Esta ventana de configuracin permite acceder a todas
las caractersticas personalizables de la grfica.
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 89 Dr. Gerardo Trujillo Schiaffino
Fig. 4.3. Ventana de configuracin para personalizar una grfica Waveform Chart.
4.1.3. Modo de actualizacin de datos
Las grficas Waveform Chart de LabVIEW se pueden configurar para actualizar el
rea grafica de datos en tres modos diferentes: strip chart, scope chart y sweep chart.
El modo por default es el strip chart, en el cual el rea grfica se va llenando punto a
punto y al completarse esta la grfica se va recorriendo (scroll) con un corrimiento sencillo por
cada punto que se grafica.
En el modo scope chart el rea grfica se va llenando punto a punto y al completarse
esta la grfica se hace un corrimiento de una pantalla completa, dando la apariencia de que se
borra la grafica y vuelve a empezar.
Finalmente en el modo sweep chart aparece un cursor rojo sobre la grafica que va
barriendo de izquierda a derecha toda el rea, los valores de la grfica se actualizan al pasar
el cursor.
Estos modos de actualizacin se configuran seleccionando Update Mode en la
pestaa Appearance de la ventana de personalizacin.
4.1.4. Trazo Multiple.
Las grficas Waveform Chart tambin pueden mostrar trazos de multiples seales,
para hacer esto se enva a la terminal de la grafica un cluster compuesto de valores escalares
donde cada valor es una trazo a graficar. La figura 4.4 muestra un ejemplo de un registrador
de forma de onda mltiple.
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 90 Dr. Gerardo Trujillo Schiaffino
Fig. 4.4. Conexin de una grfica Waveform Chart en el diagrama de bloque para trazo mltiple.
De nuevo la grafica utiliza la configuracin por default y asigna colores diferentes a
cada una de las variables numricas conectadas en esta.
4.1. 5. Trazos Mltiples Apilados.
La figura 4.5 muestra un ejemplo de una grfica Waveform Chart configurada para
mostrar de manera apilada tres seales aleatorias con personalizaciones diferentes
Fig. 4.5. Ejemplo de una grfica Waveform Chart personalizada.
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 91 Dr. Gerardo Trujillo Schiaffino
4.1.6. Consideraciones para el uso de Waveform Chart.
El uso de las grficas Waveform Chart resulta, como se ha visto hasta aqu, muy
sencillo y amigable, sin embargo, este tipo de grficas tiene algunas restricciones de uso.
Como primer consideracin, debemos tomar en cuenta que la actualizacin del rea
grfica en cada valor que se grafica da como resultado una muy baja velocidad de graficacin,
por lo cual este tipo de grficas no es recomendable en el caso de trabajar con seales
dinmicas o de altas frecuencias. Solo se recomienda su uso en aplicaciones para la
graficacin de seales lentas como puede ser el caso de variables industriales (temperatura,
nivel, flujo, presin, etc.).
Otra consideracin importante para el uso de esta grfica es que los valores
correspondientes al eje X representan el nmero consecutivo del valor graficado (muestra) y
se encuentran uniformemente distribuidos.
Ejercicio 4.1 Uso de las grficas Waveform Chart
1. Crear un programa para simular el monitoreo de un proceso industrial. El proceso consiste
en tres variables a monitorear: temperatura, flujo y nivel.
2. Simule la generacin de una seal de temperatura que vara aleatoriamente entre 50 y 70
grados, mostrar su grfica en forma de lnea continua.
3. Active un indicador de alarma si la temperatura sube de 65 grados
4. Simule la generacin de una seal de flujo que vara aleatoriamente entre 20 y 25
litros/segundo, mostrar su grfica en forma de histograma de barras.
5. Active un indicador de alarma si el flujo baja de 21 litros/segundo.
6. Simule la generacin de una seal de nivel que vara aleatoriamente entre 45 y 50
centmetros, mostrar su grfica en forma de puntos de dispersin.
7. Active un indicador de alarma si el nivel sube de 48 centmetros
8. Personalice la grafica para mostrar los trazos apilados, con distinto color de fondo, rejillas
activadas y 50 lecturas por grfica (vea la figura 4.5).
9. Simule una lectura cada 3 segundos.
10. Detenga el programa si el usuario presiona un botn de paro en el panel o si las tres
alarmas se activan simultneamente.
11. Ejecute su programa
12. Guarde el VI como Waveform Chart .vi
4.2. Grfica de Forma de Onda (Waveform Graph)
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 92 Dr. Gerardo Trujillo Schiaffino
Cuando se requiere graficar seales dinmicas (que contienen altas frecuencias) el uso
de los registradores de forma de onda (Waveform Chart) resulta inadecuado debido a su baja
velocidad de graficacin.
Sin embargo, LabVIEW cuenta con otro tipo de grfica ms adecuada para este tipo de
seales: la grfica de forma de onda (Waveform Graph).
A diferencia de la Waveform Chart que grafica los datos uno a uno conforme son
enviados a la grfica, la Waveform Graph recibe los datos en forma de un arreglo numrico,
mostrando en la grfica en un solo paso el trazo completo de la forma de onda recolectada.
La grfica Waveform Graph est localizada en la paleta Controls Modern Graph,
como se muestra en la figura 4.6.
Este tipo de grfico de forma de onda traza solamente funciones de una sola variable,
como en y = f(x), con puntos distribuidos uniformemente a lo largo del eje x, tal como formas
de onda adquiridas con tiempo variable.
Fig. 4.6. Ubicacin de una grfica Waveform Graph en el panel frontal.
4.2.1. Trazo Simple
Por default las grficas de forma de onda aceptan un solo arreglo de valores e
interpreta los datos como puntos en el grfico que incrementa el ndice x por uno comenzando
en x = 0.
La figura 4.7 muestra el ejemplo de una grfica de 100 nmeros aleatorios entre 0 y 1
utilizando una Waveform Graph. Ntese que los valores del arreglo son interpretados como
click
click
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 93 Dr. Gerardo Trujillo Schiaffino
valores para la coordenada y (amplitud) mientras que los valores correspondientes a la
coordenada x (tiempo) son asignados automticamente con x
0
=0 y x=1.
Fig. 4.7. Uso de una grfica Waveform Graph para trazo sencillo con x
0
=0 y x=1.
Cuando las condiciones de adquisicin de la forma de onda a graficar son diferentes de
los valores tomados por default, por ejemplo para una seal que inicia en x
0
=10 y cuyas
muestras fueron tomadas cada x=5. Toda esta informacin se puede enviar a la grafica en
forma de un cluster compuesto de tres elementos: el primero es un valor numrico que
representa el valor inicial x
0
, el segundo es otro valor numrico que representa el incremento
x, y el tercero es el arreglo de valores de y a graficar. La figura 4.8 muestra el ejemplo de
graficacin de una forma de onda bajo las condiciones antes descritas.
Fig. 4.8. Uso de una grfica Waveform Graph para trazo sencillo con x
0
=10 y x=5.
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 94 Dr. Gerardo Trujillo Schiaffino
El primer valor graficado de x aparecen en x=10 y el eje X se re-escala para
representar adecuadamente los incrementos de x=5 en cada valor graficado.
4.2.2. Trazo- Mltiple
Los grficos de forma de onda tambin aceptan trazos mltiples, esto se hace a travs
de un arreglo bidimensional de valores, en donde cada rengln del arreglo representa una
forma de onda independiente a graficar. Por default, al igual que en trazo sencillo, la grfica
interpreta los datos de cada arreglo como los valores y en la grfica e incrementa el ndice x
por uno, comenzando en x = 0.
La figura 4.9 muestra el ejemplo de un a grafica Waveform Graph utilizada para
graficar simultneamente tres formas de onda independientes con los valores por default de
x
0
=0 y x=1 en las tres seales.
Fig. 4.9. Uso de una grfica Waveform Graph para trazo mltiple con x
0
=0 y x=1.
En el caso de las grficas de forma de onda de trazos mltiples tambin es posible
especificar condiciones diferentes a las asumidas por default para cada uno de los arreglos de
datos. Para ello se define un cluster, igual que en trazo sencillo, para cada una de las formas
de onda y luego se agrupan como un arreglo de clusters que se enva a la grfica. La figura
4.10 muestra un ejemplo de una grfica Waveform Graph para trazo mltiple con condiciones
diferentes a x
0
=0 y x=1.
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 95 Dr. Gerardo Trujillo Schiaffino
Fig. 4.10. Uso de una grfica Waveform Graph para trazo mltiple con condiciones diferentes.
4.2.3. Personalizacin de las Grficas
Las graficas de forma de onda tambin se pueden personalizar de manera similar a los
registradores de forma de onda seleccionando Properties del men emergente al hacer click
derecho sobre esta, como se muestra en la figura 4.11,
Fig. 4.11. Ventana de configuracin para personalizar una grfica Waveform Graph.
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 96 Dr. Gerardo Trujillo Schiaffino
4.2.4. Consideraciones para el uso de Waveform Graph.
Debido a su capacidad de graficar arreglos previamente generados, este tipo de
grficas (Waveform Graph) resultan muy tiles para la visualizacin de seales dinmicas o
con contenido de altas frecuencias.
Sin embargo, aunque las grficas de forma de onda nos proporcionan un poco de
flexibilidad sobre las representacin de los valores graficados en el eje X, al permitirnos definir
un valor inicial y un incremento, an presentan el inconveniente de que solo se pueden
representar formas de onda, seales o informacin uniformemente distribuida en el eje X,
haciendo inviable su uso en la representacin grfica de funciones que no presenten este
comportamiento o bien de funciones con dependencia de dos variables f(x,y).
Ejercicio 4.2 Uso de las grficas Waveform Graph
1. Crear un programa para la simulacin de una seal con adicin de ruido y de un filtro digital
pasa bajas para eliminarlo.
2. Simule la generacin de una seal senoidal con amplitud igual a 5 y obtenga un arreglo de
360 muestras que corresponda a un ciclo de la funcin. La funcin Sine Pattern para
generar un seal de patrn senoidal se encuentra en la sub-paleta de funciones Signal
Processing/Signal Generation.
3. Simule una seal de ruido blanco y obtenga un arreglo numrico con 180 muestras y
amplitud de 0.05. La funcin Uniform Noise para generar un patrn de ruido blanco se
encuentra en la sub-paleta de funciones Signal Processing/Signal Generation.
4. Grafique ambas seales en una sola grafica iniciando la seal de ruido en la muestra 90.
5. Sume la seal de ruido al patrn senoidal a partir de la muestra 90.
6. Despliegue en una grfica la seal resultante.
7. Filtre la seal implementando un filtro pasa bajas promediando cinco muestras.
8. Despliegue en una grfica la seal filtrada.
9. Ejecute su programa
10. Guarde el VI como Waveform [Link]
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 97 Dr. Gerardo Trujillo Schiaffino
4.3. Grfica X-Y (XY Graph)
Cuando se requiere graficar funciones que no han sido muestreadas uniformemente o
bien que no tienen un comportamiento uniforme y progresivo en alguno o ambos ejes, se debe
utilizar las graficas x-y (XY Graph).
Este tipo de graficas exhiben cualquier set de puntos, ya sea que estos sean
muestreados uniformemente o no. La figura 4.12 muestra la ubicacin de la grafica x-y en la
paleta de controles del panel frontal.
Fig. 4.12. Colocacin de una grfica XY Graph en el panel frontal.
4.3.1. Trazo Simple
Para realizar el trazo simple de una sola seal o funcin se deben enviar a la grfica
las coordenadas (x,y) de todos los puntos a graficar, este envo de realiza a travs de un
cluster que contenga dos arreglos: un arreglo con todas las coordenadas x y un arreglo con
todas las coordenadas y.
Los elementos de los arreglos son tomados uno a uno para formar los puntos
correspondientes (x
0
,y
0
), (x
1
,y
1
), (x
2
,y
2
), etc.
La figura 4.13 muestra un ejemplo de graficacin de trazo simple utilizando una grafica
x-y en el cual se grafican los puntos: (1,1), (8,2), (5,9) y (1,3). Los arreglos X y Y
proporcionados desde el panel se empaquetan en un cluster para ser enviados a la grfica.
click
click
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 98 Dr. Gerardo Trujillo Schiaffino
Fig. 4.13. Uso de una grfica XY Graph para trazo simple.
4.3.2. Trazo Mltiple
Para realizar un trazo mltiple de seales o funciones en una grfica x-y cada seal
independiente se empaqueta en un cluster igual al correspondiente a un trazo simple y luego
se construye un arreglo con estos clusters, entonces la grafica x-y recibe un arreglo de clusters
donde cada cluster es un trazo diferente.
La figura 4.14 muestra un ejemplo de graficacin de trazo simple utilizando una grafica
x-y en el cual se grafican: plot 0=[(1,1), (8,2), (5,9) y (1,3)] y plot 1=[(2,2), (7,3), (7,8) y (0,4)].
Fig. 4.14. Uso de una grfica XY Graph para trazo mltiple.
4.3.3. Personalizacin de las Grficas
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 99 Dr. Gerardo Trujillo Schiaffino
Las graficas de forma de onda tambin se pueden personalizar de manera similar a los
registradores de forma de onda seleccionando Properties del men emergente al hacer click
derecho sobre esta, como se muestra en la figura 4.15.
Fig. 4.15. Ventana de configuracin para personalizar una grfica Waveform Graph.
4.3.4. Consideraciones para el uso de XY Graph.
Las grficas x-y permiten la graficacin de cualquier funcin expresada en forma de
coordenadas (x,y), lo cual las convierte en un tipo de grafica ms universal que los anteriores,
Sin embargo, precisamente por requerir enviar las coordenadas de cada punto separadas en
dos arreglo dentro de un cluster, su uso se torna un poco ms complicado.
Ejercicio 4.3 Uso de las grficas XY Graph
1. Crear un programa para la simulacin de Curvas de Lissajous.
2. Genere dos seales senoidales con frecuencia, amplitud, y fase variables. Utilice la funcin
express Simulate que se encuentra en la sub-paleta de funciones Signal
Processing/Waveform Generation.
3. Grafique ambas seales en grficas independientes.
4. Utilice la funcin Convert form Dinamic Data ubicada en Express/Signal Manpulation
para convertir el tipo de variable dinmica a un arreglo numrico.
TSIB: Programacin por Flujo de Datos Graficacin de Datos
Facultad de Ingeniera UACH 100 Dr. Gerardo Trujillo Schiaffino
5. Enve ambas seales a una grafica x-y utilizando una de ellas como arreglo de coordenadas
x y la otra como arreglo de coordenadas y.
6. Ejecute su programa
7. Vare los parmetros de ambas seales y observe la grafica resultante
8. Guarde el VI como XY [Link]
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 101 Dr. Gerardo Trujillo Schiaffino
Unidad V.
HERRAMIENTAS DE PROGRAMACION.
5.1. VARIABLES LOCALES
De acuerdo al paradigma de la programacin por flujo de datos dos o ms fuentes de
datos no pueden alambrarse juntas ya que esto genera un error de sintaxis. Esto implica un
problema cuando se requiere asignar en distintas partes del programa a una misma terminal
datos diferentes generados en fuentes independientes.
Por ejemplo, si la lgica de nuestro programa requiere hacer una asignacin a un
indicador x asignando primero x=a, luego x=b y finalmente x=c, donde a, b y c son datos
diferentes generados en fuentes independientes.
De igual manera evaluar la expresin x=x+1 resulta complicado si no se quiere utilizar
algn tipo de ciclo con registros de corrimiento o nodos de retroalimentacin.
La solucin a estos inconvenientes la dan la generacin de variables locales. Las
variables locales son terminales asociadas a los controles e indicadores, a travs de las
cuales podemos leerlos o escribirlos sin utilizar la terminal propia del elemento en cuestin.
5.1.1. Creacin de una Variable Local.
Existen dos maneras de crear una variable local. La ms sencilla consiste en crearla
de manera automtica a travs del men emergente (popup) del control o indicador se quiere
manejar a travs de la variable local. Para ello se debe seleccionar en el men de popup las
opciones Create/Local Variable, como se muestra en la figura 5.1. Esto genera una terminal
de variable local asociada al control o indicador. Esta terminal es del mismo tipo de variable
que tenga definido el elemento que la gener y est identificada con el mismo nombre. Para
un mismo elemento (control o indicador) se pueden crear tantas terminales de variable local
como sean necesarias.
Fig. 5.1. Creacin automtica de una terminal de variable local.
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 102 Dr. Gerardo Trujillo Schiaffino
La otra manera de crear una variable local es un poco ms larga y consiste de dos
pasos: primero se crea una terminal genrica de variable local y luego se le asigna el
elemento al que va a estar asociada.
Para realizar el primer paso en el diagrama a bloques se selecciona Local Variable
de la sub-paleta Programming/Structures, tal como se muestra en la figura 5.2.
Fig. 5.2. Ubicacin de la terminal genrica para variable local.
Luego, para asociar esta terminal genrica con alguno de los controles o indicadores
del panel se accesa el men emergente y se selecciona el nombre del elemento de una lista
de todos los elementos del panel a travs de la opcin Select Item como se muestra en la
figura 5.3.
Fig. 5.3. Asociacin de la terminal genrica de variable local con el elemento deseado.
click
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 103 Dr. Gerardo Trujillo Schiaffino
5.1.2. Uso de las variables locales.
El escribir en una variable local tiene el mismo resultado que pasar los datos
directamente a la terminal del control o indicador asociado, con la ventaja de que se puede
escribir o leer el elemento sin importar que se trate de un control o un indicador.
Por default, las terminales de variables locales estn habilitadas para escribir en ellas
(asignar valor). Sin embargo, si lo que se quiere es leer el valor actual del elemento asociado,
entonces se debe cambiar la terminal a modo de lectura seleccionando Change to Read del
men emergente de la terminal como se muestra en la figura 5.4.
Fig. 5.4. Cambio de la terminal de variable local a modo de lectura.
Las terminales de variable local permiten leer y/o escribir las veces que sea necesario
cualquier control o indicador del VI en cualquier momento y lugar dentro del programa lo cual
le da a LabVIEW una gran capacidad de programacin.
Sin embargo, debido al hecho de que su uso dificulta la visualizacin del flujo de datos
en el programa, es recomendable no abusar de su uso.
Ejercicio 5.1 Uso de las variables Locales
1. Desarrollar de nuevo el ejercicio 3.11 omitiendo el uso de registros de corrimiento o nodos
de retroalimentacin.
2. Resolver el problema usando variables locales.
3. Ejecute su programa
4. Guarde el VI como Variables [Link]
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 104 Dr. Gerardo Trujillo Schiaffino
5.2. VARIABLES GLOBALES
Cuando se requiere compartir datos entre programas (VIs) independientes, la opcin
ms viable es el uso de variables globales. Las variables globales permiten leer y escribir
datos que son compartidos por diferentes VIs en ejecucin.
En realidad las variables globales son una especie de VI que no tiene diagrama a
bloques solamente tiene un panel frontal en el cual se definen los controles e indicadores que
se utilizarn para transferir datos entre los Vis. En una misma variable global se pueden
definir tantos controles e indicadores como sea necesario
5.2.1. Creacin de una Variable Global.
Para crear una variable global se selecciona en el diagrama a bloques Global
Variable de la sub-paleta Programming/Structures, tal como se muestra en la figura 5.5.
Esto genera una terminal genrica para variable global.
Para poder utilizar esta terminal en primer lugar es necesario abrir su panel para
colocar en el los controles e indicadores que se utilizarn para la transferencia de datos esto
se hace seleccionando Open Front Panel del men emergente como se muestra en la figura
5.6.
Fig. 5.5. Ubicacin de la terminal de variable global.
click
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 105 Dr. Gerardo Trujillo Schiaffino
Fig. 5.6. Acceso al panel frontal de la variable global.
Luego se colocan en el panel frontal de la variable global los controles e indicadores
que se van a utilizar, tal y como se muestra en la figura 5.7.
Fig. 5.7. Controles en el panel frontal de la variable global.
Finalmente se asocia la terminal con uno de los elementos del panel accesando el
men emergente y seleccionando el nombre del elemento de una lista de todos los elementos
del panel a travs de la opcin Select Item como se muestra en la figura 5.8.
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 106 Dr. Gerardo Trujillo Schiaffino
Fig. 5.8. Asociacin de la terminal genrica de variable global con el elemento deseado.
5.2.2. Uso de las Variables Globales.
Al igual que en caso de las variables locales, por default las terminales de variables
globales estn habilitadas para escribir en ellas (asignar valor). Sin embargo, si lo que se
quiere es leer el valor actual del elemento asociado, entonces se debe cambiar la terminal a
modo de lectura seleccionando Change to Read del men emergente de la terminal como se
muestra en la figura 5.9.
Fig. 5.9. Cambio de la terminal de variable global a modo de lectura.
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 107 Dr. Gerardo Trujillo Schiaffino
Ejercicio 5.2 Uso de las Variables Globales
1. Construya un VI que escriba en una variable global el valor introducido por el usuario en una
perilla numrica.
2. Construya otro VI que lea la misma variable global y la despliegue en un medidor de aguja.
3. Detenga ambos programas cuando se pulse un botn de paro en cualquiera de los
programas.
4. Ejecute ambos programas.
5. Guarde los VIs como Variables Globales [Link] y Variables Globales [Link] respectivamente.
5.3. NODOS DE PROPIEDAD
Los nodos de propiedad son una herramienta que nos permite accesar a travs de
cdigo a muchas de las caractersticas configurables que se encuentran en los mens
emergentes de los objetos, dando a la programacin en LabVIEW una excelente flexibilidad.
5.3.1. Creacin de un Nodo de Propiedad
Los nodos de propiedad se crean de manera automtica a travs del men emergente
(popup) del control o indicador del cual se le llama. Para ello se debe seleccionar la
propiedad especfica que se quiere accesar en el men de popup a travs de las opciones
Create/Property Node, como se muestra en la figura 5.10.
Esto genera una terminal de nodo de propiedad asociada a la propiedad especfica del
control o indicador. Esta terminal est identificada con el mismo nombre del elemento, el
nombre de la propiedad aparece en el color correspondiente al tipo de variable que
corresponde a dicha propiedad.
Para un mismo elemento (control o indicador) se pueden crear tantas terminales de
nodo de propiedad como sean necesarias.
La lista de propiedades depende del tipo especfico de control o indicador.
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 108 Dr. Gerardo Trujillo Schiaffino
Fig. 5.10. Creacin automtica de una terminal de nodo de propiedad.
5.3.2. Uso de los Nodos de Propiedad.
En caso de los nodos de propiedad, por default las terminales creadas estn
habilitadas para leer de ellas el valor actual de dicha propiedad. Sin embargo, si lo que se
quiere es escribir e ellas y con ello cambiar el valor de la propiedad, entonces se debe
cambiar la terminal a modo de escritura seleccionando Change to Write del men emergente
de la terminal como se muestra en la figura 5.11.
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 109 Dr. Gerardo Trujillo Schiaffino
Fig. 5.11. Cambio de la terminal de nodo de propiedad a modo de escritura.
5.3.3. Acceso a Propiedades Mltiples.
A travs de un solo nodo se puede acceder a mltiples propiedades de un mismo
elemento, para ello se requiere seleccionar la opcin Add Element del men de popup del
nodo, como se muestra en la figura 5.12.
Fig. 5.12. Adicin de propiedades a un mismo nodo.
Por default la propiedad adicionada es la misma que la propiedad original que tena el
nodo, para cambiarla se selecciona la nueva propiedad de la opcin Properties del men
emergente como se muestra en la figura 5.13.
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 110 Dr. Gerardo Trujillo Schiaffino
Fig. 5.13. Cambio de propiedades.
Cada una de las propiedades adicionadas al nodo se puede configurar de manera
independiente en modo de lectura o de escritura.
Ejercicio 5.3 Uso de los Nodos de Propiedad
1. Construya un VI que escriba el valor de control numrico en un indicador numrico de aguja.
Los valores posibles de la perilla son de -10 a 50.
2. Si el valor de la perilla es negativo el indicador debe ser invisible.
3. Si el valor de la perilla es mayor de 40 el indicador debe parpadear.
4. Ejecute su programa.
5. Guarde el VI como Nodos de [Link].
TSIB: Programacin por Flujo de Datos Herramientas de Programacin
Facultad de Ingeniera UACH 111 Dr. Gerardo Trujillo Schiaffino
Ejercicio 5.4 Adicional
1. Programe un instrumento virtual que simule la adquisicin de una seal de temperatura que
vara de manera aleatoria entre 10 y 50 grados centgrados, simulando una muestra de
temperatura cada segundo.
2. Grafique la seal mostrando en la misma grfica un nivel lmite alto y un nivel lmite bajo
proporcionados desde el panel.
3. Cuando la temperatura salga del rango definido por los lmites encienda un indicador de
alarma (use solo un indicador para fuera de rango).
4. Al activarse la alarma el control del lmite afectado deber parpadear.
5. El instrumento deber ir guardando en un archivo la temperatura indicando tambin el
tiempo relativo en que fue registrada (incluir un encabezado en el archivo con su nombre,
hora y fecha de inicio de registro).
6. Al terminar el programa deber calcular la media, desviacin estndar, la temperatura
mxima y la temperatura mnima registradas, as como el tiempo relativo en que fueron
tomadas.
7. Documentar el programa lo ms completo posible y dejarlo preparado para usarse como
sub-instrumento.
8. Cuide la presentacin de la interfaz de usuario
9. Ejecute su programa.
10. Guarde el VI como Monitoreo con [Link].
TSIB: Programacin por Flujo de Datos Arquitecturas de Programacin
Facultad de Ingeniera UACH 112 Dr. Gerardo Trujillo Schiaffino
Unidad VI.
ARQUITECTURAS DE PROGRAMACION.
6. ARQUITECTURAS DE PROGRAMACIN
Dependiendo de la funcionalidad requerida por la aplicacin existen diversas maneras
de estructurar un programa en LabVIEW. Las tres arquitecturas ms comnmente utilizadas
son: VI simple, VI general y maquina de estado (state machine).
6.1. Arquitectura de un VI Simple
Cuando se hacen pruebas de laboratorio rpidas, no se necesita una arquitectura
complicada. El programa puede consistir de un solo VI que toma una medicin, hace clculos,
y ya sea despliega los resultados o los guarda en el disco, pero en general no existe una
estructura de control. La operacin inicia cuando el usuario le da click a la flecha de inicio (run
arrow), el VI se ejecuta una sola vez y luego termina.
Adems de ser usada para aplicaciones de prueba, esta arquitectura tambin es
utilizada para desarrollar componentes funcionales dentro de aplicaciones ms grandes, es
decir como subVIs dentro de una aplicacin principal.
La figura 6.1 muestra un ejemplo de un programa con arquitectura de VI simple utilizado
para efectuar un clculo de conversin de grados Centgrados a grados Fahrenheit
Fig. 6.1. Arquitectura de un VI simple.
Ejercicio 6.1 Desarrollo de un VI Simple
1. Utilizando la arquitectura de un VI simple desarrolle un sub-instrumento virtual para realizar
una conversin de grados Fahrenheit a grados Centgrados.
2. Ejecute y pruebe el programa
3. Gurdelo como VI [Link]
TSIB: Programacin por Flujo de Datos Arquitecturas de Programacin
Facultad de Ingeniera UACH 113 Dr. Gerardo Trujillo Schiaffino
6.2. Arquitectura de un VI General
A diferencia de un VI simple, un Vi general si cuenta con una estructura de control
propia. Generalmente este tipo de arquitectura se utiliza para el desarrollo de programas de
aplicacin final.
Para el diseo de programas con esta arquitectura se realizan tres pasos:
Inicio (startup)
Esta rea se usa para inicializar el hardware, leer informacin de configuracin,
preguntar al usuario la localizacin de archivos o cualquier otro procedimiento de inicializacin
que sea necesario.
Aplicacin Principal (main application)
Generalmente consiste de por lo menos un ciclo que se repite hasta que el usuario
decida salir del programa, o el programa termina debido a otras razones. Aqu es donde se
realiza la mayor parte de la lgica del programa y se resuelve el problema de la aplicacin de
este.
Apagado (shutdown)
Esta seccin usualmente se encarga de cerrar los archivos, escribir datos de
configuracin al disco, restablecer los datos de entrada/salida (I/O) a su estado predeterminado
o cualquier otro procedimiento de apagado que sea necesario
La figura 6.2 muestra el ejemplo de un programa de LabVIEW con arquitectura de VI
General. Ntese que los procesos de inicializacin y apagado se han compactado como subVIs
y la secuencia de ejecucin se establece a travs de la dependencia generada por la conexin
de un cluster de error.
Fig. 6.2. Arquitectura de un VI general.
TSIB: Programacin por Flujo de Datos Arquitecturas de Programacin
Facultad de Ingeniera UACH 114 Dr. Gerardo Trujillo Schiaffino
Para algunas aplicaciones sencillas, el ciclo de la aplicacin principal puede ser
bastante directo. Sin embargo, cuando se tiene interfaces de usuario complejas o eventos
mltiples (accin de usuario, accionamientos de entradas/salidas, etc.), esta seccin puede
volverse bastante complicada.
Ejercicio 6.2 Desarrollo de un VI General
1. Utilizando la arquitectura de un VI general desarrolle un programa que evale una funcin
trigonomtrica seleccionada por el usuario (seno, coseno, tangente) desde un valor inicial
hasta un valor final (en grados) y con un incremento tambin definido por el usuario
2. En la etapa de inicializacin lea los parmetros para la evaluacin
3. En el ciclo principal evale y grafique la funcin
4. En la etapa de apagado guarde en archivo los valores obtenidos en la evaluacin.
5. Ejecute y pruebe el programa
6. Gurdelo como VI [Link]
6.3. Arquitectura de un VI de Maquina de Estado
Usted puede hacer sus diagramas ms compactos con el uso de una estructura de
caso simple para manejar todos sus eventos. En este modelo usted escanea (scan) la lista de
posibles eventos, o estados, y luego correlaciona (map) estos a un caso. Para el VI mostrado
arriba, los estados posibles son inicio (startup), ocio (idle), evento 1, evento2 y apagado
(shutdown). Estos estados se encuentran guardados en una constante enumerada. Cada
estado tiene su propio caso en el lugar que usted coloque los nodos apropiados. Mientras se
ejecuta un caso, el siguiente caso es determinado por el resultado actual. El siguiente caso que
se ejecutar es guardado en el registro de desplazamiento (shift register). Si ocurre un error
en cualquier estado, el caso de apagado (shutdown) es llamado.
La ventaja de este modelo es que su diagrama se puede reducirse significativamente
(izquierda a derecha), haciendo que sea ms fcil de lee y depurar. Una desventaja de la
estructura de secuencia es que no puede saltarse o salirse de un caso. Este mtodo resuelve
ese problema ya que cada caso determina cual ser el prximo caso que se ejecutara.
Una desventaja de esta tcnica es que con se pueden perder eventos. Si dos eventos
ocurren al mismo tiempo, este modelo maneja solo el primero, y el segundo se pierde. Esto
puede conducir a errores que son difciles de depurar porque solo ocurren ocasionalmente.
Existen versiones ms complejas de la Arquitectura del VI de la Maquina de Estado que
contiene cdigo extra para construir un queue de eventos (estados) de manera que usted no
pierda ningn evento.
TSIB: Programacin por Flujo de Datos Arquitecturas de Programacin
Facultad de Ingeniera UACH 115 Dr. Gerardo Trujillo Schiaffino
Fig. 6.3. Arquitectura de una maquina de estados.
Ejercicio 6.3 Desarrollo de una Maquina de Estados
1. Utilizando la arquitectura de una maquina de estados desarrolle un programa que evale
una funcin trigonomtrica seleccionada por el usuario (seno, coseno, tangente) desde un
valor inicial hasta un valor final (en grados) y con un incremento tambin definido por el
usuario
2. En el estado de inicializacin lea los parmetros para la evaluacin
3. En el estado de evaluacin evale y grafique la funcin
4. En el estado de apagado guarde en archivo los valores obtenidos en la evaluacin.
5. Ejecute y pruebe el programa
6. Gurdelo como Maquina de [Link]