Programación en lab view basica en español

11,661 views
11,393 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
11,661
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
657
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Programación en lab view basica en español

  1. 1. Instituto gfghf Instituto Superior Politécnico CUJAE Automática y Computación "José Antonio Echeverría", CUJAE, Marianao, Ciudad Habana, Apdo. Postal 19390, 260 6778 , 260-2055 / FAX: 267 29 64PROGRAMACIÓN EN LABVIEW. PROGRAMACIÓN EN LENGUAJE “G”. TIPOS DE DATOSSIMPLES Y COMPLEJOS. ESTRUCTURAS DE CONTROL DE FLUJO. TRABAJO CONFICHEROS, TRABAJO CON TARJETAS DE ADQUISICIÓN DE DATOS, PUERTO SERIE YPARALELO, TCP-IP Y DDE.Monografía elaborada por Dr. Valery Moreno Vega y Msc. Adel Fernández Prieto para el cursode Instrumentación Virtual dictado dentro de la asignatura Automática III en la carrera deAutomática de la Facultad de Ingeniería Eléctrica del ISPJAE.Direcciones de Contacto:Email:valery@electrica.cujae.edu.cu y adel@electrica.cujae.edu.cuTeléfonos: 2663342, 2602055.1ra Versión Revisada en Abril 2005.
  2. 2. Departamento de Automática y Computación 18/11/2006IndicesÍndice 1Introducción 2Tema I Conceptos básicos 4Tema II LabVIEW básico 9Tema III Tipos de datos simples 29Tema IV Control de flujo de programa en LabVIEW. Estructuras repetitivas. 55Tema V Más estructuras de control de flujo. 79Tema VI Tipos de datos complejos. arreglos y clusters 95Tema VII Controles forma de onda. implementación de funciones en LabVIEW 117Tema VIII Trabajo con ficheros 142Tema IX. Tarjetas de adquisición de datos (PCL-818L). 161Tema X Trabajo con puerto serie en LabVIEW 200Tema XI Trabajo con puerto paralelo en LabVIEW 213Tema XII Comunicación TCP-IP en LabVIEW 221Tema XIII Comunicación DDE 235Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 1
  3. 3. Departamento de Automática y Computación 18/11/2006Introducción:En esta monografía el lector encontrará una introducción a algunos temas relacionados con lainstrumentación virtual y específicamente sobre la herramienta de programación LabVIEW.Los temas abordados comprenden: 1. LabVIEW básico 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. Confección de funciones (subVI). h. Trabajo con ficheros. 2. LabVIEW avanzado a. Trabajo con tarjetas de adquisición de datos. b. Trabajo con puerto serie y paralelo. c. Trabajo con TCP-IP. d. Trabajo con DDE.El primer tema es necesario como introducción a cualquier lenguaje de programación, y en elmismo se abordan los conceptos en que se basa la programación gráfica.Es de destacar que en la programación gráfica todo esta muy ligado a la iconografía con quese representan los diferentes elementos. Un lector que esté acostumbrado a los lenguajes porcomandos, llega a identificarse con las palabras claves que forman determinado lenguaje, porejemplo: un for, int, switch en C++, sin embargo, con LabVIEW este concepto cambia, paraahora asociar una forma o icono en vez de un conjunto de caracteres con las palabras claves.LabVIEW es un lenguaje de programación construido sobre la base de objetos, sin embargo noes 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 través de unametodología de programación estructurada, utilizando como recurso la implementación defunciones, que en este caso se denominan “SubVI”.El presente trabajo comienza con una breve explicación de los conceptos básicos relacionadoscon esta herramienta de trabajo, para luego exponer la totalidad de los temas medianteejercicios 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 labiblioteca de funciones básica y especializada, a través de ejemplos. También a lo largo deestos temas se proponen ejercicios como estudio independiente.El segundo tema que aquí hemos denominado como LabVIEW avanzado, no incluye ni muchomenos todos los temas que por este nombre pudieran estar. Simplemente nos a parecido quese salen del modulo básico de esta herramienta. Es de destacar que el trabajo con las tarjetasde adquisición de datos se realiza basado en la PCL-818L, esta es solo una, de muchísimasvariantes que existen actualmente en el mercado, sin embargo, el estudio detallado que sehace de la misma, y la metodología de diseño de su controlador, nos parece un punto departida práctico que puede ser utilizado por los interesados para generalizarlo a tarjetas deotros fabricantes.Quedan fuera temas tan interesantes como el estudio de las funciones de análisis matemático,el uso de filtros para señales de entrada. Además, el estudio de los DataSockets que se basanen el protocolo TCP-IP. También el trabajo con OLE/Active X y la conexión con Bases de Datosprofesionales.Sin embargo, ya el volumen de esta edición es suficiente mente largo. Es de destacar que suestructura esta completa, siguiendo una secuencia donde lo aprendido sirve de base a lo quese aprende y donde ningún concepto queda fuera de lo que se ha abordado anteriormente.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 2
  4. 4. Departamento de Automática y Computación 18/11/2006Esta edición un poco abre una primera puerta a la escasez de bibliografía que existe alrededordel Lenguaje de programación LabVIEW. Sabemos que estos lenguajes son susceptibles deactualizaciones, pero también el hecho de que los temas abordados son los suficientementebásicos, incluyendo aquellos que se denominaron como avanzados, nos da suficiente paz,como para pensar que este volumen se pueda utilizar por algunos años, no diez o veinte, perosi hasta tres años.Esperamos disfrute y encuentre útil esta monografía. Es ese el deseo de los autores. Los autores.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 3
  5. 5. Departamento de Automática y Computación 18/11/2006TEMA I Conceptos BásicosPrimeramente antes de entrar en que es el LabView vamos a conocer nuevos conceptosacerca de la Instrumentación Virtual. Semánticamente virtual es algo aparente, que no es realpero que se comporta como tal. En la actualidad se manejan términos como los deinstrumentación virtual, laboratorio virtual, ambientes virtuales, y realidad virtual. No se debeconfundir laboratorio virtual con instrumento virtual aunque existe una estrecha relación. Sehabla de laboratorio virtual cuando se simula un proceso o sistema que se parece y secomporta como un proceso o sistema real, para poder observar su comportamiento. Se hablade instrumento virtual cuando se emplea la computadora para realizar funciones de uninstrumento clásico pudiendo agregarle al instrumento otras funciones a voluntad. A pesar deesta pequeña diferencia, un laboratorio con instrumentos virtuales es un laboratorio virtual.En el campo de la instrumentación quien introdujo por primera vez el termino virtual fue lacompañía National Instrument en 1986, al elaborar un programa que de manera simple ygráfica permitiera simular un instrumento en una PC, con lo cual dio origen al concepto deinstrumento virtual; definido como “un instrumento que no es real, corre en una computadora ytiene funciones definidas por programación”. El instrumento tradicional ya está definido, concapacidades de entrada/salida de señales y una interfaz de usuario fija. El fabricante define lafuncionalidad del instrumento, el usuario no puede cambiarla. Dada la arquitectura abierta delos PCs y las estaciones de trabajo, la funcionalidad de los instrumentos virtuales esta definidapor el usuario. Además, la capacidad de procesamiento de los instrumentos virtuales essuperior a la de instrumentos estándares, debido a la rápida evolución de la tecnología de losPCs y de las estaciones de trabajo como resultado de las grandes inversiones que se efectúanen la industria.En 1986 National Instruments introdujo LabView 1.0 con el propósito de proveer unaherramienta de software que permitiera a los ingenieros desarrollar sistemas a la medida desus necesidades, del mismo modo que la hoja de cálculo permitía a los hombres de negociosanalizar datos financieros. Este nombre LabView viene de las siglas en ingles LaboratoryVirtual Instrument Engineering Workbench.La versión del LabView 6.1 y los requerimientos mínimos 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, talescomo el C, el Basic, el Pascal. Herramientas de Desarrollo de Software Ambiente de + Lenguaje de desarrollo Programación Figura1: Esquema generalDr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 4
  6. 6. Departamento de Automática y Computación 18/11/2006Ambiente de DesarrolloTodo ambiente de desarrollo testa formado por los siguientes elementos. Es importante que sebusque y se practiquen con frecuencia ya que esto permite que el desarrollo de lasaplicaciones se realice con mayor rapidez y calidad.Depuración • Puntos de ruptura. • Ejecución paso a paso. • Ventana de seguimiento a variablesFacilidades 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 Programación.LabVIEW usa el lenguaje de programación gráfico Lenguaje G. Las posibilidades sonnormalmente las mismas que presenta cualquier lenguaje de programación: Sentencias (Gráficos) de control de Flujo y repetitivas. Posibilidad de declaración de variables. Modularidad a través de la confección de funciones. Trabajo con los eventos y propiedades de los controles y variables. Incluye bibliotecas de funciones extendidas para cualquier tarea de programación. Basado en objetos pero no permite nuevas declaraciones. Mecanismos de conexión con lenguaje C y C++ y DLL.Algo muy característico de LabVIEW y es por ello que se considera una herramienta para eldesarrollo de instrumentos virtuales, es su extensa biblioteca de funciones especializada en laadquisición, acceso a buses de campo, procesamiento matemático y procesamiento de señales Tarjetas de adquisición de datos Bus GPIB. Entrada/ Salida (Puerto serie y paralelo). Arquitectura VISA. Análisis de señales. Almacenamiento de datos. Comunicación (TCP-IP, UDP y otros). Matemáticas.¿Cómo se trabaja con el LabVIEW?Los programas en LabVIEW son llamados Instrumentos Virtuales (y son salvados con laextensión .VI).Los programas de LabVIEW constan de un panel frontal y un diagrama de bloques. En el panelfrontal se diseña la interfaz con el usuario, viene a ser la cara del VI y en el diagrama debloques se programa en lenguaje G el funcionamiento del VI.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 5
  7. 7. Departamento de Automática y Computación 18/11/2006 Programas de LabView (*.vi) Panel Frontal + Diagrama Bloques • Diseño de interfaz • Lenguaje G • Cara del • Lógica del programa instrumento virtualEl Panel FrontalEl panel frontal de un VI es una combinación de controles e indicadores. Los controles sonaquellos elementos que entregan datos al diagrama en bloques desde el panel frontal porentrada desde teclado o con el mouse, simulan los dispositivos de entrada de datos del VI ypasan los datos al diagrama en bloque del VI. Los indicadores son aquellos elementos queentregan datos al panel frontal desde el diagrama en bloques para ser visualizados en eldisplay, simulan los dispositivos de salida de datos del VI que toman los datos desde eldiagrama en bloque del VI.Para adicionar controles o indicadores al panel frontal se seleccionan estos de la paleta decontroles que se encuentra en una ventana flotante y a la cual se accede a través de accionarel botón derecho del ratón sobre el panel frontal. A los controles e indicadores se les puedecambiar el tamaño, la forma, y la posición, además cada control o indicador tiene un pop-upmenú en el cual se pueden cambiar varios atributos o seleccionar diferentes opciones.Los controles: Entregan datos al diagrama en bloques por mediación del teclado o el ratón, Simulan dispositivos de entrada de datos del VILos 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 BloquesDr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 6
  8. 8. Departamento de Automática y Computación 18/11/2006 La ventana Diagrama almacena el diagrama en bloques del VI, el código fuente gráfico (Lenguaje G) del Instrumento Virtual. Se construye este diagrama con bloques funcionales denominados nodos, conectándose o uniéndose entre sí según sea el objetivo. Estos nodos realizan todas las funciones específicas necesarias para el VI y controlan el flujo de la ejecución del VI.Tipos de Datos en LabView Tabla 3.1 Tipos de Datos en LabViewLong I32 32 (4 bytes) -2147483648 hasta 2147483647Word I16 16 (2 bytes) -32768 hasta 32767Byte I8 8 (1 bytes) -128 hasta 127Long Unsigned U32 32 (4 bytes) 0 hasta 4294967295Word Unsigned U16 16 (2 bytes) 0 hasta 65535Byte Unsigned U8 8 (1 bytes) 0 hasta 255Extended EXT 96 (12 bytes) -1.00E–507 hasta 9.00E+515Double DBL 64 (8 bytes) -5.00E-324 hasta 1.70E+308Single SGL 32 (4 bytes) -1.40E-45 hasta 3.40E+38Complex Extended CXT 192 (24 bytes) -1.00E–507 hasta 9.00E+515Complex Double CDB 128 (16 bytes) -5.00E-324 hasta 1.70E+308Complex Single CSG 64 (8 bytes) -1.40E-45 hasta 3.40E+38Cadena(String) abc 1 byte/caracter Conjunto de Caracteres ascii.Arreglos(Array) [...] Según el tipo de los elementos del arregloGrupos (Cluster)PathDevice¿Cómo se declaran los tipos de variables numéricas ? • 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. Configuración RepresentaciónDr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 7
  9. 9. Departamento de Automática y Computación 18/11/2006Variables localesLas variables locales permiten hacer lecturas y escrituras sobre el control o indicador al cualestá asociado. // esto es C int a = 0 ; //declaración a = x +y *z; // escritura m = a* c; // lecturaDr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 8
  10. 10. Departamento de Automática y Computación 18/11/2006TEMA II LabVIEW Básico • 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 principales indicadores y botones y las acciones más comunes de los mismos. • Conocer las teclas de acceso directo y las principales opciones de la ayuda y de la ejecución del programa.Ejercicio 1:Elabore un programa en LabView que permita conectar a un termómetro y un tanque doscontroles de sintonía de manera tal que cuando varíen su valor el nuevo adquirido se refleje enlos indicadores tipo termómetro y en el tipo tanque.Solución:Cuando se ejecuta LabView por primera vez aparece una pantalla similar a la siguiente:En esa pantalla podemos seleccionar varias opciones entre las cuales están el abrir un nuevoIntrumento Virtual (New VI), abrir uno ya existente, buscar ejemplos, demos, tutoriales, etc.Para crear un nuevo programa (VI) damos clic en el botón . Acontinuación aparece una ventana simular a la que se presenta a continuación:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 9
  11. 11. Departamento de Automática y Computación 18/11/2006La primera pantalla que aparece es el panel frontal o ventana de diseño de la aplicaciónmientras que la que aparece en segundo plano es la ventana de flujo de programa o dediagrama. Recuerde que puede conmutar entre uno y otro. Compruébelo con la combinaciónCtrl+E. Muchas veces es conveniente organizar las dos ventanas de forma tal que se dividan lapantalla cada una en una mitad. Esto facilita el desarrollo del programa. Para lograr dichadistribución LabView dispone de la combinación Ctrl+T (también se puede realizar mediante laopción del menú Windows/Tile Left and Right). Una vez que se realiza esta acción se obtiene lasiguiente distribución:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 10
  12. 12. Departamento de Automática y Computación 18/11/2006Ya estamos listo para comenzar a darle solución al ejercicio.Primero seleccionemos los controles que podremos. Para ello seleccionamos mediante un clicla ventana izquierda (panel frontal) y a continuación damos clic derecho. Debe aparecer unmenú emergente llamado controls. Seleccionamos en controls la primera de las opciones,que se llama numerics y se representa en el menú controls con el símbolo . Apareceráalgo similar a:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 11
  13. 13. Departamento de Automática y Computación 18/11/2006Observe que en ambas ventanas, la de Controls y la Numeric, en el caption de las mismasaparece el nombre de la ventana precedido de una especie de tachuela, o sea, . Estesímbolo aparece aquí porque si queremos dejar la ventana fija (para evitar que cada vez quese quiera poner un nuevo control tengamos que dar clic derecho y buscar la opción que nosinteresa) podemos hacerlo cambiando el ¨estado¨ de la tachuela dando clic encima de ella.Como en esta aplicación vamos a ubicar más de un control y algunos indicadores, dejemos fijala ventana de Numeric. Si se procede a ubicar el puntero del mouse en la tachuela queaparece justo antes de numeric en el caption de la ventana del mismo nombre se observa quedicha tachuela cambia de posición o forma:y si en ese momento damos clic obtenemos:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 12
  14. 14. Departamento de Automática y Computación 18/11/2006Los controles tipo sintonía son los que se identifican por knob y dial. Son los primeros queaparecen en la tercera fila de la pantalla anterior. Para incorporarlos a nuestro panel frontalsimplemente los seleccionamos (el tipo de cursor debe ser el de selección que se comentó enconferencia) que es el que por defecto debemos tener en estos momentos. Si no es ese el quetenemos podemos cambiarlo visualizando la ventana de herramientas (opción windows/ShowTools Palette) y seleccionando el mencionado tipo de cursor. El procedimiento se muestra enlas dos ventanas siguientes (el cursor seleccionado aparece “hundido” en comparación con elresto:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 13
  15. 15. Departamento de Automática y Computación 18/11/2006Continuando con la idea original de insertar los controles en el panel frontal, seleccionamos losde tipo sintonía (1ero y segundo de la tercera fila) en la paleta o ventana numeric mostrada enlas figuras precedentes. La selección se realiza dando clic encima del de interés y colocándoloen el panel frontal (de la forma usual con que se hace esto en lenguajes visuales como el C++Builder).Después de realizada la operación las pantallas deben tener una apariencia como sigue (semuestra el segmento de interés de las ventanas):Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 14
  16. 16. Departamento de Automática y Computación 18/11/2006 y:Note que a medida que se introducen los controles en el panel frontal en la pantalla dediagrama (figura anterior) van apareciendo variables asociadas a los controles. Dichasvariables se identifican con un nombre (el mismo del control, de manera que si se cambia en elcontrol se cambia en la pantalla de diagrama). En dependencia del tipo de elemento numéricoque se seleccione las variables declaradas serán de escritura (fijan valores) o de lectura(reciben valores). En este caso los controles del panel frontal tienen variables de escritura. EsDr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 15
  17. 17. Departamento de Automática y Computación 18/11/2006fácil identificar cuando una variable es de lectura o escritura pues LabView nos lo indica conuna especie de saeta, que indica la dirección del flujo de los datos. En el ejemplo anteriorambas variables están representadas con los símbolos . Note que en dicho símboloaparece la saeta indicando salida, o sea, escritura.En el símbolo anterior también se puede leer la cadena DBL que nos dice de que tipo de datoses esa variable. Cuando se estudien los tipos de datos simples veremos que este tipo (que pordefecto tienen los controles) es el tipo Double. Los tipos de datos que se definen por defectopueden cambiarse. Para ello seleccionamos la variable en la pantalla de diagrama y damos clicderecho. En el menú emergente que aparece buscamos la opción Representation:Note que hay varios tipos de datos. El que actualmente está seleccionado aparece encerradoen un recuadro azul como en la figura anterior. Si se quiere seleccionar otro basta conseleccionarlo 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 casohay varios tipos de datos que aparecen en gris (los últimos), indicándonos que no se admitenesos tipos para el actual elemento o control.Hagamos un cambio, y del tipo DBL por defecto que tiene llevémoslo a U8 que es un tipo dedato entero corto sin signo (8 bits, de 0 a 255 como posibles valores). Para ello seleccionamosen el menú de representation el elemento identificado como U8. Los cambios se manifiestanen la pantalla de diagrama cambiando el color de la variable para indicar el otro tipo (cada tipotiene un color). Debemos obtener:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 16
  18. 18. Departamento de Automática y Computación 18/11/2006Note que en el panel frontal la escala del control también cambió para adaptarse al nuevo tipode 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 suescala se puede modificar, así como algunas de sus propiedades. En las figuras que aparecena continuación se ponen algunos ejemplos:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 17
  19. 19. Departamento de Automática y Computación 18/11/2006Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 18
  20. 20. Departamento de Automática y Computación 18/11/2006Otras opciones incluyen escalas logarítmicas (Mapping), espaciado arbitrario o uniforme, etc.El control también se puede redimensionar, o sea, el tamaño y posición inicial que aparece enel panel frontal son atributos que se pueden modificar en tiempo de diseño. Cada control loindica de una manera fácil de identificar, usualmente mediante un rectángulo que encierra alcontrol o parte de este durante el movimiento del mouse sobre el elemento. A continuación semuestra un ejemplo: Note que se han señalado cuatro esquinas. Moviendo el puntero del mouse para cualquiera de esas esquinas se puede modificar el radio de la circunferencia que representa el botón de sintonía. El resto de los elementos del control, excepto la etiqueta (en este caso Dial), se redimensionan al redimensionarse la circunferencia.A continuación se representa al mismo elemento redimensionado.Hasta este punto se han situado en la pantalla los elementos gráficos que harán la función de“controles”. Ahora corresponde seleccionar los indicadores que mostrarán su valor de acuerdoDr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 19
  21. 21. Departamento de Automática y Computación 18/11/2006a los controles. Estos indicadores están situados en la misma paleta, o sea en la paleta decontroles numéricos. En este caso utilizaremos el indicador “Tank” y el “thermometer”, que seseleccionan de la siguiente manera:Para luego obtener el siguiente diseño:Para terminar y como se ha mencionado en los talleres, debemos colocar un botón que permitaa los usuarios terminara la aplicación. Para ello debemos seleccionar este control de la paletade funciones numéricas. Esto se realiza de la siguiente forma:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 20
  22. 22. Departamento de Automática y Computación 18/11/2006El diseño final del “Panel Frontal” queda:Ahora corresponde trabajar en la ventana del diagrama en bloques. Para ello podemos utilizarlas teclas de acceso rápido (Ctrl+E). En esta ventana debemos utilizar el lenguaje deprogramación G para establecer la lógica de nuestra aplicación. Antes de comenzar tenemoslas cinco variables que corresponden a los cinco controles que hemos colocado en la pantalla.El código luce de la siguiente forma:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 21
  23. 23. Departamento de Automática y Computación 18/11/2006El primer código G que debemos programar es el necesario para comenzar y terminar laaplicació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 debeejecutar nuestro programa. En caso contrario debe terminar la aplicación. Esta situación semodela en programación a través de un “ciclo while”.Para incorporar un “ciclo while” a nuestra aplicación se selecciona en la paleta de funciones elboton: y luego se busca la opción “while loop”.Una vez que se seleccione, debe irse a la pantalla del diagrama. Ahora el cursor de laaplicación cambia para indicarle que usted debe seleccionar el área que ocupará el ciclo, estose realiza arrastrando el ratón de manera que seleccione el área necesaria, como ilustra lasiguiente pantalla.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 22
  24. 24. Departamento de Automática y Computación 18/11/2006Al finalizar se obtiene la siguiente estructura de programa G:Para finalizar el programa solo nos resta realizar las asignaciones correspondientes. Es fácildarse cuenta de que las variables que corresponden a los controles deben ser asignadas a lasvariables que representan a los indicadores. Para ello debemos utilizar el cursor que sepuede obtener utilizando la tecla (Tab) o seleccionándolo directamente en la paleta deherramientas “tools Palette”. Una vez conectados el código queda como sigue:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 23
  25. 25. Departamento de Automática y Computación 18/11/2006Note que el flujo de los datos va desde el control hacia el indicador y note también que larepresentación gráfica de ambas variables pese a ser del mismo tipo de datos no es igual: Elborde es más grueso en los controles que en los indicadores, así como la flecha es de salidaen los primeros y de entrada en los segundos.Finalmente debemos conectar el control booleano a la condición de salida del ciclo do..While . Para ello debemos utilizar un “negador” ya que el botón por defecto está en falso. Para ellose utilizan los operadores boolenos que se encuentran en la paleta de funciones según semuestra debajo:Al conectarlos queda de la siguiente forma:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 24
  26. 26. Departamento de Automática y Computación 18/11/2006Con ello queda resuelto el problema planteado. Sin embargo ahora debemos correr laaplicación, para ello se debe utilizar la barra de botones colocada en la ventana del diagrama:El botón permite ejecutar la aplicación, mientras qué el botón permite terminar deejecutar la aplicación.Para realizar una pausa debemos utilizar el botón , luego podemos utilizar los botones para ejecutar paso a paso la aplicación. El primero ejecuta instrucción porinstrucción, entrando en las funciones si las hubiera, mientras que el segundo si encontrarauna función, la ejecuta como si fuera un solo paso. El tercer tipo de botón termina la ejecuciónpaso a paso.Un botón muy interesante es que ejecuta la aplicación de manera continua perointroduciendo una demora entre instrucción e instrucción para que pueda depurarse laaplicación. Además se puede observar los valores asignados a las variables y funciones asícomo los valores devueltos por estas.Si quisiéramos utilizar una ventana de depuración se debe situar el ratón en una de lasconexiones o asignaciones relacionadas con la variable que se debe depurar y dar clicderecho: A continuación seleccionar la opción “Probe” como se muestra a continuación:Luego se ve el valor de la variable en una ventana contextual como la siguiente:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 25
  27. 27. Departamento de Automática y Computación 18/11/2006Si en el paso anterior a este hubiéramos seleccionado la opción “Set Breakpoint” entonces elcódigo se ve de la siguiente forma:Y la aplicación se ejecutará hasta este punto, interrumpiéndose antes de realizar la asignación.El segundo ejercicio que se propone para este laboratorio permitirá conocer losdiferentes tipos de botones que existen en el Labview. Una vez realizado el mismo sedeberá conocer cuando utilizar uno u otro en dependencia de la aplicación.Como toda aplicación esta debe comenzar con la realización del código necesario paraejecutar y terminar la aplicación. Para ello debe colocar un botón booleano de salida y realizarel código siguiente:Ahora completamos la interfaz de la aplicación (Panel de Control) con los seis tipos de botonesque se pueden colocar en LabView, además colocaremos seis “leds” que nos indicarán lamanera en que funcionan estos tipos de botones. La interfaz debe quedar de la siguientemanera:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 26
  28. 28. Departamento de Automática y Computación 18/11/2006Luego usted debe programar la opción “Mechanical Action” de los tipos de controles voléanos,según se indica en el texto. Para ello debe dar clic derecho sobre el botón de la siguientemanera:Luego en la ventana del código se asigna a cada botón un “led” que estará encendido solocuando el valor del botón es verdadero. Esto queda así:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 27
  29. 29. Departamento de Automática y Computación 18/11/2006El funcionamiento de los tres primeros botones es muy parecido. En el primer caso el led seencenderá si se presione el botón, y permanecerá en ese estado hasta que se vuelva apresionar el botón. El segundo caso es idéntico pero en este caso cambiará cuando se deje depresionar el botón. En el tercer caso se encenderá el led mientras se tenga presionado elbotón.Los siguientes tipos de botones tienen relación con el tiempo que demora el Labview en leer elcambio de estado de los botones. En el cuarto caso, inmediatamente después que se presioneel ratón sobre el botón este cambiará de estado y permanecerá en él hasta tanto el Labviewpueda leer el cambio de estado. Luego se retornará al estado anterior. La quinta variante esmuy parecida pero en este caso el botón no cambiará de estado hasta que se deje depresionar el ratón.La sexta variante funciona de manera que el botón cambia de estado con solo presionar elbotón y permanece encendido todo el tiempo en que se tiene presionado el ratón sobre lebotón. Una vez que se suelte el ratón, el botón permanecerá en este estado hasta tanto ellabview sea capaz de notarlo, luego se retornará al estado anterior.Para poder entender bien el funcionamiento de los diferentes tipos de botones, sobre todo lostres últimos, es necesario que ejecute la aplicación utlizando la herramienta de depuraciónque hace que el Labview lea con mayor lentitud los controles. Esto hace que se puedaobservar claramente cuando es que se produce la lectura del estado de los botones por ellabview.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 28
  30. 30. Departamento de Automática y Computación 18/11/2006TEMA III Tipos de Datos simples • 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 elementográfico de Labview. El valor del nivel varía entre 0 y 100 unidades y debe obtenerse a través deuna función aleatoria. El programa debe indicar un estado de alarma cuando el nivel sobrepaseun valor de referencia que los usuarios deben establecer. El estado de alarma se indicará pormedio del color del elemento gráfico seleccionado: Azul: estado normal, Rojo: estado dealarma.Solución:Cuando se ejecuta LabView por primera vez aparece una pantalla similar a la siguiente:En esa pantalla podemos seleccionar varias opciones entre las cuales están el abrir un nuevoIntrumento Virtual (New VI), abrir uno ya existente, buscar ejemplos, demos, tutoriales, etc.Para crear un nuevo programa (VI) damos clic en el botón . Acontinuación aparece una ventana simular a la que se presenta a continuación:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 29
  31. 31. Departamento de Automática y Computación 18/11/2006La primera pantalla que aparece es el panel frontal o ventana de diseño de la aplicaciónmientras que la que aparece en segundo plano es la ventana de flujo de programa o dediagrama. Recuerde que puede conmutar entre uno y otro. Compruébelo con la combinaciónCtrl+E.Pasos de la solución1. Primero seleccionemos los controles que pondremos. Para ello seleccionamos mediante unclic la ventana izquierda (panel frontal) y a continuación damos clic derecho. Debe aparecer unmenú emergente llamado “controls”. Seleccionamos en “controls” la primera de las opciones,que se llama “numerics” y se representa en el menú “controls” con el símbolo .Aparecerá algo similar a:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 30
  32. 32. Departamento de Automática y Computación 18/11/2006Como se puede observar el elemento “Tank” es el más indicado para representar el nivel quees requerido en el ejercicio. Para colocarlo en el “panel frontal” del instrumento virtual queestamos 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 clicderecho 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 y Msc.Adel Fernández Prieto. 31
  33. 33. Departamento de Automática y Computación 18/11/20062. Según el enunciado del problema debemos colocar la escala del tanque entre los valores de0 y 100 unidades. Para ello debemos seleccionar el cursor en la paleta de herramientas opulsar 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 laescala del indicador “tank”, se cambia la escala de 10 a 100 y se presiona la tecla “enter”. Estose realiza de la siguiente manera: Paso 1 Paso 23. El otro elemento gráfico necesario para resolver este ejercicio es un control numérico paraestablecer 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 Fernández Prieto. 32
  34. 34. Departamento de Automática y Computación 18/11/2006Obsérvese que el nombre del control queda seleccionado, si en este momento se utiliza elteclado, se puede cambiar directamente el encabezado del control. En este caso debemoscolocar el nombre: referencia de nivel.4. Para terminar la interfaz de usuario se debe colocar un botón “booleano” que permitaterminar la ejecución 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 Fernández Prieto. 33
  35. 35. Departamento de Automática y Computación 18/11/2006Ya estamos en condiciones de programar, en base a los elementos gráficos seleccionadospara nuestra interfaz, la lógica que dará solución a nuestro ejercicio. Para ello pasamosdirectamente a la ventana del diagrama (Ctrl+E).6. El primer código G que debemos programar es el necesario para comenzar y terminar laaplicació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 debeejecutar nuestro programa. En caso contrario debe terminar la aplicación. Esta situación semodela en programación a través de un “ciclo while”.Para incorporar un “ciclo while” a nuestra aplicación se selecciona en la paleta de funciones elboton: y luego se busca la opción “while loop”.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 34
  36. 36. Departamento de Automática y Computación 18/11/20067. Una vez que se seleccione, debe irse a la pantalla del diagrama. Ahora el cursor de laaplicación cambia para indicarle que usted debe seleccionar el área que ocupará el ciclo, estose realiza arrastrando el ratón de manera que seleccione el área necesaria, como ilustra lasiguiente pantalla.Al finalizar se obtiene la siguiente estructura de programa G:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 35
  37. 37. Departamento de Automática y Computación 18/11/20068. El ciclo tiene dos variable implícitas: la iteración representada por y la condición desalida, representada por . Si negamos la variable booleana y la conectamos a la condiciónde salida, se construye la lógica necesaria para la ejecución y salida del programa.Para negar la variable booleana “stop” debemos utilizar los operadores booleanos que seseleccionan en la paleta de funciones como sigue:9. Allí debemos seleccionar como nuestra la figura, el operdor “Not”. Y colocarlo en nuestraventana del diagrama de la siguiente forma: Antes de conectarlos Después de conectarlos10. El tipo de datos que representa a nuestro tanque y al controlador de referencia es pordefecto Double . Pero esto se puede cambiar de la misma manera que se hizo en ellaboratorio anterior.Antes de seguir debemos verificar que la variable “Tank” esté configurada como “indicador” y lavariable “referencia de nivel” esté configurada como “control”.(Recordar la simbología)11. Según el enunciado del ejercicio el tanque debe recibir el valor de nivel de una funciónaleatoria. En el caso de labview esta función se encuentra entre las funciones numéricas y sepuede escoger como sigue:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 36
  38. 38. Departamento de Automática y Computación 18/11/200612. Esta función brinda un valor aleatorio de tipo “double” entre 0 y 1. Sin embargo nuestraaplicación requiere que el nivel varía entre 0-100. Para ello debemos multiplicar la salida deesta función por el valor entero 100. Con ello se logra nuestro objetivo. La función demultiplicación se encuentra en la misma paleta de funciones numérica y se representa por elsímbolo: que recibe dos valores y devuelve la multiplicación de ambos. Además de estapropia paleta debe utilizarse una constante numérica entera que contenga el valor 100que será el otro elemento necesario.Después de colocar estas funciones y variables se obtiene el siguiente diagrama:13. Ahora debemos conectar los elementos según la lógica a seguir. En nuestro caso quedacomo sigue:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 37
  39. 39. Departamento de Automática y Computación 18/11/2006En cada iteración del ciclo el resultado de la función aleatoria se multiplica por 100 y este valorse asigna a la variable que representa al control tanque.14. Ahora debemos comparar el valor del tanque con la referencia entrada por el usuario. Sieste valor es mayor que la referencia se cambiará el color del tanque a rojo, sino, el tanqueserá de color azul.Para ello es necesario una función de comparación, que se puede encontrar en la paleta defunciones “Comparison”:Ahora la pantalla queda como sigue:Para modificar el color del tanque debemos utilizar la propiedad FillColor que seselecciona de la siguiente manera:15. De clic derecho sobre la variable “Tank” y seleccione la opción Create, a continuaciónseleccione la opción “Property Node” según se muestra a continuación:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 38
  40. 40. Departamento de Automática y Computación 18/11/2006En la pantalla del diagrama se muestra el siguiente código:16. En este caso la propiedad de la variable “tank”que se muestra por defecto es “Visible”, sinembargo si damos clic derecho sobre ella y seleccionamos la opción “Properties” y luego laopción “Fill Color” entonces nuestra propiedad se convierte en la que buscamos. El código es elque sigue:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 39
  41. 41. Departamento de Automática y Computación 18/11/200617. 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 dela comparación del valor y la referencia. Para cambiar esta propiedad a escritura debemos darclic derecho sobre la misma y seleccionar la opción “Change To Write”. Con ello el resultadografico es de a .18. 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 “s”. Si “s” 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, podemospresionar Ctrl+H para obtener la ayuda contextual que se muestra debajo. El diagrama G ahoraluce como sigue:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 40
  42. 42. Departamento de Automática y Computación 18/11/2006El valor que debe retornar la función “Select” debe ser Rojo, si la condición es verdadera y Azulsi es falsa. Para ello es necesario utilizar constantes enteras que representen los coloresdeseados.19. Esto es posible utilizando la paleta de funciones y escogiendo dos constantes “Color BoxConstant”, una para el rojo y otra para el azul. La manera de hacerlo se muestra abajo.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 41
  43. 43. Departamento de Automática y Computación 18/11/2006El código queda como sigue:20. Por defecto el color que toman es negro, para cambiar esto debemos tomar el cursorEn la paleta de herramientas y presionar sobre la constante para escoger el color deseado.Esto se realiza de la manera mostrada arriba.El código queda como sigue: Sin conexión Con conexión21. La aplicación está casi lista, ahora debemos ejecutarla, para ello presionamos el botón demenú y si se quiere ejecutar en modo de depuración se pueden escoger las variantes yaestudiadas. .Al ejecutarla podemos percibir la rapidez con que varia el nivel, para que sea más efectiva lasimulación se puede introducir un bloque de demosra dentro del ciclo iterativo.22. Para ello debemos ir a la paleta de funciones y utilizar la función “Wait Until Next msMultiple” y colocar una constante de demora de 500 ms. Como se muestra a continuación.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 42
  44. 44. Departamento de Automática y Computación 18/11/2006Ejercicio 2Elabore un programa en Labview que: dado el nombre y la edad de una persona. Elabore unacadena de salida que diga lo siguiente: Usted se llama: nombre y nació en el año: YYYY dondelas 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 controles de cadenapara entrar el nombre, 1 control numérico de tipo entero sin signo, de 8 bytes, ya que la edadsiempre es positiva y nunca mayor que 256 que es el entero más pequeño que se puededeclarar y 1 indicador de cadena para la salida. Además debemos colocar un control booleanoque permita terminar la ejecución 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. Selección del control Panel Frontal3. Adicionar un control numérico.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 43
  45. 45. Departamento de Automática y Computación 18/11/2006 Selección del control Panel Frontal4. Cambiar el tipo de dato asociado con el control numérico.6. Adicionar un indicador de cadena. Selección del control Panel Frontal7. Adicionar un control booleano.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 44
  46. 46. Departamento de Automática y Computación 18/11/2006 Selección del control Panel FrontalYa estamos en condiciones de programar, en base a los elementos gráficos seleccionadospara nuestra interfaz, la lógica que dará solución a nuestro ejercicio. Para ello pasamosdirectamente a la ventana del diagrama (Ctrl+E).6. El primer código G que debemos programar es el necesario para comenzar y terminar laaplicació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 debeejecutar nuestro programa. En caso contrario debe terminar la aplicación. Esta situación semodela en programación a través de un “ciclo while”.Para incorporar un “ciclo while” a nuestra aplicación se selecciona en la paleta de funciones elboton: y luego se busca la opción “while loop”.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 45
  47. 47. Departamento de Automática y Computación 18/11/20067. Una vez que se seleccione, debe irse a la pantalla del diagrama. Ahora el cursor de laaplicación cambia para indicarle que usted debe seleccionar el área que ocupará el ciclo, estose realiza arrastrando el ratón de manera que seleccione el área necesaria, como ilustra lasiguiente pantalla.Al finalizar se obtiene la siguiente estructura de programa G:8. El ciclo tiene dos variable implícitas: la iteración representada por y la condición desalida, representada por . Si negamos la variable booleana y la conectamos a la condiciónde salida, se construye la lógica necesaria para la ejecución y salida del programa.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 46
  48. 48. Departamento de Automática y Computación 18/11/2006Para negar la variable booleana “stop” debemos utilizar los operadores booleanos que seseleccionan en la paleta de funciones como sigue:9. Allí debemos seleccionar como nuestra la figura, el operdor “Not”. Y colocarlo en nuestraventana del diagrama de la siguiente forma: Antes de conectarlos Después de conectarlos10. La cadena de salida que queremos formar debe ser construida a partir de las variables queya 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 yse busca la paleta readicionada con el tratamiento de cadenas. A continuación se muestra sulocalización:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 47
  49. 49. Departamento de Automática y Computación 18/11/200611. Se colocan dos controles del tipo y se selecciona el cursor en la paleta deherramientas se utiliza la tecla “tab”, hasta que el cursor en la pantalla quede de la siguientemanera: 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 lafigura anterior. Además, hay que restarle al valor de la edad el año actual para obtener el añode nacimiento y este resultado añadirlo a las cadenas. Para ello se puede utilizar la función“Format Into String” que se encuentra:13. Esta función retorna una cadena de caracteres que esta formada por cada uno de loselementos que se le pasan como parámetros. Estos parámetros pueden ser de cualquier tipode dato simple (DBL, SGL, EXT, U8, U16, U32, I8, I16, I32) sin embargo el formato debe serespecificado 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 denuestro programa una constante de la misma forma que se realizó en el paso 11 y se inicializaasí: %s%s%s%d para luego conectarla a la función según se muestra a continuación:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 48
  50. 50. Departamento de Automática y Computación 18/11/200614. Como se observa esta función solo tiene una posible conexión de entrada pero eso es solopor el momento. Usted debe pararse justo en la base de la función y esperar a que cambie eltipo de cursor. Cuando esto suceda, debe presionar el botón izquierdo del ratón y arrastrarhasta tener exactamente cuatro entradas que deben coincidir con los tipos de datosseleccionados con anterioridad. El diagrama queda así:15. Para obtener el año debemos introducir una constante numérica entera para almacenar elvalor del año actual 2002 y un operador de resta desde la paleta de funciones numéricas. Alefectuar la resta del año menos la edad se tiene el año de nacimiento.16 Ahora solo nos resta conectar las funciones con las variables para terminar. Para ejecutar eprograma, presionamos el botón de menú y si se quiere ejecutar en modo de depuraciónse pueden escoger las variantes ya estudiadas. .Ejercicio 3Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 49
  51. 51. Departamento de Automática y Computación 18/11/2006Se 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 sunombre, 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 anterior (pasos 2 y 6). Como en los ejemplos anteriores se debe colocar un control booleano que sirva para finalizar la aplicación. El resultado debe ser como se muestra a continuación.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 botón “Ring & Enum”3. Al introducir el elemento “Enum”, este toma la propiedad de control. Sin embargo, el uso quese le va dar es como indicador. Es por ello que se debe dar clic derecho sobre él y seleccionarla opción “Change To Indicator”. Ahora estamos listos para introducir cada uno de los docemeses del año. Para ello se selecciona el cursor en la paleta de herramientas o se utiliza laDr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 50
  52. 52. Departamento de Automática y Computación 18/11/2006tecla “tab” hasta que el cursor en la pantalla quede de la siguiente manera . Luego secoloca el cursor dentro del indicador y se introduce el primer nombre “enero”, para introducirotro mes se da clic derecho sobre el control y se selecciona la opción “Add Item After”. De estamanera 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 código que de solución a nuestroproblema. 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 nospermita terminar la ejecución de nuestro programa. Los pasos son similares a los vistosanteriormente y finalmente debe quedar de la siguiente forma:Es de señalar que la variable correspondiente al indicador de tipo “Enum” es entera y cada mestiene un número entero asociado. Para “enero” será el “0”, febrero el “1” y así sucesivamente.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 51
  53. 53. Departamento de Automática y Computación 18/11/20064. Para desglosar la fecha es necesario encontrar el carácter “/” que limita el día del mes, y elmes del año. La función “Search/Split String” que se encuentra en la paleta de funcionespermite encontrar un carácter específico dentro de una cadena. Esta función necesita comoparámetros la cadena donde debe buscar, el carácter que se quiere encontrar y eldesplazamiento a partir del inicio de la cadena donde se comenzará la búsqueda. La funciónretorna tres valores. La subcadena que se forma hasta el carácter que se busca, la subcadenaa partir del carácter que se busca (incluyendo el carácter buscado) y el índice o desplazamientodonde se encontró el carácter.El resultado de aplicar esta función a la cadena que contiene la fecha es el siguiente:Si la fecha es: 12/01/2005Subcadena 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 aplicar la función anterior. Para ello se puede utilizar la función “StringSubset” que recibe como parámetros una cadena, la cantidad de caracteres que sequieren tomar y el desplazamiento o índice a partir de donde se tomara la subcadena.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 52
  54. 54. Departamento de Automática y Computación 18/11/20066. El resultado de aplicar esta función a la cadena “/01/2005” es: “01/2005”. Ahora se deberepetir 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 elresultado de la función, que es una cadena con el número del mes, a un valor numérico entero.Para ello el labview cuenta con funciones de conversión de tipos. En nuestro caso esto serealiza con la función “Decimal String To Number” . El diagrama queda como sigue:Para obtener el año se debe repertir el paso 5. con lo cual se elimina el carácter “/”y seobtiene el año. El diagrama final queda así:Para ejecutar e programa, presionamos el botón de menú y si se quiere ejecutar en modode depuración se pueden escoger las variantes ya estudiadas. . Al correr elprograma se puede percibir que el mes que se obtiene está desplazado en uno con el quesería el correcto. Eso es así por que en la variable de tipo “Enum” el mes de enero tieneasignado el valor 0, este mes no existe. Para resolver este problema, después de la conversiónde cadena a número se debe restar una unidad. El diagrama queda de la siguiente manera:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 53
  55. 55. Departamento de Automática y Computación 18/11/2006Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 54
  56. 56. Departamento de Automática y Computación 18/11/2006TEMA IV Control de Flujo de programa en LabVIEW. Estructuras repetitivas. • Lazos de control de programa (While y For). • Shift Registers (Registros de Desplazamiento). • Nodo fórmula. Visualización gráfica de datos.Ejercicio 1:Realice un programa que permita encontrar el máximo de 100 números generadosaleatoriamente. Represente gráficamente los números generados.Desarrollo:El ejercicio una vez terminado debe conducir a una representación en Lenguaje G como la quese muestra a continuación en la ventana de diagrama o código del LabView:Veamos como desarrollar paso a paso dicho ejercicio. Primero, una explicación de lo que senos pide.Se necesitan generar 100 números aleatorios, lo que implica utilizar un generador de númerosaleatorios y un lazo de control de programa o repetición que permita que ese generador denúmeros aleatorios nos entregue 100 de dichos números.Cada vez que se nos entregue un número, o sea, con cada iteración del bucle o lazo, se debecomparar el número generado con el número máximo hasta ahora generado. Eso nos indicaque debemos realizar una comparación que busque el máximo y almacenarlo para compararen cada iteración con el nuevo número.Se nos pide que representemos gráficamente dichos números por lo que debemos agregar ungráfico a nuestro diseño encargado de plotear en cada iteración el número 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 operación de comparación en la búsqueda de un máximo 100 veces, invariablemente. Si estuviéramos sujetos a alguna condición entonces deberíamos de haber seleccionado un lazo condicional, o sea, un While. La siguiente figura ilustra como hacer la selección:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 55
  57. 57. Departamento de Automática y Computación 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 conectándola 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 Fernández Prieto. 56
  58. 58. Departamento de Automática y Computación 18/11/2006 4. Necesitamos ahora generar un número aleatorio y compararlo con algún máximo. Por supuesto, el primer número aleatorio no tiene referencia de comparación, 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 número aleatorio siempre será el primer máximo contra el cual comparar después los sucesivos que se generarán. LabView presenta un componente que realiza la comparación entre dos fuentes o números, y devuelve el mínimo valor de entre los dos y el máximo. 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 Fernández Prieto. 57
  59. 59. Departamento de Automática y Computación 18/11/2006 5. Necesitamos ahora encontrar alguna función que genere números aleatorios. LabView tiene un componente en Functions/Numeric/Random Number (0-1):Si quisiéramos generar un número aleatorio en un rango diferente podemos multiplicar elnúmero generado con esta función por el valor máximo que queremos generar. Puedemodificar el ejercicio como estudio independiente ahora intentando buscar el máximo de 100números aleatorios en el rango de 0-50.Una vez introducidos en el diagrama el generador de números aleatorios y la función quedevuelve el máximo entre dos números debemos entonces buscar la forma de almacenar elmáximo que resulta de cada iteración para compararlo con el número generado en la siguienteiteración. Si se analiza bien esto lo que necesitamos es comparar el número generado en laiteración i (denotemos por n(i) a dicho número) con el máximo que resultó de la iteración i-1.Esta es una de las funciones que puede brindarnos el registro de desplazamiento o shiftregister de LabView.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 58
  60. 60. Departamento de Automática y Computación 18/11/2006El shift register desde el punto de vista de la programación es una estructura tipo arregloasociada con lazos de control o bucles de programa como el for y el while y que almacenavalores anteriores producidos en dichos lazos. Así, por ejemplo, si obtenemos como resultadode una iteración i un valor v(i) al final de dicha iteración, al comienzo de la próxima al iincrementarse 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 numéricos:Iteración V(i) V(i-1) V(i-2) V(i-3) V(i-4) V(i-5)0 5 - - - - -1 3 5 - - - -2 0.7 3 5 - - -3 1 0.7 3 5 - -4 -1 1 0.7 3 5 -5 0 -1 1 0.7 3 56 2 0 -1 1 0.7 3y 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 opción, Add Shift Register (Adicionar registro dedesplazamiento) se inserta en el diagrama como se muestra en la siguiente figura: 7. Antes de realizar las conexiones entre los elementos debemos además seleccionar algún componente que nos permita visualizar gráficamente los números aleatorios queDr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 59
  61. 61. Departamento de Automática y Computación 18/11/2006 se van generando. Para ello nos vamos al panel frontal y con clic derecho visualizamos el siguiente menú:Al seleccionar la opción Controls/Graph/Waveform Chart obtenemos un gráfico como el que serepresenta en la pantalla frontal de la siguiente figura, donde también se representa elcontenido de la ventana de diagrama hasta este momento: 8. A continuación se realizan las conexiones entre los elementos. La salida del generador de números aleatorios se conecta al bloque de comparación de números, y a la entrada del control gráfico. El shift register de la derecha debe almacenar el último valor del máximo calculado y que se obtiene como salida del módulo de comparación. La siguiente figura muestra las conexiones a realizar:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 60
  62. 62. Departamento de Automática y Computación 18/11/2006 9. Una vez realizadas estas conexiones el ejercicio está prácticamente concluido. Note que la primera vez que se compara en el bloque de comparación se hace entre un primer número aleatorio y el valor del shift register. Ya se explicó como funciona el shift register y debemos notar que antes de concluir la primera iteración no tenemos un valor con el cual comenzar para el shift register que adquiere uno al final de cada iteración. Eso nos indica que tenemos que inicializarlo, darle un valor inicial con el cual empezar y evaluar la iteración 0 . Note además que cuando se llega a la última iteración el valor actual que contiene el shift register es el del último máximo calculado, y por tanto el valor que debemos reportar como resultado. Es por ello que entonces debemos crear un indicador para visualizar el último máximo y una constante para definir la condición inicial del shift register. Las figuras que se muestran a continuación ilustran como hacerlo. Los menús que allí aparecen se obtienen al dar clic derecho encima de los shift registers.Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 61
  63. 63. Departamento de Automática y Computación 18/11/2006El resultado final se muestra en la siguiente figura. Note que el valor inicial del shift register es0.00 pues es el mínimo que puede tomar el número aleatorio y no afectará la selección delprimer máximo. 10. Antes de ejecutar el programa es conveniente modificar algunos parámetros del gráfico, en particular los relacionados con los ejes, que debemos modificar para permitir la auto escala. Las figuras a continuación muestran la manera de hacerlo (siempre clic derecho en el objeto para obtener el menú):Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 62
  64. 64. Departamento de Automática y Computación 18/11/2006 11. Finalmente salvamos el ejercicio y lo ejecutamos. Un ejemplo de ejecución se muestra en la siguiente figura:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 63
  65. 65. Departamento de Automática y Computación 18/11/2006Por último, señalar que si queremos que el gráfico se represente más lentamente podemosincluir una demora (Functions/Time & Dialog/ Wait Until Next ms Multiple) o seleccionar elindicador de ejecución paso a paso. La siguiente figura muestra como quedaría el ejerciciopara una demora de 50 milisegundos:En la figura anterior también se a insertado otro indicador, llamado max(x,y). Que funcióntendría?Ejercicio 2:En este ejercicio se propone realizar la descomposición de la fecha introducida en un controltipo Edit (Edición) de una manera más eficiente (comparada con la primera solución a esteejercicio que ya se vio en una guía anterior), haciendo uso de los shift registers.Desarrollo:En clases anteriores se ofreció una solución al problema de desglose de una fecha en suscomponentes de día, mes y año. Aquella solución introducía algunos componentes para elprocesamiento de cadenas que se encuentran dentro de las funciones de LabView. En dichaDr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 64
  66. 66. Departamento de Automática y Computación 18/11/2006solución los componentes se repetían, pero hay una forma más eficiente de resolverlohaciendo uso de los shift registers. La solución final se ofrece en la siguiente figura:Se recuerda la función y terminales de los dos elementos principales involucrados:Antes de pasar a una explicación más o menos detallada de como construir la solución en lapantalla 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 día, el mes y el año que la conforman. 2. La operación siempre es la misma: se extrae de la cadena una subcadena que representa un componente de la fecha (o el día, o el mes o el año) 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 Fernández Prieto. 65
  67. 67. Departamento de Automática y Computación 18/11/2006El punto 3 nos indica que podemos utilizar un lazo condicional, o sea, un while, pues siempredentro del while se hará lo mismo (punto 2). La subcadena que representa el componenteextraído debe almacenarse para brindar los resultados finales. Como entonces utilizar los shiftregisters? Quizá una manera en que podemos verlo es representando el proceso, para unafecha ejemplo, a través de las iteraciones. La siguiente tabla lo ilustra:Cadena inicial Iteración Componente Subcadena Subcadena resultante después de después de extraído el extraer el componente separador (/)8/02/2005 0 8 /02/2005 02/200502/2005 1 02 /2005 20052005 2 2005 “” “”Como se puede apreciar por cada iteración se obtiene un componente resultante, primero eldía, después el mes y por último el año. Si denotamos por c(i) al componente resultante sepuede ver que después de la iteración 2 c(i)=2005, c(i-1)=02 y c(i-2)=8. Dicha secuencia es laque precisamente nos pueden brindar los shift register si creamos los suficientes en eldiagrama como para almacenar los valores c(i-2), c(i-1) y c(i). Necesitamos además de unaiteración a otra almacenar la subcadena resultante después de extraer el separador que será lanueva cadena inicial con la cual trabajar en la próxima iteración. Veamos pues como hacerlo. 1. Primero debemos de crear el lazo condicional while en nuestra aplicación: 2. Debemos ahora definir la condición de parada. Queremos que el lazo funcione mientras la iteración no sea mayor que dos, por tanto, la condición de ejecución del while debe ser i<=2. La siguiente figura nos indica como quedaría (el componente de comparación aparece en Functions/Comparison/Less or Equal?):Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 66
  68. 68. Departamento de Automática y Computación 18/11/2006 3. En el panel Frontal debemos insertar un control de tipo String para poder teclear la fecha que se quiere descomponer (Controls/String & Path/String Control):Note que en la siguiente figura el control generado en el panel frontal tiene asociado unavariable que debemos ubicar fuera del lazo while pues es la cadena inicial que hay quedescomponer. 4. Insertamos ahora en la ventana de diagrama el componente Search/Split String (Functions/String/Aditional String Functions/Search Split String): 5. Una vez introducido dicho componente se crea el primer shift register, que tendrá la función de almacenar la subcadena resultante después de cada iteración. En la siguiente figura aparece representado. A la función de dividir (Split) cadenas se le asigna en cada iteración la cadena inicial (ver tabla página 13) que está almacenada en el shift register (por ejemplo, si en la iteración que acaba de concluir quedó 02/2005 ese valor se almacena en el shift register de la derecha y cuando se incrementa i para iniciar una nueva iteración esa cadena (ahora, después de incrementada i es el resultado de la iteración i-1) LabView la pasa o ubica en el shift register de la izquierda para que sea usada en la iteración i).Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 67
  69. 69. Departamento de Automática y Computación 18/11/2006Como ya mencionamos anteriormente, los shift register tienen que tener un valor inicial, paraque sea el valor con el cual comienza a trabajar la iteración 0. En este caso el valor inicial es lacadena inicial introducida en el edit, o sea, la fecha completa que se quiere dividir. En la figuraanterior se mostró la conexión que inicializa al shift register. 6. Una vez introducido este registro de desplazamiento hay que completar las entradas del modulo de división de cadena. Para ello se agregan dos constantes en la entrada, y se le dan, respectivamente, valores de / (que es el separador) y 0. Dichos valores le indican al Labview que la cadena que tiene en su entrada y que será dividida en dos se comenzará a explorar desde el primer elemento (elemento 0) hasta detectar el carácter /.Esta función tiene dos salidas, la primera es la subcadena encontrada antes del carácter quedivide la cadena de entrada en dos cadenas (en nuestro ejemplo /). La segunda salida es lacadena que se encuentra desde el separador hasta el final. Note que incluye al separador.Las dos salidas serán de utilidad, la que está delante del separador es el componente de lafecha que estamos separando (día, mes o año) y la segunda la que hay que seguir separando.Que hacer con la primera? Hay que almacenarla pues de lo contrario en la próxima iteracióntendré otra componente resultante de la comparación que cambiará la salida de la funciónSearch/Split String. 7. Para ello debemos utilizar un nuevo shift register, en este caso, uno que tendrá la función de los componentes resultantes. La siguiente figura indica la forma de insertarlo:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 68
  70. 70. Departamento de Automática y Computación 18/11/2006 8. Que conectar al shift register que no aparece conectado en la figura anterior? Recuerde que será el encargado de almacenar la cadena que en la próxima iteración servirá de inicio para buscar el nuevo componente de la fecha. Note además que no se puede conectar directamente a la salida de la primera función (Search/Split Function) pues esa salida incluye todavía el separador (ver tabla pág. 13) y hay que eliminarlo. Para ello se usa la función que se representa en la siguiente figura (Functions/String/String Subset)También se pudo utilizar una segunda función split, pero la que se ha escogido es la másrepresentativa de lo que se quiere hacer puesto que recibe a su entrada una cadena ydevuelve la subcadena que se encuentra desde la posición k hasta la l, donde k y l son otrasentradas de la función. Nosotros queremos tomar la cadena que sale de la funciónSearch/Split... y quitarle el separador, o sea, quedarnos con el subconjunto o subcadena quese encuentra desde la posición 1 (en la posición 0 está el separador hasta el final):Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 69
  71. 71. Departamento de Automática y Computación 18/11/2006 9. Ahora si podemos conectar la salida de esta función String Subset al shift register de su derecha: 10. Hasta aquí lo que está programado funciona bien pero no nos permite visualizar todos los resultados. El resultado se obtiene en el shift register que en la figura anterior no está conectado. Que componente se obtiene ahí después de concluida la última (i=3) iteración? La respuesta es que se obtiene el valor del shift register asociado (el de la parte derecha a su mismo nivel) en la iteración i-1. Cual es ese valor? Del ejemplo de la Tabla en la Página 13 podemos ver que es el año. Note que al final de la última iteración el valor del shift register asociado de la derecha era “”. Conectemos entonces un indicador tipo string al shift register no conectado hasta ahora (clic derecho, en el menú que aparece seleccionar Create/Indicator). Cambiando el nombre del indicador por el de año obtenemos:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 70
  72. 72. Departamento de Automática y Computación 18/11/2006 11. Eso nos permite visualizar el año. Pero y el mes? Si el año fue el valor resultante en la iteración i-1, es de suponer que el mes es el valor resultante en la iteración i-2. Pero ese valor no lo tenemos almacenado. Hay que almacenarlo. Crear elementos del shift register para las iteraciones i-2, i-3, i-4,.... es fácil . Solo hay que agregar un elemento al shift register ya creado. La siguiente figura muestra como hacerlo. El menú que aparece en ella se obtiene con clic derecho sobre el shift register de la derecha (el conectado al indicador de año):El resultado: 12. Debemos agregar otro nivel, (el de i-3) para el componente día de la fecha:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 71
  73. 73. Departamento de Automática y Computación 18/11/2006A cada nivel creado se le asocia el indicador de cadena correspondiente, de la misma formaque se hizo con el año: 13. Antes de concluir debemos realizar una operación más. Hay 3 elementos en el registro de desplazamiento asociado con el año, el mes y el día que no han sido inicializados. Que valor les corresponde? Aquí en realidad no tiene importancia el valor que le demos pues solo están conectados (los elementos del shift register) y por lo tanto el valor que al concluir el while mostrarán serán los componentes de la cadena fecha. Sin embargo, es una práctica sana inicializarlos, y por eso se hará, dándole un valor inicial de “” que indicará cadena vacía. La siguiente figura muestra como hacerlo:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 72
  74. 74. Departamento de Automática y Computación 18/11/2006La constante de cadena vacía se encuentra definida en la biblioteca de funciones de LabViewFunctions/String/Empty String constant.En la ventana o panel frontal nuestro diseño sería más o menos así. Para probar que nuestroprograma se ejecuta debemos antes de ejecutarlo darle un valor inicial a la fecha que sedescompondrá, editando en el control Fecha el valor:Después de una ejecución, y para esa cadena se obtiene:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 73
  75. 75. Departamento de Automática y Computación 18/11/2006Ejercicio 3:Realice un programa en LabView que permita gráficar la función seno hasta que se oprima elbotón parar.Desarrollo:Este ejercicio nos permitirá conocer como trabajar con el Nodo Fórmula. Que se nos pide?Graficar la función seno(x) hasta que se oprima un botón. Eso nos indica que debemos ubicarun lazo o bucle de repetición condicional, o sea, un while. La condición de parada del while laproducirá el clic sobre un botón. Dentro del while debemos de estar evaluando, para cadaiteración a la función seno(x). Que valor le damos a x? Podemos usar el mismo valor de laiteración i. El único problema es que el seno(x) espera el valor en radianes por lo que hay queconvertir el valor de i a dicha unidad, y después calcular el seno. Este es un caso típico en queun nodo fórmula nos simplifica mucho el trabajo. Veamos la solución. 1. Primero comenzamos creando el ciclo while y un botón (ya se sabe como hacerlo de clases anteriores):En la figura anterior aparece nuevo el elemento negado, que conecta al botón con la condiciónde ejecución del while. En clases anteriores vimos que se podía también cambiar la condiciónde ejecución del while con clic en ella: aparece un circulo rojo. En versiones anteriores a la 6.0no existía dicha posibilidad. 2. Después de introducido el while se crea el nodo fórmula según se muestra en la siguiente figura:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 74
  76. 76. Departamento de Automática y Computación 18/11/2006 3. Una vez creado el nodo fórmula tenemos que indicar cuales serán las variables de entrada de dicho nodo y cuales las de salida. Comenzando por las de entrada se adicionan de la siguiente manera (el menú aparece al dar clic derecho en el nodo fórmula): 4. A dicha entrada le damos el valor de nx:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 75
  77. 77. Departamento de Automática y Computación 18/11/2006 5. Ahora debemos editar dentro del nodo fórmula el contenido de lo que se quiere calcular. Para este caso son 3 lineas. Note la similitud entre C++ o Matlab y el lenguaje que admite el nodo fórmula. Dicho nodo es compatible con ANSI C. 6. La fórmula convierte de grados a radianes y calcula el seno. El valor calculado lo devuelve en la variable y, que hay que declararla como salida del nodo de la misma forma que la entrada pero ahora seleccionando la opción Add Output. Una vez hecho esto se realiza la conexión entre el indicador de iteración i y la variable de entrada nx. La siguiente figura muestra como debe quedarnos la aplicación hasta este momento en la ventana de diagrama: 7. La salida, que se produce en cada iteración, podemos conectarla a un componente para plotear gráficos de la misma manera a como lo hicimos en el ejercicio 1:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 76
  78. 78. Departamento de Automática y Computación 18/11/2006La salida “y” del nodo fórmula se conecta al gráfico:La figura que se muestra a continuación es el resultado de la ejecución del programa:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 77
  79. 79. Departamento de Automática y Computación 18/11/2006Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 78
  80. 80. Departamento de Automática y Computación 18/11/2006TEMA V Mas estructuras de control de flujo. • Dominar la estructura de control CASE. (if-then-else ó switch[C++] ) • Dominar la estructura “Secuence” para secuenciar el flujo de programa (alternativa a la programación por nodos). • Dominar la estructura de manejo de eventos.Ejercicio 1:Elabore un programa en LabView que permita calcular la raíz cuadrada a un número real. Elprograma debe analizar si valor introducido es menor que cero (situación de error) e indicar alusuario por medio de un cuadro de mensaje la situación.Solución:Como toda aplicación esta debe comenzar con la realización del código necesario paraejecutar y terminar la aplicación. Para ello debe colocar un botón booleano de salida y realizarel código siguiente:Ahora debemos diseñar la interfaz de usuario de nuestra aplicación. Para ello simplementecolocamos un control numérico digital que reciba por parte del usuario el valor al cual se lecalculará la raíz cuadrada. Además, debemos colocar un indicador (también digital en estecaso) para visualizar el resultado de la operación.Esto queda de la siguiente manera:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 79
  81. 81. Departamento de Automática y Computación 18/11/2006Ya estamos listos para programar en “Código G” la lógica de nuestra aplicación. Por lo tantoutilizando (Ctrl+E) vamos a la pantalla del diagrama en bloques, que luce de la siguiente forma:La operación de cálculo de la raíz cuadrada implica realizar una operación de comprobaciónantes de efectuarla, y esto depende del valor del número. Si este es positivo se puede hacer,sino debe indicarse un mensaje. Véase que existe una condición mediante la cual se bifurca elflujo de programa. Para ello es necesario utilizar una estructura clásica del tipo IF-THEN-ELSE,que el caso de labVIEW se denomina “Case Structure” y se puede obtener según se indica enlas figuras siguientes:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 80
  82. 82. Departamento de Automática y Computación 18/11/2006Esta estructura está representada por un marco y un titular que representa elárea donde se programa el código asociado a la condición detrue: y el código asociado a la condición de false: . Note que ustedpuede conmutar entre uno y otro según desee utilizando las flechas, y que los elementos decódigo para uno u otro son diferentes.Según nuestra lógica, si el valor numérico es positivo, se realiza la operación de raíz, esto seconsigue utilizando las funciones numéricas como se muestra a continuación:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 81
  83. 83. Departamento de Automática y Computación 18/11/2006El código complementario, cuando no se puede efectuar la operación debido a que el númeroes falso, se reduce a colocar un cuadro de mensajes que alerte al usuario. Para ello se utilizaen la paleta de funciones un “One Button Dialog” y un “String Constant” según se observa acontinuación:Ahora solo nos resta realizar la comparación y conectarla a la estructura “case” para determinarcual de las dos acciones posibles se realizará en tiempo de ejecución. Para ello necesitamoscomparar la variable correspondiente al control numérico relacionado con el valor a calcular.Sin embargo ya hemos utilizado el terminal asociado al mismo, por lo que debemos crear unavariable local de ese control. Esto se hace dando clic derecho sobre la variable ,seleccionando la opción “Create” y a su vez “Local Variable”. Usted debe recordar que lasvariables en LabVIEW pueden ser de escritura o lectura. Al crear una variable local estas sonde escritura por defecto, aquí se utilizara para compararla y saber si es mayor que cero, por loque no la modificaremos. En este caso hay que cambiarla para su tipo de lectura, esto se hacedando clic derecho sobre ella y seleccionando la opción “Change To Read”:Dr.Valery Moreno Vega y Msc.Adel Fernández Prieto. 82

×