instrumentación virtual con labviewecaths1.s3.amazonaws.com/iv1/1473975874.estructuras y...

51
Instrumentación Virtual con LabVIEW

Upload: phungkiet

Post on 24-Sep-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Instrumentación Virtual con LabVIEW

ESTRUCTURAS

WHILE

FOR..

CASE

SEQUENCE Opciones de selección de CASE

Controles Visibles

Variables Locales

Do While Loop

Terminal de

Iteración

Terminal

Condicionante

Do While condición is true

Execute Sub diagram

Loop

Ejecuta una rutina hasta

que la condición terminal

se cumple.

•While Loop revisa la condición al final del ciclo.

•El ciclo se ejecuta al menos una vez.

•El terminal de iteración contiene el número de veces que el ciclo se ha

ejecutado.

Do While Loop

La primera iteración

inicia en cero

Con Click derecho

derecho podemos

cambiar la condición

For LoopDos atributos:

N – Terminal de conteo

i - Terminal de Iteración

For I=0 to N-1

Ejecuta Código

Next I

EJECUTA UN

SUBDIAGRAMA

UN

DETERMINADO

NÚMERO DE

VECES

A partir de LabVIEW7, haciendo

click sobre “WHILE loop” en el

diagrama de bloques puede

cambiarse por “FOR loop”

NOTA: El CERO es

indexado y aparece en

la primera iteración

Contador de Ciclos:

indica cuantas veces

se repite el

subdiagrama

Si N es

cero o

negativo el

ciclo no se

ejecutaTerminal de iteración

Contiene el número de

iteraciones completas

Se obtiene el último resultado

Se almacenan en cada celda de la matriz los resultados parciales

Shift Register

• “Shift registers” se utiliza tanto en los WHILE LOOP como en

FOR LOOP.

• Se usan para transferir datos desde una iteración a la siguiente.

• Son similares a las variables estáticas en los lenguajes de

programación basados en texto.

• Un “Shift register” se crea haciendo click sobre el borde

derecho o izquierdo del loop y seleccionando “Add Shift

registers” desde el menú emergente.

• Los datos a cablear en los terminales de cada SR deben ser del

mismo tipo.

Ejercicio: Obtener el penúltimo y último resultado del cuadrado de los

primeros cinco números naturales

“Shift Registers”

Para crear un Shift Register se hace clic derecho en cualquiera de los

bordes verticales y se abre el menú contextual que se ve a continuación y

elegimos Add Shift Register y se crea un par entrada - salida

El último valor pasa al terminal de la derecha

Los valores previos están

disponibles en los terminales de

la izquierda

Contiene iContiene i – 1Contiene i – 2Contiene i – 3

Shift Register 1

Shift Register 2

Para agregar mas elementos se hace clic derecho en el borde izquierdo o derecho,

según donde se quiera agregar el elemento, desde el mismo menú contextual

Sentencias de Selección: Case Structures

Esta estructura es equivalente a IF/ THEN/ ELSE

If condition=TRUE THEN

Execute code

ELSE

Execute Code

End If

CASE SELECT structures

CASE SELECT var

var=1, do code1

var=2, do code2

var=3, do code3

otherwise, do code

Case StructuresBotones para pasar de un diagrama a otro

Selector

Identificador del

Subdiagrama

La estructura CASE tiene al menos dos subdiagramas, uno para TRUE y

otro para FALSE

Acá podemos ver todas las posibilidades de variables de control para la

estructura case

Vamos a ver un ejemplo de uso de cada uno de ellos,

aplicándolos sobre la misma estructura CASE de solo dos

subestructuras con el fin de poder comparar, teniendo en

cuenta que la limitación la impone el control booleano, que

tiene sólo dos valores posibles: TRUE y FALSE

Usando un control numérico: el valor del indicador Numeric 2

cambiara sólo para los valores posibles, 0 y 1, para cualquier

otro valor noSu valor va de acuerdo

al tipo de control que se

usa

Usando un control Booleano: el valor del indicador Boolean

cambiara sólo para los valores posibles, True y False

Su valor va de acuerdo

al tipo de control que se

usa

Usando un control Ring: 0 y 1

Previo a eso vamos a ver como trabaja el control Ring

El control ring lo que hace es establecer una

correspondencia entre un valor tipo string y un

número, asignando valores consecutivos desde 0 en

adelante.

Se encuentra en la paleta Controls en el Panel Frontal

En la figura lo vemos recuadrado en celeste

Su apariencia en el Panel Frontal es la siguiente:

Como vemos, similar a cualquier control

Con clic derecho abrimos el menú contextual y vamos propiedades:

Al abrir propiedades nos aparece la siguiente pantalla y vamos a ir a la pestaña

Edit Items:

Hacemos clic en Insert y colocamos el texto que corresponde al valor numérico 0

(Item A en nuestro ejemplo)

Hacemos nuevamente clic en Insert y colocamos el texto que corresponde al valor

numérico 1 (Item B en nuestro ejemplo)

Como vemos el valor 0 siempre corresponde al último ítem colocado, pero

podemos cambiar el orden de ser necesario con el uso de los botones Move Up y

Move Down :

Retomemos nuestro ejemplo con la configuración del cuadro original:

A el valor “A” le corresponde “1”

Usando un Tab control: Se encuentra en el Panel Frontal, en la

subpaleta Containers y aparece recuadrado en celeste

En el Panel Frontal nos aparecerá:

En cada pestaña podemos

poner elementos distintos

Vamos a hacer una pequeña modificación al programa para ver el uso del Tab

Control: Vamos a agregar un Indicador para el Producto y otro para la Suma

Producto

Vamos a hacer una pequeña modificación al programa para ver el uso del Tab

Control: Vamos a agregar un Indicador para el Producto y otro para la Suma

Suma

Vamos a usar con control rotativo (Knob) para hacer con un CASE las cuatro

operaciones aritméticas.

El Panel Frontal sería:

CASE: 0, DefaultSe ha colocado una

constante para

forzar un 0 en el

resultado

CASE: 1

CASE: 2

CASE: 3

CASE: 4

Haciendo invisibles controles e indicadoresVamos a ver como hacemos para mostrar u ocultar un control o indicador

Para nuestro ejemplo vamos a usar un indicador tipo termómetro

Panel Frontal

Diagrama de Bloques

Hacemos clic derecho en el ícono

del Diagrama de Bloques o en el

Panel Frontal y se despliega el

menú contextual, allí elegimos:

CreateProperty NodeVisible

En el Diagrama de Bloques nos aparece este instrumento:

Por defecto la variable

lógica “Visible” está

como salida (control),

con clic derecho

sobre este ícono lo

cambiamos por un

indicador (Change to

Write)

Ahora el ícono queda:

Agregamos una variable lógica en el panel de control y la conectamos a la

entrada “Visible”.

Al accionar el switch tenemos:

Sentencias de secuenciación

En lenguajes tradicionales basados en texto, el orden de

ejecución lo impone el orden en que las instrucciones están

escritas.

En LabVIEW sigue el modelo de Flujo de Datos, (un nodo

necesita tener disponibles todos los datos de sus entradas para

ejecutarse), por lo tanto no se puede determinar cual es el

orden de las tareas a ejecutar.

Puede presentarse el caso de nodos independientes, en

situación de ejecutarse simultáneamente, pero por manejo de

los datos, es necesario fijar el orden de los mismos, es decir

establecer una secuencia de ejecución.

Sentencias de secuenciación

• Se trata de un tipo de sentencia que garantiza la ejecución secuencial (uno detrás de

otro) de varios módulos de código.

• Cuando en el diagrama de LabVIEW son definidos varios módulos de código, en

realidad no se sabe en qué orden van a ser ejecutados, es decir, no se sabe cuál de ellos

se ejecutará en primer lugar y cuál en el último lugar.

Hay aplicaciones en las que este orden de ejecución no es importante, pero en otras es de

vital importancia. Por ello, en las aplicaciones donde el orden de ejecución de los

distintos módulos es crítico, resulta imprescindible utilizar las sentencias de

secuenciación para garantizar esa secuencia de ejecución de los módulos.

Sentencias de secuenciación

La herramienta de desarrollo de aplicaciones LabVIEW ofrece dos sentencias de secuenciación. La primera

es la Flat Sequence Structure y se encuentra en Functions/Programming/Structures. Cuando es insertada en

el diagrama de nuestra aplicación, aparece con una única ventana o Frame: es la unidad o elemento donde irá

un módulo dado del código de nuestra aplicación. Para añadir más ventanas, se pulsa sobre la ventana con el

botón derecho del ratón y se ejecuta Add Frame Before o Add Frame After, para añadir la ventana antes o

después de la actual, respectivamente.

En este ejemplo vemos un instrumento que primero simula el llenado de un tanque y luego el aumento de

temperatura.

Sentencias de secuenciación

Se pueden anidar estas estructuras sin problema ni límites de niveles

Sequence 1 Sequence 2

Sequence 3Sequence 4

Ejemplo Flat SequenceEjemplo: hacer un instrumento que prenda en secuencia 5 leds en forma cíclica de izquierda a derecha

Sentencias de secuenciación

Cuando son necesarias muchas ventanas, porque así lo requiere la aplicación,

aparece el problema del espacio en el diagrama, de tener que desplazar varias

pantallas desde el inicio de la secuencia hasta su final. Entonces, lo lógico es

sustituir la sentencia Flat Sequence Structure por la sentencia Stacked Sequence

Structure, la cual funciona exactamente igual que la anterior, solo que apila las

ventanas una encima de otra. Aunque a simple vista no sea posible ver la

secuencia, resulta muy práctico su uso cuando el espacio disponible es pequeño.

Sentencias de secuenciación

Vamos a repetir el ejemplo del tanque y el termómetro con la estructura secuencial

apilada. Nos quedaría algo así:

Panel Frontal Cuadro 0 Cuadro 1

Trabajando con Variables

Variable Local

Variable Global

Variable Compartida

Trabajando con Variables

Muchas veces dentro de la programación es necesario almacenar el valor de una

variable para poder usarla posteriormente.

En LabVIEW también puede realizarse estas sentencias, almacenando una

variable para luego usarla dentro de otro bloque del VI o bien en otro VI.

LabVIEW dispone de dos tipos de variables locales y globales y a partir de la

versión 8.0 las compartidas.

Creación de una Variable Local

Construimos el siguiente VI, utilizando una Flat Sequence Structure

Creación de una Variable Local

A continuación le agregamos un cuadro a la secuencia, que consistirá en una variable local que almacenará el último número generado y lo presentará en el PF. La variable local la seleccionamos dentro de Data comunicationsy es la que esta recuadrada en celeste:

Creación de una Variable LocalA continuación hay dos pasos fundamentales a realizar:

Primero: determinar a que objeto del programa va a estar enlazado

Segundo: elegir si va a ser de lectura (read) o escritura (wirte).

Para el caso del ejemplo hacer click derecho sobre la variable local y

seleccionar Select Item/Numeric y luego Change to Read

De esta forma queda definido para guardar el

contenido de Numeric y pasarlo a la siguiente

etapa

Creación de una Variable Local

Finalmente le agregamos un indicador a la variable y ejecutamos el programa, comprobando

que este termina con dos indicadores con valores idénticos, es decir el último número

registrado:

Como podemos ver, después de la ejecución los dos indicadores quedan con el mismo valo,

tal como era de esperarse