Sie sind auf Seite 1von 6

Estructuras

reserved.rightsAllMarcombo.2007.©Copyright

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.

se pasa al segundo f r a m e a través de un túnel. Figura 2-4.

Figura 2-4. FLAT SEQUENCE con dos frames

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.

dición que se evalúa sea FALSE y otro cuando sea TRUE. Figura 2-5. Estructura CASE El

Figura 2-5. Estructura CASE

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.

Created from unadsp on 2019-09-01 14:03:04.

39

LabVIEW

reserved.rightsAllMarcombo.2007.©Copyright

SWITCH…CASE. Pueden conectarse al selector datos booleanos, numéricos (incluidos enum y ring), strings y clusters de error. En la Figura 2-6 se pueden ver todos estos casos.

de error. En la Figura 2-6 se pueden ver todos estos casos. Figura 2-6. Tipos de

Figura 2-6. Tipos de datos que son válidos en un CASE

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.

Cuando el selector se conecta a un string o a un dato numérico es obligatorio tener algún caso que se ejecute por defecto, es decir, debe haber un caso que se ejecute cuan- do en el selector haya un valor que no esté asignado explícitamente a algún subdiagra- ma. Para hacer que un subdiagrama sea ejecutado por defecto debe seleccionarse Make This The Default Case en el menú contextual.

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

Se pueden pasar datos a los subdiagramas del CASE a través de túneles. En el caso de 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.

casos que no se ha cableado un valor en el túnel de salida. Figura 2-7. Error

Figura 2-7. Error en un CASE: túnel vacío

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.

Estructuras

reserved.rightsAllMarcombo.2007.©Copyright

Por último también hay que decir que se puede cambiar el orden de los subdiagramas

desde la opción Rearrange Cases

2.3

WHILE

del menú contextual.

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:

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.

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.

algo parecido con Stop on Error y Continue while Error . Figura 2-8. Estructura WHILE Otra

Figura 2-8. Estructura WHILE

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.

que circulará por ese cable en la primera iteración. Figura 2-9. (a) Shift register en un

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.

Created from unadsp on 2019-09-01 14:03:04.

41

LabVIEW

reserved.rightsAllMarcombo.2007.©Copyright

izquierda, al que se le volverá a sumar 1 y así sucesivamente hasta que se cumpla la condición de parada del bucle, que en este caso es que el número sea mayor o igual a quince. Este proceso puede comprobarse ejecutando el código de la figura con la opción

de Highlight Execution activada.

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.

Tabla 1 - Valores de los shift register en cada iteración

Iteración

Shift izq arriba

Shift izq centro

Shift izq abajo

Shift derecha

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:

El terminal inicializador permite dar un valor inicial al nodo, es equivalente a conectar un valor al terminal izquierdo de shift register. Este terminal se coloca siempre en el borde izquierdo de la estructura a la misma altura que el Feedback

Node.

El Feedback Node es el otro terminal, tiene forma de flecha. En el extremo derecho se le conectará la salida, cuyo valor será leído por el extremo izquierdo en la siguiente iteración. En la primera iteración el valor leído por el extremo izquierdo será el conectado al terminal inicializador. Lógicamente siempre se ejecuta prime- ro la lectura y después la escritura.

se ejecuta prime- ro la lectura y después la escritura. Figura 2-10. Feedback Node Lajara, Vizcaíno,

Figura 2-10. Feedback Node

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.

Estructuras

reserved.rightsAllMarcombo.2007.©Copyright

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.

En la figura 2-11 puede verse un programa parecido al anterior. En el borde derecho pueden verse tres terminales, el superior es un túnel, el siguiente un shift register y el inferior una salida indexada. El valor de los dos primeros será el generado por el pro- grama en su última iteración (15), mientras que el valor en el último terminal será una lista ordenada de todos los números generados en cada iteración (11, 12, 13, 14 y 15).

números generados en cada iteración (11, 12, 13, 14 y 15). Figura 2-11. Ejemplo de túnel,

Figura 2-11. Ejemplo de túnel, shift register y autoindexing

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 puede cambiarse una vez empiece a ejecutarse.

Consta de dos terminales numéricos:

El terminal de iteración se sitúa igual que en el bucle WHILE, está en el interior de la estructura y se va incrementando en una unidad por cada iteración empezando desde cero.

El terminal de cuenta está colocado en la esquina superior izquierda de la estruc- tura simbolizado con una « N» . En él se conectará un valor numérico que será el que fije el número de repeticiones del bucle.

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.

Created from unadsp on 2019-09-01 14:03:04.

43

LabVIEW

reserved.rightsAllMarcombo.2007.©Copyright

LabVIEW reserved.rightsAllMarcombo.2007.©Copyright Figura 2-12. Estructura FOR Los túneles indexados son la opción por

Figura 2-12. Estructura FOR

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.

Al igual que la estructura CASE tienen varios subdiagramas y un menú en la parte superior para cambiar el que se muestra. En este menú también se tiene una condición que hace que el código del subdiagrama correspondiente se ejecute. La diferencia con CASE es que EVENT detiene la ejecución del hilo del programa hasta que se da esa con- dición, es decir, congela el programa hasta que ocurre un evento.

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.

indicados en el terminal E v e n t Timeout . Figura 2-13. Estructura EVENT Para

Figura 2-13. Estructura EVENT

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.