From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

adquirir formas de onda con usb-6009

Quiero adquirir mediante LabVIEW 7.1 y la tarjeta USB-6009 una señal senoidal de amplitud 3,3Vp y mostrar el valor eficaz, frecuencia y amplitud de dicha señal. Además quiero que cuando se produzca alguna variación en los parametros amplitud o frecuencia se almacena la forma de onda de la señal para posteriormente poderla visualizar.
 
La primera parte de adquisición y visualización de parametros si he logrado hacerla, pero en la parte de captura de formas de onda se genera el siguiente error: Error -200279 occurred at DAQmx Read (Analog 1D Wfm NChan NSamp).vi. Esta captura la intento realizar mediante un trigger por software imitando el ejemplo software-trigger incluido en LabVIEW 7.0.
 
Otra duda que me surge es la forma de almacenar dichas formas de onda, no se si lo debo de hacer en una matriz o en un archivo. Teniendo en cuenta que posteriormente voy a necesitar mostrar las formas de onda y analizarlas para obtener ciertos parámetros.
 
Adjunto el programa que estoy realizando.
 
Muxas Gracias.
0 kudos
Mensaje 1 de 5
3.283 Vistas

Hola Fran_M, Error -200279 el error que estas obteniendo es porque los datos que están tomando ya no están en el buffer. Una recomendación que te daría es que solo utilices uno de los task que tienes de DAQ (el de arriba) y sobre los datos que estés obteniendo ahí utilices el VI Express de Trigger and Gate, con este aprovechas los datos que tomaste y puedes usar la parte de trigger para ajustar tu señal.

Saludos

 

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 2 de 5
3.280 Vistas
Benjamin gracias por responder.
 
Tengo otra duda con el VI Express Trigger and Gate, quiero utilizar Manual Trigger en la ayuda pone que esta señal controla el inicio del trigger ignorando Trigger start. Pero como se controla la finalización del trigger, es decir Trigger stop.
 
Además, si quiero iniciar el trigger cuando se produzca una variación en frecuencia como lo puedo hacer. Ya que Trigger and Gate solo considera la amplitud como parámetro y no la frecuencia.
 
Muchas Gracias.-
0 kudos
Mensaje 3 de 5
3.265 Vistas

Otra cosita... he hecho lo que me dijiste de utilizar un solo task y se sigue produciendo el mismo error cuando llevo un rato ejecutando el programa ¿Es por qué utizo una velocidad de muestreo y un número de puntos muy elevados (100 puntos, 1000 hz)? ¿Cómo puedo aumentar el tamaño del buffer para que este error no se produzca?

Error -200279 occurred at DAQmx Read (Analog 1D Wfm NChan NSamp).vi

Possible reason(s):

Attempted to read samples that are no longer available. The requested sample was previously available, but has since been overwritten.

Increasing the buffer size, reading the data more frequently, or specifying a fixed number of samples to read instead of reading all available samples might correct the problem.

Property: RelativeTo
Corresponding Value: Current Read Position

Property: Offset
Corresponding Value:

Task Name: _unnamedTask<27>

0 kudos
Mensaje 4 de 5
3.253 Vistas

Hola fran M perdón por tarde en contestar, Mira con respecto a hacer un trigger con frecuencia lo que puedes hacer es convertir la frecuencia a un valor y hacer el trigrer con respecto a este valor en la parte de hardware seria con un convertidor de frecuencia a voltaje.

Con respecto a el error y que se da después de cierto tiempo de la ejecución, debe de ser por la forma en que estas adquiriendo los datos y como estas haciendo el procesamiento de tu señal. Ahora como todo lo tienes en el mismo ciclo, lees datos, los procesas, y sigues leyendo el problema es que no estas leyendo con suficiente velocidad tu buffer y se esta llenando.

Una opción para solucionar esto es una arquitectura Producer/Consumer. Colocas en un ciclo while todo lo que es tu adquisición de datos y mediante el uso de queues pasas los datos a otros ciclo while en el cual se realiza el procesamiento de tu señal. Esto debe de ayudar a eliminar el problema.

En la siguiente página puedes encontrar información de la arquitectura

http://zone.ni.com/devzone/cda/tut/p/id/3023

Para generar los Task en forma manual los puedes generar con el VI de Generate Task.

Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 5 de 5
3.197 Vistas