introducción a qeues
DESCRIPTION
LabviewTRANSCRIPT
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 1/18
NNII LLaabbVVIIEEWW
Introducción a Queues
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 2/18
Worldwide Technical Support and Product Informationni.com
National Instruments Corporate Headquarters11500 N Mopac Expwy Austin, Texas 78759-3504 USA Tel: 512 683 0100
Worldwide OfficesAndean and Caribbean +58 212 503-5310, Argentina 0800 666 0037, Australia 1800 300 800, Austria 43 662 45 79 90 0, Belgium 320 2 757 00 20, Brazil 55 11 3262 3599, Canada 800 433 3488, Chile 800 532 951, China 86 21 5050 9800, Czech Republic/Slovakia
420 224 235 774, Denmark 45 45 76 26 00, Finland 358 0 9 725 725 11, France 33 0 1 48 14 24 24, Germany 49 89 741 31 30,Hungary 36 23 501 580, India 1 800 425 7070, Ireland 353 0 1867 4374, Israel 972 3 6393737, Italy 39 02 413091, Japan 81 3 54722970, Korea 82 02 3451 3400, Lebanon 961 0 1 33 28 28, Malaysia 1800 887710, Mexico 01 800 010 0793, Netherlands 31 0 348 433466, New Zealand 0800 553 322, Norway 47 0 66 90 76 60, Poland 48 22 3390150, Portugal 351 210 311 210, Russia 7 495 783 6851, Singapore 1800 226 5886, Slovenia/Croatia, Bosnia/Herzegovina, Serbia/Montenegro, Macedonia 386 3 425 42 00, South Africa27 0 11 805 8197, Spain 34 91 640 0085, Sweden 46 0 8 587 895 00, Switzerland 41 56 200 51 51, Taiwan 886 2 2377 2222,Thailand 662 278 6777, Turkey 90 212 279 3031, U.K. 44 0 1635 523545, Uruguay 0004 055 114To comment on National Instruments documentation, refer to the National Instruments Web site at ni.com/info and enter theinfo code feedback.© 2013 National Instruments Corporation. All rights reserved.
Important InformationWarrantyThe media on which you receive National Instruments software are warranted not to fail to execute programming instructions, due to defects in materials andworkmanship, for a period of 90 days from date of shipment, as ev idenced by receipts or other documentation. National Instruments will, at its option, repairor replace software media that do not execute programming instructions if National Instruments receives notice of such defects during the warranty period.National Instruments does not warrant that the operation of the software shall be uninterrupted or error free. A Return Material Authorization (RMA) number
must be obtained from the factory and clearly marked on the outside o f the package before any equipment will be accepted for warranty work. NationalInstruments will pay the shipping costs of returning to the owner parts which are covered by warranty. National Instruments believes that the information inthis document is accurate. The document has been carefully reviewed for technical accuracy. In the event that technical or typographical errors exist,National Instruments reserves the right to make changes to subsequent editions of this document without prior notice to holders of this edition. The readershould consult National Instruments if errors are suspected. In no event shall National Instruments be liable for any damages arising out of or related to thisdocument or the information contained in it. EXCEPT AS SPECIFIED HEREIN, NATIONAL INSTRUMENTS MAKES NO WARRANTIES, EXPRESS OR IMPLIED, ANDSPECIFICALLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. CUSTOMER’S RIGHT TO RECOVER DAMAGES CAUSEDBY FAULT OR NEGLIGENCE ON THE PART OF NATIONAL INSTRUMENTS SHALL BE LIMITED TO THE AMOUNT THERETOFORE PAID BY THECUSTOMER. NATIONAL INSTRUMENTS WILL NOT BE LIABLE FOR DAMAGES RESULTING FROM LOSS OF DATA, PROFITS, USE OF PRODUCTS,OR INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. This limitation of the liability of NationalInstruments will apply regardless of the form of action, whether in contract or tort, including negligence. Any action against National Instruments must bebroughtwithin one year after the cause of action accrues. National Instruments shall not be liable for any delay in performance due to causes beyond its reasonablecontrol. The warranty provided herein does not cover damages, defects, malfunctions, or service failures caused by owner’s failure to follow the NationalInstruments installation, operation, or maintenance instructions; owner’s modification of the product; owner’s abuse, misuse, or negligent acts; and powerfailure or surges, fire, flood, accident, actions of third parties, or other events outside reasonable control.
CopyrightUnder the copyright laws, this publication may not be reproduced or transmitted in any form, electronic or mechanical, including photocopying, recording,storing in an information retrieval system, or translating, in whole or in part, without the prior written consent of National Instruments Corporation. NationalInstruments respects the intellectual property of others, and we ask our users to do the same. NI software is protected by copyright and other intellectual
property laws. Where NI software may be used to reproduce software or other materials belonging to others, you may use NI software only to reproducematerials that you may reproduce in accordance with the terms of any applicable license or other legal restriction. BSIM3 and BSIM4 are developed by theDevice Research Group of the Department of Electrical Engineering and Computer Science, University of California, Berkeley, and copyrighted by the Universityof California.
TrademarksCompactDAQ, CompactRIO, LabVIEW, National Instruments, and NI, ni.com are trademarks of National Instruments Corporation. Refer to the Terms of Usesection on ni.com/legal for more information about National Instruments trademarks. Other product and company names mentioned herein are trademarks ortrade names of their respective companies.
PatentsFor patents covering National Instruments products, refer to ni.com/patents.Some portions of this product are protected under United States Patent No. 6,560,572.
WARNING REGARDING USE OF NATIONAL INSTRUMENTS PRODUCTS(1) NATIONAL INSTRUMENTS PRODUCTS ARE NOT DESIGNED WITH COMPONENTS AND TESTING FOR A LEVEL OF RELIABILITY SUITABLEFOR USE IN OR IN CONNECTION WITH SURGICAL IMPLANTS OR AS CRITICAL COMPONENTS IN ANY LIFE SUPPORT SYSTEMS WHOSEFAILURE TO PERFORM CAN REASONABLY BE EXPECTED TO CAUSE SIGNIFICANT INJURY TO A HUMAN.(2) IN ANY APPLICATION, INCLUDING THE ABOVE, RELIABILITY OF OPERATION OF THE SOFTWARE PRODUCTS CAN BE IMPAIRED BYADVERSE FACTORS, INCLUDING BUT NOT LIMITED TO FLUCTUATIONS IN ELECTRICAL POWER SUPPLY, COMPUTER HARDWAREMALFUNCTIONS, COMPUTER OPERATING SYSTEM SOFTWARE FITNESS, FITNESS OF COMPILERS AND DEVELOPMENT SOFTWARE USED TO
DEVELOP AN APPLICATION, INSTALLATION ERRORS, SOFTWARE AND HARDWARE COMPATIBILITY PROBLEMS, MALFUNCTIONS ORFAILURES OF ELECTRONIC MONITORING OR CONTROL DEVICES, TRANSIENT FAILURES OF ELECTRONIC SYSTEMS (HARDWARE AND/ORSOFTWARE), UNANTICIPATED USES OR MISUSES, OR ERRORS ON THE PART OF THE USER OR APPLICATIONS DESIGNER (ADVERSE FACTORSSUCH AS THESE ARE HEREAFTER COLLECTIVELY TERMED “SYSTEM FAILURES”). ANY APPLICATION WHERE A SYSTEM FAILURE WOULD CREATE A RISK OF HARM TO PROPERTY OR PERSONS (INCLUDING THE RISK OF BODILY INJURY AND DEATH) SHOULD NOT BE RELIANTSOLELY UPON ONE FORM OF ELECTRONIC SYSTEM DUE TO THE RISK OF SYSTEM FAILURE. TO AVOID DAMAGE, INJURY, OR DEATH, THEUSER OR APPLICATION DESIGNER MUST TAKE REASONABLY PRUDENT STEPS TO PROTECT AGAINST SYSTEM FAILURES, INCLUDING BUTNOT LIMITED TO BACK-UP OR SHUT DOWN MECHANISMS. BECAUSE EACH END-USER SYSTEM IS CUSTOMIZED AND DIFFERS FROMNATIONAL INSTRUMENTS' TESTING PLATFORMS AND BECAUSE A USER OR APPLICATION DESIGNER MAY USE NATIONAL INSTRUMENTSPRODUCTS IN COMBINATION WITH OTHER PRODUCTS IN A MANNER NOT EVALUATED OR CONTEMPLATED BY NATIONAL INSTRUMENTS,THE USER OR APPLICATION DESIGNER IS ULTIMATELY RESPONSIBLE FOR VERIFYING AND VALIDATING THE SUITABILITY OF NATIONALINSTRUMENTS PRODUCTS WHENEVER NATIONAL INSTRUMENTS PRODUCTS ARE INCORPORATED IN A SYSTEM OR APPLICATION,INCLUDING, WITHOUT LIMITATION, THE APPROPRIATE DESIGN, PROCESS AND SAFETY LEVEL OF SUCH SYSTEM OR APPLICATION.
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 3/18
Contenido
Requerimientos ..................................................................................................... 4
Software ...................................................................................................... 4
Ejercicio 1. Comunicación entre ciclos paralelos ....................................................... 5
Ejercicio 2. Overflow y Underflow ....................................................................... 11
Referencias ........................................................................................................ 18
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 4/18
Requerimientos
Software
NI LabVIEW 13.0 o superior
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 5/18
Ejercicio 1. Comunicación entre ciclos paralelos
Objetivo
Aprovechar el uso de queues para comunicar dos ciclos paralelos
Introducción
NI LabVIEW cuenta con la capacidad de trabajar con procesos de forma paralela,
permitiendo el desarrollo de aplicaciones más complejas y robustas. Para poder implementar
este tipo de técnicas, solo basta con utilizar dos estructuras cíclicas de forma separada en el
mismo programa, como se muestra en la Figura 1.
Figura 1. Programación de ciclos en paralelo.
El código programado en NI LabVIEW se ejecutará dependiendo sea el flujo de datos,
pero al estar trabajando con ciclos en paralelo, se dificulta poder establecer conexión entre 2
o más ciclos en paralelo. Por lo que se utilizan los Queues, los cuales son capaces de
almacenar varios valores de cualquier tipo de datos. Siguen el principio FIFO (First In First
Out), lo cual nos indica que el primer elemento que se ingrese, será el primer elemento en
salir, sin importar el número de elementos almacenados. El comportamiento FIFO se muestra
en la Figura 2.
Figura 2. Comportamiento FIFO
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 6/18
Desarrollo
1. Abra NI LabVIEW , y en la parte superior seleccione el menú de Help y posteriormentela opción de Find Examples como se muestra en la Figura 3.
Figura 3. Abrir el buscador de ejemplos de LabVIEW
2. En la ventana del buscador de ejemplos de LabVIEW , seleccionar la pestaña de Search,y posteriormente escribir la palabra Queue en el campo de búsqueda, dar clic enSearch. Deberán de mostrarse varios ejemplos, como en la Figura 4.
Figura 4. Ejemplos de concepto Queue en LabVIEW
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 7/18
3. Abrir el ejemplo llamado Simple Queue.vi dando doble clic en el nombre, el panelfrontal del VI deberá de mostrarse como en la Figura 5.
Figura 5. Panel frontal de Simple Queue.vi
4. Para entender el funcionamiento del VI, abrir el diagrama de bloques con el comandoCtrl+E. El diagrama de bloques de deberá mostrar como en la Figura 6.
Figura 6. Diagrama de bloques Simple Queue.vi
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 8/18
5. En la Figura 6 encontramos dos ciclos en el código, que estarán ejecutándose de formaparalela. El primer ciclo, ubicado en la parte superior, será encargado de generarnúmeros al azar e irlos desplegando en la gráfica llamada Data 1 como se muestra enla Figura 7.
Figura 7. Generación y Graficación de valores aleatorios
6. Podemos ver en la Figura 8 que en nuestro diagrama de bloques comenzamosinicializando dos Queues con la función de Obtain Queue. El primer queue generadoserá el de la condición de stop, posteriormente veremos su aplicación. El segundo
queue generado será el de data, el cual posteriormente almacenará los númerosgenerados de forma aleatoria.
Figura 8. Inicialización de Queues.
Es importante mencionar, que para poder generar un queue nuevo, es necesarioindicar que tipo de variables va a almacenar, esto lo realizaremos con una constante,cuyo valor no será relevante. El queue de stop almacenará valores booleanos, por loque se inicializa con una constante booleana. El queue de datos almacenará valoresenteros, y se inicializa con una constante entera.
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 9/18
7. Como mencionamos previamente, el primer ciclo será encargado de generar valoresaleatorios, además de desplegar el valor aleatorio en la gráfica de Data 1, loalmacenará en el queue de data con la función de Enqueue Element, como se muestraen la Figura 9.
Figura 9. Almacenar valores en queues.
Es importante mencionar que en el mismo ciclo, se almacenará el valor leído del botónde Stop en el Queue de la condición de paro.
8. En el segundo ciclo de nuestro diagrama de bloques, se extraerán los elementosguardados en los queues con la función de Dequeue Element como se muestra en laFigura 10.
Figura 10. Extrayendo elementos de queues.
Es importante mencionar, que además de leer el queue de datos y de desplegarlo en lagráfica llamada Data 2, también se estará leyendo el queue de la condición de paro, elcual, como podemos ver en la Figura 9, almacena la lectura del botón de stop. Por loque si el usuario oprime el botón de stop, detendrá la ejecución de los dos ciclosparalelos del programa.
9. Por último, es recomendable liberar los recursos de memoria utilizados por los queuescon la función de Release Queue. En la Figura 11 observamos el uso de esta funciónpara cada queue. El vi de Simple Error Handler indicará al usuario si es que se generó
algún error en el programa en una pantalla de Windows.
Figura 11. Liberar recursos de memoria y manejo de errores.
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 10/18
10. Después de haber entendido la función de cada elemento de nuestro diagrama debloques, procederemos a regresar al panel frontal con el comando de Ctrl+E y a correrel programa.
11. Al ver la ejecución del programa podemos notar como las gráficas Data 1 y Data 2 segeneran casi al mismo tiempo y con los mismos valores, aún cuando se están
generando los valores aleatorios solo en el primer ciclo, como se muestra en la Figura12.
Figura 12. Panel frontal en funcionamiento
Con la demostración de este ejemplo en LabVIEW, concluimos la explicación del
funcionamiento básico de Queues.
FIN DEL EJERCICIO
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 11/18
Ejercicio 2. Overflow y Underflow
Objetivo
Comprender conceptos de Overflow y Underflow en el uso de Queues
Introducción
Al estar trabajando con Queues, es importante conocer que se puede trabajar en tres
distintos modos:
Overflow : Se agregan elementos al queue más rápido de lo que se extraen, por
lo que si no se modifica la situación, nunca se podrá vaciar el queue y se
corre el riesgo de saturar la memoria asignada.
En flujo: Se agregan elementos al queue a la misma velocidad con la que se
extraen, por lo que el queue se comporta como un canal.
Underflow : Se extraen elementos más rápido de lo que se agregan, por lo que una
vez vaciado el queue, la velocidad de extracción no podrá ser mayor a
la de ingreso.
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 12/18
Desarrollo
1. Abra NI LabVIEW , y en la parte superior seleccione el menú de Help y posteriormentela opción de Find Examples como se muestra en la Figura 13.
Figura 13. Abrir el buscador de ejemplos de LabVIEW
2. En la ventana del buscador de ejemplos de LabVIEW , seleccionar la pestaña de Search,y posteriormente escribir la palabra Queue en el campo de búsqueda, dar clic enSearch. Deberán de mostrarse varios ejemplos, como en la Figura 14.
Figura 14. Ejemplos de concepto Queue en LabVIEW
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 13/18
3. Abrir el ejemplo llamado Queue Overflow and Underflow.vi dando doble clic en elnombre, el panel frontal del VI deberá de mostrarse como en la Figura 15.
Figura 15. Panel frontal de Queue Overflow and Underflow.vi
4. Para entender el funcionamiento del VI, abriremos su diagrama de bloques con elcomando de Ctrl+E. El diagrama de bloques deberá mostrarse como en la Figura 16.
Figura 16. Diagrama de bloques de Queue Overflow and Underflow.vi
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 14/18
5. En la Figura 17, observamos que al principio del programa inicializaremos un queuepara valores numéricos y que podrá almacenar hasta 50 elementos con la función deObtain Queue.
Figura 17. Inicialización de Queue.
6. Posteriormente en nuestro diagrama de bloques, encontramos el ciclo de Enqueue, elcual, al igual que el ejercicio 1, generará valores aleatorios y los desplegará en unagráfica. Además los ingresará en el queue como se muestra en la Figura 18. El ciclo deDequeue extraerá los valores y los desplegará en la segunda gráfica.
Figura 18. Ciclos para ingresar y extraer elementos del Queue
Es importante mencionar, que este VI tiene la capacidad de modificar las velocidadesde ingreso y extracción de elementos del Queue. Teniendo dos velocidades quepueden ser configurables durante la ejecución del programa.
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 15/18
7. En la Figura 19, encontramos que al final de nuestro diagrama de bloques tenemos
otro ciclo, el cual, con la función de Get Queue Status nos entregará el número deelementos contenidos en el queue.
Figura 19. Estado del Queue.
Además en la Figura 19 observamos que al finalizar el ciclo de queue status, seliberarán los recursos en memoria que ocupaba el queue, y posteriormente se hará elmismo manejo de errores que en el Ejercicio 1.
8. Para ver el programa en funcionamiento, regresaremos al panel frontal y correremosel programa.
9. Con los controles de velocidad podemos manipular nuestro queue para que opere encualquiera de los 3 modos mencionados previamente.
10. Si dejamos los controles por default, como se muestra en la Figura 20, el queuefuncionará en flujo, ya que la velocidad de ingreso de elementos es la misma que la deextracción, en éste caso ningún elemento se queda en el buffer interno, ya que desde
que se inició el programa, las dos velocidades son iguales.
Figura 20. Queue operando en flujo.
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 16/18
11. Si modificamos la velocidad de ingreso de elementos, variando el valor del campo deenqueue speed a Fast, podemos ver que el queue opera en modo de overflow , yvisualizar la cantidad de elementos que se van almacenando en el queue en el primerindicador.
Figura 21. Queue en modo de overflow
12. Modificar la velocidad de extracción de elementos, cambiando el valor del campo deDequeue Speed por Fast. El queue volverá a operar en flujo, ya que tendrá la mismavelocidad de extracción de elementos como de ingreso de elementos. Solo que adiferencia de la vez pasada, ahora se quedará un número constante de elementos enel queue como se muestra en la Figura 22.
Figura 22. Queue operando en flujo
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 17/18
13. Para poder finalizar este ejercicio, nos falta ver el queue en condiciones deunderflow , para lo cual modificaremos la velocidad de ingreso de elementos,cambiando el valor del campo llamado Enqueue Speed por Slow . Podemos observar,que los elementos almacenados en el queue, van disminuyendo, y al llegar a cero, lavelocidad de extracción de elementos se iguala a la de ingreso de elementos.
Figura 23. Queue en modo underflow
FIN DEL EJERCICIO
7/21/2019 Introducción a Qeues
http://slidepdf.com/reader/full/introduccion-a-qeues 18/18
Referencias
1. NI LabVIEW
http://www.ni.com/labview/esa/