Discusiones sobre Productos NI

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

aplicaciones mecatronicas

¡Resuelto!
Ir a solución

Buenos Dias:

 

estoy realizando un proyecto de mecatronica, que consiste en la automatizacion de un minitorno (Mini Lathe) utilizando la NI USB 6216, una fuente de alimentacion, una PCB de 2 puente H, 2 motorreductores DC con encoders de doble cuadratura para este proposito e hice un VI  para realizar el control manual (utilizando la interfaz grafica del VI)      de la velocidad y realizando la medicion del angulo girado para comprobar el funcionamiento, pero resulta que existen problemas de retrasos en la señal tanto en generacion como en adquisicion de datos

Yo creo que son errores de programacion puesto que según las caracteristicas de la DAQ NI 6216, la velocidades de transferencia de datos muestreado tanto en generacion como en adquision son 250 Ks/s y 400 Ks/s valores que son mas que suficientes para llevar a cabo esta aplicacion.

 


0 kudos
Mensaje 1 de 14
3.396 Vistas

Hola diegomech.

 

Me podrías mostrar el código que has generado para ver si son problemas de programación?

Además, me podrías explicar mejor cómo son estos retrasos?

- En que momento tienes los retrasos, es un retraso permanente en las señales?

- De que tamaño de retraso estamos hablando? Se retrasa por segundos enteros o solo por fracciones de segundo? Me puedes dar un estimado del retraso?

 

Por el momento te dejo algunas ligas para mejorar el rendimiento de un VI.

http://zone.ni.com/devzone/cda/pub/p/id/1495

 

Hay muchas otras maneras de mejorar el rendimiento pero te puedo recomendar más específicamente si veo tu aplicación.

 

Saludos.

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 2 de 14
3.394 Vistas

bueno Aldo,

 

los retrasos de los que yo le hablo son las demoras que aparecen cuando de doy una orden  de movimiento a los motores desde el panel frontal y transcurren 3 o 4lsegundos en que estos empiecen a funcionar y lo hacen dando giros intermitentes, mientras que yo habia hecho un programa para controlar un solo motor de la misma forma y no se presentaban esos problemas...

0 kudos
Mensaje 3 de 14
3.386 Vistas

aah se me  olvidaba, le voy a enviar el VI del control en lazo abierto de un motor que funciona bien,para que los  compare y lo pruebe si cuenta con una plataforma experimental y la conexion es similar a la que le envié antes

0 kudos
Mensaje 4 de 14
3.385 Vistas
Solución
Aceptado por el autor del tema diegomech23

Hola Diego.

 

En efecto hay varias mejoras que le puedes hacer a tu programa para hacerlo mucho más eficiente, algunas recomendaciones que vi:

- Utiliza un solo ciclo para tu programa (máximo 2, busca la arquitectura de productor/consumidor), ya que el anidar varios ciclos en otro ciclo hace que una vez que términe uno de los ciclos, no puedas volverlo a ejecutar hasta que todos terminen.

- Siempre pon el botón de paro de un ciclo adentro del mismo ciclo, si no no lo podrás leer correctamente.

- Las funciones de DAQmx del mismo tipo deben ir en serie.

- El mathscript node que utlizas puede ser reemplazado por una función "in range and coerce", que es mucho más eficiente. Aún mejor, puedes simplemente editar los controles (Click derecho-Propertier-Data Entry) Para que no acepten valores afuera del rango especificado.

 

Te dejo algunos ejemplos que puedes combinar (siguiendo las recomendaciones anteriores) para tu aplicación:

 

https://decibel.ni.com/content/docs/DOC-13798

https://decibel.ni.com/content/docs/DOC-9483

 

También debes tener cuidado ya que la tarjeta con la que cuentas solamente cuenta con 2 timers/counters, por lo que no puedes leer de los 2 encoders y mandar señales a los 2 motores al mismo tiempo (en caso de usar salidas digitales tipo PWM).

 

Saludos y espero las recomendaciones te ayuden a mejorar tu programa.

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 5 de 14
3.372 Vistas

Hola Aldo:

 

Hice las correcciones que ud me ha sugerido o de pronto no le entendi cuando dijo : - Las funciones de DAQmx del mismo tipo deben ir en serie...y ahora me a aparece un error que bloquea el computador en pantalla cuando lo detengo el programa. le envio el VI anterior corregido

0 kudos
Mensaje 6 de 14
3.362 Vistas

el mensaje de error se lo envio adjunto..

0 kudos
Mensaje 7 de 14
3.361 Vistas

Hola diego. Por el momento no tengo ninguna tarjeta DAQ a la mano y no puedo probar tu código. Podrías correr el código con Highlight Execution y ver en que parte sale el error?

 

Saludos.

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 8 de 14
3.318 Vistas

Hola Aldo,  si probe el Highligh execution, pero no he logrado identidicar el error, este se presenta cuando doy clic en  "Abort execution",  no se que hacer

0 kudos
Mensaje 9 de 14
3.212 Vistas

El error se presenta cuando abortas la ejecución del programa?

 

No te recomiendo que uses ese botón de LabVIEW, en especial cuando trabajas con hardware. Lo que hace es que detiene la ejecución del programa inmediatamente. Esto quiere decir que no libera los recursos de la DAQ por lo que no es extraño que te arroje un error si abortas el programa. En lugar de eso usa el botón de Stop para detener el programa adecuadamente y cerrar todas las sesiones.

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 10 de 14
3.209 Vistas