Está en la página 1de 10

Lección conmovedor Más allá Flujo de datos 1-4

1 ni.com ?
1. Abra Colas vs Variables Locales . Ivproj en el directorio <Ejercicios>-LabVIEW Core 2-Colas frente a
Variables locales .
2. Haga doble clic en Colas vs local Variables.vi en la ventana Explorador de proyectos para abrir
la VI. El panel frontal de este VI se muestra en la Figura 1-1.

Figura 1-1. Panel frontal de las colas vs variables locales VI

Producer Loop
Bien
Tiempo de bucle de
50 ms
Muestras
10- o-
-10-1 o 10 20 30 40 50 50 60
70 80 90 100 108
Hora

LocaVariabl
Consumido
Buc
l e r le Velocidad de bucle
Velocidad de bucle (ms)

Muestrasfaltantes de muestras
duplicadas

Parada

con Escaneado Camscanner


3. Ejecuta la VI. El bucle Producer Loop genera datos y los transfiere a cada bucle de consumidor
mediante una variable local y una cola. Observe el comportamiento del VI cuando los bucles de
consumidor se establecen a la misma velocidad que el bucle del productor. .

4. Detengan la VI.

5. Muestre y examine el diagrama de bloques para este VI. En las secciones siguientes se describen partes
de este diagrama de bloques con más detalle..

Figura 1-2. Diagrama de bloques de las colas vs variables locales VI

El productor Loop reinicializa el bucle de espera de la cola de


botones "stop"
su bucle genera una onda sinusoidal punto por punto
con un punto 50 ms. 200ms velocidad de bucle - Tiempo de respuesta humana. tamaño máximo
de la cola
10000

Tipo dedatos Enqueue Element Get Queue Status

Obtener cola
Producer Loop
32 Parada de
m
u
e
s
t
r
a
s
200 •F

El Consumer bucledel consumidor de la variable localsu loop recibe los datos del is wire ony usado
espera hasta que la cola es
Bucle de productor mediante una variable local. o
hacer cumplir los datos B
vacíos.. Este bucle u
c
impide que se ejecuten los
l
elementos enla cola, e
Release "Release Queue" si v

con Escaneado Camscanner


Lección conmovedor Más allá Flujo de datos 1-6

ariable local O Instrumentos Nacionales I 1-5

*Productor Loco
*Sam
32 Muestras duplicadas
> Muestras pre-ious >
> > Dupfieted>
32 Sampls desaparecidos

Velocidad debucle de velocidad de bucle (ms)

Bucle de consumidor decolaEste bucle recibe datos del productor


Bucle quitando
elementos de la
cola..

Estado de la cola de Dequeue Element Gd

32 muestras en cola
Bucle de cola
Velocidad de bucle (ms)
Velocidad de bucle
Cola de liberación x Error

con Escaneado Camscanner


Ejercicios LabVlEW Core 2
1 ni.com ?
Creación de una cola
Cree la cola con el código que se muestra en la figura 1-3. Este código se encuentra a la izquierda
del bucle del productor. .

Figura 1-3. Creación de la cola

tamaño máximo de la cola

1 Tamaño máximo de la cola —Establece el número máximo de elementos que la cola puede contener.
2 Tipo de datos numérico constant—Cableado a la entrada de tipo de datos de elemento de la función
Obtener cola , especifica el tipo de datos que desea que contenga la cola . 3 Obtener cola—Crea
la cola y define el tipo de the datos .

Datos de cola generados por el bucle del productor Loop


Figura 1-4. Datos de Queuing que genera el bucle del productor

con Escaneado Camscanner


Lección conmovedor Más allá Flujo de datos 1-8
1 Elemento generates Enqueue —Agrega cada elemento de datos que genera Generar sinusto en el bucle
Producer al reverso de la cola..

Dequeuing Data from the Producer Loop inside the Queue Consumer Loop
Figura 1-5. Dequeuing Data inside the Consumer Loop

1 Dequeue Element—Quita un elemento del frente de la cola y envía el elemento de datos al


gráfico de forma de onda queue Consumer Loop.
2 Obtener estado de cola: indica cuántos elementos permanecen en la cola. Para procesar estos
elementos dedatos, debe ejecutar el bucle Queue Consumer más rápido que el bucle Producer o
continuar procesando después de que el bucle producer se you detenga..

con Escaneado Camscanner


O Instrumentos Nacionales 1-7 National
LabVLEW Core 2 Ejercicios

Yo
ni.com de la casa de la casa de los
Esperando a que la cola se vacíe
Figura 1-6. Waiting Esperando a que la cola se vacíe

1 While Loop—Espera a que la cola se vacíe antes de detener el VI. Refiera a este loop while
como el loop de espera de la cola. .
2 Obtener estado de cola:devuelve información sobre el estado actual de la such cola, como el
número de elementos data actualmente en la cola.
3 Igual a O?—Conectado a la condición de detención del bucle de espera de cola comprueba si la
cola está vacía..
con Escaneado Camscanner
Lección conmovedor Más allá Flujo de datos 1-10
4 Cola deliberación:libera y borra las referencias a la cola..
5 Controladorde erroressimple: informade cualquier error al final de la ejecución..

Bucle de consumidor variable local


El bucle de productor también M,Tites los datos de onda sinusoidal generados a una variable local,
mientras que el bucle de consumidor de variable local lee periódicamente los datos de onda sinusoidal
de la misma variable local.

Figura 1-7. Bucle de consumidor variable local

1 Contadores de actualización: actualiza los —contadores de muestras perdidas o duplicadas..

con Escaneado Camscanner


Prueba
Bucle de consumidor variable local
1. Cambie al panel frontal de las colas vs variables locales VI.

2. Ejecuta la VI.

3. Seleccione diferentes velocidades para el bucle de consumidor variable local y observe el gráfico de
bucle de consumidor variable local y los resultados generados en el indicador Muestras faltantes o en
el indicador Muestras duplicadas .
O Asegúrese de que la velocidad de bucle seleccionada es igual que Producer Loop y observe el
gráfico de bucle de productor y el gráfico de bucle de consumidor de variable local. Una condición
de carrera puede ocurrir resultando en puntos perdidos o datos duplicados.
C] Seleccione 2x en el menú desplegable del control Velocidad de bucle y observe el gráfico
Variable Consumer Loop local. Una condición de carrera se produce porque los datos se
consumen más rápido de lo que se producen, lo que permite que la variable local lea el mismo
valor varias veces.

O Instrumentos Nacionales 1-9 National


LabVLEW Core 2 Ejercicios

1 ni.com ?

O Seleccione 1/2 como productor en el menú desplegable del control Velocidad de bucle y observe
el gráfico de bucle de consumidor variable local. Una condición de carrera se produce porque los
datos se producen más rápido de lo que se consumen.. Los datos cambian antes de que la
variable local tenga un chance para leerla..
O Seleccione las opciones restantes disponibles en el menú desplegable del control Velocidad
de bucle y observe la recuperación de datos. .

4. Detengan la VI.
La transferencia de datos entre dos bucles paralelos nosincronizados mediante variables
locales provoca una condiciónde carrera. . Esto ocurre cuando el bucle Producer está
con Escaneado Camscanner
Lección conmovedor Más allá Flujo de datos 1-12
escribiendo un valor en una variable local mientras el bucle de consumidor de variable local
lee periódicamente el valor de la misma variable local. Dado que los bucles paralelos no
están sincronizados, el valor se puede escribir antes de que se haya leído realmente o
viceversa, lo que provoca la inanición de datos o el desbordamiento de datos. .

Bucle de consumidor de cola


1. Corre el V1.
2. Seleccione la velocidad den tiempo de bucle del bucle de consumidor de cola y observe el gráfico de
forma de onda bucle de consumidor de cola y los resultados generados en el indicador Samples in
Queue .
Asegúrese de que la velocidad de bucle seleccionada sea igual que producera y observe el valor
del indicador Samples in Queue . El valor debe seguir siendo cero. Por lo tanto, con las you
the when colas, no perderá datos cuando el productor y el buclede consumidor se ejecutan a
la misma velocidad..

O Seleccione 2x en el menú desplegable from del control Velocidad de bucle y observe el valor
del indicador Muestras en cola . El valor debe seguir siendo cero. Por lo tanto, con las you
colas, no perderá datos si el bucle de consumidor se está ejecutando mucho más rápido que el
productor loop.

O Seleccione 1/2 como Productor en el menú desplegable del control Velocidad de bucle y observe
el valor del indicador Muestras en cola . Los puntos de datos se acumulan en la cola.. Debe
procesar los elementos acumulados en la cola antes de alcanzar el tamaño máximo de la cola
para evitar la pérdida de datos. .
O Seleccione las opciones restantes disponibles en el menú desplegable del control Velocidad de
bucle y observe la sincronización de la transferencia de datos entre el bucle del productor y el
bucle de consumidor mediante colas..

3. Detengan la VI.
YVhen el bucle del productor y el bucle de consumidor de cola se ejecutan a la misma velocidad, el
número de elementos en la cola permanece sin cambios.. Cuando el bucle de consumidor de cola se
ejecuta más lentamente, la cola realiza rápidamente una copia de seguridad y el bucle producer debe
esperar a que Queue Consumer Loop quite los elementos.. Cuando el bucle de consumidor de cola
se ejecuta más rápido, la cola se vacía rápidamente y el bucle de consumidor debe esperar a que
el bucle Producer inserte elementos.. Por lo tanto, las colas sincronizan la transferencia de datos

con Escaneado Camscanner


entre los dos bucles paralelos independientes s y, por lo tanto, evitan la pérdida o duplicación
de datos.

4. Cierre la VI. No guarde los cambios.

Fin del ejercicio 1-1

con Escaneado Camscanner

También podría gustarte