Capítulo 4
Capítulo 4
PROGRAMACIÓN
ESTRUCTURADA
FOR LOOP
For i = O to N - 1
Ejecuta subdiagrama
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 57
Valor inicial
Túnel
Terminal de iteración Subdiagrama
WHILE LOOP
Do ejecutar subdiagrama
While condición ¡s TRUE (or FALSE)
© ITES-Paraninfo
58 LabVIEW 7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
Valor inicial
\
Terminal de iteración Condición Terminal condicional
J 5top if True
Continué if True
> ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 59
Functions/Time&Dialog.
Si colocamos en un bucle la función Wait Until Next ms Múltiple, esta
función monitoriza un contador de milisegundos y espera hasta que el contador
alcanza un múltiplo de la cantidad que hemos especificado. Esta función espera
hasta que el reloj interno del computador se encuentra en el múltiplo especificado.
La función Wait (ms) agrega el tiempo de espera al tiempo de ejecución para
alcanzar el retardo programado.
TIMED LOOP
La estructura Timed Loop (figura 4.4) nos permite la temporización en la
ejecución de código. El caso más sencillo es utilizarlo para ejecutar un número
determinado de veces por segundo una parte de código. La fuente de dock utilizada
(Vil kHz I y otros parámetros como el período de ejecución dt IIQQQ | y el desfase
to |o | se pueden configurar mediante las propiedades del Timed Loop, como
vemos en la figura 4.5, o como parámetros de entrada si seleccionamos la opción
Use Terminal.
© ITES-Paraninfo
60 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
Loíp riar»
¡LIOSO
) ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 61
Ejemplo lEWiái
Como ejemplo podemos ver en la figura 4.6 una aplicación de dos bu-
cles que se ejecutan en paralelo a una velocidad de 1 iteración por segundo con
un desfase de 500 ms. Cuando ejecutemos la aplicación primero empezará a
ejecutarse el bucle 2 una vez por segundo (dt = 1.000).Transcurridos 500 ms
(to = 500) empezará la ejecución del bucle 1 también con un periodo de una vez
por segundo. Implementar una sincronización de dos bucles y configurar el tiem-
po de desfase que habrá entre uno y otro es ahora mucho más sencillo gracias
a esta estructura.
© ITES-Paraninfo
62 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 63
parte superior de cada estructura existe una pequeña ventana que muestra el
identificador del subdiagrama que se está mostrando. A ambos lados de esta
ventana existen dos botones que decrementan o incrementan el identificador de
forma que podamos ver el resto de subdiagramas.
CASE
Identificador
Decrementar I Incrementar
Selector numérico
Selector booleano
n: ejecutar case n
end
© ITES-Paraninfo
64 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
EVENT
1
i[01 Ti -Hi
1 Type
Time
) ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 65
teclado y de ventanas. Para cada uno de los diferentes casos del Event Structure
se puede configurar más de un evento por caso, que iremos añadiendo con el
botón [+].
clhíSVI;
1
cOO»'jer:,j.J,js, del cM. ¡App)
• <AIB«nerts>
•
±r
¡y Loci- ftont panel und the event oase fot tras ev'eot completes
Of í '"antel Help
En la figura 4.10 podemos ver una aplicación que cuenta cuántos clics se
realizan con el ratón sobre el panel frontal, y muestra si el clic se ha hecho con el
botón derecho, el izquierdo, y la posición dentro de la pantalla. Se ha configurado
un tiempo de 100 ms de espera. Cada vez que hacemos un clic con el ratón, se
ejecuta el código que aparece en la figura e incrementamos en 1 el número de
clics. Mediante el shift register disponemos del valor anterior.
i ITES-Paraninfo
66 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
-i.;
Figura 4.10 Ejemplo de Event Structure para contar el número de clics del ratón.
Identificador
Decrementar Incrementar
D n n u u n a dipi| -j 'rn ^ ^|n a n n u
Frame 1 Túnel
~m —, •--—- |
n gi n
j o ' "Q"'t>cr*t3 o a D n a .p:^ qTJTiTr^gji.jj'tf
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 67
DDDC nonnaoc
I O [O..n] ^
I
© ITES-Paraninfo
LabVIEW 7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
que una flecha apuntando hacia el interior indica que la secuencia local
contiene un dato de salida. Todos los frames posteriores al que contiene
la secuencia local que origina el dato podrán disponer de él, no siendo
así para los frames anteriores, en los cuales aparecerá un cuadrado vacío
que indicará que los datos no están disponibles.
• Add Case After o Add Frame After: este comando inserta un subdiagrama
vacío inmediatamente después del que se está visualizando.
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 69
• Make This Case o Make This Frame: mueve un subdiagrama a otra po-
sición.
• Remove Case o Remove Frame: borra el subdiagrama visible. Este co-
mando no está disponible si solamente existe un case o un frame.
Change to Uutput
Variable de Entrada Remove
Cada variable, además, tendrá otro menú Pop-up que permitirá definirla
como de salida si anteriormente era de entrada, o de entrada si en un principio era
de salida (Change to Output o Cambiara Salida, Change to Input o Cambiar
a Entrada). También podremos eliminarla mediante el comando Remove.
© ITES-Paraninfo
70 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
FUNCIÓN DESCRIPCIÓN
Tabla 4.1
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 71
Exp'ession Node *m
1 Iffiager de una Fundón de 1 variable
1 y. W-— -— — — —
pfpjí \í J~rX- J pf
Figura 4.13 Uso de Expression Node para ecuaciones de una sola variable.
VARIABLES LOCALES
ítems > |
F
¡™1 > Control
Selec! ítem » Terminal
Ctiangs TD Read Lnca'V^fpblí-3
Hdp
ÍHi reakpoint
Qeaie »
Replace I»
i ITES-Paraninfo
72 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
• Select ítem: visualiza una lista con el nombre de todos los controles
existentes en el panel frontal y de ella escogeremos el control al cual
queremos que haga referencia nuestra variable. Es por esto que para
poder crear la variable local será imprescindible que el control tenga
asignado un nombre de identificación. Una vez creada la variable local,
si en algún momento se cambia el nombre del control origen, no será
necesario cambiar también el nombre de la variable local, ya que LabVIEW
actualiza los cambios.
VARIABLES GLOBALES
Las variables globales son un tipo especial de VI, que únicamente dispone
de panel frontal, en el cual se define el tipo de dato de la variable y el nombre de
identificación imprescindible para después podernos referir a ella.
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 73
Visible I terns }
Fínd fr |
Select I tero >• |
Change To flead j
Help ;
Créate
Replace
R*lir.k ¡¡
Show VI Hierarchjí
© ITES-Paraninfo
74 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
!¡ , JVisible
. >
Change All To Write
Find
Visible ítems
Help For Property Node
Help For Visible
Description and Tip..,
Set Breakpoint
Properties
Change To Write
Add Element
Select Class
Ñame Forrnat
Disconnect From Control
Linkto
Ignore Errors inside Node
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 75
Position
Bounds
Viable
Disahled
Key Focus
Blinking
Caption
Labe!
Valué
© ITES-Paraninfo
76 LabVIEW 7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
Deseamos realizar una aplicación que nos permita, dado un número entero,
obtener como resultado la potencia en base 2 que nos indica ese número.
La solución es:
Potencia?
Lili .fc N
Resultado
gsun
U ».§IÍ
J7
Potencia? resultaste
r)Í9 .J512
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 77
La solución es:
vajonentradal h/ajgrjglida
'• •'.
3
aro del procesol
STOP
valor entrada
8-
Figura 4.17 Panel frontal con control e indicador numéricos, así como botón de paro.
© ITES-Paraninfo
78 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
La solución es:
Figura 4.19 Panel frontal con variable entrada (valor a buscar) e indicadores valor
actual, número de iteraciones y led de valor encontrado.
) ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 79
estamos comparando 100, en el mejor de los casos, con otro valor mucho mayor.
Para evitar este problema, vamos a fijar el rango de variación de nuestro control
numérico de entrada entre O y 100 con incrementos de 1. Para ello debemos
realizar clic con el botón derecho en el control numérico Número que busco y
seleccionar Data Range.
3J Visible ítems ^
Find Terminal
,, Change to Indicator
, Créate ^
1 Replace ^
Data Operations ^
Advanced ^
Representaron
Properties
ITES-Paraninfo
80 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
;; : :
•• ¡
Representation
Default valué
! 0,0000
__ Double precisión
0 Use Default Range
Out of range action
Mínimum --inf Ignore
ignore
OK ] [ Cancel ] | Help
4. Funciones de espera
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 81
Boolean
Valor número aleatorio
15
57
Knob
400 600
V /
200-;; -800
o' 1000
Figura 4.21 Panel frontal con variable entrada (valor a buscar) e indicadores valor
actual, número de iteraciones, y led de valor encontrado y valor del retardo.
j^alornúmero aleatorio]
ÍO
t»~
[Cuantas veces lo ha intentado!
->HSDi
) ITES-Paraninfo
82 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
Deseamos realizar una aplicación que nos permita, dado un número entero,
obtener como resultado 2 elevado a ese valor numérico.
La solución es:
Valor de la potencia?
3
Figura 4.24 Panel frontal con variable entrada (valor a buscar) e indicadores valor
actual, número de iteraciones, y led de valor encontrado y valor del retardo.
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 83
Deseamos realizar una aplicación que nos permita elegir entre realizar el
producto o la división de dos valores numéricos de entrada y, una vez elegida la
opción, que realice la operación.
La solución es:
Se emplea una estructura Case con una variable selectora booleana, que
permitirá acceder a la realización de la operación de multiplicación en la opción
true (véase figura 4.26), y a la de división en la de False. En ese segundo caso
hemos de considerar la división por O, caso que se considera en el panel frontal
de la figura 4.27, y se desarrolla en los diagramas de las figuras 4.28 y 4.29.
Dato uno
'ir""
Dato dos
MU;.TÜffcA
Jjj.2:
C r;..
> ITES-Paraninfo
84 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
Dato uno
Dato dos
E ^
Resultado Dato uno operación (Jato 2
OK
Dato uno
Resultado Dato uno operación dato 2|
; 'íi'isft
•>¡í.23"
Figura 4.28 Diagrama de bloques si el denominador vale cero. Empleo One Button
Dialog de la paleta Time&Dialog de All Functions para colocar el texto que sale en
pantalla al dividir por cero; este botón de dialogo espera que aceptemos el error con un
clic en OK.
) ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 85
III
íl567
Figura 4.30 Panel frontal del tiempo empleado en la búsqueda del valor rango de
O a 100.000.
) ITES-Paraninfo
86 LabVIEW7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
.y n i ,1 LJ u _U ! ijjjj n i
CLQ ruj'D n u n o rLELEJ r_LL3_n ruin. njU3. njj_n_a jifljg .nJLg n_uj3 n_¡)_QJl LLJHJ! n.o q .n.liS_TL
yalor'núrnero aleatorio]
JÉ.
. q n.ri M g n u Q p n g Q.D u a G ri u P n u p.a r.¡ q p n u p a M p p njj^j n u a o.r-! o n nJ¿j:J n..u P t
Figura 4.31 Diagrama de bloques del cálculo del tiempo invertido en la búsqueda
del valor numérico.
© ITES-Paraninfo
PROGRAMACIÓN ESTRUCTURADA 87
opoonn
f numero aleatorio]
s veces lo ha intentado
m
q..n..o.B..n p a..a o a a iri n u n n u n n u ri n u n n r j 11 u n n 1 1 u p p o o q g p a g q o o p o o p p at
IÍ.23Í
Lo üMOOV'o o b a O Q - B O D O O
Figura 4.32 Diagrama de bloques del cálculo del tiempo invertido en la búsqueda del
valor numérico accediendo a los valores de la función Tick Count (ms) mediante túnel.
© ITES-Paraninfo
88 LabVIEW 7.1 PROGRAMACIÓN GRÁFICA PARA EL CONTROL DE INSTRUMENTACIÓN
> ITES-Paraninfo