Discusiones sobre Productos NI

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

Problema con ejecución simultanea demultiples task´s

Saludos!

Nuevamente expreso el problema que tengo pero con una pregunta diferente, para llamar mas la atensión jajajaja

Tal vez piensen que no he intentado solucionarlo pero la verdad es que si le he estado buscando  pero aun no doy con la solución.

 

Estoy realizando un sistema de adquisición de datos en donde un panel principal es el encargado de hacer llamar los VI´s que hacen la adquisición de los canales seleccionados. En el MAX tengo creado un TASK para cada canal (task1-ai0, task2-ai1,...), donde cada uno esta en modo diferencial, rango de -5V a +5V y el modo de adquisición es: 1 sample(on demand).  Cuando ejecuto solamente un canal no hay problema salvo rara excepción que si me marca el mismo error  cuando del panel principal selecciono varios canales para luego ejecutarlos almismo tiempo presionando el boton que manda a ejecutar los VI´s seleccionados. El mensaje de error dice lo siguiente:

ERROR -50103 Ocurrer at DAQmx Read (Analog Wfm 1Chan 1Samp).vi (número del canal)
Posible reasons):
The specified resources is reserved. The operation call not be completed as specified.
Task Name: MyVoltageTask(número del canal)

Pense que talvez se debia a que la tarjeta hace la adquisición de los canales de una manera serial y que como el programa manda a ejecutar al mismo tiempo los canales seleccionados y que por eso me marcaba el error, entonces los subVI´s que mandan llamar a cada canal y que se encuentran dentro de un caso de una estructura de eventos los puse en una "Stacked Sequence Structure" con un tiempo de espera de unos cuantos milesegundos y tambien de dos segungos. A la primera no me marco error, pero en otro intento aparecio el mismo mensaje.
No he encontrado mas información a cerca de esto.

Cada canal tiene dos modos de adquirir datos, uno es con un determinado número de muestras (ciclo for) y el otro es hasta que se presione stop (ciclo while), con ambos pasa el mismo error.

Otra duda mas, ¿a que se debe que en la adquisición aparecen picos de voltaje? porque los checo con el multimetro y en el no aparecen esas variasiones, inclusive hecho andar el programa pero no le conecto fuente y si me marca valores de cero volts, pero derrepente me marca unos valores de 5 volts.
La tarjeta que manejo es una PCI 6025E, y manejo LabVIEW version 8

Gracias por atenderme, estare alpendiente de su respuesta!

0 kudos
Mensaje 1 de 7
3.733 Vistas

Hola Polaks, el problema de recurso compartido se debe a que tu tarjeta es un recurso compartido, todas las tarjetas de la serie e tiene un multiplexor para controlar las entradas analógicas por lo tanto solo un task puede utilizar este recurso al mismo tiempo.

Aunque estés usando un sequence, puede que la secuencia termina antes de que se acaben de tomar las muestras de tu tarjeta. Una mejor opción sobre el usar la sequence es el uso de semáforos. Puedes encontrar un ejemplo muy bueno en Help>>Find Examples>> Semaphores. Estos dejan el recurso bloqueado hasta que lo dejes de usar.

Aun así otra solución todavía mas fácil es meter todos los canales en un solo task. Y por software seleccionar la señal o el numero de muestras.

Con respecto a los picos puede ser ruido, o puede ser que este flojo tu cable. Por lo generar los multimetros no toma las muestras tan rápido, e incluso tiene filtros promedidadores para dar una medición mas exacta, por lo que a lo mejor no alcanza a ver los picos.

Saludos

 

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 2 de 7
3.730 Vistas
De antemano muchas gracias por tu atención!

 
¿Entonces no hay manera de poder manejar los canales con diferentes tasas de muestreo y con diferentes números de muestras a tomar?
Porque eso de los semaforos pues hara que las adquisiciones sean una tras de otra y el tiempo que se supone al que deben tomar las muestras cada canal se incrementará debido a que tienen que esperar su proximo turno, o ¿estoy equivocado? Algo que me confunde un poco es que en en el documendo  322072a.pdf paguína 24-25 que para el scaneo de multiples canales da la recomendación de que es mas exacta si se escanean los canales independientemente y sobre la mensión que hace sobre la tasa de muestreo:

Due to the previously described limitations of settling times resulting from
these conditions, multiple-channel scanning is not recommended unless
sampling rates are low enough or it is necessary to sample several signals
as nearly simultaneously as possible. The data is much more accurate and
channel-to-channel independent if you acquire data from each channel
independently (for example, 100 points from channel 0, then 100 points
from channel 1, then 100 points from channel 2, and so on.)

¿Hay tarjetas que si prodrián hacer esto? ¿El switcheo que hace la tarjeta lo hace solo para los canales seleccionados o siempre lo hace para todos aunque no se hayan escogido?

Gracias y hasta la proximá!

0 kudos
Mensaje 3 de 7
3.717 Vistas

Hola Polaks, si con los semaforos es una adquisición atrás de otra. y no tienes un muestreo simultaneo,  aunque todos tus canales estén en el mismo task no vas a lograr un muestreo completamente simultaneo mientras trabajes con tarjetas de la serie M o E, el desfase entre tu primer y ultimo canal aumenta mientras mas canales tiene eso es lo que te indica ese documento. Sin embargo para la mayoría de las adquisiciones, el desfase que hay de un canal a otro no es considerable.

Para poder tener distintos sample rates y números de muestras con una tarjeta de serie M  lo que puedes hacer es configuras tu task a que tome los datos a el mayor samplig rate  numero de muestras necesarios y ya en software con VIs como Resample o Gate and triger puedes limpiar tus señales a que queden como lo necesitas.

Además de esto contamos con tarjetas de la serie S estas tarjetas tienen un converitodor ADC por cada canal, por lo que pueden trabajar en forma independiente.

Los siguientes links te pueden ser de utilidad:

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

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

http://sine.ni.com/nips/cds/view/p/lang/en/nid/10955

También si quieres cambiar el sampling rate durante la ejecución lo que puedes hacer es le dices a la medición que el reloj de adquisición lo tome de un contador y puedes modificar la frecuencia del contador

Saludos

 

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 4 de 7
3.714 Vistas

Que tal Benjamin!

Muchas gracias por tu ayuda y disculpa que no te haya agradecidon antes.

Conrrespecto a lo comentado opte por utilizar un task para todos los canales, pero segui con la espina del programa que ejecuta los canales por separado, asi que hice otros intentos y cambien el instrumento virtual  "DAQmx Read 1Chan1Sample" por un instrumento virtual tradicional "AI Acquire 1Sample" y con este no tube problemas. La verdad no he tenido mucha oportunidad de leer la informacion que esta en las ligas que me pasaste, pero lo haré de inmediato para tener mas información acerca de la adquisición.

Cualquier comentario tuyo extra nuevamente es bienvenido, gracias.

0 kudos
Mensaje 5 de 7
3.675 Vistas

Yo tenía un problema similar a polaks  pero cuando lei algo de varias ligas decidí hacer lo de la tarea.

He de aclarar primero que soy un principiante autodidacta en esto, así que lo hice de la mejor forma posible, pero luego de hacer un intento de crear la dichosa tarea de múltiples entradas analógicas, me salió un error (el error 200077)

Así que sólo quisiera que me digan en que estoy mal y que leer para corregirlo.

 

Tengo que aclarar que mi tarjeta es una PCI 6014 y en el archivo que adjunto intento adquirir 3 señales para medir temperatura mediante voltage. Cuando trato de realizar la toma de datos, no me grafica nada, como pueden ver en la imagen que adjunto, ademas al tratar de terminar la ejecución me sale el error que tambien muestro en le figura adjunta. Además, como aun no he probado quisiera saber como separo la señal que me sale en los tres diferentes señales.

 

Por eso he colocado ambos VI y además una captura de lo que sale cuando me aparece el error.

 

 

Muchas gracias anticipadas, y disculpa por quizas esta pregunta tan boba.

 

Germán Raúl Chumpitaz Ayala

Bach. Ing. En Energía    

Descargar todos
0 kudos
Mensaje 6 de 7
3.045 Vistas

Hola Germán.

 

La manera en que unes las tareas es correcta. El error que te esta arrojando es por que especificaste el valor de voltaje máximo en 100, cuando el valor máximo permitido es de 10. Anexo una imagen de donde esta el error, lo noté en 2 de los VI´s que crean canales.

 

También te comento que en el futuro es mejor crear discusiones nuevas en lugar de preguntar en discusiones antiguas.

 

Saludos!

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 7 de 7
3.009 Vistas