Discusiones sobre Productos NI

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

Aumentar eficiencia de panel frontal

Hola Samuel!

 

Revise un poco más tu programa y note que estas adquiriendo a una razón de 10 kS/s. Cual es la frecuencia con la que cambia la señal que estas midiendo? Será posible bajar esa frecuencia de muestreo?

 

Hice un poco de benchmarking y tan solo en calcular la excentricidad y mover los ejes con nodos de propiedad, el programa se tardo entre 29 y 30 ms en mi máquina, por lo que no es extraño que el buffer de la DAQ haga overflow si estas adquiriendo una muestra cada 0.1 ms. Como te había mencionado te recomiendo que pases el graficado al loop del consumidor, o bien a un tercer loop. Sin embargo también recomendaría bajar la frecuencia de muestreo si es posible.

 

Para utilizar un tercer loop te recomendaría usar un "user event" junto con una estructura de eventos, te dejo un poco de información al respecto: https://decibel.ni.com/content/docs/DOC-9051

 

Saludos!

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 11 de 15
2.047 Vistas

Hola, gracias por sus respuestas,

 

Aldo, no creo que me sirva llevar el gráfico al loop del consumidor, ya que la respuesta de los gráficos la necesito "al instante". Hacer esto no sería algo más o menos similar a lo que está haciendo el programa ahora?

Alipio, me podrías explicar cómo realizar ese sincronismo por ocurrencias, por favor?

Gracias a ambos,

 

Saludos!

0 kudos
Mensaje 12 de 15
2.043 Vistas

Hola Samuel.

 

La sincronización por ocurrencias se puede hacer mediante los "user events" que te comentaba en el post anterior. En este caso tu programa se vería de esta manera.

 

Te comento que el graficado se seguiría viendo "al instante", solo se le agregaría a lo que tarda el tiempo en guardar el archivo. La única diferencia es que en lugar de acumular los datos en el buffer de la DAQ, los acumularías en el buffer de tu queue, que tiene mucho más espacio. Te recomiendo que pruebes este método a ver si cumple con tus necesidades.

 

Sin embargo tal vez lo mejor sea bajar la velocidad de muestreo si es posible, como te comenté en mi mensaje anterior.

 

Saludos!

 

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 13 de 15
2.040 Vistas

Hola.

 

Como te dice Aldo Hernandez, la mejor manera de sincronizar todo es que pases la parte grafica al lazo consumidor.

 

Te pongo un ejemplo simulado. En mi PC se consigue la misma velocidad que con la otra solucion propuesta y unas 10 veces más rapida que la que usas en la actualidad.

 

 

Adapta tu programa para esta solución y todo deberia funcionar sin problemas.

 

Saludos.

Alipio.

 

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
0 kudos
Mensaje 14 de 15
2.034 Vistas

Hola Aldo,

 

Bajé la velocidad de muestreo, pero siguió el problema. La señal que estoy adquiriendo es de baja frecuencia, pero es bastante "extraña", por lo que adquiriendo datos a alta frecuencia y promediando, fue la única forma en que logré obtener un valor promedio, que sea representativo de la señal y que además se mantuviera estable (sin oscilaciones).

Con la frecuencia de muestreo original, coloqué los nodos de propiedad que modifican los ejes de los chart en un tercer loop, obteniendo el tiempo a través de una variable local. El resultado es buenísimo!! El programa no se retarda, además que no se acumula el buffer.

Lo que aún no me queda claro, es cómo hacer la sincronización con la estructura de eventos, qué caso debería utilizar?

Gracias de antemano,

Saludos!

 

0 kudos
Mensaje 15 de 15
2.031 Vistas