11-23-2010 08:18 AM
Hola,
Tengo un cRIO 9074 y un módulo 9233. Según el ejemplo del LabVIEW para la adquisición con dicho módulo (NI 9233 Getting Satrted (FPGA).vi), se debe especificar el "Data rate", e indicar que comience la adquisicón. A continuación, se introduce en un lazo for un nodo que realizará la lectura del canal indicado. Mi duda es la siguiente: Si he configurado el "Data rate" a 2 ks/seg, debo asegurarme que el lazo se ejecuta a esa frecuencia para asegurar la lectura correcta del dato. Si el lazo es más lento, estaré perdiendo datos y si fuese más rápido, tendría datos repetidos. Según el ejemplo (NI 9233 Getting Satrted (FPGA).vi) ese control no se lleva a cabo. No habría que colocar dentro del lazo for la función Loop Timer para ejecutar el lazo (y la lectura) en el momento preciso?
Finalmente, he añadido al ejemplo (NI 9233 Getting Satrted (FPGA).vi) una programación para deducir el tiempo que tarda un lazo en ejecutarse (adjunto imagen del diagrama), pero en el proceso de compilación el servidor se queda bloqueado (Compling) y no da ningún tipo de error. Supongo que alguna función será incompatible, pero no logro concluir cuál. Agradecería cualquier sugerencia.
Gracias
11-24-2010 02:25 AM
Hola,
Dado que módulo NI 9233 dispone de su propia temporización, no es necesario que incluyas elementos de temporización adicionales (como el Loop Timer) para gestionar el tiempo de ciclo asociado al bucle.
Si quieres supervisar el tiempo de cada iteración, mi sugerencias es que lo calcules emdiante diferencia de tick counts. Dado que la FPGA se comporta como un circuito electrónica, exceptuando las primeras iteraciones, el resultado de la diferencia debería ser siempre el mismo.
Un saludo,
11-24-2010 05:32 AM
Hola David,
leyendo el enlace que me has proporcionado, entiendo que sí es necesario la temporización adicional: If you are trying to read from the analog input node too quickly, the node will know that a new sample has not been returned yet and it will wait until another reading has been returned from the module. Por ello, en el lazo For del ejemplo, no habría que poner el Loop timer? Porque, entiendo que, una cosa es la velocidad de muestreo del módulo, y otra, la velocidad de lectura a través del nodo de lectura incluido en el lazo. Nose, a lo mejor estoy interpretando algo mal.