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: 

Lectura a frecuencia normal en NI usb 6501

Hola! Estoy utilizando una tarjeta  NI USB 6501 para controlar 3 motores al mismo tiempo. Los motores tienen encoders incrementales.

Mi pregunta es acerca de la freuencia de adquisición de datos por parte de la tarjeta, ya que necesito que lea datos aproximadamente a 400Hz pero parece que no los alcanza a leer.  ¿Me podrían auxiliar?

0 kudos
Mensaje 1 de 9
3.576 Vistas

Hola! Plosh08,

 

Mira, estuve revisando las especificaciones de tu tarjeta y la velocidad máxima de muestreo es de 5 MHz, lo cual nos da una frecuencia digital muestreable de 2.5 MHz, que al dividirla entre los 3 motores se divide en 800 KHz aproximadamente, por lo que no deberias de tener problema con tus 400Hz, a menos que el encoder mande mayor numero de pulos en esos 400Hz, que puede ser una opción.

 

La segunda opción que se me ocurre es que tratas de manipular la información o procesarla en el mismo loop en el que la estas adquiriendo, el procesamiento de la información normalmente es mucho más lento y por esto estas perdiendo. La solución a esto es la de utilizar la arquitectura de programación Productor Consumidor, en el cual se esta produciendo la información en un ciclo while a una frecuencia muy alta y en el otro ciclo completamente independiente estará procesando la información.

 

Revisa esta liga con esa arquitectura a ver si este es el caso. Igual puedes subir un snippet o una imagen de tu VI o incluso el VI para poder ver que es lo que está pasando.

 

Saludos y mucho exito.

Luis Elias
NI VeriStand and HIL Product Manager
0 kudos
Mensaje 2 de 9
3.571 Vistas

Buenas tardes,

antes que nada, muchas gracias por la pronta respuesta! Sin embargo, tras analizar sus dos propuestas, identificamos que no se trata de ninguno de esos problemas, ya que hemos comprobado por osciloscopio  la frecuencia de la señal transmitida y tiene como máximo 400Hz. Le adjunto el archivo q estamos empleando. como verá, sólo se lee el dato y se grafica.

Por otro lado, quisiera preguntarle si han habido problemas parecidos con esa tarjeta, el problema se encuentra en la tarjeta? o en la comunicación desde el puerto USB? , podrá tener tal vez relación con ello la frecuencia de lectura del puerto USB? manejamos actualmente puertos Usb 2.0  en sistemas operativos Windows 7 y XP.

Cree que el problema se deba al SO?

0 kudos
Mensaje 3 de 9
3.568 Vistas

Que tal Plosh,

 

No creo que sea la tarjeta, si quieres revisar esto, podemos hacer dentro de MAX el self test a ver si la pasa, si la pasa no creo que tengsa problema. Si gustas puedes cambiar el cable USB o cambiar el puerto de la computadora.

 

Sobre que la tarjeta es USB 2.0, la adquisición se hace en hardware y nadamás cada vez tomas los datos que estan siendo guardados en una FIFO dentro de tu tarjeta, si esto tuviera un error, en algún punto nos mandaría un error de que esta tratando de leer datos que no existen.

 

Dejame revisar tu VI, mientras tu puedes ir haciendo estas pruebas a ver si la tarjeta está funcionando correctamente, que dudo mucho que no sea así.

 

Saludos,

Luis Elias
NI VeriStand and HIL Product Manager
0 kudos
Mensaje 4 de 9
3.566 Vistas

Que tal,

 

Ya pude darle un vistazo a tu programa, lo primero por lo que estamos perdiendo pulsos es por que estamos leyendo todo en un mismo ciclo, esto detiene mucho nuestra aplicación, ya que si se mueven los 3 al mismo tiempo, y tu computadora tiene menos de 3 nucleos lo vas a perder.

 

Es muy importante mencionar que en cuanto a la adquisición de datos, existen dos método. El primero es por Software, que es como lo estas haciendo. Esto depende de la velocidad a la que está corriendo tu sistema operativo. Si tienes por ejemplo un antivirus, esto te alenta mucho la computadora.

 

Ahora, la adquisición de señales que te mencionaba, la de Hardware, no importa tanto la velocidad de tu computadora, ya que toda la adquisición se hace en la tarjeta, en la memoria interna de la tarjeta y finalmente jalas todo el paquete de datos del FIFO a tu computadora, no es crucial.

 

Otra limitante que encontré es que tu tarjeta solo tiene un contador, por lo que contando puslos de manera de hardware solo puedes contar o controlar un motor. Te recomendaría utilizar contadores por software como los tienes, pero uno por ciclo y ahí contar todo y mandar la información entre los ciclos con variables locales.

 

No se si gustes, pero existe un manual que se llama complete data acquisition tutorial bastante bueno!! Puedes darle una leida y te será de mucha ayuda.

 

Mucho exito!!!

 

 

Luis Elias
NI VeriStand and HIL Product Manager
0 kudos
Mensaje 5 de 9
3.560 Vistas

Nuevamente, gracias por la respuesta!

 

La situación está así: las lecturas que intento obtener son 3 señales digitales por cada motor, por lo tanto son 9 señales al mismo tiempo. 3 señales se necesitan para conocer la posición del motor. La lectura de los 3 motores debe ser simultánea porq se desea ejercer un control  y para ello, como sabe, debemos conocer la posición en todo momento de todos. (en el documento que adjunté, sólo estaba leyendo la posición para un solo motor)

 

No entendí muy bien la parte que menciona sobre utlizar un sólo contador por ciclo 'y ahí contar todo y mandar la información entre los ciclos con variables locales' ya que el mismo while es el que utilizo para todo el proceso.

 

Debo confesarle que son nuestros primeros pininos en el empleo de labview, por lo cual tal vez sean absurdas estas dudas...

 

Le hemos dado una leída al dcumento que recomendó, sin embargo no encontré algún dato particular que nos resolviera el problema...

 

Tendría alguna otra sugerencia?

 

Muchas gracias!!!

0 kudos
Mensaje 6 de 9
3.552 Vistas

Que tal Plosh,

 

Primero que nada, te comento que existe un tutorial llamado LabVIEW en 6 horas, este es como un curso introductorio de labVIEW. Descargalo de Aquí.

 

Ese tutorial está un poquito básico, pero es bastante bueno!

 

Ahora, sobre la pregunta de los Encoders, me parece que la tarjeta por lo mismo que tiene solo un contador, no esta soportando tu adquisición. Estas perdiendo pulsos porque tienes 9 trenes al mismo tiempo y todo esta hecho en Software. Te dejo un foro donde hablan un poquito más de eso:

 

http://forums.ni.com/t5/Counter-Timer/Externally-Control-Count-Direction-with-6501/m-p/911476?requir...

 

Revisalo y no sientas que tienes dudas absurdas, estamos a tus ordenes!!!

 

 

Luis Elias
NI VeriStand and HIL Product Manager
0 kudos
Mensaje 7 de 9
3.546 Vistas

Hola! gracias por la respuesta y los tutoriales, les he dado una revisada y me ayudaron en un par d detalles.

Principalmente lo que consume mi atención es que la tarjeta sigue sin poder leer a la velocidad que necesuito las señales de los encoders. te explico

En todos los ensayos, he utilizado el DAQ assistant,y lo que he modificado ha sido el modo de adquisición, pues en uno he dejado "1 Sample (On Demand)" y en otro ensayo utilicé "Continous Samples". Parecía que en el sgundo caso, mejoraría la transferencia, pero al juntar los 3 contadores, dejó de contar bien, supongo que se debido a la lenta aquisición de datos.

Hay alguna manera de optimizar ello?

También he probado con poner el bloque del "DAQ assistant" de adquisición en otro bloque While comunicándolos con variables, pero no parece mejorar.

Gracias!

0 kudos
Mensaje 8 de 9
3.536 Vistas

Segun esto: http://digital.ni.com/public.nsf/websearch/376BBB979269F9C5862570F7006A030F?OpenDocument

 

la frecuencia maxima con la que puedes leer o sacar un dato desde la tarjeta es casi 1KHz. con lo cual si estas tomando la muestra de la señal de encoder en un momento en que es cero probablemente la pierdas. 

0 kudos
Mensaje 9 de 9
3.527 Vistas