+ All Categories
Home > Documents > LABORATORIO Nº2 labview

LABORATORIO Nº2 labview

Date post: 10-Nov-2015
Category:
Upload: reynaldo-vara-feria
View: 230 times
Download: 1 times
Share this document with a friend
Description:
trhnytnynipooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Popular Tags:
36
LABORATORIO Nº2 LabVIEW (Laoratory Virtual Instrument Engineering Workbench) es un sistema de desarrollo basado en programación gráfica, orientado a desarrollar aplicaciones para instrumentación, el cual integra una serie de librerías para comunicación con instrumentos electrónicos como GPIB, RS232 o RS485 con tarjetas de adquisición de datos, con sistemas de acondicionamiento como VXI o SCXI, comunicaciones en redes TCP/IP, UP, o en los estándares de software .COM, .OLE, .DDE, .DDL o ActiveX para Windows, así como AppleEvents para MacOS o PIPE para UNIX. Los programas utilizados en LabVIEW se llaman instrumentos virtuales “VIs”, ya que tienen la apariencia de los instrumentos reales, sin embargo, poseen analogías con funciones provenientes de lenguajes de programación convenientes. Los VIs se compones de: Panel frontal: Interfase gráfica que simula el panel de un instrumento real, el cual permite entrada y salida de datos, incluye; perillas, pulsadores, botones, gráficos, controles e indicadores. Figura 6.1 panel frontal de LabVIEW
Transcript

LABORATORIO N2LabVIEW (Laoratory Virtual Instrument Engineering Workbench) es un sistema de desarrollo basado en programacin grfica, orientado a desarrollar aplicaciones para instrumentacin, el cual integra una serie de libreras para comunicacin con instrumentos electrnicos como GPIB, RS232 o RS485 con tarjetas de adquisicin de datos, con sistemas de acondicionamiento como VXI o SCXI, comunicaciones en redes TCP/IP, UP, o en los estndares de software .COM, .OLE, .DDE, .DDL o ActiveX para Windows, as como AppleEvents para MacOS o PIPE para UNIX.Los programas utilizados en LabVIEW se llaman instrumentos virtuales VIs, ya que tienen la apariencia de los instrumentos reales, sin embargo, poseen analogas con funciones provenientes de lenguajes de programacin convenientes.Los VIs se compones de: Panel frontal: Interfase grfica que simula el panel de un instrumento real, el cual permite entrada y salida de datos, incluye; perillas, pulsadores, botones, grficos, controles e indicadores.

Figura 6.1 panel frontal de LabVIEW Diagrama de Bloques: Contiene el cdigo fuente grfico de VI, posee funciones y estructuras que relacionan las entradas con las salidas creadas en el panel frontal.

Figura 6.2 diagrama de bloques de LabVIEWHerramientas: Contienen las herramientas necesarias para editar y depurar los objetivos tanto del panel frontal como del diagrama de bloques. Tools Palette, Controls Palette, Functiones palette: Para activar cualquiera de estas herramientas se debe hacer clic sobre Windows en la barra superior oprima Show Tools Palette o la que necesite: Figura 6.3 paleta de herramientasPaleta de Herramientas (Tools Palette):Asigna valores a los controles del panel frontal, se encuentra disponible cuando se corre y edita la aplicacin. Cuando edita objeto basados en texto o nmeros, cambia el icono del puntero por le que se muestra.Selecciona, mueve y redimensiona objetos. La herramienta cambia el icono del puntero cuando pasa por encima de objetos que pueden modificar su tamao.Crea y edita textos tanto en el panel frontal como en el diagrama de bloques. Utilizado para generar la estructura lgica de eventos mediante la conexin de los terminales de cada objeto. Los cables determinan el flujo de los datos.Permite tener el men de opciones de un objeto. Esta misma funcin se puede realizar haciendo un clic derecho del ratn sobre el objeto.Mueve todos los objetos dentro de la ventana activa. Detiene la ejecucin del programa en el punto del diagrama donde se coloque. Se utiliza con fines de depuracin.Se coloca sobre algn conductor o hilo de conexin para verificar de forma temporal el valor que fluye a travs de este Obtiene el color del objeto que se seale. Cambia los colores de objetos y de fondos.Figura 6.4 Paleta de controles Paleta de controles (Palette Controls): Se utiliza nicamente en el panel frontal y contiene los objetos necesarios para crear una interfase de entrada y salida de datos (controles e indicadores).Presionando el icono representativo por la figura, all se encontrarn varios y se obtendr el control deseado haciendo clic sobre esteNumeric Controles e indicadores Numricos como: Dispositivos de medida (metros) digitales o anlogos. Boolean Controles e indicadores Booleanos, simplemente swiches o interruptores. String y Path Controles e indicadores de cadenas y caminosArray y Cluster manejo de Arreglos List y Table manejo de listas y tablas.Graph Graficas, normalmente las que saca el osciloscopio o grficas en tercera dimensin, muy utilizada en Instrumentacin.Ring y EnumI/O entradas y salidas, puede incluir tarjetas o puertos.Refnum hace referencias numricas.Dialog Controls realiza controles de dialogo.Classic Controls Controles clsicos Activex (Contenedor, Variantes y automatizacin de referencias)Decorations Decoraciones, muy utilizado para decorar el Panel Frontal, como la superficies en altorrelieve o contornos.Select a Controls Selector de Controles, Se realiza por pasos.User Controls Controles nuevos o implementados por el usuario Figura 6.5 paleta de funcionesPaleta de funciones (Palette Functions).El segundo icono muestra Numerics: Suma, resta, multiplica , divide, Incremento, decremento, sumatoria, multiplicatoria, valor absoluto, redondeo prximo, redondeo a infinito, redondeo a +infinito, Raz cuadrada, signa negativo, escala en potencias de 2, signado, Componentes aritmticas, randum (aleatorio), recproco, convertidores, funciones trigonomtricas, funciones logartmicas, funciones complejas, constantes, cantantes numricas adicionales.El tercer icono muestra Booleans Compuertas lgicas; And, Nand, Or, Nor, Or exclusivo, Nor Exclusivo, Yes, Not, Componentes aritmticos, And de arreglo de elementos, Or de arreglo de elementos, Detalles y herramientas empleados en el proyecto QTc (Anexo)Build Array Concatena mltiples conjuntos o agrega elementos a un conjunto de n dimensiones. Tambin se puede reemplazar la funcin de un Subconjunto al modificar un conjunto existente.

Figura 6.6 Build ArrayIndex Array Retorna los elementos o subconjuntos de un conjunto de n-dimensiones a una lista. Cuando se alambra un conjunto a esta funcin, la funcin se dimensiona automticamente. Se pueden anexar adicionalmente elementos o subconjuntos terminales redimensionando la funcin.

Figura 6.7 Index ArrayDelete From Array Borrar un elemento del subconjunto para un conjunto de n-dimensiones y retorna el conjunto editado en array w/ subset deleted y el elemento borrado o subconjunto en una porcin Borrada.

Figura 6.7 Delete From ArrayArray Subset Retorna una porcin del comienzo del arreglo empieza indexarlo contiendo la longitud de del arreglo.

Figura 6.8 Array SubsetBuild waveformWaveform: es la forma de onda que se desea editar. Si se desea alambrar una forma de onda existente, construir una forma de onda, crear a nueva forma de onda sobre los componentes alambrados.

Figura 6.9 Build waveformSelect item: t0: es el tiempo de arrranque de la forma de onda.Dt: es el intervalo de tiempo, o duracin, entre la forma de onda y los datos.Y: contiene el valor de los datos de la forma de onda.waveform es el resultado de la forma de onda. Si se desea alambrar una forma de onda existente, construir una forma de onda, crear a nueva forma de onda sobre los componentes alambrados.Graphing Waveform DataRealiza el desarrollo por pasos, los datos en forma de onda en una serie de puntos mostrados en waveform graph.

Figura 6.10 Graphing Waveform dataUbica la forma de onda sobre el panel forntal.Construye un diagrama de bloques con el objeto desarrollado funcin Divisin. Funcin Seno. Get Waveform Components Retorna los componentes de la forma de la onda (seal) que se especifiquen. Se pueden especificar los componentes hacienda click derecho y seleccionando Add Element y creando un indicador.

Figura 6.11 Get Waveform ComponentesWavelet Transform Daubechies4 Ejecuta la transformada Wavelet Daubechies4 sobre la funcin

Figura 6.12 Waveform Transform Daubechies4Wavelet Transform Daubechies4 Inverse Ejecuta la inversa de la transformada base Wavelet Daubechies4 sobre la funcin

Figura 6.13 Waveform Transform Daubechies4 InverseWaveform Peak Detection Encuentra la localizacin, amplitud, y segunda derivada de picos y valles en la seal de entrada. Se puede utilizar este VI poliformico para encontrar picos y valles en una waveform o un array of waveforms. Este tipo de datos que se alambra a la seal entrante, entra determinando la instancia del polifrmico a usar. Este VI es similar al detector de picos (Peak Detector). Figura 6.14 Waveform Peak DetectionFor Loop Ejecuta estos subdiagramas n veces, cuando n es el valor alambrado al conteo (N) terminal. El terminal de iteraciones (i), brinda el conteo iterativo cclico, el cual tiene un rango desde 0 hasta n-1. A este se le pueden inyectar Shif Register es una conexin entre el mundo interior y el exterior.

Figura 6.15 For LoopWhile Loop Ejecuta estos subdiagramas hasta la condicin terminal, recibe un valor Booleano particular. El valor Booleano depende de la continuacin del comportamiento del While Loop. Click derecho el condicionamiento del terminal y seleccione Stop si es Verdad o Contine es verdad para el men corto.

Figura 6.16 While LoopCase Structure Tiene uno o ms subdiagramas, o casos, exactamente uno de los cuales se ejecuta cuando la estructura se est ejecutando. El valor alambrado al selector terminal determina cual caso se va a ejecutar y cual caso puede ser Booleano, string, integer, o tipo de enumeracin. El clic derecho al borde de la estructura adiciona o borra casos. El Labeling tool se usa para entrar valores en el caso del rtulo selector de casos y configuracin, los valores escogen para cada caso.

Figura 6.17 Case StructureWait Until Next ms Multiple.Espera hasta el valor de los milisegundos, multiplicando por millisecond multiple especificado. Se usa esta funcin para actividades de sincronizacin. Se puede utilizar esta funcin en un loop de control:

Figura 6.18 Wait Until Mean Computa el mean (significado) de los valores de la secuencia de entrada X.

Figura 6.19 MeanOperaciones Numricas Realiza operaciones numricas.

Figura 6.20 Operaciones numricasPeak Detector (detector de picos)Detector de Picos: Encuentra la localizacin, amplitud y segundas derivadas de picos o valles en los arreglos de entrada.Figura 6.21 Peak DetectorX es la entrada que contiene el dato a ser procesado. El dato puede ser un arreglo individual o un bloque de datos. Los bloques de datos consecutivos son tiles para arreglos largos de datos o para procesos en tiempo real. Avisa que en procesamiento de tiempo real, no son detectados los picos/valles hasta aproximadamente Ancho/2 puntos de un dato pasado el pico o valle.Threshold (lmite) rechaza picos y valles muy pequeos. Para picos, el VI ignora cualquier pico encontrado con una medida de amplitud que sea menor al lmite. El VI ignora valles si la medida de la hondonada en mayor que el lmite.width especifica el nmero de data points consecutivos a usar en los mnimos cuadrados cuadrticos ajustados. width est ajustado al valor mayor o igual a 3. El valor podra ser no ms de un cuarto del ancho de los picos/valles y podra ser mucho ms grande (pero >2) para un dato libre de picos. peaks/valleys: especifica si los VI son vistos como picos (positive-going bumps) o valles (negative-going bumps). La asignacin para este control es 0 (picos) y 1 (valles).initialize, cuando est en TRUE, especifica el procesamiento del primer bloque de datos. El VI requiere alguna asignacin interna al comenzar la propia operacin. Si se desea nicamente el proceso de un bloque de datos, autoriza y empieza a desalambrar, o asigna por defecto el estado a TRUE. Si se desea el proceso consecutivo de los bloques de datos, se inicializa en TRUE para el primer bloque y falso para todos los otros bloques de datos.end of data, cuando se asigna a TRUE, especifica el procesamiento del ultimo bloque de datos. Despus de procesar el ltimo bloque de datos el VI administra los datos internos. Si se desea procesar nicamente un solo bloque de datos, deje desalambrado end of data, o asigne por defecto TRUE. Si se desea procesar bloques de datos consecutivamente, asigne end of data o FALSE para todos hasta el ltimo bloque de datos.# found es el nmero de picos/valles encontrados en los bloques de datos. # found es el tamao de la localizacin de los arreglos, Amplitudes, y 2nd Derivativas.end of data, #found (#encontrado): es el nmero de picos/valles encontradas en las bases de datos. #found es el tamao del arreglo Localizacin, Amplitudes, y 2das Derivadas.Location: (localizacin): contiene la localizacin de los picos/valles encontradas en las bases de datos.Amplitudes (Amplitud): contiene las amplitudes de los picos/valles encontradas en la corriente de la base de datos.2nd Derivatives: (Segundas derivadas): contiene las segundas derivadas de los picos/vallesError: retorna cualquier error advertencia del VI. Refiere a SPEC (Signal Processing Error Codes) para mayor informacin a cerca de esta condicin.Los registros pueden ser pasados por el detector de picos VI como un simple arreglo o como un bloque de datos consecutivos. Este detector de picos VI est basado en un algoritmo que adecua un polinomio cuadrtico a un grupo secuencial de registros. El nmero de registros usado en el acople es especificado por width.Para cada pico o valle, el ajuste cuadrtico es evaluado de forma contraria al nivel lmite. Los picos ms largos que el nivel lmite o valle ms anchos que el nivel lmite son ignorados. picos/valles son detectados nicamente despus de aproximadamente width/2 registros que han sido procesados ms all de la localizacin de picos/valles. Este retardo tiene implicaciones nicamente para procesos de tiempo real. El detector de picos VI podra notificar cuando el primero y el ultimo bloque han pasado por el VI, como el VI puede inicializar y entonces libera datos internos al algoritmo detector de picos.Quieres tener el programa comuncate con www.ni.comGuas prcticas de LabVIEWUna forma prctica y sencilla de introducirse en el lenguaje de LabVIEW.Gua No 1Para dar comienzo al trabajo con LabVIEW se debe ejecutar LabVIEW.exe, sale el plano Block Diagram que es donde se elaborarn los circuitos, para ver como estn quedando en panel frontal se oprimen las teclas Ctrl E y sale Front Panel,La siguiente figura muestra el plano circuital (Block Diagram) o diagrama de bloques,

La siguiente figura muestra el plano frontal (Front Panel),

Un ejemplo muy bsico, realizar una suma elemental entre dos variables1. insertar el operador suma 2. insertarle entre los nodos de entrada dos controles3. insertar en la salida un indicadorel circuitos en el diagrama de bloques quedar

En el plano frontal se ver de la siguiente forma:

Al hacer clic sobre uno de los controles variar el nmero de entrada y se sumar con el otro y en x+y se ver el resultado.as sucesivamente, se pueden realizar operaciones y programas sin lmites. Gua No 2Un programa que muestre en instrumentos virtuales el voltaje variable y la corriente resultanteDescripcin: 1. Dibujar el siguiente circuito en Paint (.bmp)

2.Una vez resuelto a mano el circuito elctrico, resolverlo en lenguaje grfico en el Diagrama de Conexiones de LabVIEW

Procedimiento:1. Iniciar el programa LabVIEW, (New VI) 2. Copiar y pegar en el panel frontal de LabVIEW el circuito hecho en Paint. 3. Para pasar de una ventana a otra (Panel o Diagrama de Conexiones) se presionan las teclas Ctrl E. 4. En el diagrama de conexiones de LabVIEW hace clic con la tecla derecha del Mouse y aparece la paleta de herramientas de funciones, all escoge el icono de Numeric donde aparecern las funciones, hace clic sobre la que necesite aparece la mano con la funcin deseada, hace de nuevo clic sobre el punto que desea posicionarla. 5. Presionando la barra espaciadora hasta que salga la carreta de hilo (cableador) hace clic en las puntas de las funciones y la lleva hasta el conector donde desee conectarla (hasta que parpadee la punta) hace de nuevo clic y queda conectada, en las patas de la primeras funciones haga clic con la tecla derecha del Mouse aparece un men escoge Create luego Control, cambiar el nombre con (AI) de la paleta de herramientas. 6. Presione ctrl E pasa al panel frontal y arregla la figura para que quede la siguiente forma: En la barra men oprima la flecha para correrlo.

Gua No 31. Realizar un programa en lenguaje grfico, que maneje secuencias lgicas como un ciclo FOR Descripcin: 1. Realizar una sumatoria con la siguiente condicin 2. Una variable i, que vare entre 0 y 50 3. Que se incremente en 2 4. Que la respuesta de 50 Procedimiento:1. Se procede indicando la forma del ciclo For: (i=0; i=10; i = i-5) a. Tres constantes (N=19), (100) constante divisor y el incremento en por 5. b. Un sumador (Add) para ir sumando la variable y divisor (Divide) para dividir el incremento de la variable. Gua No 51. Realizar un programa en lenguaje grfico, que maneje secuencias lgicas como un ciclo Estructura Case, este consta de: uno o ms subdiagramas o Cases, exactamente uno de los cuales se ejecuta cuando la estructura se est ejecutando, el selector determina que caso se ejecuta, y puede ser Booleano, (String) una cadena, un nmero entero, o un tipo de enumerador, el Clic derecho del borde de la estructura adiciona o borra casos, usando la herramienta del Label para entrar valores. Descripcin: 1. Construir un termmetro digital virtual 2. Que seleccione entre grados Celsius y Grados Fareng. 3. Seleccionar un indicador de barra como lo muestra la figura del panel frontal. 4. Que el rango este entre 0 y 100 Procedimiento:1. Se procede introduciendo una estructura Case para convertir el sistema de grado. N-32*5/9 en el caso (true), en el caso (false) es constante. 2. Se le introduce un Demo Voltaje Read.vi antes de la estructura, con canal en 0 y el identificador del Board en 3. 3. Debe guiarse por el diagrama de la figura. Para verificar que se necesita.

Seleccione el valor de False y trac

Gua No 61. Realizar un programa en lenguaje grfico, que maneje un men selectivo, que a su vez maneje secuencias lgicas como un ciclo For, as mismo disear un Osciloscopio que rena todo lo anterior. Descripcin: 1. Construir un Men con selector virtual. 2. Hacer un Ciclo For con diferentes tipos de generadores de onda. 3. Insertar un graficador que muestre el tipo de onda seleccionado. 4. Insertar un potencimetro que vare la amplitud. Procedimiento:1. Se procede introduciendo una estructura For para generar los datos de cada onda, y en l se integran los diferentes tipos de onda. 2. Debe guiarse por el diagrama de la figura. Para verificar que se necesita. 3. Para mezclar las grficas inserte un Build Array y para entregarlas al graficador un Index Array

Gua No 71. Realizar un programa en lenguaje grfico, que maneje un men selectivo, que a su vez maneje secuencias lgicas como un ciclo While Loop, que a su vez maneje un Case Structure, as mismo disear un Osciloscopio que maneje varios tipos de onda. Descripcin: 1. Construir un ciclo Case Structure el cual albergue un Sine Waveform.vi, manejando 4 tipos de onda. 2. A la salida del Ciclo Case Structure insertar un graficador. 3. a la estrada del ciclo Case Structure Insertar 5 selectores para las diferentes funciones. 4. Debe guiarse por el diagrama de la figura. Para verificar que se necesita.

Gua No 81. Realizar un programa en lenguaje virtual, que muestre un avin deslazndose sobre una pista, mostrando as, el montaje de figuras sobre los (Slider) desplazadores. Descripcin: 1. Dibujar un avin en Paint, resaltarlo (Ctrl E), luego copiarlo (Ctrl C), Posicionado en el Panel de LabVIEW, hacer Clic derecho, escoger (Classic Controls), luego Numeric, all mismo (Horizontal Pointer Slider), extenderlo (estirarlo de la punta) a lo largo de la pantalla. 2. Colocar el puntero del Mouse sobre el cursor del Slider, hacer clic exactamente sobre este, en el men se escoge la opcin (Advanced), al frente se escoge (Customize), seleccionar en la barra superior una llave cuya funcin es (Edit Mode), hacer Clic sobre esta, saliendo resaltado todo sobre el Slider, sobre el cursor del Slider hacer Clic derecho y se hace Clic sobre (Import Picture), y luego se hace Clic derecho sobre el avin y se hace Clic Izq sobre (Picture Item..) escogiendo el de la derecha. (), luego se puede salir sin grabar, pero poner Yes a la pregunta Replace the original control Slider by control presionar. 3. Para hacerle un control sencillo simplemente se selecciona el Connect Wire (carreta hiladora) del (Tools Palette) sobre la salida del Slider en el diagrama de conexiones, haciendo Clic derecho, se escoge (Create) y luego (Indicador). 4. Se ha duplicado el Slider, con el (Operate Value) del (Tools Palette; la manito) mirar cual de los dos desplaza el otro y sobre este se hace Clic derecho escogiendo (Replace) del Men (Numeric) se escoge en este caso (Knob). 5. Al correrlo solo desplaza el cursor del (Knob). Y el avin se desplazar. La primera figura muestra el diagrama de conexiones entre el (Knob) y el (Slider)La segunda parte muestra panel. Gua No 91. manejar los puertos del computador para la entrada y salida de datosEJERCICIO 8.1 ESCRIBIR DATOS EN EL PUERTO PARALELOSe pretende con este ejercicio aprender la forma de escribir datos en el puerto paralelo y como utilizar la funcin outport.vi1. Conectar el mdulo entrenador de puerto paralelo.2. Construir un VI con las siguientes caractersticas.Figura 10.1. Panel y diagrama del ejercicio 10.1.La direccin 0x378 segn la tabla de la figura 10.2, seria el bus de datos para LPT2. Sin embargo, y aunque esta es la informacin oficial entregada por IBM, en la mayora de los PCs, el puerto LPT1 viene configurado con las direcciones que aparecen como de LPT2.Por tanto se considerara que LPT1 posee las siguientes direcciones: Bus de Datos: 0x378, Bus de Estado: 0x379, Bus de control: 0x37A. Se recomienda verificar y/o cambiar la direccin base del puerto paralelo.3. Correr continuamente la aplicacin.4. Observar la salida del registro 0x378 en el entrenador mientras el dato en el control VALOR desde 0 hasta 255. Identifique que LED corresponde al bit MSB y cual al LSB.5. Repetir 3 y 4 para la direccin 0x37A. Identifique MSB y LSB.A continuacin se presenta el ejercicio en lenguaje C:Tabla 10.2La funcin outportb() enva un byte al puerto especificado. El primer parmetro de la funcin es la direccin del puerto a la cual se va a escribir. El segundo parmetro es el valor del byte enviado.EJERCICIO 10.2. LEER EN EL BUS DE ESTADO DEL PUERTO PARALELOSe busca con este ejercicio aprender la forma de leer datos enviados por el puerto paralelo y como utilizar la funcion inport.1. Conecte el modulo.2. Construir un VI con las siguientes caractersticas

Figura 10.2. Panel y diagrama del ejercicio 10.2.3. Configure un dato en la entrada del puerto 0x379 del entrenador.4. Corra la aplicacin y observe el valor mostrado en VALOR.5. Repita 3 y 4 con diferentes valores de entrada y observe la equivalencia entre el numero binario ingresado en el entrenador y el hexadecimal en el valor indicado VALOR.A continuacin se desarrolla el mismo ejercicio pero en C:La funcin inportb() lee un byte del puerto especificado. La funcin principal seest utilizando para mostrar el valor del byte en pantalla.EJERCICIO 3.3 LEER EL BUS DE DATOS DEL PUERTO PARALELO1. Activar la propiedad bidireccional del bus de datos.Para esto se necesita colocar en 1 el bit cinco del bus de control 0x37A, lo que equivale al decimal 32 a esta direccin.

Tabla 10.3. bit 5 de 0x37A en uno.Recordar que esta operacin debe realizarse antes de entrar datos en el bus. 2. Vari los datos de entrada en el bus de datos mientras utiliza el VI de la figura 10.3 para leer registro 0x378.3. Comparar las lecturas con los valores binarios colocados en el bus de datos.Recuerde que para configurar de nuevo como salida el bus de datos, debe enviar un decimal 64 al bus de control 0x37A. Tabla 10.3Gua No 10Construya en simulador de los clculos del QTcLa siguiente figura muestra el plano circuital en LabVIEW del simulador del QTc

La siguiente figura muestra el simulador como debe quedar Se oprimen las teclas Ctrl E y se hace click sobre las flechita del panel fron

Algunos subcuadros de fondo se pueden insertar en la ventana decorations.


Recommended