Documente Academic
Documente Profesional
Documente Cultură
Estructuras
También pueden pasarse y recibirse datos desde una estructura SEQUENCE al exterior
a través de túneles, representados mediante un pequeño cuadrado en el borde de la
estructura. Cuando hay un dato de salida, sólo un frame de la estructura puede escri-
bir valores en él.
FLAT SEQUENCE funciona de igual forma, sólo que es más visual, los frames se ven
uno a continuación del siguiente, el orden de ejecución será de izquierda a derecha. En
este caso no hay Sequence Local y los datos podrán cablearse directamente desde un
frame a otro a través de túneles. El menú contextual también será el que permita aña-
dir y eliminar frames, también se puede cambiar de un tipo de SEQUENCE a otro de
forma automática.
En la figura 2-4 puede verse una estructura FLAT SEQUENCE con dos frames, en el
primero se genera un número aleatorio y se pasa al segundo frame a través de un túnel.
2.2 CASE
La estructura CASE es el equivalente a varias de los lenguajes basados en texto: IF,
SWITCH y TRY. Su utilidad es ejecutar un código u otro dependiendo de una condición.
Al igual que una estructura SEQUENCE, en este caso también se tiene un menú en la
parte superior donde se puede elegir el subdiagrama que se muestra. En este menú se
puede ver la condición para ejecutar el código del subdiagrama correspondiente. En la
Figura 2-5 se muestra un CASE con dos subdiagramas, uno se ejecutará cuando la con-
dición que se evalúa sea FALSE y otro cuando sea TRUE.
Copyright © 2007. Marcombo. All rights reserved.
El terminal que aparece en el lado izquierdo marcado con el símbolo «?» es llamado
selector. El valor que llega a este selector es la condición que se evalúa para seleccionar
el subdiagrama a ejecutar. Si el tipo de datos que se conecta al selector del CASE es boo-
leano, éste actuará como una sentencia IF…THEN…ELSE de un lenguaje de texto tradi-
cional. También pueden conectarse otros tipos de datos, en este caso actuará como un
Lajara, Vizcaíno, José Rafael. <i>LabVIEW: entorno gráfico de programación</i>, Marcombo, 2007. ProQuest Ebook Central,
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3175272. 39
Created from unadsp on 2019-09-01 14:03:04.
LabView-cap_02.qxp 22/12/2006 16:24 PÆgina 40
LabVIEW
Para un selector booleano sólo se tendrán dos casos: verdadero o falso. Para numéricos
la condición será que el dato del selector sea igual al mostrado en el menú del CASE,
para datos enum o ring se puede escribir el nombre del ítem en lugar del valor numé-
rico. Con los strings sucede lo mismo que con los numéricos enum o ring, el valor mos-
trado en el menú aparecerá como un texto encerrado en comillas dobles. En el caso de
conectar al selector un cluster de error cambiará el color del borde de la estructura, los
subdiagramas se ejecutarán dependiendo de si el selector marca un error o no.
En los numéricos además se puede asignar una lista de valores escribiéndolos separa-
dos por comas o también se puede especificar un rango de valores, por ejemplo si se
desea ejecutar el mismo código cuando la entrada tiene el valor 4, 5, 6, 7 y 8, en el menú
del CASE se escribirá “4..8”.
Se pueden pasar datos a los subdiagramas del CASE a través de túneles. En el caso de
Copyright © 2007. Marcombo. All rights reserved.
datos de salida, todos los subdiagramas deben proporcionar un valor, hasta que esto no
ocurra LabVIEW indicará el error missing assignament to tunnel y aparecerá el túnel
con el interior vacío, como se muestra en la parte derecha de la Figura 2-7. También
existe la opción de marcar sobre el túnel Use Default If Unwired, con esto se consigue
que se asigne el valor por defecto para todos aquellos casos que no se ha cableado un
valor en el túnel de salida.
Lajara, Vizcaíno, José Rafael. <i>LabVIEW: entorno gráfico de programación</i>, Marcombo, 2007. ProQuest Ebook Central,
40
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3175272.
Created from unadsp on 2019-09-01 14:03:04.
LabView-cap_02.qxp 22/12/2006 16:24 PÆgina 41
Estructuras
Por último también hay que decir que se puede cambiar el orden de los subdiagramas
desde la opción Rearrange Cases... del menú contextual.
2.3 WHILE
El bucle WHILE repetirá el código de su interior hasta que se cumpla una condición, la
cual es evaluada en cada iteración.
En la figura 2-8 puede verse el aspecto de este bucle, en él se aprecian dos terminales:
Q El terminal de iteración es el cuadrado azul con el símbolo «i». El valor de este ter-
minal es un número entero que irá aumentando en una unidad por cada iteración
del bucle, empezando a contar desde cero.
Q La condición de stop es el terminal verde de la esquina inferior derecha de la ima-
gen. A este terminal se podrá conectar bien un valor booleano, bien un cluster de
error. A través del menú contextual podrá elegirse para los booleanos que el bucle
se detenga cuando el valor sea True (Stop if True) o False (Continue if True), en el
caso de los cluster de error sucede algo parecido con Stop on Error y Continue
while Error.
Otra de las opciones que muestra el menú contextual es Add Shift Register. Esta herra-
mienta añade dos terminales a cada lado de la estructura, estos terminales sirven para
transferir un valor desde una iteración del bucle a la siguiente. Los valores se pasarán
a la siguiente iteración en el terminal de la derecha y se leerán en el de la izquierda. Si
se conecta un valor al terminal de la izquierda en el exterior de la estructura, éste será
el valor inicial que circulará por ese cable en la primera iteración.
Copyright © 2007. Marcombo. All rights reserved.
Figura 2-9. (a) Shift register en un bucle WHILE. (b) Varios shift registers
En la figura 2-9 (a) se muestra el uso de un Shift register. En la primera iteración se leerá
el valor 10 del terminal de la izquierda, se le sumará 1 y se escribirá en el terminal de
la derecha el valor 11. Este valor será el leído en la siguiente iteración en el terminal de la
Lajara, Vizcaíno, José Rafael. <i>LabVIEW: entorno gráfico de programación</i>, Marcombo, 2007. ProQuest Ebook Central,
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3175272. 41
Created from unadsp on 2019-09-01 14:03:04.
LabView-cap_02.qxp 22/12/2006 16:24 PÆgina 42
LabVIEW
El shift register de la izquierda puede extenderse para mostrar más terminales, el ter-
minal superior tendrá el valor que se escribió en la derecha en la iteración anterior, el
siguiente terminal tendrá el valor que se escribió en la derecha dos iteraciones antes y
así sucesivamente.
En el ejemplo de la figura 2-9 (b) se puede ver un ejemplo del uso de varios shift regis-
ter. La Tabla 1 muestra los valores que tendrán cada uno de los terminales en cada ite-
ración.
1 1 0 0 1+0+0=1
2 1 1 0 1+1+0=2
3 2 1 1 2+1+1=4
4 4 2 1 4+2+1=7
5 7 4 2 7+4+2=13
6 13 7 4 13+7+4=24
Hay una utilidad que funciona de igual forma que un shift register, es el Feedback
Node. Éste consta de dos terminales:
Lajara, Vizcaíno, José Rafael. <i>LabVIEW: entorno gráfico de programación</i>, Marcombo, 2007. ProQuest Ebook Central,
42
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3175272.
Created from unadsp on 2019-09-01 14:03:04.
LabView-cap_02.qxp 22/12/2006 16:24 PÆgina 43
Estructuras
El código de la figura 2-10 ilustra el uso del Feedback Node. El programa es igual al de
la figura 2-9.
En el menú Tools > Options > Block Diagram se tiene la opción de insertar automáti-
camente Feedback Nodes dentro de los bucles cuando sea necesario.
Al igual que en otras estructuras, los datos que entren y salgan de una estructura
WHILE lo harán a través de túneles. Una opción muy interesante de los túneles en los
bucles es el Autoindexing, que se puede habilitar a través del menú contextual del
túnel cuando se quiera trabajar con arrays. Cuando se cablea un array desde el exterior
al interior de un bucle y se habilita el autoindexing, los valores leídos en ese terminal
en el interior del bucle serán los elementos que componen el array, uno por cada itera-
ción. Cuando el autoindexing está en una salida del bucle ocurre lo contrario: se cons-
truirá un array cuyos elementos serán los generados en cada iteración.
2.4 FOR
El bucle FOR es muy parecido al WHILE, también repite el código de su interior un
número de veces, pero a diferencia del anterior este número es fijado a priori y no
Copyright © 2007. Marcombo. All rights reserved.
Todo lo dicho en la explicación del bucle WHILE respecto a los shift register, los
Feedback Nodes y la salida indexada también es válido para el FOR. Tanto en el menú
contextual del WHILE como del FOR se tiene la opción de sustituir uno por el otro.
Lajara, Vizcaíno, José Rafael. <i>LabVIEW: entorno gráfico de programación</i>, Marcombo, 2007. ProQuest Ebook Central,
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3175272. 43
Created from unadsp on 2019-09-01 14:03:04.
LabView-cap_02.qxp 22/12/2006 16:24 PÆgina 44
LabVIEW
Los túneles indexados son la opción por defecto en los bucles FOR. Cuando se cablea
un array de forma indexada como entrada puede obviarse el terminal de cuenta por-
que se toma el tamaño del array como el número de veces que se ha de repetir el bucle.
2.5 EVENT
La estructura EVENT fue introducida por primera vez en la versión 6.1 de LabVIEW.
Es una estructura muy útil en VIs con los que interactúa el usuario porque mejora la
eficiencia del programa.
En la esquina superior izquierda tiene un terminal llamado Event Timeout que se usa
en el evento por defecto: el Timeout. El código del diagrama para el evento timeout se
ejecutará cuando pase el número de milisegundos indicados en el terminal Event
Timeout.
Copyright © 2007. Marcombo. All rights reserved.
Para añadir más subdiagramas hay que proceder de igual manera que con CASE, es
decir, a través del menú contextual. Cada diagrama debe tener asociados uno o varios
eventos, éstos se configuran desde la ventana Edit Events, como se puede ver en la
figura 2-14.
En esta ventana primero se muestra el número del diagrama (Events Handled for Case)
y a continuación la lista de los eventos que pueden dar lugar a la ejecución del diagra-
ma (Event Specifiers), para añadir o eliminar eventos se usan los botones de la izquier-
da. Para definir un evento primero hay que especificar su fuente en Event Sources, los
eventos de las secciones Application y This VI están predefinidos y son acciones típi-
cas, como cerrar la ventana, presionar una tecla, etc. La fuente de eventos Dynamic sólo
Lajara, Vizcaíno, José Rafael. <i>LabVIEW: entorno gráfico de programación</i>, Marcombo, 2007. ProQuest Ebook Central,
44
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3175272.
Created from unadsp on 2019-09-01 14:03:04.