el 02-10-2012 11:27 AM
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.
¡Resuelto! Ir a solución.
el 02-10-2012 12:36 PM
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.
el 02-10-2012 02:32 PM
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...
el 02-10-2012 02:51 PM
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
el 02-10-2012 06:15 PM
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.
el 02-11-2012 12:27 PM
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
el 02-11-2012 12:32 PM
el mensaje de error se lo envio adjunto..
el 02-15-2012 04:30 PM
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.
el 03-09-2012 08:46 AM
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
el 03-09-2012 10:07 AM
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.