Anda di halaman 1dari 22

Programacin Aplicada II

ASM 1






PROGRAMACIN APLICADA II


V Ciclo


Gua de Laboratorio N02

SOFTWARE DE ADQUISICIN DE DATOS Y
CONTROL DE PROCESOS CON PC



2014 - I


Programacin Aplicada II
ASM 2


Programacin Aplicada II
ASM 3



SOFTWARE DE ADQUISICIN DE DATOS Y
CONTROL DE PROCESOS CON PC

Concepto: depuracin

Objetivo


Use las herramientas de depuracin de LabVIEW.

Descripcin


Complete estos pasos para cargar un VI roto y corregir los errores. Use la
ejecucin paso a paso y el resaltado de la ejecucin para revisar el VI.

1. Abra y examine el VI Debug Exercise (Main).

Seleccione ArchivoAbrir.

Abra Debug Exercise (Main).vi en el directorio
<Exercises>\LabVIEW Core 1\Debugging.

Aparecer este panel frontal.




Figura 3-1. Panel frontal de Debug Exercise (Main).vi

El botn Run de la barra de herramientas aparece roto, indicando
que el VI est roto y no puede ejecutarse.
Programacin Aplicada II
ASM 4









2. Abra y examine el diagrama de bloques del VI Debug Exercise (Main).

Seleccione WindowShow Block Diagram para abrir el diagrama
de bloques de la figura 3-2.





Figura 3-2. Diagrama de bloques de Debug Exercise (Main).vi

La funcin Random Number (0-1) produce un nmero aleatorio
entre el 0 y el 1.

La funcin Multiply multiplica el nmero aleatorio por 10,0.

La constante numrica es el nmero multiplicado por el nmero
aleatorio.


El VI Debug Exercise (Sub), situado en el directorio
<Exercises>\LabVIEW Core
1\Debugging\ Supporting Files, suma 100,0 y
calcula la raz cuadrada
del valor.

3. Limpie la seccin desordenada del diagrama de bloques para que sea
ms legible.

Haga clic y arrastre el cursor del ratn para seleccionar el VI Debug
Exercise (Sub) y la funcin, constante e indicador a la derecha
del VI.

Haga clic en el botn Clean Up Diagram en la barra de
herramientas.

4. Busque y solucione cada error.

Haga clic en el botn Run roto para ver la ventana Error list,
que enumera todos los errores.
Programacin Aplicada II
ASM 5







Seleccione una descripcin de error en la ventana Error list.
La seccin Details describe el error y en algunos casos recomienda
cmo corregirlo.

Haga clic en el botn Help para ver un tema de LabVIEW Help que
describa el error en detalle e incluya instrucciones paso a paso para
corregirlo.

Haga clic en el botn Show Error o haga doble clic en la
descripcin del error para resaltar la zona del diagrama de bloques o
del panel frontal que contenga el error.

Use la ventana Error list para solucionar cada error.

5. Seleccione FileSave para guardar el VI.

6. Abra el panel frontal haciendo clic en l o seleccionando Window
Show Front Panel.

7. Haga clic en el botn Run.

8. Seleccione WindowShow Block Diagram para abrir el diagrama
de bloques.

9. Anime el flujo de datos a travs del diagrama de bloques.

Haga clic en el botn Highlight Execution en la barra de
herramientas para habilitar el resaltado de la ejecucin.


Haga clic en el botn Step Into para iniciar la ejecucin paso a paso.
El resaltado de la ejecucin muestra el flujo de datos en el diagrama
de bloques desde un nodo a otro utilizando las burbujas que se
mueven a lo largo de los cables. Los nodos parpadean para indicar
que estn listos para ejecutarse.


Haga clic en el botn Step Over despus de cada nodo para revisar
todo el diagrama de bloques. Cada vez que haga clic en el botn Step
Over, se ejecutar el nodo actual y se pausar en el siguiente nodo.

Los datos aparecen en el panel frontal a medida que ejecuta las
diferentes secciones del VI. El VI genera un nmero aleatorio y
lo multiplica por 10,0. El subVI suma 100,0 y calcula la raz
cuadrada del resultado.

Cuando un borde parpadeante rodea todo el diagrama de bloques,
haga clic en el botn Step Out para detener la ejecucin paso a paso
del VI Debug Exercise (Main).
Programacin Aplicada II
ASM 6









10. Ejecute paso a paso el VI y su subVI.

Haga clic en el botn Step Into para iniciar la ejecucin paso a paso.

Cuando parpadee el VI Debug Exercise (Sub), haga clic en el botn
Step Into. Observe el botn Run en el subVI.

Abra el diagrama de bloques del VI Debug Exercise (Main)
haciendo clic en l. Aparecer un smbolo verde en el icono del
subVI del diagrama de bloques del VI Debug Exercise (Main),
indicando que el subVI se est ejecutando.

Abra el diagrama de bloques del VI Debug Exercise (Sub) haciendo
clic en l.

Haga clic en el botn Step Out dos veces para terminar de revisar
paso a paso el diagrama de bloques del subVI. El diagrama de
bloques del VI Debug Exercise (Main) se activa.

Haga clic en el botn Step Out para detener la ejecucin paso a
paso.

11. Use una sonda para comprobar valores intermedios en un cable mientras
se ejecuta un VI.

En la paleta Tools, seleccione la herramienta Probe Data.


Use la herramienta de sonda para hacer clic en cualquier cable.
Aparece la ventana Probe Watch Window.

Probe Watch Window muestra todas las sondas en todos los VIs
actualmente en memoria. Esta ventana ordena las sondas en el orden
en que las cre y las muestra bajo el VI al que pertenecen.

Ejecute paso a paso el VI de nuevo. Probe Watch Window muestra
los datos que pasan por el cable.

12. Coloque puntos de interrupcin en el diagrama de bloques para pausar
la ejecucin en esa ubicacin.

Use la herramienta de punto de interrupcin para hacer clic en nodos
o cables. Site un punto de interrupcin en el diagrama de bloques
para pausar la ejecucin una vez que se ejecuten todos los nodos del
diagrama de bloques.

Haga clic en el botn Run para ejecutar el VI. Cuando llega a un
punto de interrupcin durante la ejecucin, el VI se pausa y el botn
Pause aparece rojo.




Programacin Aplicada II
ASM 7





Haga clic en el botn Continue para seguir ejecutando hasta el
prximo punto de interrupcin o hasta que termine de ejecutarse
el VI.

Use la herramienta de punto de interrupcin para hacer clic en los
puntos de interrupcin que configur y eliminarlos.

13. Haga clic en el botn Highlight Execution para desactivar el resaltado
de la ejecucin.

14. Seleccione FileClose para cerrar el VI y todas las ventanas abiertas.

Determine Warnings

Objetivo


Crear y documentar un VI sencillo.

Escenario


Debe crear una parte de un proyecto mayor. El desarrollador principal le
proporciona las entradas del VI, el algoritmo y las posibles salidas. Cree y
documente un VI en funcin del diseo dado.

Diseo


Entradas y salidas


Tipo Nombre Propiedades
Control numrico

Current Temp Doble precisin y
coma flotante
Control numrico

Max Temp Doble precisin y
coma flotante
Control numrico

Min Temp Doble precisin y
coma flotante
Indicador de cadena
de caracteres

Warning Text Tres valores en potencia:
advertencia de golpe de
calor, sin advertencia y
advertencia de
congelacin
Indicador LED
redondo

Warning?
Programacin Aplicada II



Diagrama de flujo











Current Temp
>= Max Temp?
No



Yes


Warning Text =
Heatstroke
Warning

Warning Text =
No Warning





Current Temp
<= Min Temp?
No



Yes


Warning Text =
Freeze Warning

Pass current value
of Warning Text



Warning
Text = No No
Warning?


Yes



Warning ? = False Warning ? = True










Figura 4-1. Diagrama de flujo del VI Determine Warnings
Programacin Aplicada II







Implementacin


Siga las instrucciones inferiores para crear un panel frontal similar al de la
figura 4-2. El usuario introduce la temperatura actual, la mxima y la
mnima. A continuacin, el panel frontal muestra la cadena de caracteres
de advertencia y el LED booleano de advertencia. Este VI forma parte del
proyecto de la estacin meteorolgica de temperatura estudiado durante
el curso.

1. Abra un VI nuevo y cree el siguiente panel frontal.


















Figura 4-2. Panel frontal del VI Determine Warnings

2. Guarde el nuevo VI.

Seleccione FileSave.

Guarde el VI como Determine Warnings.vi en el directorio
<Exercises>\LabVIEW Core 1\Determine Warnings.

3. Cree un control numrico para la temperatura actual.

Aada un control numrico a la ventana del panel frontal.

Cambie la etiqueta del control numrico a Current Temp.

Haga clic con el botn derecho en el control, seleccione
Representation y confirme que el tipo de representacin est
configurado en doble precisin.

Consejo Este subVI podra utilizarse para Fahrenheit, Kelvin u otra escala de
temperatura, siempre que todas las entradas utilicen la misma escala. Por lo tanto,
no es necesario aadir unidades de escala a las etiquetas.
Programacin Aplicada II



4. Cree un control numrico para la temperatura mxima.

Mantenga pulsada la tecla <Ctrl> y haga clic y arrastre el control
numrico Current Temp para crear una copia del control.

Cambie el texto de la etiqueta del nuevo control numrico a
Max Temp.

5. Cree un control numrico para la temperatura mnima.

Mantenga pulsada la tecla <Ctrl> y haga clic y arrastre el control
numrico Max Temp para crear una copia del control.

Cambie el texto de la etiqueta del nuevo control numrico a
Min Temp.

6. Cree un indicador de cadena de caracteres para el texto de advertencia.

Aada un indicador de cadena de caracteres a la ventana del panel
frontal.

Cambie el texto de la etiqueta del indicador de cadena de caracteres
a Warning Text.

7. Cree un LED redondo u otro indicador booleano para el booleano
de advertencia.

Aada un LED redondo a la ventana del panel frontal.
Cambie el texto de la etiqueta del indicador booleano a Warning?.

8. Cambie al diagrama de bloques.


Consejo Si no desea ver terminales como iconos en el diagrama de bloques, seleccione
ToolsOptions y despus Block Diagram de la lista Category. Elimine la marca del
elemento Place front panel terminals as icons.
Programacin Aplicada II





Siga las instrucciones inferiores para crear un diagrama de bloques similar
al de la figura 4-3.




Figura 4-3. Diagrama de bloques del VI Determine Warnings

9. Compare Current Temp y Max Temp.

Aada una funcin Greater Or Equal? al diagrama de bloques.
Cablee el control Current Temp a la entrada x de la funcin Greater
Or Equal?.

Cablee el control Max Temp a la entrada y de la funcin Greater Or
Equal?.

10. Compare Current Temp y Min Temp.

Aada una funcin Less Or Equal? al diagrama de bloques.
Cablee el control Current Temp a la entrada x de la funcin Less
Or Equal?.

Cablee el control Min Temp a la entrada y de la funcin Less Or
Equal?.

11. Si el valor Current Temp es igual o mayor que Max Temp, genere una
cadena de caracteres Heatstroke Warning, de lo contrario genere
una cadena de caracteres No Warning.

Aada la funcin Select al diagrama de bloques a la derecha de
la funcin Greater Or Equal?.

Cablee la salida de la funcin Greater Or Equal? a la entrada s de
la funcin Select.
Programacin Aplicada II



Aada una constante de cadena de caracteres al diagrama de bloques
a la parte superior izquierda de la funcin Select.

Escriba Heatstroke Warning en la constante de cadena de
caracteres.

Cablee la cadena de caracteres Heatstroke Warning a la entrada
t de la funcin Select.

Mantenga pulsada la tecla <Ctrl> y haga clic y arrastre la constante
de cadena de caracteres Heatstroke Warning a la parte inferior
izquierda de la funcin Select para crear una copia de la constante.

Escriba No Warning en la segunda constante de cadena de
caracteres.

Cablee la cadena de caracteres No Warning a la entrada f de
la funcin Select.

12. Si la Current Temp es igual o menor que la Min Temp, genere una
cadena de caracteres Freeze Warning, de lo contrario use la cadena
de caracteres generada en el paso 11.

Cree una copia de la funcin Select y colquela a la derecha de
la funcin Less Or Equal?.

Cablee la salida de la funcin Less Or Equal? a la entrada s de
la funcin Select.

Cree una copia de la constante de cadena de caracteres y colquela
en la parte superior derecha de la funcin Select.

Escriba Freeze Warning en la constante de cadena de caracteres.

Cablee la cadena de caracteres Freeze Warning a la entrada t de
la funcin Select.

Cablee la salida de la funcin Select anterior a la entrada f de la
nueva funcin Select.

13. Muestre el texto generado.

Cablee la salida de la segunda funcin Select con el indicador
Warning Text.
Programacin Aplicada II





14. Genere la salida del indicador booleano Warning? determinando si el
valor de Warning Text es igual a No Warning.

Aada una funcin Not Equal? a la izquierda del indicador booleano
Warning?.

Cablee la salida de la segunda funcin Select a la entrada x de
la funcin Not Equal?.

Cablee la constante de cadena de caracteres No Warning a
la entrada y de la funcin Not Equal?.

Cablee la salida de la funcin Not Equal? al indicador Warning?.

15. Documente el cdigo utilizando estas sugerencias en el panel frontal.

Cree ayudas para cada control e indicador que describa la finalidad
y las unidades del objeto. Para acceder a las ayudas, haga clic con el
botn derecho en un objeto y seleccione Description and Tip.

Documente las propiedades del VI, ofreciendo una descripcin
general del VI, una lista de entradas y salidas, su nombre y la fecha
en que se cre el VI. Para acceder al cuadro de dilogo VI
Properties, seleccione FileVI Properties.

Documente el algoritmo del diagrama de bloques con una etiqueta
libre.

16. Guarde el VI.

Prueba


1. Pruebe el VI introduciendo un valor para Current Temp, Max Temp y
Min Temp y ejecutando el VI para cada configuracin.

La tabla 4-1 muestra la cadena de caracteres esperada Warning Text y
el valor booleano Warning? para cada ajuste de valores de entrada.

Tabla 4-1. Probar valores para el VI Determine Warnings

Current Temp Max Temp Min Temp Warning Text Warning?
30 30 10

Heatstroke
Warning
Verdadero
25 30 10

No Warning Falso
10 30 10

Freeze Warning Verdadero
Programacin Aplicada II



Qu ocurre si introduce un valor Max Temp inferior a Min Temp?
Qu cree que sucedera? Aprender a manejar problemas similares en
el ejercicio 4-6.

2. Guarde y cierre el VI.

Auto Match

Objetivo


Usar un bucle While y un terminal de iteracin y pasar datos por un tnel.

Escenario


Cree un VI que genere continuamente nmeros aleatorios entre 0 y 1.000
hasta que genere un nmero que coincida con el que seleccione el usuario.
Determine cuntos nmeros aleatorios gener el VI antes de que el nmero
coincidiera.

Diseo

Tabla 4-2. Entradas y salidas

Tipo Nombre Propiedades
Entrada

Number to Match Doble precisin, coma flotante
entre 0 y 1000, convertir al
nmero natural ms cercano,
valor predeterminado = 50
Salida

Current Number Doble precisin y coma
flotante
Salida

# de Iteraciones Nmero entero
Programacin Aplicada II



Diagrama de flujo










Generate a
Random Number No
Between 0 and 1






Multiply by 1000







Round to Nearest
Integer Value

Display Value
to User

= Number
to Match?

Yes
Add 1 to
Iteration
Terminal





Display Number
of Iterations










Figura 4-4. Diagrama de flujo de Auto Match
Programacin Aplicada II





Implementacin


Cree el siguiente panel frontal y modifique los controles e indicadores como
se muestra en el panel frontal de la figura 4-5 y como se describe en estos
pasos.














Figura 4-5. Panel frontal del VI Auto Match

1. Abra un VI en blanco.

2. Guarde el VI como Auto Match.vi en el directorio
<Exercises>\ LabVIEW Core 1\Auto Match.

3. Cree la entrada Number to Match.

Aada un control numrico a la ventana del panel frontal.

Etiquete el control Number to Match.

4. Configure el valor predeterminado para el control Number to Match.

Configure el control Number to Match en 50.

Haga clic con el botn derecho en el control Number to Match y
seleccione Data OperationsMake Current Value Default.

5. Configure las propiedades del control Number to Match para que el
intervalo de datos sea de 0 a 1000, el valor de incremento sea 1 y
los dgitos de precisin sean 0.

Haga clic con el botn derecho en el control Number to Match y
seleccione Data Entry en el men contextual. Aparecer la pgina
Data Entry del cuadro de dilogo Numeric Properties.

Desmarque la casilla de verificacin Use Default Limits.

Configure el valor Minimum a 0 y seleccione Coerce en el men
desplegable Response to value outside limits.
Programacin Aplicada II



Configure el valor Maximum a 1000 y seleccione Coerce en
el men desplegable Response to value outside limits.

Configure el valor Increment a 1 y seleccione Coerce en el men
desplegable Response to value outside limits.

Seleccione la ficha Display Format.

Seleccione Floating Point y cambie el tipo de precisin de
Significant digits a Digits of precision.

Escriba 0 en el cuadro de texto Digits y haga clic en el botn OK.

6. Cree la salida Current Number.

Aada un indicador numrico a la ventana del panel frontal.

Etiquete el indicador Current Number.

7. Configure a 0 los dgitos de precisin para la salida Number to Match.

Haga clic con el botn derecho en el indicador Current Number y
seleccione Display format en el men contextual. Aparecer la
pgina Display Format del cuadro de dilogo Numeric Properties.

Seleccione Floating Point y cambie el Precision Type a Digits of
precision.

Escriba 0 en el cuadro de texto Digits y haga clic en el botn OK.

8. Cree la salida # of iterations.

Coloque un indicador numrico en el panel frontal.

Etiquete el indicador # of iterations.

9. Configure la representacin para la salida # of iterations como un
nmero entero largo.

Haga clic con el botn derecho en el indicador # of iterations.

Seleccione RepresentationI32 en el men contextual.
Programacin Aplicada II









Cree el siguiente diagrama de bloques. Siga estos pasos.




Figura 4-6. Diagrama de bloques del VI Auto Match

10. Genere un nmero entero aleatorio entre 0 y 1.000.

Aada la funcin Random Number (0-1) al diagrama de bloques.
La funcin Random Number (0-1) produce un nmero aleatorio
entre el 0 y el 1.

Aada la funcin Multiply al diagrama de bloques. La funcin
Multiply multiplica el nmero aleatorio por la entrada y para
producir un nmero aleatorio entre el 0 e y.

Cablee la salida de la funcin Random Number a la entrada x de
la funcin Multiply.

Haga clic con el botn derecho en la entrada y de la funcin
Multiply, seleccione CreateConstant en el men contextual,
escriba 1000 y pulse la tecla <Intro> para crear una constante
numrica.

Aada la funcin Round To Nearest al diagrama de bloques. Esta
funcin redondea el nmero aleatorio al nmero entero ms cercano.

Cablee la salida de la funcin Multiply a la entrada de la funcin
Round To Nearest.

Cablee la salida de la funcin Multiply a la entrada de la funcin
Round To Nearest. Cablee la salida de la funcin Round To Nearest
al indicador Current Number.
Programacin Aplicada II





11. Compare el nmero generado aleatoriamente con el valor del control
Number to Match.

Aada la funcin Not Equal? al diagrama de bloques. Esta funcin
compara el nmero aleatorio con Number to Match y devuelve True
si los nmeros no son iguales; de lo contrario, devuelve False.

Cablee la salida de la funcin Round To Nearest a la entrada x de
la funcin Not Equal?.

12. Repita el algoritmo hasta que la funcin Not Equal? devuelva True.


Aada un bucle While desde la paleta Structures al diagrama de
bloques.

Haga clic con el botn derecho en el terminal condicional y
seleccione Continue if True en el men contextual.

Cablee el control numrico Number to Match con el borde del bucle
While. Aparecer un tnel naranja en el borde del bucle While.

Cablee el tnel naranja a la entrada y de la funcin Not Equal?.

Cablee la salida de la funcin Not Equal? al terminal condicional.

13. Muestre al usuario la cantidad de nmeros aleatorios generados
aadiendo uno al valor del terminal de iteracin.

Cablee el terminal de iteracin al borde del bucle While. Aparecer
un tnel azul en el borde del bucle While.


Consejo Cada vez que se ejecute el bucle, el terminal de iteracin aumentar en uno.
Debe cablear el valor de iteracin a la funcin Increment porque el contaje de iteraciones
empieza en 0. El contaje de iteraciones sale del bucle al completarse.


Aada la funcin Increment al diagrama de bloques. Esta funcin
suma 1 al contaje del bucle While.

Cablee el tnel azul a la funcin Increment.

Cablee la funcin Increment al indicador # of iterations.

14. Guarde el VI.
Programacin Aplicada II





Prueba


1. Abra el panel frontal.

2. Cambie el nmero en Number to Match a un nmero que se encuentre
en el rango de datos, que es de 0 a 1.000 con un incremento de 1.

3. Haga clic con el botn derecho en el indicador Current Number y
seleccione AdvancedSynchronous Display.


Nota Si se habilita la visualizacin sncrona, cada vez que el diagrama de bloques enve
un valor al indicador Current Number, el diagrama de bloques dejar de ejecutarse hasta
que el panel frontal haya actualizado el valor del indicador. En este ejercicio activa
la visualizacin sncrona, de modo que puede ver el indicador Current Number
actualizndose repetidamente en el panel frontal. Normalmente la visualizacin sncrona
se deshabilita para aumentar la velocidad de ejecucin, ya que habitualmente no necesita
ver cada valor actualizado de un indicador en el panel frontal.


4. Ejecute el VI.

5. Cambie Number to Match y ejecute el VI de nuevo. Current Number
se actualiza en cada iteracin del bucle porque se encuentra dentro de l.
# of iterations se actualiza al completarse porque se encuentra fuera del
bucle.

6. Para ver cmo el VI actualiza los indicadores, habilite el resaltado de
ejecucin.

En el diagrama de bloques, haga clic en el botn Highlight
Execution para habilitar el resaltado de ejecucin. El resaltado de la
ejecucin muestra el movimiento de datos en el diagrama de bloques
desde un nodo a otro para que pueda ver cada nmero segn lo
genera el VI.

7. Ejecute el VI y observe el flujo de datos.

8. Intente hacer coincidir un nmero que se encuentre fuera del rango
de datos.

Cambie Number to Match a un nmero que se encuentre fuera del
rango de datos.

Ejecute el VI. LabVIEW convierte el valor fuera de rango al valor
ms cercano en el rango de datos especificado.

9. Cierre el VI.

Programacin Aplicada II



Concepto: bucles While frente a bucles For

Objetivo


Comprender cundo se usa un bucle While y cundo uno For.

Descripcin


En los siguientes escenarios, decida si usar un bucle While o For.

Escenario 1
Adquiere datos de presin en un bucle que se ejecuta una vez cada segundo
durante un minuto.

1. Si usa un bucle While, qu condicin necesita para detener el bucle?




2. Si usa un bucle For, cuntas iteraciones necesita ejecutar el bucle?




3. Resulta ms fcil implementar un bucle For o un bucle While?



Escenario 2
Adquiere datos de presin hasta que sta es mayor o igual que 1.400 psi.

1. Si usa un bucle While, qu condicin necesita para detener el bucle?



2. Si usa un bucle For, cuntas iteraciones necesita ejecutar el bucle?




3. Resulta ms fcil implementar un bucle For o un bucle While?
Escenario 3
Adquiere datos de presin y temperatura hasta que ambos
valores son estables durante dos minutos.

1. Si usa un bucle While, qu condicin necesita para detener el
bucle?




2. Si usa un bucle For, cuntas iteraciones necesita ejecutar el
bucle?



3. Resulta ms fcil implementar un bucle For o un bucle While?



Escenario 4
Genera una rampa de tensin que comienza en cero, aumentando
incrementalmente en 0,5 V cada segundo, hasta que la tensin de
salida es igual a 5 V.

1. Si usa un bucle While, qu condicin necesita para detener el
bucle?




2. Si usa un bucle For, cuntas iteraciones necesita ejecutar el
bucle?



3. Resulta ms fcil implementar un bucle For o un bucle While?







Referencias Bibliogrficas

- LabVIEW CORE 1 2010 National Instruments CO.