Guía No.2 Como programar en LabVIEW 8.5
Guía de solución LabView. •
•
•
de
ejercicios
para
el
Laboratorio
2
de
Familiarizarse con el entorno de trabajo de LabView, la pantalla de diseño o panel frontal, y la pantalla o ventana de flujo de programa. Conocer los tipo de datos principales: numéricos, booleanos y de cadena. Conocer los operadores y funciones básicas 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 gráfico de Labview. El valor del nivel varía entre 0 y 100 unidades y debe obtenerse a través de una función 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 gráfico seleccionado: Azul: estado normal, Rojo: estado de alarma. Solución: Cuando se ejecuta LabView por pantalla similar a la siguiente:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
primera
vez
aparece
una
Página 1
Guía No.2 Como programar en LabVIEW 8.5
En esa pantalla podemos seleccionar varias opciones entre las cuales están, 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 continuación aparece una ventana simular a la que se presenta a continuación:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 2
Guía No.2 Como programar en LabVIEW 8.5
En esa pantalla podemos seleccionar varias opciones entre las cuales están, 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 continuación aparece una ventana simular a la que se presenta a continuación:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 2
Guía No.2 Como programar en LabVIEW 8.5
La primera pantalla que aparece es el panel frontal o ventana de diseño de la aplicación 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. Compruébelo con la combinación Ctrl+E. Pasos de la solución
1. Primero seleccionemos los indicadores que pondremos. Para ello seleccionamos mediante un clic la ventana izquierda (panel frontal) y a continuación damos clic derecho. Debe aparecer un menú emergente llamado “controls”. Seleccionamos en “controls” la opción relacionada con los indicadores, que se llama “numeric indicators” y se representa en el menú “controls” con el
símbolo
. Aparecerá algo similar a:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 3
Guía No.2 Como programar en LabVIEW 8.5
Como se puede observar el elemento “Tank” es el más indicado para representar el nivel que es requerido en el ejercicio. Para colocarlo en el “panel frontal” del instrumento virtual que estamos diseñando, 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 opción de mostrar el indicador digital, como se muestra en la figura siguiente: Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 4
Guía No.2 Como programar en LabVIEW 8.5
2. Según 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 máximo 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. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 5
Guía No.2 Como programar en LabVIEW 8.5
Paso 1
Paso 2
3. El otro elemento gráfico necesario para resolver este ejercicio es un control numérico 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. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 6
Guía No.2 Como programar en LabVIEW 8.5
Obsérvese 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 botón “booleano” que permita terminar la ejecución de un programa (recuerde que en versiones anteriores de LabView hay que hacerlo manualmente, en la actual versión 8.5 para la que está elaborada esta guía, si se introduce un ciclo While (ver Guía 1) el botón se adicionará automáticamente).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. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 7
Guía 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 gráficos seleccionados para nuestra interfaz, la lógica que dará solución a nuestro ejercicio. Para ello pasamos directamente a la ventana del diagrama (Ctrl+E).
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 8
Guía No.2 Como programar en LabVIEW 8.5
6. El primer código G que debemos programar es el necesario para comenzar y terminar la aplicación. 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 aplicación. Esta situación se modela en programación a través de un “ciclo while”. Para
incorporar
un
“ciclo while”
a
nuestra
aplicación
selecciona en la paleta de funciones el boton: se busca la opción “while loop”.
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
se
y luego
Página 9
Guía 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 aplicación cambia para indicarle que usted debe seleccionar el área que ocupará el ciclo, esto se realiza arrastrando el ratón de manera que seleccione el área necesaria, como ilustra la siguiente pantalla.
Al finalizar se obtiene la siguiente estructura de programa G:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 10
Guía No.2 Como programar en LabVIEW 8.5
8.
El
ciclo
tiene
representada por por
(parar
dos
variables
implícitas:
la
iteración
y la condición de salida, representada si
verdadero).
(en
versiones
anteriores
aparecerá la condición contraria, representada por (continuar si verdadero). Si negamos la variable booleana y la conectamos a la condición de salida, se construye la lógica necesaria para la ejecución 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 simbología, ver Guía 1). 10. Según el enunciado del ejercicio el tanque debe recibir el valor de nivel de una función aleatoria. En el caso de LabVIEW esta función se encuentra entre las funciones numéricas (
)y se puede escoger como sigue:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 11
Guía No.2 Como programar en LabVIEW 8.5
11. La función brinda un valor aleatorio de tipo “double” entre 0 y 1. Sin embargo nuestra aplicación requiere que el nivel varíe entre 0-100. Para ello debemos multiplicar la salida de esta función por el valor entero 100. Con ello se logra nuestro objetivo. La función de multiplicación se encuentra en la misma paleta de funciones numérica y se representa por el símbolo: que recibe dos valores y devuelve la multiplicación de ambos. Además de esta propia paleta debe utilizarse una constante numérica entera que contenga elemento necesario.
el
valor
100
que
será
el
otro
12. Después de colocar estos elementos en la ventana de diagrama, y conectarlos convenientemente según la lógica a seguir, quedará como se muestra a continuación:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 12
Guía No.2 Como programar en LabVIEW 8.5
En cada iteración del ciclo el resultado de la función 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 función de comparación, que se puede encontrar en la paleta de funciones “Comparison”:
Ahora la pantalla queda como sigue:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 13
Guía No.2 Como programar en LabVIEW 8.5
Para
modificar
el
propiedad FillColor manera:
color
del
tanque
debemos
utilizar
la
que se selecciona de la siguiente
14. De clic derecho sobre la variable “Tank” y seleccione la opción Create, a continuación seleccione la opción “Property Node” según se muestra a continuación:
Y dentro del menú que se despliega seleccione la propiedad FillColor. En la pantalla del diagrama se muestra el siguiente código:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 14
Guía 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 comparación del valor y la referencia. Para cambiar esta propiedad a escritura debemos dar clic derecho sobre la misma y seleccionar la opción “Change To Write”. Con ello el resultado gráfico es de
a
.
16. Para continuar nuestra aplicación es necesario un bloque de toma de decisión (bloque if-then-else) que permita escribir un color u otro en dependencia del resultado de la comparación. Este bloque puede encontrarse en la “paleta de funciones”, específicamente en la paleta “Comparison” la función “Select” . Esta instrucción 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. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 15
Guía No.2 Como programar en LabVIEW 8.5
El valor que debe retornar la función “Select” debe ser Rojo, si la condición 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 código (o de diagrama) pues el menú inicial solo muestra las paletas más utilizadas. Hay que expandirlo seleccionando:
Para seleccionar las constantes de color tendríamos que:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 16
Guía No.2 Como programar en LabVIEW 8.5
El código 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. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 17
Guía No.2 Como programar en LabVIEW 8.5
18.
La
aplicación
está
casi
lista,
ahora
debemos
ejecutarla, para ello presionamos el botón de menú y si se quiere ejecutar en modo de depuración se pueden escoger las variantes ya estudiadas.
.
Al ejecutarla podemos percibir la rapidez con que varia el nivel. Para que sea más efectiva la simulación 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 función “Wait Until Next ms Multiple” y colocar una constante de demora de 500 ms. Como se muestra a continuación.
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 18
Guía 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 año: YYYY donde las cadenas subrayadas son: el nombre y la resta del año actual con la edad respectivamente.
Para diseñar la interfaz de usuario de este programa debemos utilizar 1 control de cadena para entrar el nombre, 1 control numérico de tipo entero sin signo, de 8 bits, ya que la edad siempre es positiva y nunca mayor que 256 que es el entero más pequeño que se puede declarar y 1 indicador de cadena para la salida. Además debemos colocar un control booleano que permita terminar la ejecución 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.
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
lo
hicimos
en
los
Página 19
Guía No.2 Como programar en LabVIEW 8.5
3. Adicionar un control numérico.
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 20
Guía No.2 Como programar en LabVIEW 8.5
4. Cambiar el tipo de dato asociado con el control numérico.
6. Adicionar un indicador de cadena.
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 21
Guía No.2 Como programar en LabVIEW 8.5
Ya estamos en condiciones de programar, en base a los elementos gráficos seleccionados para nuestra interfaz, la lógica que dará solución a nuestro ejercicio. Para ello pasamos directamente a la ventana del diagrama (Ctrl+E).
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 22
Guía No.2 Como programar en LabVIEW 8.5
6. Para incorporar un “ciclo while” a nuestra aplicación se selecciona en la paleta de funciones el botón: y luego se busca la opción “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 año: ” para ellos se va a la paleta de funciones y se busca la paleta relacionada con el tratamiento de cadenas. A continuación se muestra su localización:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 23
Guía No.2 Como programar en LabVIEW 8.5
8. Se colocan dos controles del tipo cursor “tab”,
y se selecciona el
en la paleta de herramientas o se utiliza la tecla hasta que el cursor en la pantalla quede de la
siguiente manera: para introducir el valor 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. Además, hay que restarle al valor de la edad el año actual para obtener el año de nacimiento y este resultado añadirlo a las cadenas. Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 24
Guía No.2 Como programar en LabVIEW 8.5
Para convertir un número en la cadena de caracteres equivalente se puede utilizar la función “Format Into String”, que además permite concatenar otros tipos de datos (ver próximo punto). La podemos encontrar en Functions/programming/String:
10. Esta función retorna una cadena de caracteres que esta formada por cada uno de los elementos que se le pasan como parámetros. Estos parámetros 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 función de C “printf” o sea: %d para enteros, %f para números 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 año). Para ello debe introducirse en el código 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 función según se muestra a continuación:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 25
Guía No.2 Como programar en LabVIEW 8.5
11. Como se observa esta función solo tiene una posible conexión de entrada (la identificada por abc) pero eso es solo por el momento. Usted debe pararse justo en la base de la función y esperar a que cambie el tipo de cursor. Cuando esto suceda, debe presionar el botón izquierdo del ratón 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 año debemos introducir una constante numérica entera para almacenar el valor del año actual y un operador de resta desde la paleta de funciones numéricas. Al efectuar la resta del año menos la edad se tiene el año de nacimiento (por el momento utilizaremos una constante, cuando se avance más en las guías podrá ver que puede leer la fecha actual, tomar el año y hacer que el programa funcione igual sin editar nada independientemente de la máquina y la fecha actual). Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 26
Guía No.2 Como programar en LabVIEW 8.5
Para ejecutar e programa, presionamos el botón de menú y si se quiere ejecutar en modo de depuración se pueden Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 27
Guía No.2 Como programar en LabVIEW 8.5
escoger las variantes ya estudiadas. . Note que esta es una versión primaria del programa, que tiene como finalidad explicar cómo trabajar con cadenas. Al no tenerse en cuenta el mes de nacimiento ni el día (solo la edad) el cálculo del año 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 día en un indicador de cadena; el mes, por su nombre, en un “ComboBox” y el año 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 mostrarán el día y el año. Estos controles se deben introducir de la misma manera que se hizo en el ejercicio. El resultado, en el panel frontal debe ser:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 28
Guía 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 opción “Change To Indicator”. Ahora estamos listos para introducir cada uno de los doce meses del año. 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 opción “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 más eficiente al incorporar un editor donde podemos fácilmente editar los ítems del enum e incluso establecer un orden para los mismos. Para acceder a dicho editor se selecciona la opción Edit Items que aparece al dar clic derecho sobre el elemento Enum:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 29
Guía No.2 Como programar en LabVIEW 8.5
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 30
Guía No.2 Como programar en LabVIEW 8.5
En estos momentos estamos listos para programar el código que de solución 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 código G que nos permita terminar la ejecución de nuestro programa. Hasta el momento debe aparecer la ventana de diagrama de la siguiente forma:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 31
Guía No.2 Como programar en LabVIEW 8.5
Es de señalar que la variable correspondiente al indicador de tipo “Enum” es entera y cada mes tiene un número entero asociado. Para “enero” será el “0”, febrero el “1” y así sucesivamente. 4. Para desglosar la fecha es necesario encontrar el carácter “/” que limita el día del mes, y el mes del año. La función “Search/Split String” que se encuentra en la paleta de funciones Functions/Programming/String/Additional String Functions permite encontrar un carácter específico dentro de una cadena. Esta función necesita como parámetros la cadena donde debe buscar, el carácter que se quiere encontrar y el desplazamiento a partir del inicio de la cadena donde se comenzará la búsqueda. La función retorna tres valores. La subcadena que se forma hasta el carácter que se busca, la subcadena a partir del carácter que se busca (incluyendo el carácter buscado) y el índice o desplazamiento donde se encontró el carácter.
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 32
Guía No.2 Como programar en LabVIEW 8.5
El resultado de aplicar esta función contiene la fecha es el siguiente:
a
la
cadena
que
Si la fecha es: 12/01/2005 Subcadena hasta el carácter “/”: “12” Subcadena restante: “/01/2005” 5. Para tomar el mes es necesario eliminar el primer carácter “/” de la cadena restante “/01/2005”y volver a aplicar la función anterior. Para ello se puede utilizar la función “String Subset” (Functions/Programming/String) que recibe como parámetros una cadena, la cantidad de caracteres que se quieren tomar y el desplazamiento o índice a partir de donde se tomara la subcadena.
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 33
Guía No.2 Como programar en LabVIEW 8.5
6. El resultado de aplicar esta función 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 función, que es una cadena con el número del mes, a un valor numérico entero. Para ello LabVIEW cuenta con funciones de conversión de tipos. En nuestro caso esto se realiza con la función “Decimal String To . (Functions/Programming/String/StringNumber Conversion) El diagrama queda como sigue: Number”
Para obtener el año se debe repetir el paso 5 con lo cual se elimina el carácter “/” y se obtiene el año. El diagrama final queda así: Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 34
Guía No.2 Como programar en LabVIEW 8.5
Para ejecutar e programa, presionamos el botón de menú y si se quiere ejecutar en modo de depuración se pueden escoger las variantes ya estudiadas. . Al correr el programa se puede percibir que el mes que se obtiene está desplazado en uno con el que sería 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, después de la conversión de cadena a número se debe restar una unidad. El diagrama queda de la siguiente manera:
Dr. Valery Moreno Vega, Dpto Automática y Computación. Enero 2010
Página 35