Guía solución Lab .2 LabView 8.5[1]

download Guía solución Lab .2 LabView 8.5[1]

of 36

Transcript of Guía solución Lab .2 LabView 8.5[1]

Gua No.2 Como programar en LabVIEW 8.5

Gua de solucin de ejercicios para el Laboratorio 2 de LabView. Familiarizarse con el entorno de trabajo de LabView, la pantalla de diseo o panel frontal, y la pantalla o ventana de flujo de programa. Conocer los tipo de datos principales: numricos, booleanos y de cadena. Conocer los operadores y funciones bsicas para el trabajo con los tipos de datos simples.

Ejercicio 1: Elabore un programa en LabView que permita indicar el nivel de un tanque en un elemento grfico de Labview. El valor del nivel vara entre 0 y 100 unidades y debe obtenerse a travs de una funcin aleatoria. El programa debe indicar un estado de alarma cuando el nivel sobrepase un valor de referencia que los usuarios deben establecer. El estado de alarma se indicar por medio del color del elemento grfico seleccionado: Azul: estado normal, Rojo: estado de alarma. Solucin: Cuando se ejecuta LabView por pantalla similar a la siguiente: primera vez aparece una

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina1

Gua No.2 Como programar en LabVIEW 8.5

En esa pantalla podemos seleccionar varias opciones entre las cuales estn, en el apartado Files (Archivos) el abrir un nuevo Instrumento Virtual (Blank VI), abrir uno ya existente, buscar ejemplos, demos, tutoriales, etc. Para crear un nuevo programa (VI) damos clic en Blank VI. A continuacin aparece una ventana simular a la que se presenta a continuacin:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina2

Gua No.2 Como programar en LabVIEW 8.5

La primera pantalla que aparece es el panel frontal o ventana de diseo de la aplicacin mientras que la que aparece en segundo plano es la ventana de flujo de programa o de diagrama. Recuerde que puede conmutar entre uno y otro. Comprubelo con la combinacin Ctrl+E. Pasos de la solucin

1. Primero seleccionemos los indicadores que pondremos. Para ello seleccionamos mediante un clic la ventana izquierda (panel frontal) y a continuacin damos clic derecho. Debe aparecer un men emergente llamado controls. Seleccionamos en controls la opcin relacionada con los indicadores, que se llama numeric indicators y se representa en el men controls con el

smbolo

. Aparecer algo similar a:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina3

Gua No.2 Como programar en LabVIEW 8.5

Como se puede observar el elemento Tank es el ms indicado para representar el nivel que es requerido en el ejercicio. Para colocarlo en el panel frontal del instrumento virtual que estamos diseando, debemos seleccionarlo en la paleta de controles y luego soltarlo en el panel frontal. El resultado es el siguiente:

Existen varias propiedades que podemos variar para este control. Para ello debemos dar clic derecho sobre el control y seleccionar por ejemplo la opcin de mostrar el indicador digital, como se muestra en la figura siguiente:Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010 Pgina4

Gua No.2 Como programar en LabVIEW 8.5

2. Segn el enunciado del problema debemos colocar la escala del tanque entre los valores de 0 y 100 unidades. Para ello debemos seleccionar el cursor en la paleta de herramientas o pulsar la tecla tab, hasta que el cursor en la pantalla quede de la siguiente manera: . Una vez que se tiene seleccionado este cursor se da doble-clic sobre el mximo valor de la escala del indicador tank, se cambia la escala de 10 a 100 y se presiona la tecla enter. Esto se realiza de la siguiente manera:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina5

Gua No.2 Como programar en LabVIEW 8.5

Paso 1

Paso 2

3. El otro elemento grfico necesario para resolver este ejercicio es un control numrico para establecer la referencia de la alarma. De la misma manera que se seleccion el elemento Tank ahora debemos seleccionar un control digital:

Luego la pantalla queda como sigue:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina6

Gua No.2 Como programar en LabVIEW 8.5

Obsrvese que el nombre del control queda seleccionado, si en este momento se utiliza el teclado, se puede cambiar directamente el encabezado del control. En este caso debemos colocar el nombre: referencia de nivel.

4. Para terminar la interfaz de usuario se debe colocar un botn booleano que permita terminar la ejecucin de un programa (recuerde que en versiones anteriores de LabView hay que hacerlo manualmente, en la actual versin 8.5 para la que est elaborada esta gua, si se introduce un ciclo While (ver Gua 1) el botn se adicionar automticamente).Si est trabajando con LabVIEW 8.x puede omitir este paso. Esto se realiza en la paleta de controles seleccionando los elemento booleanos para luego escoger Stop Button:Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010 Pgina7

Gua No.2 Como programar en LabVIEW 8.5

La interfaz final queda como sigue:

Ya estamos en condiciones de programar, en base a los elementos grficos seleccionados para nuestra interfaz, la lgica que dar solucin a nuestro ejercicio. Para ello pasamos directamente a la ventana del diagrama (Ctrl+E).

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina8

Gua No.2 Como programar en LabVIEW 8.5

6. El primer cdigo G que debemos programar es el necesario para comenzar y terminar la aplicacin. Para ello se tiene el control Stop Button representado por la variable booleana stop (verde ), en la ventana del diagrama. Mientras esta variable sea verdadera se debe ejecutar nuestro programa. En caso contrario debe terminar la aplicacin. Esta situacin se modela en programacin a travs de un ciclo while. Para incorporar un ciclo while a nuestra aplicacin se selecciona en la paleta de funciones el boton: se busca la opcin while loop. y luego

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina9

Gua No.2 Como programar en LabVIEW 8.5

7. Una vez que se seleccione, debe irse a la pantalla del diagrama. Ahora el cursor de la aplicacin cambia para indicarle que usted debe seleccionar el rea que ocupar el ciclo, esto se realiza arrastrando el ratn de manera que seleccione el rea necesaria, como ilustra la siguiente pantalla.

Al finalizar se obtiene la siguiente estructura de programa G:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina10

Gua No.2 Como programar en LabVIEW 8.5

8. El ciclo tiene dos variables implcitas: la iteracin y la condicin de salida, representada representada por (parar si verdadero). (en versiones anteriores por aparecer la condicin contraria, representada por (continuar si verdadero). Si negamos la variable booleana y la conectamos a la condicin de salida, se construye la lgica necesaria para la ejecucin y salida del programa de manera que quede como en la figura anterior). 9. El tipo de datos que representa a nuestro tanque y al controlador de referencia es por defecto Double . Pero esto se puede cambiar de la misma manera que se hizo en el laboratorio anterior. Antes de seguir debemos verificar que la variable Tank est configurada como indicador y la variable referencia de nivel est configurada como control. (Recordar la simbologa, ver Gua 1). 10. Segn el enunciado del ejercicio el tanque debe recibir el valor de nivel de una funcin aleatoria. En el caso de LabVIEW esta funcin se encuentra entre las funciones numricas ( )y se puede escoger como sigue:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina11

Gua No.2 Como programar en LabVIEW 8.5

11. La funcin brinda un valor aleatorio de tipo double entre 0 y 1. Sin embargo nuestra aplicacin requiere que el nivel vare entre 0-100. Para ello debemos multiplicar la salida de esta funcin por el valor entero 100. Con ello se logra nuestro objetivo. La funcin de multiplicacin se encuentra en la misma paleta de funciones numrica y se representa por el smbolo: que recibe dos valores y devuelve la multiplicacin de ambos. Adems de esta propia paleta debe utilizarse una constante numrica entera que contenga el valor 100 que ser el otro elemento necesario. 12. Despus de colocar estos elementos en la ventana de diagrama, y conectarlos convenientemente segn la lgica a seguir, quedar como se muestra a continuacin:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina12

Gua No.2 Como programar en LabVIEW 8.5

En cada iteracin del ciclo el resultado de la funcin aleatoria se multiplica por 100 y este valor se asigna a la variable que representa al indicador tanque. 13. Ahora debemos comparar el valor del tanque con la referencia entrada por el usuario. Si este valor es mayor que la referencia se cambiar el color del tanque a rojo, sino, el tanque ser de color azul. Para ello es necesaria una funcin de comparacin, que se puede encontrar en la paleta de funciones Comparison:

Ahora la pantalla queda como sigue:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina13

Gua No.2 Como programar en LabVIEW 8.5

Para

modificar

el

color

del

tanque

debemos

utilizar

la

propiedad FillColor manera:

que se selecciona de la siguiente

14. De clic derecho sobre la variable Tank y seleccione la opcin Create, a continuacin seleccione la opcin Property Node segn se muestra a continuacin:

Y dentro del men que se despliega seleccione la propiedad FillColor. En la pantalla del diagrama se muestra el siguiente cdigo:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina14

Gua No.2 Como programar en LabVIEW 8.5

15. Si se observa detenidamente podemos ver que la propiedad Fill Color de la variable Tank es de lectura, sin embargo se necesita variar la misma en dependencia del resultado de la comparacin del valor y la referencia. Para cambiar esta propiedad a escritura debemos dar clic derecho sobre la misma y seleccionar la opcin Change To Write. Con ello el resultado grfico es de a .

16. Para continuar nuestra aplicacin es necesario un bloque de toma de decisin (bloque if-then-else) que permita escribir un color u otro en dependencia del resultado de la comparacin. Este bloque puede encontrarse en la paleta de funciones, especficamente en la paleta Comparison la funcin Select . Esta instruccin retorna el valor conectado en t o f en dependencia del valor de ?. Si ? es verdadero retorna t, en caso contrario retorna f. t y f pueden ser de cualquier tipo de dato. Al colocarlo en nuestro diagrama de bloque, podemos presionar Ctrl+H para obtener la ayuda contextual que se muestra debajo. El diagrama G ahora luce como sigue:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina15

Gua No.2 Como programar en LabVIEW 8.5

El valor que debe retornar la funcin Select debe ser Rojo, si la condicin es verdadera y Azul si es falsa. Para ello es necesario utilizar constantes enteras que representen los colores deseados. 17. Esto es posible utilizando la paleta de funciones y escogiendo dos constantes Color Box Constant, una para el rojo y otra para el azul. Estas constantes se encuentran dentro de Functions/Programming/Dialogs & User Interface. El submen Programming no aparece inicialmente al dar cli derecho sobre la ventana de cdigo (o de diagrama) pues el men inicial solo muestra las paletas ms utilizadas. Hay que expandirlo seleccionando:

Para seleccionar las constantes de color tendramos que:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina16

Gua No.2 Como programar en LabVIEW 8.5

El cdigo queda como sigue:

Y cambiando el color (clic sobre las constantes de color despliega una ventana que nos permite seleccionar el tono de color):

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina17

Gua No.2 Como programar en LabVIEW 8.5

18.

La

aplicacin

est

casi

lista,

ahora

debemos

ejecutarla, para ello presionamos el botn de men y si se quiere ejecutar en modo de depuracin se pueden escoger . las variantes ya estudiadas. Al ejecutarla podemos percibir la rapidez con que varia el nivel. Para que sea ms efectiva la simulacin se puede introducir un bloque de demora dentro del ciclo iterativo. 19. Para ello debemos ir a la paleta de Functions/Programming/Timing y utilizar la funcin Wait Until Next ms Multiple y colocar una constante de demora de 500 ms. Como se muestra a continuacin.

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina18

Gua No.2 Como programar en LabVIEW 8.5

Ejercicio 2 Elabore un programa en Labview que: dado el nombre y la edad de una persona. Elabore una cadena de salida que diga lo siguiente: Usted se llama: nombre y naci en el ao: YYYY donde las cadenas subrayadas son: el nombre y la resta del ao actual con la edad respectivamente.

Para disear la interfaz de usuario de este programa debemos utilizar 1 control de cadena para entrar el nombre, 1 control numrico de tipo entero sin signo, de 8 bits, ya que la edad siempre es positiva y nunca mayor que 256 que es el entero ms pequeo que se puede declarar y 1 indicador de cadena para la salida. Adems debemos colocar un control booleano que permita terminar la ejecucin del programa. Los pasos para construir la interfaz son los siguientes: 1. Abrir un nuevo VI, tal y como ejercicios anteriores. 2. Adicionar un control de cadena. lo hicimos en los

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina19

Gua No.2 Como programar en LabVIEW 8.5

3. Adicionar un control numrico.

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina20

Gua No.2 Como programar en LabVIEW 8.5

4. Cambiar el tipo de dato asociado con el control numrico.

6. Adicionar un indicador de cadena.

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina21

Gua No.2 Como programar en LabVIEW 8.5

Ya estamos en condiciones de programar, en base a los elementos grficos seleccionados para nuestra interfaz, la lgica que dar solucin a nuestro ejercicio. Para ello pasamos directamente a la ventana del diagrama (Ctrl+E).

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina22

Gua No.2 Como programar en LabVIEW 8.5

6. Para incorporar un ciclo while a nuestra aplicacin se y luego selecciona en la paleta de funciones el botn: se busca la opcin while loop. Al finalizar se obtiene la siguiente estructura de programa G:

7. La cadena de salida que queremos formar debe ser construida a partir de las variables que ya declaramos y de un conjunto de cadenas constantes. Una de ellas debe almacenar el valor Usted se llama: otra el valor Y naci en el ao: para ellos se va a la paleta de funciones y se busca la paleta relacionada con el tratamiento de cadenas. A continuacin se muestra su localizacin:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina23

Gua No.2 Como programar en LabVIEW 8.5

y se selecciona el 8. Se colocan dos controles del tipo en la paleta de herramientas o se utiliza la tecla cursor tab, hasta que el cursor en la pantalla quede de la para introducir el valor siguiente manera: constantes como muestra la figura (ya organizada): de las

9. En este caso debemos concatenar cada una de las cadenas en el orden mostrado en la figura anterior. Adems, hay que restarle al valor de la edad el ao actual para obtener el ao de nacimiento y este resultado aadirlo a las cadenas.Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010 Pgina24

Gua No.2 Como programar en LabVIEW 8.5

Para convertir un nmero en la cadena de caracteres equivalente se puede utilizar la funcin Format Into String, que adems permite concatenar otros tipos de datos (ver prximo punto). La podemos encontrar en Functions/programming/String:

10. Esta funcin retorna una cadena de caracteres que esta formada por cada uno de los elementos que se le pasan como parmetros. Estos parmetros pueden ser de cualquier tipo de dato simple (DBL, SGL, EXT, U8, U16, U32, I8, I16, I32) sin embargo el formato debe ser especificado de manera similar a como lo hace la funcin de C printf o sea: %d para enteros, %f para nmeros con coma, %s para cadenas. En nuestro caso el formato ser: %s%s%s%d, ya que son tres cadenas y un valor entero (el ao). Para ello debe introducirse en el cdigo de nuestro programa una constante de la misma forma que se realiz en el paso 8 y se inicializa as: %s%s%s%d para luego conectarla a la funcin segn se muestra a continuacin:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina25

Gua No.2 Como programar en LabVIEW 8.5

11. Como se observa esta funcin solo tiene una posible conexin de entrada (la identificada por abc) pero eso es solo por el momento. Usted debe pararse justo en la base de la funcin y esperar a que cambie el tipo de cursor. Cuando esto suceda, debe presionar el botn izquierdo del ratn y arrastrar hasta tener exactamente cuatro entradas que deben coincidir con los tipos de datos seleccionados con anterioridad. El diagrama queda as:

12. Para obtener el ao debemos introducir una constante numrica entera para almacenar el valor del ao actual y un operador de resta desde la paleta de funciones numricas. Al efectuar la resta del ao menos la edad se tiene el ao de nacimiento (por el momento utilizaremos una constante, cuando se avance ms en las guas podr ver que puede leer la fecha actual, tomar el ao y hacer que el programa funcione igual sin editar nada independientemente de la mquina y la fecha actual).Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010 Pgina26

Gua No.2 Como programar en LabVIEW 8.5

y Para ejecutar e programa, presionamos el botn de men si se quiere ejecutar en modo de depuracin se puedenDr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010 Pgina27

Gua No.2 Como programar en LabVIEW 8.5

. Note que escoger las variantes ya estudiadas. esta es una versin primaria del programa, que tiene como finalidad explicar cmo trabajar con cadenas. Al no tenerse en cuenta el mes de nacimiento ni el da (solo la edad) el clculo del ao de nacimiento puede no ser correcto. Ejercicio 3 Se desea construir un programa que permita desglosar una fecha introducida bajo el formato DD/MM/YYYY. El programa debe mostrar el da en un indicador de cadena; el mes, por su nombre, en un ComboBox y el ao en un indicador de cadena. 1. Para realizar este ejercicio es necesario utilizar un control de cadena para introducir la fecha. Debemos utilizar los dos indicadores que mostrarn el da y el ao. Estos controles se deben introducir de la misma manera que se hizo en el ejercicio. El resultado, en el panel frontal debe ser:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina28

Gua No.2 Como programar en LabVIEW 8.5

2. Para mostrar el mes por su nombre debemos utilizar un indicador de tipo enumerado Enum que se encuentra en la paleta de controles Controls/Modern/Ring & Enum :

3. Al introducir el elemento Enum, este toma la forma de un control. Sin embargo, el uso que se le va dar es como indicador. Es por ello que se debe dar clic derecho sobre l y seleccionar la opcin Change To Indicator. Ahora estamos listos para introducir cada uno de los doce meses del ao. En versiones anteriores y la actual 8.5 que estamos revisando, se puede seleccionar el cursor en la paleta de herramientas o utilizar la tecla tab hasta que el cursor en la pantalla quede de la siguiente manera . Luego se coloca el cursor dentro del indicador y se introduce el primer nombre enero, para introducir otro mes se da clic derecho sobre el control y se selecciona la opcin Add Item After. De esta manera se entran todos los nombres de los meses. Una ventaja que proporciona LabVIEW 8.x es que nos permite hacerlo de una forma ms eficiente al incorporar un editor donde podemos fcilmente editar los tems del enum e incluso establecer un orden para los mismos. Para acceder a dicho editor se selecciona la opcin Edit Items que aparece al dar clic derecho sobre el elemento Enum:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina29

Gua No.2 Como programar en LabVIEW 8.5

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina30

Gua No.2 Como programar en LabVIEW 8.5

En estos momentos estamos listos para programar el cdigo que de solucin a nuestro problema. Para ello debemos movernos hacia la pantalla del diagrama (Ctrl+E). Al igual que los ejercicios anteriores debemos programar en primer lugar el cdigo G que nos permita terminar la ejecucin de nuestro programa. Hasta el momento debe aparecer la ventana de diagrama de la siguiente forma:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina31

Gua No.2 Como programar en LabVIEW 8.5

Es de sealar que la variable correspondiente al indicador de tipo Enum es entera y cada mes tiene un nmero entero asociado. Para enero ser el 0, febrero el 1 y as sucesivamente. 4. Para desglosar la fecha es necesario encontrar el carcter / que limita el da del mes, y el mes del ao. que se encuentra en la La funcin Search/Split String paleta de funciones Functions/Programming/String/Additional String Functions permite encontrar un carcter especfico dentro de una cadena. Esta funcin necesita como parmetros la cadena donde debe buscar, el carcter que se quiere encontrar y el desplazamiento a partir del inicio de la cadena donde se comenzar la bsqueda. La funcin retorna tres valores. La subcadena que se forma hasta el carcter que se busca, la subcadena a partir del carcter que se busca (incluyendo el carcter buscado) y el ndice o desplazamiento donde se encontr el carcter.

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina32

Gua No.2 Como programar en LabVIEW 8.5

El resultado de aplicar esta funcin contiene la fecha es el siguiente: Si la fecha es: 12/01/2005 Subcadena hasta el carcter /: 12 Subcadena restante: /01/2005

a

la

cadena

que

5. Para tomar el mes es necesario eliminar el primer carcter / de la cadena restante /01/2005y volver a aplicar la funcin anterior. Para ello se puede utilizar la funcin String Subset (Functions/Programming/String) que recibe como parmetros una cadena, la cantidad de caracteres que se quieren tomar y el desplazamiento o ndice a partir de donde se tomara la subcadena.

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina33

Gua No.2 Como programar en LabVIEW 8.5

6. El resultado de aplicar esta funcin a la cadena /01/2005 es: 01/2005. Ahora se debe extraer el mes, (repetir el paso 4). Sin embargo este resultado se debe mostrar en el control Enum. Como se dijo esta es una variable de tipo entera, por lo que debemos convertir el resultado de la funcin, que es una cadena con el nmero del mes, a un valor numrico entero. Para ello LabVIEW cuenta con funciones de conversin de tipos. En nuestro caso esto se realiza con la funcin Decimal String To Number . (Functions/Programming/String/StringNumber Conversion) El diagrama queda como sigue:

Para obtener el ao se debe repetir el paso 5 con lo cual se elimina el carcter / y se obtiene el ao. El diagrama final queda as:Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010 Pgina34

Gua No.2 Como programar en LabVIEW 8.5

y Para ejecutar e programa, presionamos el botn de men si se quiere ejecutar en modo de depuracin se pueden . Al correr escoger las variantes ya estudiadas. el programa se puede percibir que el mes que se obtiene est desplazado en uno con el que sera el correcto.

Este resultado se obtiene as porque normalmente al editar la fecha para nosotros el mes de Enero es el 01 pero en el tipo Enum corresponde con el ndice 0. Para resolver este problema, despus de la conversin de cadena a nmero se debe restar una unidad. El diagrama queda de la siguiente manera:

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina35

Gua No.2 Como programar en LabVIEW 8.5

Dr.ValeryMorenoVega,DptoAutomticayComputacin.Enero2010

Pgina36