introducción a qeues

18
7/21/2019 Introducción a Qeues http://slidepdf.com/reader/full/introduccion-a-qeues 1/18  N N I L L a a b b V V I I E E W Introducción a Queues

Upload: amadeoam

Post on 06-Mar-2016

1 views

Category:

Documents


0 download

DESCRIPTION

Labview

TRANSCRIPT

Page 1: Introducción a Qeues

7/21/2019 Introducción a Qeues

http://slidepdf.com/reader/full/introduccion-a-qeues 1/18

 

NNII LLaabbVVIIEEWW 

Introducción a Queues

Page 2: Introducción a Qeues

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.

Page 3: Introducción a Qeues

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

Page 4: Introducción a Qeues

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

Page 5: Introducción a Qeues

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

Page 6: Introducción a Qeues

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

Page 7: Introducción a Qeues

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

Page 8: Introducción a Qeues

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.

Page 9: Introducción a Qeues

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.

Page 10: Introducción a Qeues

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

Page 11: Introducción a Qeues

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. 

Page 12: Introducción a Qeues

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

Page 13: Introducción a Qeues

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 

Page 14: Introducción a Qeues

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.

Page 15: Introducción a Qeues

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.

Page 16: Introducción a Qeues

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

Page 17: Introducción a Qeues

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

Page 18: Introducción a Qeues

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/