Discusiones sobre Productos NI

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

Una pregunta

Bueno, un saludo para todos de nuevo. Yo ya casi estoy por terminar mi proyecto y les queria comentar que como me ha quedado un poco grande he notado que la PC donde corro lo que he hecho con Labview por ratos se queda congelada, se bloquea y se ha vuelto bastante lenta. Yo estoy ocupando una tarjeta DAQ PCI-6132 y estoy sacando 100000 muestras, con una frecuencia de 1 MHz. La PC donde estoy trabajando es una DELL 360 XEON 3.06 GHz, 512 MB de RAM; no es una maquina cualquiera.

Pora ratos trabaja bien y al buen rato empieza como a trabajar bien lento y a veces tengo que reiniciarla porque esta completamente bloqueda. Veo el uso del CPU y no esta muy exigido. Estoy ocupando Labview v8.0 y DI-MAX 8.1.

Cualquier consejo para mejorar esto se los agradecere mucho. Les anexo un VI para que vean que no es tan grande para que la PC no lo soporte, gracias.
0 kudos
Mensaje 1 de 6
3.624 Vistas

Hola Vladys, Por lo que describes es probable que tu problema se deba a una saturacion de memoria (memory leak). Esto puede suceder por ejemplo si vas aumentando un arreglo, con add into array o concatenate dentro ed ciclos for.

Algunas cosas básicas que se pueden hacer para evitar el memory leak son:

Inicializa los arreglos fuera de un los ciclos. Si esperas un arreglo de 1000 valores, y vas a irlo agregando durante ejecución va  a ocupar mas memoria (por desfragmentación de memoria) que si inicialmente lo hubieras hecho por decir de 1500 valores.

Llama a los subVIs de manera Dinámica, cuando llamas un SubVI de manera dinámica y lo cierras se liberan los recursos de este. Para hacer esto se utiliza VI server:

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

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

Por ultimo puedes usar un VI que se llama request memory dealocation que te puede ayudar con esto.

También los siguientes links te pueden ser de utilidad:

http://digital.ni.com/public.nsf/allkb/09F95B743573FFBA86256945004AB6AB

http://digital.ni.com/public.nsf/allkb/E7E97C809B25BB44862570AC005CE7CA

http://digital.ni.com/public.nsf/allkb/C3C516C11184AF3F862571B5006B46E1

Saludos

 

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 2 de 6
3.610 Vistas
Gracias por tu respuesta. Pero, como podria utilizar el request memory dealocation; ya que estuve viendo los demas temas y creo que este VI es el que me podra ayudar. Estuve viendo los ejemplos pero en ninguno aparece como utilizarlo. Me gustaria saber si tienen un poco mas de informacion de este tema. Se los agradezco.
0 kudos
Mensaje 3 de 6
3.583 Vistas
Hola Vlady,
 
El Request Deallocation.vi sólo libera la memoria que ocupa el VI una vez que lo llamas. El punto es que cuando un VI principal llama a otro, reserva un espacio de memoria para que corra. Una vez que el VI llamado termina de correr, el espacio de memoria sigue ahí hasta que el VI principal termina. El Request Deallocation lo que hace es evitar que una vez que el sub VI termina, la memoria se mantenga reservada.
Puede ser una opción utilizalo, sin embargo, yo te recomiendo que llames a tus VIs de manera dinámica tal y como te lo recomendó Benjamín.
 
Te mando un pequeño ejemplo que te puede servir para hacer el llamado.
 
Saludos y gracias por usar los foros de NI.
Arturo Vargas
National Instruments de México
Descargar todos
0 kudos
Mensaje 4 de 6
3.557 Vistas

Gracias por su respuesta, pero tengo una inquietud. En mi caso que ocupo varios VI's para lo que estoy haciendo como podria llamarlos de una forma dinamica. Por ejemplo, ocupo un TRIGGER & GATE, para este caso como lo llamaria de forma dinamica?. O en el caso de utilizar el Mathscript (que por cierto es una de las mejores cosas que tiene el Labview), como haria para que me funcione dinamicamente?.

Gracias de nuevo.

0 kudos
Mensaje 5 de 6
3.547 Vistas
Hola Valdy con esos VI en particular no necesias llamarlos en forma dinamica, solamente que si estas usando arrgelos grandes si te recomiendo que los inicialices antes de entrar al ciclo.
Aun asi si esos los quieres llamar en forma dinamica llamalos en un call bi reference node.
ttp://digital.ni.com/public.nsf/allkb/22448A7A6C14B68386256C8B005D238D
Aqui hay algunos link sobre perdida de memoria
Saludos
Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 6 de 6
3.543 Vistas