From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, 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: 

Error control PID en PCI 6071E

 Hola de nuevo, estoy apunto de acabar mi proyecto, pero me a surgido el siguiente problema implementando un controlador PID en un VI.

El problema es el siguiente: tengo implementada un secuencia dentro de un bucle while compuesta por dos frames, en el primer frame esta implementado el controlador PID, el cual al alcanzar la estabilidad, para el bucle while dentro del frame (en el ejemplo que pongo ahi un boton pero en el vi que tengo que hacer iria un bloque de comparacion), saltariamos asi al siguiente frame.

 

El problema viene cuando al parar el bucle while del segundo frame y se vuelve a ejecutar la secuencia, el while del primer frame ya no funciona!!!! el daq que se encarga de la salida analógica esta alternando continuamente el valor del parámetro stopped entre true y false. Y no se porque, si no controlo el parámetro "stop"de los daq que se encargan de la salida y elimino ese control, a la hora de ejecutar el Vi se produce el error 50103.

 

Os pongo el VI, la version es la 8.6 y la tarjeta que uso la PCI6071E 

 

Que puedo hacer??? Espero vuestra ayuda 

Gracias 

0 kudos
Mensaje 1 de 3
3.034 Vistas

Hola

 

El error que te está saliendo es normal debido a la forma como tienes programada tu aplicación, y se refiere a recursos reservados. Revisa la causa 2 y 3 de este documento de soporte:

 

http://digital.ni.com/public.nsf/allkb/485201B647950BF886257537006CEB89?OpenDocument

 esto es causa de utilizar el express VI de DAQmx de esta manera. Si quieres hacer múltiples lecturas y escrituras en tu tarjeta en varias iteraciones yo t recomendaría utilizar los VI de bajo nivel de DAQmx y no el asistente de DAQ, dichos VI t permiten inicializar la tarjeta una sola vez al inicio del programa y liberar el recurso hasta el final en lugar de repetir este proceso una y otra vez en cada iteración que es como lo tienes en este momento. Por otra parte no t recomiendo anidar de esa manera los ciclos while, sería mejor en este caso realizar una arquitectura de máquinas de estado en la cual en un estado hagas el control PID y cuando ya esté sintonizado pases al siguiente estado para mover el setpoint, te recomiendo tmb utilizar el VI de PID Autotuning, para primero sintonizar y luego ya utilizar las ganancias generadas en un ciclo cerrado. 

http://zone.ni.com/devzone/cda/tut/p/id/3024

  Saludos
Carlos Pazos

Senior Product Marketing Manager

National Instruments
0 kudos
Mensaje 2 de 3
3.016 Vistas

Muchas gracias por tu respuesta. Espero saber implementarlo sin que me de muchos problemas. 

Voy a ver lo que pasa.

 

Muchas gracias y felices fiestas! 

0 kudos
Mensaje 3 de 3
3.003 Vistas