el 06-13-2008 04:52 AM
el 06-13-2008 10:31 AM
Hola tomas aquí hay dos cosas que tienes que tomar en consideración.
La primera es que la temporización de las salidas analógicas de la 6008 es por software, y no por hardware como en otras tarjetas. Esto significa que vas a escribir cada vez que sea un ciclo, y el periodo mínimo de un ciclo controlado es de 1ms. pero si tienes algo que tarde mas en tu ciclo vas a escribir más lento. En tu caso tienes un Loop Delay de 50ms, por lo tanto vas a escribir, un punto cada 50 ms.
La siguiente parte es que mas que usar un DAQ Assistant te conviene utilizar las funciones normales de DAQmx, un DAQ Assitant abre y cierra la sesión cada vez que lo corres por lo que es mas lento que utilizar las funciones manuales. También dado que solo puedes escribir de una muestra en una puedes ser conveniente que también tomes de una muestra en una en la adquisición. De hecho esto también puede ser lo que este generando retraso en tu ciclo. Por ejemplo si yo le digo que tome 10 muestras a 1 hz, ese VI va a tardar 10 segundos en tomar las muestras por lo que mi tiempo mínimo en un ciclo que tenga esa adquisición es de 10 segundos.
Hay un ejemplo en Help>>Find Examples , que te podría servir para ver como puedes realizar esto se llama PID Control-Single Channel. Tienes que hacerle algunas modificaciones para que funcione con tu 6008, básicamente quitar el simple clock de la parte de la salida analógica ya que no soporta temporización por hardware, y pasar el VI de DAQmx Wait for sample clock a la entrada analógica en lugar de a la salida .
Saludos
el 06-16-2008 05:54 AM
Hola Becega,
Primer de todo, gracias por tu rápida respuesta.
He mirado el ejemplo de PID single channel, pero no entiendo como podria hacer lo mismo, pero añadiendo las funciones Integrador y Derivador.
En el ejemplo ese ademas, me parece que la temporización esta hecha por hardware, cosa que no es asi no?
Crees que deberia de canviar los 2 daq assitants y canviarlos por funciones daqmx no?
Y otra cosa, no entendi lo de quitar el simple clock de la parte de salida analogica.
Sabes de algun lugar donde poder sacar información de como realizar un controlador como el que necesito mas o menos paso a paso?
Muchas gracias por tu información y rápida respuesta.
el 06-17-2008 11:05 AM
Hola Tomas estas en lo correcto la temporización es por hardware y esa es la parte que tienes que cambiar, pero si el principio es ese remplaza los DAQ assitants por Codigo de DAQ. SI lo del sampleclock (el vi que trae el reloj en la salida analógica hay que quitarlo porque tu tarjeta no va a soportar esa función.
Estas ligas te podrían ser de utilidad:
Complete resources for a PID control system with NI M Series devices- Developer Zone - National |
Ready-to-Run Pressure Controller- Developer Zone - National Instruments
También podrías revisar algunos libros de control si la parte que necesitas es la del diseño de tu controlador como Ingeniería de Control Moderna Katsuhiko Ogata.
Saludos
el 06-19-2008 05:17 AM
el 06-19-2008 09:33 AM
Hola Tomas así como mencionas la limitante que estas teniendo aquí es precisamente que las salidas de tu tarjeta son controladas por software y no por hardware. Una tarjeta USB que cuanta con esto seria la USB-6211 - Multifunction DAQ .
Modifique tu programa quitándole el hardware timed a tu AO pruébalo así para ver si te da las velocidades que necesitas.
Saludos
el 06-20-2008 04:26 AM
Hola Becega,
Ahora mismo he estado probando ese modelo modificado que me enviaste, y me sale un error que me dice otra vez lo del hardware time de la entrada y si lo canvio a continuo me sale que el wait de daqmx que hay dentro del loop no es compatible con continuous samples, solo lo es con hardware.
Estoy un poco perdido ahora, porque he estado intentando cosas, pero sin resultados positivos. He intentado poner un un wait for next ms multiple sample pero tampoco funciona bien.
Si sabes alguna forma de hacerlo te lo agradeceria que me lo explicaras.
Muchas gracias una vez y otra vez mas.
Es que la verdad es que es una parte del proyecto de final de carrera de la universidad y llevo monton de tiempo con eso y no lo consigo. Supongo tb debido a la tarjeta... Pero es lo que tengo.
Aqui abajo te dejo las imagenes de los errores que me han salido:
el 06-20-2008 05:23 AM
Hola otra vez Becega,
Creo que lo último lo solucione... pero no consigo una mejora respecto al hacerlo con daqassistants.
Lo que he hecho para q funcionas es quitarle es sample clock de la entrada y luego en mas de utilizar la funcion wait del daqmx, lo que he hecho es utilizar el tiempo de loop. Esto lo he encontrado en uno de esos enlaces que me mandaste q sale la foto que lo hacen asi.
Por tanto he visto que mi modelo de ahora sin daq assistants sigue siendo igual de lento... Que más podria hacer para augmentar la velocidad?
Te paso el modelo ultimo a partir del que me mandaste, a ver que opinas. Muchas gracias.
P.D. (tambien e provado de canviar el PID para asegurarme que no fuera que el que tenia fuese el que me introducia la lentitud, pero no es asi.)
06-20-2008 03:50 PM - editado 06-20-2008 03:56 PM
Hola Tomas, como mencionas cuando usas un wait o un wait until next ms, el ciclo minimo que vas a lugar es de 1 ms, haciendo pruebas vi como decías legar a ciclos de control de hasta 30hz. En el ejemplo que te envió lo que hago es que la entrada analógica adquiera en forma continua, y tome una muestra, y simplemente escribo. Con esto la temporización del ciclo la estoy haciendo con los VIs de DAQ. Con los settings que te envió llega a una velocidad aproximada hasta de 100hz, jugando con el número de muestras y el input rate puedes lograr otras velocidades.
Si aumentas el input rate o disminuyes el numero de muestras debes de de tener cuidado es que si no se vacía el buffer vas a obtener el error -200279. Este podrías limpiarlo e ignorarlo y seguiría funcionado. Con esto puedes lograr sin problema los 150 hz que necesitabas
Saludos
el 07-01-2008 07:47 AM
Hola Becega,
Después de unos dias de ausencia he probado el ultimo modelo que me mandaste, pero hay algo que aun no acabo de entender o que no acaba de funcionar.
Ahora mismo tengo delante el osciloscopio con la entrada y la salida.
La verdad es que a mi no me llega a los 100Hz.. ni se acerca. En 20 Hz ya empiezo a tener una señal bastante distorsionada.
Augmentando el input rate lo que consigo es una señal mejor pero me sale ese error (q me interesaria quitarlo siempre).
A ver yo lo que he hecho es introducir 100Hz a la entrada y he ido jugando con el input rate y las muestras... pero no he conseguido una señal buena.
Si me supieras decir, de que depende el input rate y las muestras para conseguir la velocidad deseada te lo agradeceria.
Gracias por todo!