Programación en LabView

download Programación en LabView

of 248

Transcript of Programación en LabView

Instituto gfghf

Automtica y Computacin

CUJAE

Instituto Superior Politcnico "Jos Antonio Echeverra", CUJAE, Marianao, Ciudad Habana, Apdo. Postal 19390, 260 6778 , 260-2055 / FAX: 267 29 64

PROGRAMACIN EN LABVIEW. PROGRAMACIN EN LENGUAJE G. TIPOS DE DATOS SIMPLES Y COMPLEJOS. ESTRUCTURAS DE CONTROL DE FLUJO. TRABAJO CON FICHEROS, TRABAJO CON TARJETAS DE ADQUISICIN DE DATOS, PUERTO SERIE Y PARALELO, TCP-IP Y DDE.

Monografa elaborada por Dr. Valery Moreno Vega y Msc. Adel Fernndez Prieto para el curso de Instrumentacin Virtual dictado dentro de la asignatura Automtica III en la carrera de Automtica de la Facultad de Ingeniera Elctrica del ISPJAE. Direcciones de Contacto: Email: [email protected] Telfonos: 2663342, 2602055.

y [email protected]

1ra Versin Revisada en Abril 2005.

Departamento de Automtica y Computacin

18/11/2006

Indices

ndice Introduccin Tema I Conceptos bsicos Tema II LabVIEW bsico Tema III Tipos de datos simples Tema IV Control de flujo de programa en LabVIEW. Estructuras repetitivas. Tema V Ms estructuras de control de flujo. Tema VI Tipos de datos complejos. arreglos y clusters Tema VII Controles forma de onda. implementacin de funciones en LabVIEW Tema VIII Trabajo con ficheros Tema IX. Tarjetas de adquisicin de datos (PCL-818L). Tema X Trabajo con puerto serie en LabVIEW Tema XI Trabajo con puerto paralelo en LabVIEW Tema XII Comunicacin TCP-IP en LabVIEW Tema XIII Comunicacin DDE

1 2 4 9 29 55 79 95 117 142 161 200 213 221 235

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

1

Departamento de Automtica y Computacin

18/11/2006

Introduccin: En esta monografa el lector encontrar una introduccin a algunos temas relacionados con la instrumentacin virtual y especficamente sobre la herramienta de programacin LabVIEW. Los temas abordados comprenden: 1. LabVIEW bsico a. Los Instrumentos virtuales. b. Los conceptos de control e indicador. c. El ambiente de desarrollo. d. Tipos de datos simples. e. Estructuras de control de flujo. f. Tipos de datos complejos. g. Confeccin de funciones (subVI). h. Trabajo con ficheros. 2. LabVIEW avanzado a. Trabajo con tarjetas de adquisicin de datos. b. Trabajo con puerto serie y paralelo. c. Trabajo con TCP-IP. d. Trabajo con DDE. El primer tema es necesario como introduccin a cualquier lenguaje de programacin, y en el mismo se abordan los conceptos en que se basa la programacin grfica. Es de destacar que en la programacin grfica todo esta muy ligado a la iconografa con que se representan los diferentes elementos. Un lector que est acostumbrado a los lenguajes por comandos, llega a identificarse con las palabras claves que forman determinado lenguaje, por ejemplo: un for, int, switch en C++, sin embargo, con LabVIEW este concepto cambia, para ahora asociar una forma o icono en vez de un conjunto de caracteres con las palabras claves. LabVIEW es un lenguaje de programacin construido sobre la base de objetos, sin embargo no es posible construir nuevos objetos, como pudiera hacerse con otros lenguajes como C++, Java, Pascal etc, es por ello que la manera de construir aplicaciones es a travs de una metodologa de programacin estructurada, utilizando como recurso la implementacin de funciones, que en este caso se denominan SubVI. El presente trabajo comienza con una breve explicacin de los conceptos bsicos relacionados con esta herramienta de trabajo, para luego exponer la totalidad de los temas mediante ejercicios resueltos, que el lector puede realizar desde su computadora personal o laboratorio. De esta manera se introducen los tipos de datos, las sentencias de control de flujo y la biblioteca de funciones bsica y especializada, a travs de ejemplos. Tambin a lo largo de estos temas se proponen ejercicios como estudio independiente. El segundo tema que aqu hemos denominado como LabVIEW avanzado, no incluye ni mucho menos todos los temas que por este nombre pudieran estar. Simplemente nos a parecido que se salen del modulo bsico de esta herramienta. Es de destacar que el trabajo con las tarjetas de adquisicin de datos se realiza basado en la PCL-818L, esta es solo una, de muchsimas variantes que existen actualmente en el mercado, sin embargo, el estudio detallado que se hace de la misma, y la metodologa de diseo de su controlador, nos parece un punto de partida prctico que puede ser utilizado por los interesados para generalizarlo a tarjetas de otros fabricantes. Quedan fuera temas tan interesantes como el estudio de las funciones de anlisis matemtico, el uso de filtros para seales de entrada. Adems, el estudio de los DataSockets que se basan en el protocolo TCP-IP. Tambin el trabajo con OLE/Active X y la conexin con Bases de Datos profesionales. Sin embargo, ya el volumen de esta edicin es suficiente mente largo. Es de destacar que su estructura esta completa, siguiendo una secuencia donde lo aprendido sirve de base a lo que se aprende y donde ningn concepto queda fuera de lo que se ha abordado anteriormente.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

2

Departamento de Automtica y Computacin

18/11/2006

Esta edicin un poco abre una primera puerta a la escasez de bibliografa que existe alrededor del Lenguaje de programacin LabVIEW. Sabemos que estos lenguajes son susceptibles de actualizaciones, pero tambin el hecho de que los temas abordados son los suficientemente bsicos, incluyendo aquellos que se denominaron como avanzados, nos da suficiente paz, como para pensar que este volumen se pueda utilizar por algunos aos, no diez o veinte, pero si hasta tres aos. Esperamos disfrute y encuentre til esta monografa. Es ese el deseo de los autores.

Los autores.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

3

Departamento de Automtica y Computacin

18/11/2006

TEMA I Conceptos Bsicos Primeramente antes de entrar en que es el LabView vamos a conocer nuevos conceptos acerca de la Instrumentacin Virtual. Semnticamente virtual es algo aparente, que no es real pero que se comporta como tal. En la actualidad se manejan trminos como los de instrumentacin virtual, laboratorio virtual, ambientes virtuales, y realidad virtual. No se debe confundir laboratorio virtual con instrumento virtual aunque existe una estrecha relacin. Se habla de laboratorio virtual cuando se simula un proceso o sistema que se parece y se comporta como un proceso o sistema real, para poder observar su comportamiento. Se habla de instrumento virtual cuando se emplea la computadora para realizar funciones de un instrumento clsico pudiendo agregarle al instrumento otras funciones a voluntad. A pesar de esta pequea diferencia, un laboratorio con instrumentos virtuales es un laboratorio virtual. En el campo de la instrumentacin quien introdujo por primera vez el termino virtual fue la compaa National Instrument en 1986, al elaborar un programa que de manera simple y grfica permitiera simular un instrumento en una PC, con lo cual dio origen al concepto de instrumento virtual; definido como un instrumento que no es real, corre en una computadora y tiene funciones definidas por programacin. El instrumento tradicional ya est definido, con capacidades de entrada/salida de seales y una interfaz de usuario fija. El fabricante define la funcionalidad del instrumento, el usuario no puede cambiarla. Dada la arquitectura abierta de los PCs y las estaciones de trabajo, la funcionalidad de los instrumentos virtuales esta definida por el usuario. Adems, la capacidad de procesamiento de los instrumentos virtuales es superior a la de instrumentos estndares, debido a la rpida evolucin de la tecnologa de los PCs y de las estaciones de trabajo como resultado de las grandes inversiones que se efectan en la industria. En 1986 National Instruments introdujo LabView 1.0 con el propsito de proveer una herramienta de software que permitiera a los ingenieros desarrollar sistemas a la medida de sus necesidades, del mismo modo que la hoja de clculo permita a los hombres de negocios analizar datos financieros. Este nombre LabView viene de las siglas en ingles Laboratory Virtual Instrument Engineering Workbench. La versin del LabView 6.1 y los requerimientos mnimos son: 1. 32 MB de RAM y 65 MB de HD / Parcial, 300MB Completa. 2. Incluye Windows NT 4.0 o superior Que es el LabView?. El LabView es un programa para el desarrollo de aplicaciones de propositos generales, tales como el C, el Basic, el Pascal.

Herramientas de Desarrollo de Software

Ambiente de desarrollo

+ Lenguaje deFigura1: Esquema general

Programacin

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

4

Departamento de Automtica y Computacin

18/11/2006

Ambiente de Desarrollo Todo ambiente de desarrollo testa formado por los siguientes elementos. Es importante que se busque y se practiquen con frecuencia ya que esto permite que el desarrollo de las aplicaciones se realice con mayor rapidez y calidad. Depuracin Puntos de ruptura. Ejecucin paso a paso. Ventana de seguimiento a variables

Facilidades de desarrollo Panel frontal: Para observar el estado de las pantallas que estamos desarrollando. Paletas de funciones y controles para adicionar a nuestro proyecto. Herramientas para alinear los controles y funciones.

Lenguaje de Programacin.

LabVIEW usa el lenguaje de programacin grfico Lenguaje G. Las posibilidades son normalmente las mismas que presenta cualquier lenguaje de programacin: Sentencias (Grficos) de control de Flujo y repetitivas. Posibilidad de declaracin de variables. Modularidad a travs de la confeccin de funciones. Trabajo con los eventos y propiedades de los controles y variables. Incluye bibliotecas de funciones extendidas para cualquier tarea de programacin. Basado en objetos pero no permite nuevas declaraciones. Mecanismos de conexin con lenguaje C y C++ y DLL. Algo muy caracterstico de LabVIEW y es por ello que se considera una herramienta para el desarrollo de instrumentos virtuales, es su extensa biblioteca de funciones especializada en la adquisicin, acceso a buses de campo, procesamiento matemtico y procesamiento de seales Tarjetas de adquisicin de datos Bus GPIB. Entrada/ Salida (Puerto serie y paralelo). Arquitectura VISA. Anlisis de seales. Almacenamiento de datos. Comunicacin (TCP-IP, UDP y otros). Matemticas. Cmo se trabaja con el LabVIEW? Los programas en LabVIEW son llamados Instrumentos Virtuales (y son salvados con la extensin .VI). Los programas de LabVIEW constan de un panel frontal y un diagrama de bloques. En el panel frontal se disea la interfaz con el usuario, viene a ser la cara del VI y en el diagrama de bloques se programa en lenguaje G el funcionamiento del VI.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

5

Departamento de Automtica y Computacin

18/11/2006

Programas de LabView (*.vi)

Panel Frontal

+

Diagrama Bloques

Diseo de interfaz Cara delinstrumento virtualEl Panel Frontal

Lenguaje G Lgica del programa

El panel frontal de un VI es una combinacin de controles e indicadores. Los controles son aquellos elementos que entregan datos al diagrama en bloques desde el panel frontal por entrada desde teclado o con el mouse, simulan los dispositivos de entrada de datos del VI y pasan los datos al diagrama en bloque del VI. Los indicadores son aquellos elementos que entregan datos al panel frontal desde el diagrama en bloques para ser visualizados en el display, simulan los dispositivos de salida de datos del VI que toman los datos desde el diagrama en bloque del VI. Para adicionar controles o indicadores al panel frontal se seleccionan estos de la paleta de controles que se encuentra en una ventana flotante y a la cual se accede a travs de accionar el botn derecho del ratn sobre el panel frontal. A los controles e indicadores se les puede cambiar el tamao, la forma, y la posicin, adems cada control o indicador tiene un pop-up men en el cual se pueden cambiar varios atributos o seleccionar diferentes opciones. Los controles: Entregan datos al diagrama en bloques por mediacin del teclado o el ratn, Simulan dispositivos de entrada de datos del VI

Los indicadores Muestran datos en el panel frontal desde el diagrama en bloques para ser visualizados Simulan los dispositivos de salida de datos del VI.

El Diagrama en Bloques

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

6

Departamento de Automtica y Computacin

18/11/2006

La ventana Diagrama almacena el diagrama en bloques del VI, el cdigo fuente grfico (Lenguaje G) del Instrumento Virtual. Se construye este diagrama con bloques funcionales denominados nodos, conectndose o unindose entre s segn sea el objetivo. Estos nodos realizan todas las funciones especficas necesarias para el VI y controlan el flujo de la ejecucin del VI. Tipos de Datos en LabView Tabla 3.1 Tipos de Datos en LabView I32 32 (4 bytes) -2147483648 hasta 2147483647 I16 16 (2 bytes) -32768 hasta 32767 I8 8 (1 bytes) -128 hasta 127 U32 32 (4 bytes) 0 hasta 4294967295 U16 16 (2 bytes) 0 hasta 65535 U8 8 (1 bytes) 0 hasta 255 EXT 96 (12 bytes) -1.00E507 hasta 9.00E+515 DBL 64 (8 bytes) -5.00E-324 hasta 1.70E+308 SGL 32 (4 bytes) -1.40E-45 hasta 3.40E+38 CXT 192 (24 bytes) -1.00E507 hasta 9.00E+515 CDB 128 (16 bytes) -5.00E-324 hasta 1.70E+308 CSG 64 (8 bytes) -1.40E-45 hasta 3.40E+38 abc 1 byte/caracter Conjunto de Caracteres ascii. Segn el tipo de los elementos del arreglo [...]

Long Word Byte Long Unsigned Word Unsigned Byte Unsigned Extended Double Single Complex Extended Complex Double Complex Single Cadena(String) Arreglos(Array) Grupos (Cluster) Path Device

Cmo se declaran los tipos de variables numricas ? Cuando se pone un control o indicador en el panel frontal, LabView pone un terminal correspondiente a este control o indicador en el diagrama en bloque. Este terminal desaparece solo cuando se borra el control o indicador. Los enlaces o alambres son los caminos de los datos entre los terminales fuente y los terminales destino. No se permite enlazar dos terminales fuentes ni dos terminales destinos, y si se permite enlazar un terminal fuente a varios terminales destino.

Configuracin

Representacin

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

7

Departamento de Automtica y Computacin

18/11/2006

Variables locales Las variables locales permiten hacer lecturas y escrituras sobre el control o indicador al cual est asociado.

// esto es C int a = 0 ; //declaracin a = x +y *z; // escritura m = a* c; // lectura

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

8

Departamento de Automtica y Computacin

18/11/2006

TEMA II LabVIEW Bsico 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 principales indicadores y botones y las acciones ms comunes de los mismos. Conocer las teclas de acceso directo y las principales opciones de la ayuda y de la ejecucin del programa.

Ejercicio 1: Elabore un programa en LabView que permita conectar a un termmetro y un tanque dos controles de sintona de manera tal que cuando varen su valor el nuevo adquirido se refleje en los indicadores tipo termmetro y en el tipo tanque. Solucin: Cuando se ejecuta LabView por primera vez aparece una pantalla similar a la siguiente:

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

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

9

Departamento de Automtica y Computacin

18/11/2006

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. Muchas veces es conveniente organizar las dos ventanas de forma tal que se dividan la pantalla cada una en una mitad. Esto facilita el desarrollo del programa. Para lograr dicha distribucin LabView dispone de la combinacin Ctrl+T (tambin se puede realizar mediante la opcin del men Windows/Tile Left and Right). Una vez que se realiza esta accin se obtiene la siguiente distribucin:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

10

Departamento de Automtica y Computacin

18/11/2006

Ya estamos listo para comenzar a darle solucin al ejercicio. Primero seleccionemos los controles que podremos. 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 primera de las opciones, que se llama numerics y se representa en el men controls con el smbolo algo similar a: . Aparecer

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

11

Departamento de Automtica y Computacin

18/11/2006

Observe que en ambas ventanas, la de Controls y la Numeric, en el caption de las mismas aparece el nombre de la ventana precedido de una especie de tachuela, o sea, . Este smbolo aparece aqu porque si queremos dejar la ventana fija (para evitar que cada vez que se quiera poner un nuevo control tengamos que dar clic derecho y buscar la opcin que nos interesa) podemos hacerlo cambiando el estado de la tachuela dando clic encima de ella. Como en esta aplicacin vamos a ubicar ms de un control y algunos indicadores, dejemos fija la ventana de Numeric. Si se procede a ubicar el puntero del mouse en la tachuela que aparece justo antes de numeric en el caption de la ventana del mismo nombre se observa que dicha tachuela cambia de posicin o forma:

y si en ese momento damos clic obtenemos:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

12

Departamento de Automtica y Computacin

18/11/2006

Los controles tipo sintona son los que se identifican por knob y dial. Son los primeros que aparecen en la tercera fila de la pantalla anterior. Para incorporarlos a nuestro panel frontal simplemente los seleccionamos (el tipo de cursor debe ser el de seleccin que se coment en conferencia) que es el que por defecto debemos tener en estos momentos. Si no es ese el que tenemos podemos cambiarlo visualizando la ventana de herramientas (opcin windows/Show Tools Palette) y seleccionando el mencionado tipo de cursor. El procedimiento se muestra en las dos ventanas siguientes (el cursor seleccionado aparece hundido en comparacin con el resto:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

13

Departamento de Automtica y Computacin

18/11/2006

Continuando con la idea original de insertar los controles en el panel frontal, seleccionamos los de tipo sintona (1ero y segundo de la tercera fila) en la paleta o ventana numeric mostrada en las figuras precedentes. La seleccin se realiza dando clic encima del de inters y colocndolo en el panel frontal (de la forma usual con que se hace esto en lenguajes visuales como el C++ Builder). Despus de realizada la operacin las pantallas deben tener una apariencia como sigue (se muestra el segmento de inters de las ventanas):

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

14

Departamento de Automtica y Computacin

18/11/2006

y:

Note que a medida que se introducen los controles en el panel frontal en la pantalla de diagrama (figura anterior) van apareciendo variables asociadas a los controles. Dichas variables se identifican con un nombre (el mismo del control, de manera que si se cambia en el control se cambia en la pantalla de diagrama). En dependencia del tipo de elemento numrico que se seleccione las variables declaradas sern de escritura (fijan valores) o de lectura (reciben valores). En este caso los controles del panel frontal tienen variables de escritura. Es

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

15

Departamento de Automtica y Computacin

18/11/2006

fcil identificar cuando una variable es de lectura o escritura pues LabView nos lo indica con una especie de saeta, que indica la direccin del flujo de los datos. En el ejemplo anterior ambas variables estn representadas con los smbolos . Note que en dicho smbolo aparece la saeta indicando salida, o sea, escritura. En el smbolo anterior tambin se puede leer la cadena DBL que nos dice de que tipo de datos es esa variable. Cuando se estudien los tipos de datos simples veremos que este tipo (que por defecto tienen los controles) es el tipo Double. Los tipos de datos que se definen por defecto pueden cambiarse. Para ello seleccionamos la variable en la pantalla de diagrama y damos clic derecho. En el men emergente que aparece buscamos la opcin Representation:

Note que hay varios tipos de datos. El que actualmente est seleccionado aparece encerrado en un recuadro azul como en la figura anterior. Si se quiere seleccionar otro basta con seleccionarlo con clic izquierdo. Observe que en dependencia de la variable se podr seleccionar para ella distintas representaciones o tipos de datos, pero no todos. En este caso hay varios tipos de datos que aparecen en gris (los ltimos), indicndonos que no se admiten esos tipos para el actual elemento o control. Hagamos un cambio, y del tipo DBL por defecto que tiene llevmoslo a U8 que es un tipo de dato entero corto sin signo (8 bits, de 0 a 255 como posibles valores). Para ello seleccionamos en el men de representation el elemento identificado como U8. Los cambios se manifiestan en la pantalla de diagrama cambiando el color de la variable para indicar el otro tipo (cada tipo tiene un color). Debemos obtener:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

16

Departamento de Automtica y Computacin

18/11/2006

Note que en el panel frontal la escala del control tambin cambi para adaptarse al nuevo tipo de variable (por ejemplo, no tiene valores decimales pues es el control es de tipo entero). De igual forma (clic derecho sobre el control) la apariencia del control en el panel frontal y de su escala se puede modificar, as como algunas de sus propiedades. En las figuras que aparecen a continuacin se ponen algunos ejemplos:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

17

Departamento de Automtica y Computacin

18/11/2006

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

18

Departamento de Automtica y Computacin

18/11/2006

Otras opciones incluyen escalas logartmicas (Mapping), espaciado arbitrario o uniforme, etc. El control tambin se puede redimensionar, o sea, el tamao y posicin inicial que aparece en el panel frontal son atributos que se pueden modificar en tiempo de diseo. Cada control lo indica de una manera fcil de identificar, usualmente mediante un rectngulo que encierra al control o parte de este durante el movimiento del mouse sobre el elemento. A continuacin se muestra un ejemplo: Note que se han sealado cuatro esquinas. Moviendo el puntero del mouse para cualquiera de esas esquinas se puede modificar el radio de la circunferencia que representa el botn de sintona. El resto de los elementos del control, excepto la etiqueta (en este caso Dial), se redimensionan al redimensionarse la circunferencia.

A continuacin se representa al mismo elemento redimensionado.

Hasta este punto se han situado en la pantalla los elementos grficos que harn la funcin de controles. Ahora corresponde seleccionar los indicadores que mostrarn su valor de acuerdo

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

19

Departamento de Automtica y Computacin

18/11/2006

a los controles. Estos indicadores estn situados en la misma paleta, o sea en la paleta de controles numricos. En este caso utilizaremos el indicador Tank y el thermometer, que se seleccionan de la siguiente manera:

Para luego obtener el siguiente diseo:

Para terminar y como se ha mencionado en los talleres, debemos colocar un botn que permita a los usuarios terminara la aplicacin. Para ello debemos seleccionar este control de la paleta de funciones numricas. Esto se realiza de la siguiente forma:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

20

Departamento de Automtica y Computacin

18/11/2006

El diseo final del Panel Frontal queda:

Ahora corresponde trabajar en la ventana del diagrama en bloques. Para ello podemos utilizar las teclas de acceso rpido (Ctrl+E). En esta ventana debemos utilizar el lenguaje de programacin G para establecer la lgica de nuestra aplicacin. Antes de comenzar tenemos las cinco variables que corresponden a los cinco controles que hemos colocado en la pantalla. El cdigo luce de la siguiente forma:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

21

Departamento de Automtica y Computacin

18/11/2006

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 ), en la ventana del diagrama. Mientras esta variable sea verdadera se debe stop (verde 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: y luego se busca la opcin while loop.

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.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

22

Departamento de Automtica y Computacin

18/11/2006

Al finalizar se obtiene la siguiente estructura de programa G:

Para finalizar el programa solo nos resta realizar las asignaciones correspondientes. Es fcil darse cuenta de que las variables que corresponden a los controles deben ser asignadas a las que se variables que representan a los indicadores. Para ello debemos utilizar el cursor puede obtener utilizando la tecla (Tab) o seleccionndolo directamente en la paleta de herramientas tools Palette. Una vez conectados el cdigo queda como sigue:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

23

Departamento de Automtica y Computacin

18/11/2006

Note que el flujo de los datos va desde el control hacia el indicador y note tambin que la representacin grfica de ambas variables pese a ser del mismo tipo de datos no es igual: El borde es ms grueso en los controles que en los indicadores, as como la flecha es de salida en los primeros y de entrada en los segundos. Finalmente debemos conectar el control booleano a la condicin de salida del ciclo do..While . Para ello debemos utilizar un negador ya que el botn por defecto est en falso. Para ello se utilizan los operadores boolenos que se encuentran en la paleta de funciones segn se muestra debajo:

Al conectarlos queda de la siguiente forma:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

24

Departamento de Automtica y Computacin

18/11/2006

Con ello queda resuelto el problema planteado. Sin embargo ahora debemos correr la aplicacin, para ello se debe utilizar la barra de botones colocada en la ventana del diagrama:

permite ejecutar la aplicacin, mientras qu el botn El botn ejecutar la aplicacin. Para realizar una pausa debemos utilizar el botn

permite terminar de

, luego podemos utilizar los botones

para ejecutar paso a paso la aplicacin. El primero ejecuta instruccin por instruccin, entrando en las funciones si las hubiera, mientras que el segundo si encontrara una funcin, la ejecuta como si fuera un solo paso. El tercer tipo de botn termina la ejecucin paso a paso. que ejecuta la aplicacin de manera continua pero Un botn muy interesante es introduciendo una demora entre instruccin e instruccin para que pueda depurarse la aplicacin. Adems se puede observar los valores asignados a las variables y funciones as como los valores devueltos por estas. Si quisiramos utilizar una ventana de depuracin se debe situar el ratn en una de las conexiones o asignaciones relacionadas con la variable que se debe depurar y dar clic derecho: A continuacin seleccionar la opcin Probe como se muestra a continuacin:

Luego se ve el valor de la variable en una ventana contextual como la siguiente:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

25

Departamento de Automtica y Computacin

18/11/2006

Si en el paso anterior a este hubiramos seleccionado la opcin Set Breakpoint entonces el cdigo se ve de la siguiente forma:

Y la aplicacin se ejecutar hasta este punto, interrumpindose antes de realizar la asignacin.

El segundo ejercicio que se propone para este laboratorio permitir conocer los diferentes tipos de botones que existen en el Labview. Una vez realizado el mismo se deber conocer cuando utilizar uno u otro en dependencia de la aplicacin.

Como toda aplicacin esta debe comenzar con la realizacin del cdigo necesario para ejecutar y terminar la aplicacin. Para ello debe colocar un botn booleano de salida y realizar el cdigo siguiente:

Ahora completamos la interfaz de la aplicacin (Panel de Control) con los seis tipos de botones que se pueden colocar en LabView, adems colocaremos seis leds que nos indicarn la manera en que funcionan estos tipos de botones. La interfaz debe quedar de la siguiente manera:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

26

Departamento de Automtica y Computacin

18/11/2006

Luego usted debe programar la opcin Mechanical Action de los tipos de controles volanos, segn se indica en el texto. Para ello debe dar clic derecho sobre el botn de la siguiente manera:

Luego en la ventana del cdigo se asigna a cada botn un led que estar encendido solo cuando el valor del botn es verdadero. Esto queda as:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

27

Departamento de Automtica y Computacin

18/11/2006

El funcionamiento de los tres primeros botones es muy parecido. En el primer caso el led se encender si se presione el botn, y permanecer en ese estado hasta que se vuelva a presionar el botn. El segundo caso es idntico pero en este caso cambiar cuando se deje de presionar el botn. En el tercer caso se encender el led mientras se tenga presionado el botn.

Los siguientes tipos de botones tienen relacin con el tiempo que demora el Labview en leer el cambio de estado de los botones. En el cuarto caso, inmediatamente despus que se presione el ratn sobre el botn este cambiar de estado y permanecer en l hasta tanto el Labview pueda leer el cambio de estado. Luego se retornar al estado anterior. La quinta variante es muy parecida pero en este caso el botn no cambiar de estado hasta que se deje de presionar el ratn. La sexta variante funciona de manera que el botn cambia de estado con solo presionar el botn y permanece encendido todo el tiempo en que se tiene presionado el ratn sobre le botn. Una vez que se suelte el ratn, el botn permanecer en este estado hasta tanto el labview sea capaz de notarlo, luego se retornar al estado anterior.

Para poder entender bien el funcionamiento de los diferentes tipos de botones, sobre todo los tres ltimos, es necesario que ejecute la aplicacin utlizando la herramienta de depuracin que hace que el Labview lea con mayor lentitud los controles. Esto hace que se pueda observar claramente cuando es que se produce la lectura del estado de los botones por el labview.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

28

Departamento de Automtica y Computacin

18/11/2006

TEMA III Tipos de Datos simples 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 primera vez aparece una pantalla similar a la siguiente:

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

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

29

Departamento de Automtica y Computacin

18/11/2006

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 controles 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 primera de las opciones, que se llama numerics Aparecer algo similar a: y se representa en el men controls con el smbolo .

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

30

Departamento de Automtica y Computacin

18/11/2006

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.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

31

Departamento de Automtica y Computacin

18/11/2006

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:

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.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

32

Departamento de Automtica y Computacin

18/11/2006

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. Esto se realiza en la paleta de controles seleccionando los elemento booleanos para luego escoger Stop Button:

La interfaz final queda como sigue:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

33

Departamento de Automtica y Computacin

18/11/2006

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).

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 ), en la ventana del diagrama. Mientras esta variable sea verdadera se debe stop (verde 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: y luego se busca la opcin while loop.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

34

Departamento de Automtica y Computacin

18/11/2006

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.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

35

Departamento de Automtica y Computacin

18/11/2006

8. El ciclo tiene dos variable implcitas: la iteracin representada por

y la condicin de

salida, representada por . 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. Para negar la variable booleana stop debemos utilizar los operadores booleanos que se seleccionan en la paleta de funciones como sigue:

9. All debemos seleccionar como nuestra la figura, el operdor Not. Y colocarlo en nuestra ventana del diagrama de la siguiente forma:

Antes de conectarlos

Despus de conectarlos

10. 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)

11. 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.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

36

Departamento de Automtica y Computacin

18/11/2006

12. Esta funcin brinda un valor aleatorio de tipo double entre 0 y 1. Sin embargo nuestra aplicacin requiere que el nivel vara 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 que recibe dos valores y devuelve la multiplicacin de ambos. Adems de esta smbolo: propia paleta debe utilizarse una constante numrica entera que ser el otro elemento necesario. que contenga el valor 100

Despus de colocar estas funciones y variables se obtiene el siguiente diagrama:

13. Ahora debemos conectar los elementos segn la lgica a seguir. En nuestro caso queda como sigue:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

37

Departamento de Automtica y Computacin

18/11/2006

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 control tanque. 14. 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 necesario una funcin de comparacin, que se puede encontrar en la paleta de funciones Comparison:

Ahora la pantalla queda como sigue:

Para modificar el color del tanque debemos utilizar la propiedad FillColor selecciona de la siguiente manera:

que se

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

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

38

Departamento de Automtica y Computacin

18/11/2006

En la pantalla del diagrama se muestra el siguiente cdigo:

16. En este caso la propiedad de la variable tankque se muestra por defecto es Visible, sin embargo si damos clic derecho sobre ella y seleccionamos la opcin Properties y luego la opcin Fill Color entonces nuestra propiedad se convierte en la que buscamos. El cdigo es el que sigue:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

39

Departamento de Automtica y Computacin

18/11/2006

17. 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 grafico es de a .

18. Para continuar nuestra aplicacin es necesario un bloque de toma de decisin (bloque ifthen-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 esta instruccin retorna el valor conectado en t o f Comparison la funcin Select en dependencia del valor de s. Si s es verdadero retorna t, en caso contrario retorna f. t y fpueden 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 y Msc.Adel Fernndez Prieto.

40

Departamento de Automtica y Computacin

18/11/2006

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. 19. Esto es posible utilizando la paleta de funciones y escogiendo dos constantes Color Box Constant, una para el rojo y otra para el azul. La manera de hacerlo se muestra abajo.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

41

Departamento de Automtica y Computacin

18/11/2006

El cdigo queda como sigue:

20. Por defecto el color que toman es negro, para cambiar esto debemos tomar el cursor En la paleta de herramientas y presionar sobre la constante para escoger el color deseado. Esto se realiza de la manera mostrada arriba. El cdigo queda como sigue:

Sin conexin

Con conexin

21. 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 demosra dentro del ciclo iterativo. 22. Para ello debemos ir a la paleta de funciones y utilizar la funcin Wait Until Next ms Multiple y colocar una constante de demora de 500 ms. Como se muestra a continuacin.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

42

Departamento de Automtica y Computacin

18/11/2006

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 controles de cadena para entrar el nombre, 1 control numrico de tipo entero sin signo, de 8 bytes, 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 lo hicimos en los ejercicios anteriores. 2. Adicionar un control de cadena.

Seleccin del control 3. Adicionar un control numrico.

Panel Frontal

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

43

Departamento de Automtica y Computacin

18/11/2006

Seleccin del control

Panel Frontal

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

6. Adicionar un indicador de cadena.

Seleccin del control

Panel Frontal

7. Adicionar un control booleano.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

44

Departamento de Automtica y Computacin

18/11/2006

Seleccin del control

Panel Frontal

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).

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 ), en la ventana del diagrama. Mientras esta variable sea verdadera se debe stop (verde 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: y luego se busca la opcin while loop.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

45

Departamento de Automtica y Computacin

18/11/2006

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:

8. El ciclo tiene dos variable implcitas: la iteracin representada por

y la condicin de

salida, representada por . 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.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

46

Departamento de Automtica y Computacin

18/11/2006

Para negar la variable booleana stop debemos utilizar los operadores booleanos que se seleccionan en la paleta de funciones como sigue:

9. All debemos seleccionar como nuestra la figura, el operdor Not. Y colocarlo en nuestra ventana del diagrama de la siguiente forma:

Antes de conectarlos

Despus de conectarlos

10. 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 readicionada con el tratamiento de cadenas. A continuacin se muestra su localizacin:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

47

Departamento de Automtica y Computacin

18/11/2006

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

12. 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. Para ello se puede utilizar la funcin Format Into String que se encuentra:

13. 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 11 y se inicializa as:%s%s%s%d

para luego conectarla a la funcin

segn se muestra a continuacin:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

48

Departamento de Automtica y Computacin

18/11/2006

14. Como se observa esta funcin solo tiene una posible conexin de entrada 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:

15. Para obtener el ao debemos introducir una constante numrica entera para almacenar el desde la paleta de funciones numricas. Al valor del ao actual 2002 y un operador de resta efectuar la resta del ao menos la edad se tiene el ao de nacimiento.

16 Ahora solo nos resta conectar las funciones con las variables para terminar. Para ejecutar e programa, presionamos el botn de men se pueden escoger las variantes ya estudiadas. y si se quiere ejecutar en modo de depuracin .

Ejercicio 3

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

49

Departamento de Automtica y Computacin

18/11/2006

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 anterior (pasos 2 y 6). Como en los ejemplos anteriores se debe colocar un control booleano que sirva para finalizar la aplicacin. El resultado debe ser como se muestra a continuacin.

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

3. Al introducir el elemento Enum, este toma la propiedad de 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 en la paleta de herramientas o se utiliza la meses del ao. Para ello se selecciona el cursor

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

50

Departamento de Automtica y Computacin

18/11/2006

. Luego se tecla tab hasta que el cursor en la pantalla quede de la siguiente manera 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.

` La figura que se muestra encima es el panel frontal correspondiente a nuestro programa.

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. Los pasos son similares a los vistos anteriormente y finalmente debe quedar de la siguiente forma:

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.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

51

Departamento de Automtica y Computacin

18/11/2006

4. Para desglosar la fecha es necesario encontrar el carcter / que limita el da del mes, y el mes del ao. La funcin Search/Split String que se encuentra en la paleta de funciones 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.

El resultado de aplicar esta funcin a la cadena que contiene la fecha es el siguiente: Si la fecha es: 12/01/2005 Subcadena hasta el carcter /: 12 Subcadena restante: /01/2005 5. Para tomar el mes es necesario eliminar el primer carcter / de la cadena restante /01/2005y volver aplicar la funcin anterior. Para ello se puede utilizar la funcin String que recibe como parmetros una cadena, la cantidad de caracteres que se Subset quieren tomar y el desplazamiento o ndice a partir de donde se tomara la subcadena.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

52

Departamento de Automtica y Computacin

18/11/2006

6. El resultado de aplicar esta funcin a la cadena /01/2005 es: 01/2005. Ahora se debe repetir el paso 4 para obtener el mes. 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 el labview cuenta con funciones de conversin de tipos. En nuestro caso esto se realiza con la funcin Decimal String To Number . El diagrama queda como sigue:

Para obtener el ao se debe repertir el paso 5. con lo cual se elimina el carcter /y se obtiene el ao. El diagrama final queda as:

Para ejecutar e programa, presionamos el botn de men

y si se quiere ejecutar en modo

. Al correr el de depuracin se pueden escoger las variantes ya estudiadas. programa se puede percibir que el mes que se obtiene est desplazado en uno con el que sera el correcto. Eso es as por que en la variable de tipo Enum el mes de enero tiene asignado el valor 0, este mes no existe. 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.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

53

Departamento de Automtica y Computacin

18/11/2006

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

54

Departamento de Automtica y Computacin

18/11/2006

TEMA IV Control de Flujo de programa en LabVIEW. Estructuras repetitivas. Lazos de control de programa (While y For). Shift Registers (Registros de Desplazamiento). Nodo frmula. Visualizacin grfica de datos.

Ejercicio 1: Realice un programa que permita encontrar el mximo de 100 nmeros generados aleatoriamente. Represente grficamente los nmeros generados. Desarrollo: El ejercicio una vez terminado debe conducir a una representacin en Lenguaje G como la que se muestra a continuacin en la ventana de diagrama o cdigo del LabView:

Veamos como desarrollar paso a paso dicho ejercicio. Primero, una explicacin de lo que se nos pide. Se necesitan generar 100 nmeros aleatorios, lo que implica utilizar un generador de nmeros aleatorios y un lazo de control de programa o repeticin que permita que ese generador de nmeros aleatorios nos entregue 100 de dichos nmeros. Cada vez que se nos entregue un nmero, o sea, con cada iteracin del bucle o lazo, se debe comparar el nmero generado con el nmero mximo hasta ahora generado. Eso nos indica que debemos realizar una comparacin que busque el mximo y almacenarlo para comparar en cada iteracin con el nuevo nmero. Se nos pide que representemos grficamente dichos nmeros por lo que debemos agregar un grfico a nuestro diseo encargado de plotear en cada iteracin el nmero aleatorio a procesar. Como descomponer entonces con LabView dichas operaciones? 1. Primero debemos crear el lazo de control o bucle. Para ello seleccionamos de la paleta de funciones del LabView las funciones de estructuras y dentro de ella la del ciclo For. El ciclo for es el escogido porque en este caso necesitamos repetir la operacin de comparacin en la bsqueda de un mximo 100 veces, invariablemente. Si estuviramos sujetos a alguna condicin entonces deberamos de haber seleccionado un lazo condicional, o sea, un While. La siguiente figura ilustra como hacer la seleccin:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

55

Departamento de Automtica y Computacin

18/11/2006

2. Una vez que se ha puesto el ciclo for debemos definir el alcance del mismo. Se recuerda que un ciclo for en LabView siempre va desde 0 hasta N-1, siendo N el valor a definir. Aqu queremos realizar las operaciones 100 veces por lo que debemos definir para N un valor de 100. Esto se realiza creando una constante y conectndola con N. Es muy sencillo, la siguiente figura ilustra como hacerlo. El men que all aparece se obtiene dando clic derecho encima de N:

3. Cuando la constante se crea, aparece con valor 0. Debemos cambiar dicho valor y poner 100, como se muestra en la siguiente figura:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

56

Departamento de Automtica y Computacin

18/11/2006

4. Necesitamos ahora generar un nmero aleatorio y compararlo con algn mximo. Por supuesto, el primer nmero aleatorio no tiene referencia de comparacin, pero como debemos comparar dentro del ciclo for, basta con compararlo con el menor valor posible que se pudiera generar, en este caso 0, con lo cual garantizamos que el primer nmero aleatorio siempre ser el primer mximo contra el cual comparar despus los sucesivos que se generarn. LabView presenta un componente que realiza la comparacin entre dos fuentes o nmeros, y devuelve el mnimo valor de entre los dos y el mximo. La siguiente figura muestra como seleccionar dicho componente (Functions/Comparison/Max & Min):

Se inserta en la ventana de diagrama dentro del ciclo for:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

57

Departamento de Automtica y Computacin

18/11/2006

5. Necesitamos ahora encontrar alguna funcin que genere nmeros aleatorios. LabView tiene un componente en Functions/Numeric/Random Number (0-1):

Si quisiramos generar un nmero aleatorio en un rango diferente podemos multiplicar el nmero generado con esta funcin por el valor mximo que queremos generar. Puede modificar el ejercicio como estudio independiente ahora intentando buscar el mximo de 100 nmeros aleatorios en el rango de 0-50. Una vez introducidos en el diagrama el generador de nmeros aleatorios y la funcin que devuelve el mximo entre dos nmeros debemos entonces buscar la forma de almacenar el mximo que resulta de cada iteracin para compararlo con el nmero generado en la siguiente iteracin. Si se analiza bien esto lo que necesitamos es comparar el nmero generado en la iteracin i (denotemos por n(i) a dicho nmero) con el mximo que result de la iteracin i-1. Esta es una de las funciones que puede brindarnos el registro de desplazamiento o shift register de LabView.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

58

Departamento de Automtica y Computacin

18/11/2006

El shift register desde el punto de vista de la programacin es una estructura tipo arreglo asociada con lazos de control o bucles de programa como el for y el while y que almacena valores anteriores producidos en dichos lazos. As, por ejemplo, si obtenemos como resultado de una iteracin i un valor v(i) al final de dicha iteracin, al comienzo de la prxima al i incrementarse en uno, dicho valor se almacena como v(i-1). Dos iteraciones hacia delante ser v(i-2) y as sucesivamente. La siguiente tabla ilustra dicho concepto con ejemplos numricos: Iteracin 0 1 2 3 4 5 6 V(i) 5 3 0.7 1 -1 0 2 V(i-1) 5 3 0.7 1 -1 0 V(i-2) 5 3 0.7 1 -1 V(i-3) 5 3 0.7 1 V(i-4) 5 3 0.7 V(i-5) 5 3

y as sucesivamente.... 6. Para adicionar Shift Registers con LabView se selecciona la estructura for y se da clic derecho sobre ella. El siguiente men aparece:

Al seleccionar de dicho men la ltima opcin, Add Shift Register (Adicionar registro de desplazamiento) se inserta en el diagrama como se muestra en la siguiente figura:

7. Antes de realizar las conexiones entre los elementos debemos adems seleccionar algn componente que nos permita visualizar grficamente los nmeros aleatorios que

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

59

Departamento de Automtica y Computacin

18/11/2006

se van generando. Para ello nos vamos al panel frontal y con clic derecho visualizamos el siguiente men:

Al seleccionar la opcin Controls/Graph/Waveform Chart obtenemos un grfico como el que se representa en la pantalla frontal de la siguiente figura, donde tambin se representa el contenido de la ventana de diagrama hasta este momento:

8. A continuacin se realizan las conexiones entre los elementos. La salida del generador de nmeros aleatorios se conecta al bloque de comparacin de nmeros, y a la entrada del control grfico. El shift register de la derecha debe almacenar el ltimo valor del mximo calculado y que se obtiene como salida del mdulo de comparacin. La siguiente figura muestra las conexiones a realizar:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

60

Departamento de Automtica y Computacin

18/11/2006

9. Una vez realizadas estas conexiones el ejercicio est prcticamente concluido. Note que la primera vez que se compara en el bloque de comparacin se hace entre un primer nmero aleatorio y el valor del shift register. Ya se explic como funciona el shift register y debemos notar que antes de concluir la primera iteracin no tenemos un valor con el cual comenzar para el shift register que adquiere uno al final de cada iteracin. Eso nos indica que tenemos que inicializarlo, darle un valor inicial con el cual empezar y evaluar la iteracin 0 . Note adems que cuando se llega a la ltima iteracin el valor actual que contiene el shift register es el del ltimo mximo calculado, y por tanto el valor que debemos reportar como resultado. Es por ello que entonces debemos crear un indicador para visualizar el ltimo mximo y una constante para definir la condicin inicial del shift register. Las figuras que se muestran a continuacin ilustran como hacerlo. Los mens que all aparecen se obtienen al dar clic derecho encima de los shift registers.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

61

Departamento de Automtica y Computacin

18/11/2006

El resultado final se muestra en la siguiente figura. Note que el valor inicial del shift register es 0.00 pues es el mnimo que puede tomar el nmero aleatorio y no afectar la seleccin del primer mximo.

10. Antes de ejecutar el programa es conveniente modificar algunos parmetros del grfico, en particular los relacionados con los ejes, que debemos modificar para permitir la auto escala. Las figuras a continuacin muestran la manera de hacerlo (siempre clic derecho en el objeto para obtener el men):

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

62

Departamento de Automtica y Computacin

18/11/2006

11. Finalmente salvamos el ejercicio y lo ejecutamos. Un ejemplo de ejecucin se muestra en la siguiente figura:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

63

Departamento de Automtica y Computacin

18/11/2006

Por ltimo, sealar que si queremos que el grfico se represente ms lentamente podemos incluir una demora (Functions/Time & Dialog/ Wait Until Next ms Multiple) o seleccionar el indicador de ejecucin paso a paso. La siguiente figura muestra como quedara el ejercicio para una demora de 50 milisegundos:

En la figura anterior tambin se a insertado otro indicador, llamado max(x,y). Que funcin tendra?

Ejercicio 2: En este ejercicio se propone realizar la descomposicin de la fecha introducida en un control tipo Edit (Edicin) de una manera ms eficiente (comparada con la primera solucin a este ejercicio que ya se vio en una gua anterior), haciendo uso de los shift registers. Desarrollo: En clases anteriores se ofreci una solucin al problema de desglose de una fecha en sus componentes de da, mes y ao. Aquella solucin introduca algunos componentes para el procesamiento de cadenas que se encuentran dentro de las funciones de LabView. En dicha

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

64

Departamento de Automtica y Computacin

18/11/2006

solucin los componentes se repetan, pero hay una forma ms eficiente de resolverlo haciendo uso de los shift registers. La solucin final se ofrece en la siguiente figura:

Se recuerda la funcin y terminales de los dos elementos principales involucrados:

Antes de pasar a una explicacin ms o menos detallada de como construir la solucin en la pantalla de diagrama veamos algunos razonamientos de como proceder con los shift registers: 1. Se quiere dividir una cadena que representa la fecha en sus tres elementos constitutivos, o sea, el da, el mes y el ao que la conforman. 2. La operacin siempre es la misma: se extrae de la cadena una subcadena que representa un componente de la fecha (o el da, o el mes o el ao) y se elimina de la subcadena que resulta de extraer dicho componente el separador /. 3. El proceso se repite 3 veces.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

65

Departamento de Automtica y Computacin

18/11/2006

El punto 3 nos indica que podemos utilizar un lazo condicional, o sea, un while, pues siempre dentro del while se har lo mismo (punto 2). La subcadena que representa el componente extrado debe almacenarse para brindar los resultados finales. Como entonces utilizar los shift registers? Quiz una manera en que podemos verlo es representando el proceso, para una fecha ejemplo, a travs de las iteraciones. La siguiente tabla lo ilustra: Cadena inicial Iteracin Componente resultante Subcadena despus extrado componente /02/2005 /2005 Subcadena de despus el extraer separador (/) 02/2005 2005

de el

8/02/2005 02/2005 2005

0 1 2

8 02 2005

Como se puede apreciar por cada iteracin se obtiene un componente resultante, primero el da, despus el mes y por ltimo el ao. Si denotamos por c(i) al componente resultante se puede ver que despus de la iteracin 2 c(i)=2005, c(i-1)=02 y c(i-2)=8. Dicha secuencia es la que precisamente nos pueden brindar los shift register si creamos los suficientes en el diagrama como para almacenar los valores c(i-2), c(i-1) y c(i). Necesitamos adems de una iteracin a otra almacenar la subcadena resultante despus de extraer el separador que ser la nueva cadena inicial con la cual trabajar en la prxima iteracin. Veamos pues como hacerlo. 1. Primero debemos de crear el lazo condicional while en nuestra aplicacin:

2. Debemos ahora definir la condicin de parada. Queremos que el lazo funcione mientras la iteracin no sea mayor que dos, por tanto, la condicin de ejecucin del while debe ser i corresponder a -5 o -10 Volts. 4096 -> corresponder a +5 o +10 Volts. Para obtener el valor convertido es necesario realizar las siguientes operaciones: Ejemplo BASE+0 = AAAA CCCC donde A y C representan un bit (0-1) BASE+1 = AAAA AAAA Variable de 16 bits = 0000 0000 0000 0000

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

182

Departamento de Automtica y Computacin

18/11/2006

1. Asignar a la variable de 16 bits el valor del registro BASE + 1 2. Desplazar 8 lugares hacia la izquierda el valor variable de 16 bits introduciendo 8 ceros de derecha a izquierda (multiplicar por 256) 3. Realizar una opresin de OR entre la variable de 16 bits y registro BASE + 0 4. liminar los 4 bits menos significativos de la variable de 16 bits introduciendo 4 ceros de izquierda a derecha (dividir por 16).

Ejemplo:

BASE+0 = 1011 0001 donde A y C representan un bit (0-1) BASE+1 = 1001 1010 Variable de 16 bits = 0000 0000 0000 0000 El resultado final debe llevarnos obtener el valor: 1001 1010 1011 (doce bits) Comprobemos: Operacin 1 Variable de 16 bits = BASE+1 = 1001 1010 Resultado Variable de 16 bits = 0000 0000 1001 1010

Operacin 2 Desplazar 8 lugares hacia la izquierda: Variable de 16 bits = 1001 1010 0000 0000 Operacin 3 Realizar operacin OR Variable de 16 bits BASE+0 Variable de 16 bits 1001 1010 0000 0000 OR 1001 1010 1011 0001

1011 0001

Operacin 4 Eliminar 4 bits menos significativos (dividir por 16): Variable de 16 bits Rotados Variable de 16 bits 0000 1001 1010 1011 1001 1010 0000 0000

Para realizar la programacin debemos leer los registros BASE+0 y BASE+1. Esto e muy sencillo:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

183

Departamento de Automtica y Computacin

18/11/2006

Utilizar un variable de 16 bits es lo mismo que convertir la salida a un variable de este tipo. Pero esto ya lo realiza por nosotros la funcin In Port claro est debemos saber que los 8 bits ms significativos siempre estarn en 0 ya que el registro desde donde lemos es de 8 bits. Para desplazar 8 lugares hacia la izquierda el valor de BASE+1 debemos multiplicar por 256 (comprubelo con la calculadora de Windows!)

Ahora realizamos la operacin OR entre BASE + 1 y el resultado anterior:

Finalmente Eliminamos los 4 bits menos significativos dividiendo por 16:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

184

Departamento de Automtica y Computacin

18/11/2006

Ya tenemos el valor convertido.

Paso 4 para convertir a unidades de ingeniera debemos crear otro secuencia dentro de esta estructura y recibir el valor convertido desde la anterior a travs de la opcin Add Secuence Local El cdigo queda como sigue:

La conversin depende del rango escogido. Esto depende de la configuracin de Hardware a travs del JP7 y luego de los rangos configurados por software. Por ejemplo si se sabe que este rango es 10V sera Valor convertido = 0 implica -10V

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

185

Departamento de Automtica y Computacin

18/11/2006

Valor convertido = 4095 implica +10V Esto responde a una ecuacin lineal y=mx+n donde:

x: valor convertido (0-4095) y: valor en unidades de ingeniera (-10 a 10) o (-)

si y2 = 10, x2 = 4095, y1 = -10,x1 = 0 m = y2 y1 = 10 (-10) = 20 x2 x1 4095 (0) 4095

n = -10V. y = (20/4095) *x -10V. Es fcil comprobar que si el rango es 5V sera: y = (10/4095) *x -5V. Por lo qu si R es el rango: y = 2*R/4095*x R. La programacin de esto utilizando labview es sencilla si utilizamos el nodo frmula con dos entradas: X (conversin) y R (rango). Como salida tendremos Y.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

186

Departamento de Automtica y Computacin

18/11/2006

Para seleccionar los rangos de voltaje necesitamos que el usuario diga cual el la configuracin del JP7. Para ello colocamos un control booleano en el panel frontal:

Ahora utilizaremos su estado para conmutar entre los rangos: Para programar los rangos podemos utilizar una matriz de valores reales constantes. Por ejemplo:Este arreglo constante define los rangos posibles cuando se selecciona en el JP7 el valor 10 VEste arreglo constante define los rangos posibles cuando se selecciona en el JP7 el valor 5 V El arreglo constante se define en la paleta de funciones:0

0

10,00 5,00

2,50

1,25

5,000 2,500 1,250 0,625

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

187

Departamento de Automtica y Computacin

18/11/2006

esto coloca en el cdigo un elemento array sin tipo:0

Para definir el tipo se busca un valor constante del tipo que se quiere definir, en este caso una constante numrica y se coloca dentro del elemento array:

para convertirlo a real se da clic derecho sobre El arreglo ahora aparece del tipo entero el y se selecciona la opcin Representation y Single Precision

0

0

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

188

Departamento de Automtica y Computacin

18/11/2006

el arreglo queda El cdigo queda:

0

0,

Note que la estructura

sirve para seleccionar uno u otro arreglo constante en dependencia

del valor del control que representa el JP7. Luego se selecciona el Rango con la funcin que devuelve un elemento del arreglo tomando como parmetro un arreglo y el ndice. El control Rango e quien me define cual es el rango actual.

Finalmente debemos colocar un indicador para mostrar el valor en unidades de ingeniera para ello vamos al Panel Frontal y seleccionamos el control Meter

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

189

Departamento de Automtica y Computacin

18/11/2006

Cambiamos su escala para representa el rango mayor entre -10 y 10.

El cdigo queda:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

190

Departamento de Automtica y Computacin

18/11/2006

Estudio Individual: Se sabe que por el canal 3 de la TAD PCL-818L se obtiene la seal proveniente de un sensor de nivel. El sensor de nivel brinda una seal de 4-20 mA, 4 mA si el nivel est en 0 metros y 20 mA si el nivel es de 50 metros. Se conoce que la TAD PCL-818L solo posee entradas en forma de voltajes. Para realizar la conversin se cuenta con una resistencia de 470 ohms. Realice un programa que presente el nivel en un indicador tanque. El programa debe obtener datos de nivel en una frecuencia de 500 ms. Debe almacenar estos valores en un fichero. El usuario debe poder ver los resultados histricos almacenados en una grfica de tiempo contra valor de nivel obtenido. Ejercicio 3 Realice un programa que permita sacar un valor analgico de salida a travs de la TAD PCL818L. Solucin: Como toda aplicacin esta debe comenzar con la realizacin del cdigo necesario para ejecutar y terminar la aplicacin. Para ello debe colocar un botn booleano de salida y realizar el cdigo siguiente:

Para enviar un valor hacia la tarjeta TAD PCL-818L ser a travs de un botn. Este botn tendr accin mecnica de tipo: Latch When Pressed. Cuando este botn est en verdadero se ejecutar el cdigo que enviar la salida si no la aplicacin permanecer inactiva. Esto queda de la siguiente forma:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

191

Departamento de Automtica y Computacin

18/11/2006

Para escribir un valor de salida en la TAD se necesitan 3 pasos fundamentales: 1. Convertir de Unidades de Ingeniara a Unidades del conversor 2. Escribir en el registro BASE+4 3. Escribir en el registro BASE+5 Para ejecutar cada uno de estos pasos utilizaremos la estructura Secuence. El cdigo queda:

Paso 1 Para realizar este paso debemos tener en cuanta que para realizar una conversin D/A esta debe realizarse de acuerdo a una referencia. La TAD PCL-818L tiene dos formas para esto: Referencia Externa (valor entre -10 y 10 V)

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

192

Departamento de Automtica y Computacin

18/11/2006

Referencia Interna

Para escoger una de ellas se utiliza el interruptor JP4. Si se escogiera Referencia Interna entonces se tienen dos variantes: Referencia 0-5 V Referencia 0-10 V Para escoger una de ellas se utiliza el interruptor JP5.

Aqu siempre se utilizar una de las referencias internas. Tomemos R como la referencia escogida. Se sabe que el conversor D/A tiene una precisin de 12 bits. Cuando se escribe en la tarjeta un valor de 212=4095 la salida analgica ser de +R V. Cuando se escribe en la tarjeta un valor de 0 la salida analgica ser de 0 V. La frmula para realizar la conversin es contraria a la que ya conocemos:

x: valor en unidades de ingeniera (0 a R) y: valor a convertir (0-4095)

si x2 = R, y2 = 4095, x1 = 0,y1 = 0 m = y2 y1 = 4095 (0) = 4095 x2 x1 R (0) R n = 0. y = 4095/R*x. Para implementar est frmula utilizaremos nuevamente el nodo frmula que recibir el valor de X y R y devolver Y. El cdigo es el siguiente:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

193

Departamento de Automtica y Computacin

18/11/2006

Para obtener el valor de R utilizaremos un botn booleano que indique el estado el JP5. La interfaz queda de la siguiente forma:

El cdigo queda como sigue:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

194

Departamento de Automtica y Computacin

18/11/2006

El control que dar el valor deseado a sacar por la TAD ser el que se muestra a continuacin:

El cdigo ahora debe quedar:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

195

Departamento de Automtica y Computacin

18/11/2006

Sin embargo al cambiar la Referencia debe cambiar tambin la escala del control. Esto se puede hacer utilizando las propiedades Scale.Maximum y Scale.Minimum. Para este caso solo modificaremos la primera ya que la segunda no cambiar. Para obtener la propiedad de un control se realizan los pasos ya conocidos. Luego para obtener esta propiedad se busca:

El cdigo queda:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

196

Departamento de Automtica y Computacin

18/11/2006

El valor convertido debe pasarse al siguiente paso:

Paso 2. El valor convertido es de tipo Bouble DBL y debemos convertirlo en un entero de 16 bits sin signo ya que sabemos que la tarjeta es de 12 bits. Para ello se utiliza la funcin de conversin a U16 de la paleta de funciones numricas:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

197

Departamento de Automtica y Computacin

18/11/2006

El cdigo queda:

Ahora los doce bits deben quedar distribuidos de la siguiente forma:BASE + 4 (MODO ESCRITURA) Bit Value D7 DA3 D6 DA2 D5 DA1 D4 DA0 D3 X D2 X D1 X D0 X

BASE + 5 (MODO ESCRITURA) Bit Value D7 DA11 D6 DA10 D5 DA9 D4 DA8 D3 DA7 D2 DA6 D1 DA5 D0 DA4

El valor que nosotros tenemos de 16 bits tiene el formato siguiente Valor 16 bits: 0000 AAAA AAAA AAAA (A valor binario 0-1) La primera operacin que se debe realizar es introducir 4 ceros de derecha a izquierda (multiplicar por 16). Luego se tiene: Valor 16 bits: AAAA AAAA AAAA 0000 Vase que los 8 bits menos significativos corresponden al valor que se debe escribir en BASE+4 mientras que los 8 bits ms significativos corresponden al valor a escribir en BASE+5.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

198

Departamento de Automtica y Computacin

18/11/2006

La operacin a realizar es la divisin con resto entre 256. El resultado ser el valor colocado en BASE+5 y el resto el valor colocado en BASE+4.

Para hallar el cociente y el resto se utilizar la funcin numrica funciones numricas:

que e halla en la paleta de

Es necesario realizar la escritura en BASE+4 y BASE+5 en dos pasos bien definidos ya que al efectuar la segunda escritura la TAD PCL 818L automticamente realiza la conversin D/A y enva la salida. El prximo paso es muy sencillo:

Estudio individual: Realice un programa en LabVIEW que lea y escriba las entradas y salidas digitales de la TAD 818L.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

199

Departamento de Automtica y Computacin

18/11/2006

TEMA X Trabajo con puerto serie en LABVIEW Saber configurar el puerto serie. Saber realizar lecturas del puerto serie utilizando LabVIEW. Saber realizar escrituras del puerto serie utilizando LabVIEW.

Ejercicio 1 Hacer un programa que permita, una vez configurado el puerto serie, enviar diez muestras de datos aleatorios que simulen lecturas de nivel en un tanque. El nivel vara entre 0 y 10 m. Arquitectura VISA. VISA: Virtual Instrument Software Architecture. Aprobado para lograr estandarizar la manera de obtener y pedir datos desde y hacia instrumentos de medicin (VXIplug&play Systems Alliance). Entre esta estandarizacin se incluyen los dispositivos de comunicacin serie y paralelo. NI-VISA: Es la solucin de National Instruments para VISA. Solucin: Como toda aplicacin esta debe comenzar con la realizacin del cdigo necesario para ejecutar y terminar la aplicacin. Para ello debe colocar un botn booleano de salida y realizar el cdigo siguiente:

Es importante revisar cuales son lo parmetros de configuracin del puerto serie: 4. 5. 6. 7. 8. Establecer la velocidad de Tx y Rx (Baud rate). Establecer la cantidad de bits de datos del protocolo de intercambio serie. Establecer la cantidad de bits de parada del protocolo de intercambio serie. Establecer la paridad del protocolo de intercambio serie. Establecer el nmero del puerto a travs del cual se realizar el intercambio serie. 9. Establecer tamao del buffer que almacenar los datos recibidos y/o transmitidos.

La ejecucin de esta aplicacin tiene como primer paso la configuracin del puerto serie. Por lo tanto se utilizar una estructura secuencia donde antes de entrar al ciclo principal se hace la configuracin.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

200

Departamento de Automtica y Computacin

18/11/2006

Ahora debemos agregar una secuencia pero que se ejecute antes de que se entre en el ciclo principal de la aplicacin, para ello se da clic derecho sobre la estrucura secuence y se selecciona la opcin Add Frame Before. El cdigo es:

Como es de esperar es una secuencia vaca. Antes de programar la configuracin debemos introducir los controles necesarios. Para configurar el puerto a travs del cual se recibirn y/o introducirn los datos es necesario utilizar un control de recursos denominado VISA Resource Name controles. en la paleta de

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

201

Departamento de Automtica y Computacin

18/11/2006

Para los bits de parada utilizaremos un control Enum con los siguientes tems: 1. 1 bits 2. 1,5 bits 3. 2 bits

Para Paridad utilizaremos un control Enum con los siguientes tems: 1. None 2. Odd 3. Even 4. Mark 5. Space Para Velocidad utilizaremos un control Numeric del tipo U16 Para Bits de datos utilizaremos un control Numeric del tipo U8 El panel Frontal queda diseado de la siguiente manera:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

202

Departamento de Automtica y Computacin

18/11/2006

Para configurar el puerto se utiliza la funcin de VISA diseada para ello que se encuentra en la paleta de funciones bajo el nombre:VISA Configure Serial Port Como se muestra a continuacin: -> -> .

Despus de conectada esta funcin El cdigo es:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

203

Departamento de Automtica y Computacin

18/11/2006

Ya tenemos configurado el puerto serie por lo que estamos listos para enviar datos a travs del mismo. Segn los requerimientos de la aplicacin colocaremos un indicador de nivel que visualizar las mediciones aleatorias y un control booleano mediante el cual se generarn los datos y se enviarn al puerto serie. Adems, colocaremos un indicador de tipo arreglo que contendr las diez muestras generadas, de manera que podamos ver cuales han sido los datos enviados. La interfaz quedar de la siguiente manera:

La accin mecnica del botn Enviar Datos debe ser Latch When Pressed, ya que al pulsar este botn solo debe ejecutarse el cdigo asociado una sola vez. Generar diez nmeros aleatorios es un cdigo conocido:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

204

Departamento de Automtica y Computacin

18/11/2006

Observaciones: Solo cuando se ejecute el botn enviar datos ejecutar el lazo generando 10 valores aleatorios. Cada valor aleatorio se visualizar en el indicador tank (si desea verlo debe introducir una demora en tiempo)!Hgalo Al finalizar el ciclo obtendremos un arreglo de diez valores entre 0 y 10 El ciclo se repetir al presionar el botn una sola vez debido a su accin mecnica.

Solo nos resta enviar estos valores a travs del puerto serie. Para ello es necesario obtener la funcin indicada para ello -> -> :

Esta funcin es muy sencilla toda vez que debemos pasarle el recurso abierto (previamente configurado) y la cadena de caracteres que se quiere escribir en el puerto serie. Para ello creamos una variable local a partir del control VISA Resource Name la conectamos al parmetro correspondiente:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

205

Departamento de Automtica y Computacin

18/11/2006

Los datos que se enviarn deben estar en formato de cadena de caracteres, sin embargo, hasta este momento tenemos un tipo de dato arreglo. Por esta razn debemos realizar una conversin de tipos, para ello utilizaremos la funcin Array To Spreadsheet String:

Esta funcin convierte una arreglo de valores reales en una cadena cuyo contenido sern los nmeros que pertenecen al arreglo separados por el tabulador Tab y con un formato de %.2 que indica una precisin de dos valores despus de la coma. El cdigo final de la aplicacin queda segn se muestra a continuacin:

Antes de finalizar debemos cerrar el recurso abierto. Para ello creamos otra variable local del recurso y creamos otra secuencia despus del ciclo principal y utilizamos la funcin VISA Close

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

206

Departamento de Automtica y Computacin

18/11/2006

El cdigo que se debe programar en esta ltima secuencia es muy simple:

Ejercicio 2 Realice un programa que permita leer los valores enviados al puerto serie de la computadora utilizando el ejemplo anterior. El programa debe graficar los valores obtenidos. Solucin: Para dar solucin a este ejercicio es necesario, de la misma manera que pas en el ejercicio anterior, configurar el puerto serie. Es por ello que ahora partiremos de un cdigo que ya se ha discutido:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

207

Departamento de Automtica y Computacin

18/11/2006

Para leer la informacin que se recibe a travs del puerto serie es necesario hacerlo siguiendo dos pasos: 1. Encuestar la cantidad de bytes recibidos utilizando la funcin VISA Bytes at serial port 2. Leer los bytes que se tienen utilizando la funcin VISA Read Sabemos que enviaremos 10 nmeros menores que 10 en formato %.2f esto significa que recibiremos:

1*10 caracteres = 10 caracteres antes de la coma 2*10 caracteres = 20 caracteres despus de la coma 1*10 caracteres = 10 caracteres coma en cada nmero 1*10 caracteres = 10 caracteres separadores 1 carcter fin de lnea. Total = 51 caracteres. Es por esto que nuestro programa puede esperar a que estn los 51 bytes para luego efectuar una lectura completa. Para ello debemos encuestar mediante la funcin ya mencionada que se obtiene:

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

208

Departamento de Automtica y Computacin

18/11/2006

Cuidado! El icono mostrado en la paleta de funciones G . no es igual al icono mostrado en el cdigo

Ahora debemos encuestar la cantidad de bytes hasta que su nmero sea 51:

Observaciones: Al igual que el ejemplo anterior debemos crear una variable local que corresponde al recurso configurado previamente. La funcin VISA Bytes at serial port devuelve la cantidad de bytes que llegan al puerto El ciclo no culminar hasta tanto no lleguen 51 bytes.

Dr.Valery Moreno Vega y Msc.Adel Fernndez Prieto.

209

Departamento de Automtica y Computacin

18/11/2006

Una vez que se sale del ciclo es debido que existen 51 bytes y se ha recibido la totalidad de la informacin. Es por ello que se puede leer la informacin. Para ello se usa la funcin VISA Read

Esta funcin recibe como parmetros el recurso desde el cual se leer y la cantidad de bytes que se leern. Devuelve la cadena de caracteres ledos desde el puerto serie.

Observaciones: Fjese que en este caso se est sacando fuera del ciclo while un valor simple (el ltimo generado), y no el arreglo de valores generados.

Ahora solo resta convertir la cadena de caracteres en un arreglo de valores que sea capa