Está en la página 1de 52

Taller Prctico: Diseo y Simulacin de Control con NI myDAQ

Derechos de Autor 2011 National Instruments Corporation. Todos los derechos reservados. Bajo las leyes de autor, esta publicacin no deber ser reproducida o transmitida en ninguna forma, electrnica o mecnica, incluyendo fotocopia, grabacin, almacenando en un sistema de recuperacin de informacin o trasladar completo o en partes sin el consentimiento por escrito de National Instruments Corporation. National Instruments respeta la propiedad intelectual de otros y pedimos a nuestros usuarios hacer lo mismo. El software de NI est protegido por derechos de autor y otras leyes de propiedad intelectual. En donde el software de NI sea usado para reproducir software u otros materiales pertenecientes a otros, usted podr usar el software slo para reproducir materiales que usted posiblemente reproduzca de acuerdo a los trminos de cualquier licencia aplicable u otra restriccin legal. Marca Registrada National Instruments, NI, ni.com y LabVIEW son marcas registradas de National Instruments Corporation. Refirase a los trminos de uso en ni.com/legal para ms informacin acerca de marcas registradas de National Instruments. Otros nombres de productos y compaas mencionados aqu son marcas registradas de sus respectivas compaas. Los Miembros de National Instrumets del Programa de Miembros de Alianza son entidades de negocio independientes de National Instruments y no tienen sociedad de la agencia o relacin conjunta con National Instruments. Patentes Para patentes referentes a Productos/tecnologa de National Instruments dirjase a la localidad apropiada HelpPatents en su software, el archivo patents.txt en su media de reproduccin o en National Instruments Patent Notice en ni.com/patents. Derechos Reservados 2011 National Instruments Corporation. Todos los derechos reservados.

Ejercicio 1. Identificacin de Sistemas


En este ejercicio aprenderemos a usar LabVIEW para poder obtener la definicin matemtica de nuestro sistema de demostracin. Usaremos los bloques del System Identification Toolkit para hacer la identificacin paramtrica de un motor de DC. La base de la identificacin paramtrica de cualquier sistema es comparar las caractersticas de entrada (o excitacin) de la planta con su caracterstica de salida (o respuesta). Se cuenta con un sistema de demostracin didctico, construido con componentes simples y de bajo costo. Conectar este dispositivo a nuestra tarjeta NI MyDAQ, nos permitir construir un controlador de velocidad para los motores de corriente directa. El sistema consta principalmente de un motor de corriente directa, y adems, se incorpor un optointerruptor que nos ayudar a medir la velocidad de giro del motor. El dispositivo tambin tiene un sistema electrnico de potencia que alimenta a la planta y que conecta a todo el sistema con el conector de la NI MyDAQ. Este panel de conectores nos permite conectar el sistema con nuestra tarjeta. El sistema electrnico de potencia ya tiene conectadas las seales que nos interesan medir. La primera parte del ejercicio consta en generar una seal de excitacin aleatoria para nuestra planta. Los sistemas de control se suelen modelar en el dominio de la frecuencia por lo que la teora de identificacin de sistemas recomienda usar seales binarias aleatorias. Esto es, poder verificar el comportamiento de la planta ante una cierta amplitud y con una frecuencia variable (barrido de frecuencias). Una vez generada la seal de excitacin, la mandaremos por la salida analgica A0 de la tarjeta NI MyDAQ. Asegrate de que los dos interruptores del dispositivo estn apuntando hacia el circuito 1 (C1) Posteriormente, realizaremos la adquisicin de datos de esa seal de excitacin y de la respuesta que detecta el motor. Una vez que adquirimos estas seales, pasaremos a usar los bloques Express del System Identification Toolkit de LabVIEW para hacer la identificacin paramtrica. Finalmente, usando los bloques del Control Design Toolkit de LabVIEW crearemos la representacin de estado y funcin de transferencia de nuestra planta. Nota: Este curso fue diseado para mostrar cmo usar los Toolkits de LabVIEW en la creacin de sistemas de control por lo que no ahondamos mucho en la utilizacin LabVIEW. A lo largo de la realizacin de los ejercicios de este seminario, algunas interfaces grficas del panel frontal y ciertos cdigos del diagrama de bloques ya estn hechos para ti y slo tendrs que completar el cdigo como se te indicar en los ejercicios. Sigue estas instrucciones: 1. Abre LabVIEW si no se encuentra abierto dando clic en el cono del programa o con la ruta de acceso del men de inicio en Windows: Start > All Programs > National Intruments > LabVIEW 2011> LabVIEW.

2. Abre el archivo que se encuentra en el escritorio en la carpeta LabVIEW Control Design HandsOn\Exercises\Ejercicio1 Identificacin de Sistemas. 3. El panel frontal ya contiene la base de lo que ser la interfaz grfica de este programa y el diagrama de bloques contiene ya algunos controles as como un ciclo While, dos estructuras CASE y la creacin de la tarea que se encargarn de transmitir las diferentes seales de control a la tarjeta DAQ y posteriormente al circuito del motor.

4. Ahora, conecta el control Stop a la terminal de la condicin para el ciclo While. Para hacer esto, conecta primero este control a la terminal condicional de la estructura CASE interna (tanto para el caso verdadero como para el falso). Observa la ilustracin:

Despus, cmbiate a la pestaa FALSE de la estructura CASE exterior y conecta el control STOP a la terminal como se muestra a continuacin:

5. Para generar nuestra seal aleatoria de excitacin, dentro del ciclo while en la parte superior, coloca un ciclo For que encontrars bajo Programming > Structures > For Loop. Asegrate de que la estructura CASE interior quede localizada dentro de este nuevo ciclo FOR. Observa la figura.

En la terminal STOP, a un costado de la estructura FOR que acabas de colocar, deshabilita la opcin de autoindexado como lo indica la siguiente imagen:

6. Da clic derecho en la terminal N del ciclo For para definir el nmero de iteraciones a realizar. Elige la opcin Create Constant del submenu que aparece. Fija su valor en 1000.

7. Las iteraciones pares generarn un pulso en alto y las iteraciones impares generarn un pulso en bajo generando as la seal binaria que buscamos. Cerca de la terminal de iteracin del ciclo For y dentro de la estructura CASE interior coloca un bloque Quotient & Remainder que encontraras bajo Programming > Numeric > Quotient & Remainder. Conecta la terminal i del nmero de iteracin del ciclo a la terminal x del bloque que acabas de colocar.

8. Da clic derecho sobre la terminal y del bloque Quotient & Remainder y elige la opcin Create > Constant del submenu que aparece. Fija el valor de la constante en 2. Con esto podremos determinar si la iteracin es par o impar.} 9. Coloca un bloque de comparacin Equal to 0? que encontrars bajo Programming > Comparison > Equal to 0? Conecta la terminal R del bloque Quotient & Remainder al bloque Equal to 0?

10. Coloca un bloque Select que encontraras bajo Programming > Comparison > Select. Conecta la salida del bloque Equal to 0? a este bloque. Adems, crea las constantes par el

valor de True (fija un valor de 5) y para el valor de False (fija un valor de 0). As terminamos de definir la amplitud de nuestra seal aleatoria.

11. Ahora definiremos el periodo de espera de cada estado de la seal (alto y bajo). Para esto, coloca dentro del ciclo For un bloque Wait que encontrars bajo Programming > Timing > Wait (ms). Si es necesario, modifica el tamao de las estructuras. 12. Ahora coloca un bloque Multiply seguido de un bloque Round to Nearest antes del bloque Wait. Estos dos bloques los encontrars bajo Programming > Numeric > Multiply/Round to Nearest.

13. Despus de conectar los bloques que colocaste, pon un bloque Random Number que encontrars bajo Programming > Numeric > Random Number y conctalo a la terminal x del bloque Multiply. 14. En la terminal y del bloque Multiply, crea una constante y fija su valor en 5. De esta forma, el valor mximo de cada estado (alto o bajo) de la seal binaria aleatoria no podr ser de ms de 5ms. Con esto terminamos de definir nuestra seal binaria aleatoria que servir de excitacin para nuestra planta.

15. Ahora usaremos los bloques de DAQmx para poder mandar esta seal binaria aleatoria por la salida analgica AO0. En la esquina superior izquierda se encuentran los bloques de DAQmx Create Channel y DAQmx Start Task los cuales, respectivamente permiten la habilitacin de los canales donde la seal ser enviada as como el inicio de la asignacin de las tareas a estos canales. 16. Ahora coloca dentro del ciclo For un bloque DAQmx Write que encontrars bajo Measurement I/O > NI-DAQmx > DAQmx Write. 17. Ahora, coloca fuera del ciclo For en el lado derecho un bloque DAQmx Stop Task que encontrars bajo Measurement I/O > NI-DAQmx > DAQmx Stop Task. Realiza las conexiones que se muestran en la imagen incluyendo la conexin del valor de salida del bloque Select a la terminal data del bloque DAQmx Write.

Nota: Al realizar las conexiones, puede que la salida de la tarea de escritura en el puerto muestre una X roja en el cable que lo conecta con el bloque DAQmx Stop Task. Esto indica que los cables no estn bien conectados. Esto se debe a que el ciclo For indexa (crea un arreglo) los valores de salida del ciclo. Para resolver este problema, da clic derecho en el nodo de conexin entre el ciclo For y el bloque DAQmx Stop Task y da clic en la opcin Disable Indexing.

En la estructura CASE, cmbiate al caso true y justo en el cuadro blanco formado al realizar la conexin entre el DAQmx write y el select, haz clic derecho y selecciona Create < Constant, y dale el valor de 0.

18. Ya que generamos la seal de excitacin, ahora debemos realizar la adquisicin de esta misma seal y de la respuesta de la planta. Pero primero observamos la estructura Case alrededor de todo el cdigo que acabamos de hacer. Este sirve para que la seal de excitacin y la adquisicin de los datos slo se realice cuando se presione el botn Obtener Modelo que aparece en el panel frontal y que se muestra en el diagrama de bloques como un control booleano llamado OK Button. 19. En la parte superior de la estructura Case, da clic en el combo box y elige la opcin False. Esto nos permitir hacer el cdigo que se ejecutar en caso de que el botn Obtener Modelo no est siendo presionado. Lo que queremos que suceda mientras el botn no es presionado es que la seal de excitacin de la planta sea 0. Por lo tanto, mandaremos constantemente el valor 0 por la salida analgica 0 (ao0). Coloca un bloque DAQmx Write que encontrars bajo Measurement I/O > NI-DAQmx > DAQmx Write. En la terminal de Data crea una constante de valor 0. Agrega un bloque DAQmx Stop Task que encontrars bajo Measurement I/O > NI-DAQmx > DAQmx Stop Task.

20. Regresa a la opcin True de la estructura Case. Para realizar la adquisicin de datos, usaremos una opcin alternativa a los bloques de NI-DAQmx que es usar el bloque Express DAQ Assistant. Coloca un bloque DAQ Assistant que encontrars bajo Express > Input > DAQ Assistant. Permite que se inicialice el asistente y realiza las siguientes configuraciones: Acquire Signals > Analog Input > Voltage, dejando la tecla Ctrl presionada, elige las entradas ai0 y ai1 del DevX(NIMyDAQ) y da clic en Finish. En la ventana que se abre, dentro del recuadro Channel Setings en la pestaa

Configuration da clic en el botn Show Details >>. Cambia el nombre de los canales dando clic derecho sobre cada canal y eligiendo la opcin Rename. Al canal ai0 llmalo Estmulo y al canal ai1 llmalo Respuesta. Da clic sobre el botn Hide Details y en la opcin Terminal Configuration elige Differential En el recuadro Timing Settings deja la opcin N Samples como modo de adquisicin, modifica el valor de Simples to Read a 40,000 y cambia el valor de Rate (Hz) a 5k. Al terminar, da clic en OK.

21. Agregaremos una escala debido a la naturaleza en la que se presenta la seal de respuesta. En la opcin de Custom Scalling >> Create New damos la opcin Linear y damos nombre a nuestra escala. En la pantalla siguiente ponemos en el parmetro de slope la constante -1 y damos OK. Importante: Esta opcin puede o no ser necesaria y depende de la conexin del motor. Si tu funcin de transferencia al final del ejercicio resulta negativa, quita esta escala para resolver el problema.

22. Para poder obtener por separado las dos seales de la adquisicin de datos, coloca un bloque Split Signals que encontrars bajo Express > Signal Manipulation > Split Signals. Conecta la salida del bloque DAQ Assistant al bloque Split Signals. Para obtener las dos seales, expande el bloque Split Signals hacia abajo y vers la nueva terminal de salida.

23. Ahora si comenzaremos a utilizar los bloques del System Identification Toolkit de LabVIEW para poder hacer la identificacin paramtrica de nuestra planta. Coloca un bloque Model Estimation que encontrars bajo Control Design & Simulation > System ID > Parametric > SI Model Estimation. Permite que se abra el asistente y realiza las siguientes configuraciones: dentro del recuadro Select Model Type elige State-Space, en el recuadro Select Model Dims elige SISO, en el recuadro Select Data Type elige Waveform, en el recuadro Set Model Orders elige 2 bajo Number of States, al finalizar da clic en OK. Este VI nos ayudar a calcular un modelo de espacio-estado de orden 2 de nuestra planta.

24. Ahora colocaremos un bloque TF Estimation que encontrars bajo Control Design & Simulation > System ID > Parametric > SI Transfer Function Estimation. Permite que se abra el asistente y realiza las siguientes configuraciones: dentro de la pestaa Input Info elige Waveform, dentro de la pestaa Model Settings elige Continuous, ah mismo elige como orden del numerador 1 y como orden del denominador 2, al finalizar da clic en OK.

25. Ya que terminamos de hacer estos pasos podemos conectar a estos dos bloques del toolkit de identificacin de sistemas las seales de la adquisicin de datos. Dado que la primera seal que pedimos adquirir es la seal llamada Estmulo, esa ser la seal que saldr por la parte superior del bloque Split Signals. Conecta esta seal a las terminales Stimulus Signal de los bloques de estimacin paramtrica. Conecta la segunda seal (de arriba hacia abajo) del bloque Split Signals a las terminales Response Signal de los mismos bloques.

26. Ahora mandaremos imprimir al panel frontal los modelos de la planta calculados por el System Identification Toolkit de LabVIEW. Para poder hacer esto, tenemos que armar la representacin de espacio-estado y la funcin de transferencia con el Control Design Toolkit de LabVIEW. Primero armaremos la representacin de espacio-estado. Coloca un bloque Unbundle by Name que encontrars en Programming > Cluster & Variant > Unbundle by Name. Conecta este bloque a la terminal de salida Model Coeficients del bloque Estimate State-Space Model. Expande el bloque Unbundle by Name hacia abajo hasta que aparezcan las terminales A, B y C.

27. Dado que los valores de los coeficientes son un tipo de dato de arreglo, tenemos que pasarlo a tipo de dato matriz que reconoce el bloque que arma una representacin de espacio-estado. Coloca un bloque Array to Matriz a cada una de las terminales del bloque Unbundle by Name que encontrars en Programming > Array > Array to Matrix.

28. La matriz C presenta la particularidad de que sale del modelo como un vector vertical. Cuando armamos la representacin de espacio-estado, necesitamos que esta matriz entre como un vector horizontal por lo que es necesario trasponer esta matriz. Coloca un bloque Transpose Matrix que encontrars bajo Mathematics > Linear Algebra > Transpose Matrix. Conecta la terminal de la matriz C a este bloque para trasponer el vector. 29. Ahora ya tenemos todo para construir la representacin de espacio-estado con los bloques del Control Design Toolkit de LabVIEW. Coloca un bloque Construct State-Space Model que encontrars bajo Control Design & Simulation > Control Design > Model Construction > CD Cunstruct State-Space Model. Conecta las terminales de las matrices A, B y C transpuesta al bloque que acabas de colocar.

30. Para poder imprimir la representacin de espacio-estado que acabamos de crear, coloca un bloque Draw State-Space Equation que encontrars bajo Control Design & Simulation > Control Design > Model Construction > CD Draw State-Space Equation. Conecta este bloque a la representacin de espacio-estado que creamos y tambin conecta la salida de este bloque al indicador llamado Ecuacin de Estado que tenamos en el programa desde el principio.

31. Pasaremos a construir ahora la representacin de funcin de transferencia siguiendo pasos similares a la representacin de espacio estado. Coloca un bloque Unbundle by Name que encontrars en Programming > Cluster & Variant > Unbundle by Name. Conecta este bloque a la terminal de salida Model Coeficients del bloque TF Estimation. Expande el bloque Unbundle by Name hacia abajo hasta que aparezcan las terminales Numerator y Denominator.

32. Coloca un bloque Construct Transfer Function Model que encontrars bajo Control Design & Simulation > Control Design > Model Construction > CD Cunstruct Transfer Function Model. Conecta las terminales Numerator y Denominatior al bloque que acabas de colocar. 33. Para poder imprimir la representacin de funcin de transferencia que acabamos de crear, coloca un bloque Draw Transfer Function Equation que encontrars bajo Control Design & Simulation > Control Design > Model Construction > CD Draw Transfer Function Equation. Conecta este bloque a la representacin de funcin de transferencia que creamos y tambin conecta la salida de este bloque al indicador llamado Funcin de Transferencia que tenamos en el programa desde el principio.

34. A partir de la representacin de funcin de transferencia que acabamos de crear, podemos obtener otras representaciones similares. Crearemos una representacin de funcin de transferencia pero en forma factorizada o forma Zero-Pole-Gain. Coloca justo sobre el bloque Draw Transfer Function Equation un bloque Convert to Zero-Pole-Gain Model que encontrars bajo Control Design & Simulation > Control Design > Model Conversion > CD Convert to Zero-Pole-Gain Model. Conecta la terminal de entrada de este bloque al cable rosa que sale del bloque Construct Transfer Function Model hacia el bloque Draw Transfer Function Equation. 35. Para poder imprimir la representacin que acabamos de crear, coloca un bloque Draw Zero-Pole-Gain Equation que encontrars bajo Control Design & Simulation > Control Design > Model Construction > CD Draw Zero-Pole-Gain Equation. Conecta este bloque a la representacin de ZPK que creamos y tambin conecta la salida de este bloque al indicador llamado FT en forma ZPK que tenamos en el programa desde el principio.

36. Dado que nos interesa poder usar el modelo calculado por el System Identification Toolkit de LabVIEW en futuros ejercicios del seminario, guardaremos el modelo de funcin de transferencia. Coloca un bloque Save System Model to File que encontrars bajo Control Design & Simulation > System ID > Management > Save System Model to File . Conecta la terminal System Model de este bloque a la terminal System Model Out del bloque Transfer Function Estimation. Da clic derecho sobre la terminal File Path del bloque Save System Model to File y elige Create > Control. Como nombre de este control, teclea Guardar Modelo en:. Esto crear un browser para poder definir la localizacin del archivo

que contendr la informacin del modelo. Finalmente da clic derecho sobre la terminal Default Name y elige la opcin Create > Constant. Teclea el nombre ModPlanta que ser el nombre del archivo por default.

37. Tambin incluiremos una grfica que nos permita ver tanto la seal de estmulo como la respuesta de la planta. Pasa al panel frontal y agrega un indicador grfico de tipo Waveform Graph que encontrars bajo Modern > Graph > Waveform Graph en la paleta de controles. Coloca el indicador grfico como se muestra en la imagen y realiza las siguientes configuraciones: da clic derecho sobre el eje de las y e inhabilita la opcin Auto-scale Y, da doble clic sobre el valor mximo de la escala en Y y cambia su valor a 0.015, da doble clic sobre el valor mnimo de la escala en Y y cambia su valor a -0.015. De igual manera en el eje de las x inhabilita la opcin Auto-scale X y pon como valor mnimo 0 y como mximo 0.15 Puedes aprovechar para acomodar el control File Path que llamamos Guardar Modelo en: como se muestra en la imagen.

38. Pasa al diagrama de bloques y conecta la terminal del indicador grfico directamente a la salida del bloque DAQ Assistant antes de que el cable azul llegue al bloque Split Signal. Ese cable azul contiene las dos seales y basta con conectarlo directamente al indicador grfico para poder visualizar las dos seales al mismo tiempo. El cdigo final del programa se debe de ver como en la siguiente imagen.

39. Finalmente, guarda el archivo dando clic sobre la opcin Save que encontrars en el panel frontal desde el men File > Save. Ejecuta el programa dando clic sobre el icono que contiene una flecha blanca en la barra de herramientas del panel frontal. Cada vez que aprietes el botn Obtener Modelo se ejecutar el cdigo en la estructura Case con valor True y se te pedir que indiques la direccin sonde deseas guardar el archivo que contiene la informacin del modelo obtenido. Presiona el botn Salir para detener el programa. Nota: Cuando ejecutes el programa, obtn varias veces el modelo de la planta y compara cada resultado con el anterior. Notars que hay cambios en los modelos que obtienes. Esto se debe a que la seal aleatoria es diferente cada vez que pides obtener el modelo de la planta. Tambin esto se puede ver afectado por interferencias de friccin en el acoplamiento mecnico entre los dos motores. Nota: Si deseas que solo te pida la direccin donde deseas guardar el modelo calculado una vez, ejecuta una vez el programa, detenlo y da clic sobre el icono del browser. Navega hasta donde guardaste el modelo y elige el archivo ModPlanta.sim. Cuando vuelvas a ejecutar el programa, ya no se te pedir que indiques la direccin nuevamente.

Fin Ejercicio 1.

Ejercicio 2a. Anlisis de Sistemas Continuos


En este ejercicio aprenderemos a analizar sistemas de control continuos definidos matemticamente en el dominio de la frecuencia. Una vez que tenemos definido un sistema (polos, ceros y ganancia) podemos usar el Control Design Toolkit de LabVIEW para hacer anlisis de respuesta transitoria, estacionaria y harmnica. Usaremos una interfaz grfica muy poderosa desarrollada en LabVIEW y que sirve como ejemplo de lo que podramos llegar a desarrollar en este lenguaje de programacin con la cual podemos agregar definiciones de diferentes modelos as como importar con esta interfaz el modelo que guardamos de nuestra planta en el ejercicio anterior. Sigue estas instrucciones: 1. Abre LabVIEW si no se encuentra abierto dando clic en el cono del programa o con la ruta de acceso del men de inicio en Windows: Start > All Programs > National Intruments > LabVIEW 2011> LabVIEW. 2. Abre el archivo que se encuentra en el escritorio en la carpeta de LabVIEW Control Design HandsOn\Exercises\Ejercicio 2a Anlisis de Sistemas. 3. Observa detenidamente la interfaz grfica que se proporciona en el panel frontal. Navega por las pestaas de la interfaz. Ahora pasa al diagrama de bloques y observa el cdigo de esta interfaz. Navega por las opciones de la estructura case conectada al indicador de las pestaas (Tab Control). Repetimos que el objetivo de este curso es aprender a usar los toolkits de LabVIEW que nos permiten construir sistemas de control y no as mostrar las bases de programacin en LabVIEW. Con los conocimientos suficientes de programacin en LabVIEW armar una interfaz grfica de esta calidad no es complicado. 4. En el diagrama de bloques, en el combo box de la estructura Case, elige la opcin Respuesta Transitoria. En esta parte del cdigo empezaremos a construir nuestro anlisis en el dominio del tiempo de nuestro sistema. Coloca un bloque Construct Zero-Pole-Gain Model que encontrars bajo Control Design & Simulation > Control Design > Model Construction > CD Cunstruct Zero-Pole-Gain Model. Conecta las terminales que vienen de fuera de la estructura Case Ceros, Polos y Gain a las terminales correspondientes del bloque que acabas de colocar.

5. Ya que construimos el modelo, ahora colocaremos su ecuacin en el panel frontal, para esto, coloca un bloque Draw Zero-Pole-Gain Equation que encontrars bajo Control Design &

Simulation > Control Design > Model Construction > CD Draw Zero-Pole-Gain Equation. Conecta este bloque a la representacin de ZPK que creamos. Da clic derecho en la terminal de salida de este bloque y elige la opcin Create > Indicator. Modifica el nombre del indicador dando doble clic sobre la etiqueta Equation y llamndolo G(s):.

6. Pasa al panel frontal y acomoda el indicador G(s): en la parte superior izquierda dentro de la pestaa Respuesta Transitoria.

Nota: Puede que el indicador no aparezca dentro de la pestaa Respuesta Transitoria automticamente. Si no encuentras el indicador, pasa al diagrama de bloques y dando clic derecho sobre el indicador G(s): elige la opcin Find Indicador. Una vez que hayas ubicado el indicador, colcalo en la posicin correcta.

7. Podemos hacer ahora un anlisis de la respuesta del sistema a un escaln unitario. En el diagrama de bloques, coloca un bloque Step Response que encontrars bajo Control Design & Simulation > Control Design > Time Response > CD Step Response. Conecta a la terminal State-Space Model (nombre de la terminal que aparece por default) de este bloque la salida del modelo ZPK que construimos. Da clic derecho sobre la terminal de salida Step Response Graph del bloque Step Response y elige la opcin Create > Indicator.

8. Pasa al panel frontal y da clic derecho sobre el indicador grfico. Elige la opcin Visible tems > Plot Legend para quitar la leyenda superior del indicador grfico. Coloca el indicador grfico dentro de la pestaa Respuesta Transitoria.

9. Ahora agregaremos algunos datos importantes del anlisis de nuestro sistema. Podemos obtener directamente una cadena de texto que nos indique si el sistema es estable o inestable. Coloca un bloque Stability que encontrars bajo Control Design & Simulation > Control Design > Dynamic Characteristics > CD Stability. Conecta a este bloque la salida del modelo ZPK que construimos. Da clic derecho sobre la terminal de salida Stability y elige la opcin Create > Indicator.

10. Pasa al panel frontal y coloca el indicador enumerado Stability dentro del pequeo recuadro que se tiene dentro de la pestaa Respuesta Transitoria. 11. Agregaremos tambin el coeficiente de amortiguamiento del sistema as como su frecuencia natural. Coloca un bloque Camping Ratio and Natural Frequency que encontrars bajo Control Design & Simulation > Control Design > Dynamic Characteristics > CD

Damping Ratio and Natural Frequency. Conecta a la terminal de entrada de este bloque la salida del modelo ZPK que creamos. Crea un indicador para las terminales de salida Damping Ratios y Natural Frequencies.

12. Pasa al panel frontal y coloca los dos indicadores dentro del recuadro de la pestaa Respuesta Transitoria. Dado que estos indicadores son de tipo arreglo, los puedes colapsar para que solo se vea un rengln del arreglo. Tu panel frontal se debe de ver como la siguiente imagen.

13. Ahora pasaremos a hacer el anlisis del comportamiento harmnico (o de la frecuencia) de nuestro sistema. En el panel frontal, selecciona la pestaa Respuesta Harmnica. Ahora pasa al diagrama de bloques y dentro del combo box de la estructura case elige la opcin Respuesta Harmnica. 14. Crea de nuevo un modelo de tipo ZPK colocando un bloque bloque Construct Zero-Pole-Gain Model que encontrars bajo Control Design & Simulation > Control Design > Model Construction > CD Cunstruct Zero-Pole-Gain Model. Conecta las terminales de la estructura Case Ceros, Polos y Gain al bloque que acabas de colocar. 15. Pasa al panel frontal. Crearemos un separador de pestaas dentro de la pestaa Respuesta Harmnica. Este separador lo encuentras bajo Modern > Containers > Tab Control de la paleta de controles.

16. Agranda el separador de pestaas a que abarque todo el espacio de la pestaa Respuesta Harmnica. Ahora, dando doble clic sobre el nombre de las pestaas, cambia el nombre de la primera pestaa a Bode. En esta pestaa pondremos los diagramas de Bode de nuestro sistema. A la segunda pestaa llmala Nyquist. Para poder agregar ms pestaas, da clic derecho sobre alguna de las pestaas y elige la opcin Add Page After. Agrega dos pestaas ms para tener en total 4 pestaas. Llama a las dos pestaas siguientes Nichols y Mrgenes de Estabilidad.

17. Pasa ahora al diagrama de bloques donde colocaras una pequea estructura Case dentro de la estructura Case que ya haba desde el principio y bajo la opcin Respuesta Harmnica Conecta a la terminal ? de la estructura Case el indicador del separador de pestaas Tab Control 2.

18. Dentro del combo box de la estructura Case, elige la opcin Bode. Dentro de la estructura Case coloca un bloque Bode que encontrars bajo Control Design & Simulation > Control Design > Frequency Response > CD Bode. Conecta a este bloque la salida del modelo ZPK que creamos anteriormente bajo el caso Respuesta Harmnica. Crea un indicador grfico para las terminales de salida del bloque Bode Bode Magnitude y Bode Phase dando clic derecho sobre la terminal y eligiendo la opcin Create > Indicator.

19. Pasa al panel frontal. Ubica los dos indicadores grficos que corresponden al diagrama de bode para la magnitud y la fase. Haz estos indicadores grficos ms pequeos para que los dos quepan dentro de la pestaa llamada Bode como se muestra en la imagen.

20. Dentro del combo box de la nueva estructura Case, elige la opcin Nyquist. Dentro de la estructura coloca un bloque Nyquist que encontrars bajo Control Design & Simulation > Control Design > Frequency Response > CD Nyquist. Conecta a la terminal de entrada de este bloque la salida del modelo ZPK que creamos. Ahora crea un indicador dando clic derecho a la terminal de salida del bloque Nyquist llamada Nyquist Plot.

21. Pasa al panel frontal y coloca el indicador Nyquist Plot dentro de la pestaa Nyquist. Puedes agrandar el indicador para que abarque todo el espacio de esta pestaa. 22. En el diagrama de bloques, ahora agregaremos un bloque Nichols para poder visualizar el diagrama de Nichols que relaciona la frecuencia con la magnitud del sistema. Para poder hacerlo, necesitamos agregar el caso Nichols dentro de nuestra estructura Case. Da clic derecho sobre la estructura case y elige la opcin Add Case After. Automticamente se crea el caso Nichols. Repite de nuevo esta operacin para tener el caso Mrgenes de Estabilidad. 23. Ahora si, coloca un bloque Nichols dentro del caso con el mismo nombre. Este bloque lo encontrars bajo Control Design & Simulation > Control Design > Frequency Response > CD Nichols. Conecta el bloque a la salida del modelo ZPK que habamos creado y crea el indicador para la terminal Nichols Plot.

24. En el panel frontal, coloca este indicador dentro de la pestaa Nichols. Puedes expandir el indicador para que abarque toda el rea de la pestaa.

25. De regreso al diagrama de bloques, dentro del caso Mrgenes de Estabilidad, coloca un bloque Gain and Phase Margin que encontrars bajo Control Design & Simulation > Control Design > Frequency Response > CD Gain and Phase Margin. Conecta el bloque al modelo ZPK y crea un indicador para las terminales de salida Magnitude Plot y Phase Plot.

26. En el panel frontal, coloca los dos indicadores dentro de la pestaa Mrgenes de Estabilidad. Estos grficos indican hasta que ganancia y fase es estable e sistema. Ajusta el tamao de estos indicadores para poderlos acomodar dentro de la pestaa. Tu panel frontal se debe de ver como la siguiente imagen.

27. Pasa a la pestaa Funcin de Transferencia y ejecuta el programa. Analizaremos un sistema que propondremos a travs de la interfaz grfica. Sube la ganancia a 2.75 y presiona el botn Actualizar. Agregaremos un cero por lo que en la parte real teclea -3.47 y en la imaginaria 0. Da clic al botn Agregar. Realiza el mismo proceso para agregar un polo en (0.93,0) y (-4.22,0.88). Si cometes un error, puedes seleccionar el polo o cero que hayas agregado y luego presiona el botn Borrar para poder quitar ese polo o cero. Cuando quites polos o ceros complejos, recuerda quitar los dos conjugados para que no haya conflicto con la funcin de transferencia. 28. Navega por las diferentes pestaas del anlisis transitorio y del anlisis harmnico para ver los resultados del anlisis. 29. Presiona el botn Stop para detener la ejecucin del programa. 30. Vuelve a ejecutar el programa, pero ahora, en lugar de agregar la definicin de un sistema (su ganancia, polos y ceros) da clic sobre el botn Importar Modelo. Navega hasta la direccin donde guardaste el archivo que contiene la informacin del modelo obtenido en el ejercicio 1. Selecciona el archivo ModPlanta.sim y vers que el modelo se agrega automticamente a la interfaz grfica. 31. Navega por las diferentes pestaas del anlisis transitorio y del anlisis harmnico para ver los resultados del anlisis. 32. Finalmente, guarda el archivo dando clic sobre la opcin Save que encontrars en el panel frontal desde el men File > Save.

Fin Ejercicio 2a.

Ejercicio 2b. Anlisis de Sistemas Discretos (opcional)


En este ejercicio aprenderemos a analizar sistemas de control discretos definidos matemticamente en el dominio de la variable z. En realidad no hay diferencia entre este ejercicio y el ejercicio anterior. La nica especificacin que cambia en todos los casos es que hay que definir el tiempo de muestreo de la funcin de transferencia que estamos utilizando. Sigue estas instrucciones: 1. Abre LabVIEW si no se encuentra abierto dando clic en el cono del programa o con la ruta de acceso del men de inicio en Windows: Start > All Programs > National Intruments > LabVIEW 2011> LabVIEW. 2. Abre el archivo que se encuentra en el escritorio, en la carpeta de LabVIEW Control Design HandsOn\Exercises\Ejercicio 2b Anlisis de Sistemas. 3. A partir de este punto, sigue exactamente las mismas instrucciones que en el ejercicio anterior. La facilidad que encontramos con el Control Design Toolkit de LabVIEW es que para modelar sistemas discretos y poderlos analizar, se usan los mismos bloques. La nica diferencia es que cuando creamos un modelo (ZPK por ejemplo) tenemos que definir el tiempo de muestreo de la funcin de transferencia. Automticamente, se detecta entonces que es un sistema discreto y se pasa la funcin de transferencia al dominio de la variable z. En todos los casos, al momento de crear un modelo ZPK, conecta la terminal del control Tiempo de Muestreo (s) a la terminal Sampling Time del bloque Construct Zero-PoleGain Model. Antes de agregar una funcin de transferencia en la interfaz grfica de la pestaa Funcin de Transferencia, define el tiempo de muestreo primero. 4. Realiza los mismos dos ejemplos (el sistema de control que proponemos e importar el modelo que tenemos del ejercicio 1) ejecutando el programa cuando haya terminado de construir el cdigo. Observa las diferencias en la estabilidad del sistema dado que ahora es discreto. 5. Finalmente, guarda el archivo dando clic sobre la opcin Save que encontrars en el panel frontal desde el men File > Save.

Fin Ejercicio 2b.

Ejercicio 3. Diseo de un Controlador PID


En este ejercicio mostraremos cmo podemos sintetizar de una manera sencilla los parmetros de un controlador PID. En s, veremos cmo responde nuestro sistema ante diferentes ganancias del controlador PID. El ejercicio contiene una interfaz grfica sencilla que muestra la estructura del controlador en un diagrama de bloques mostrando la funcin de transferencia de cada parte del controlador. Modificaremos en tiempo real los valores de las ganancias proporcional, derivativa e integral para conseguir el mejor desempeo posible. Adems, aprenderemos a usar el Simulation Toolkit de LabVIEW para construir diagramas de bloques y ver la respuesta de nuestro sistema. Compararemos la facilidad de uso de los bloques del Control Design Toolkit y del Simulation Toolkit para simular y hacer la sntesis de nuestro controlador PID. Sigue estas instrucciones: 1. Abre LabVIEW si no se encuentra abierto dando clic en el cono del programa o con la ruta de acceso del men de inicio en Windows: Start > All Programs > National Intruments > LabVIEW 2011 > LabVIEW. 2. Abre el archivo que se encuentra en el escritorio en la carpeta de LabVIEW Control Design HandsOn\Exercises\Ejercicio 3 Diseo de PID. 3. En este ejercicio solo agregaremos el cdigo de la estructura Case para poder construir la estructura del controlador PID primero usando los bloques del Control Design Toolkit y luego usando los bloques del Simulation Toolkit de LabVIEW. Pasa al diagrama de bloques y en el combo box de la estructura Case elige la opcin Control Design Toolkit. 4. Como podemos ver, las funciones de transferencia de la planta, del bloque proporcional, del bloque derivador y del bloque integrador ya estn construidas. Ahora tenemos que unir estas funciones de transferencia para armar el controlador. Primero conectaremos en paralelo los bloques proporcional y derivador. Coloca un bloque Parallel que encontrars bajo Control Design & Simulation > Control Design > Model Interconection > CD Parallel. Conecta las terminales Model 1 y Model 2 de este bloque a las salidas de los modelos de los bloques proporcional y derivador.

5. El siguiente paso es conectar el modelo en paralelo entre el bloque proporcional y derivador en paralelo con el bloque integral. Coloca un bloque Parallel que encontrars bajo Control Design & Simulation > Control Design > Model Interconection > CD Parallel. Conecta las terminales Model 1 y Model 2 de este bloque a la salidas del modelo en paralelo que creamos en el paso anterior y el modelo del bloque integral.

6. Ahora conectaremos el paralelo de los bloques que formal al controlador PID en serie con el modelo de la planta que se importa directo del archivo en el que guardamos la informacin de nuestra planta. Coloca un bloque Series que encontrars bajo Control Design & Simulation > Control Design > Model Interconection > CD Series. Conecta las terminales Model 1 y Model 2 de este bloque a la salida del bloque paralelo de los componentes del PID y la salida del modelo de la planta que calculamos en el ejercicio 1.

7. Una vez conectado en serie la planta y los bloques del controlador PID tenemos que cerrar el lazo para poder tener presente la retroalimentacin del sistema segn el diagrama de la interfaz grfica. Coloca un bloque Feedback que encontrars bajo Control Design & Simulation > Control Design > Model Interconection > CD Feedback. Conecta a la terminal Model 1 de este bloque la salida de la conexin en serie de la planta y el PID. En la terminal Model 2 conectaremos un modelo que crearemos en el siguiente paso que en realidad no es ms que un modelo de valor 1 que cierre el lazo.

8. Coloca un bloque Construct Zero-Pole-Gain Model que encontrars bajo Control Design & Simulation > Control Design > Model Construction > CD Cunstruct Zero-Pole-Gain Model. Da clic derecho sobre la terminal Gain de este bloque y crea una constante de valor 1 eligiendo la opcin Create > Constant. Conecta la salida de este bloque a la terminal Model 2 del bloque Feedback.

9. Hemos terminado de generar nuestro modelo representado en la interfaz grfica. El inters ahora es ver que pasa ante un escaln unitario con la respuesta de nuestro sistema. Coloca un bloque Step Response que encontrars bajo Control Design & Simulation > Control Design > Time Response > CD Step Response. Conecta a la terminal State-Space Model (nombre de la terminal que aparece por default) de este bloque la salida del modelo

generado en el bloque Feedback que construimos. Da clic derecho sobre la terminal Time Info y crea las constantes de esta terminal. Verifica que los valores de esta terminal sean (0,0.001,20) en ese orden. Da clic derecho sobre la terminal de salida Step Response Graph del bloque Step Response y elige la opcin Create > Indicator.

10. Pasa al panel frontal y coloca el indicador grfico en la pestaa Control Design Toolkit. Puedes expandir el indicador de manera que abarque todo el espacio de la pestaa. Da clic derecho sobre el indicador grfico y elige la opcin Visible tems > Plot Legend para desactivar la leyenda del indicador. Da clic derecho sobre el eje de las y y selecciona la opcin Auto-scale Y. Esto desactivar la auto-escala. Da doble clic sobre el valor mximo en el eje de las y y teclea 1.1. Da doble clic sobre el valor mnimo en el eje de las y y teclea 0.

11. Pasa de nuevo al diagrama de bloques. Ahora usaremos el Simulation Toolkit de LabVIEW para construir la misma estructura del PID con la planta pero de una manera ms sencilla. En el combo box de la estructura Case, elige Simulation Toolkit. Ahora colocaremos la interfaz que nos permite usar los bloques de este toolkit. Coloca un bloque Simulation Loop que encontrars bajo Control Design & Simulation > Simulation > Simulation Loop. Expande este loop de manera que abarque todo el interior de la estructura Case. 12. Da doble clic sobre la lengeta del lado superior izquierdo del Simulation Loop y realiza las siguientes configuraciones: Initial Time: 0, Final Time: 20, ODE Solver: Runge-Kutta 23 (variable), Minimum Step Size: 1E-10, Maximum Step Size: 1, Relative Tolerance: 0.001 y Absolute Tolerante: 1E-7.

13. Coloca dentro del Simulation Loop, un bloque Step Signal que encontrars bajo Control Design & Simulation > Simulation > Signal Generation > Step Signal.

14. Da doble clic sobre el bloque Step Signal y realiza las siguientes configuraciones: inicial value: 0, final value: 1 y step time: 0.

15. Coloca junto al bloque Step Signal un bloque Sumation que encontrars bajo Control Design & Simulation > Simulation > Signal Arithmetic > Sumation. 16. Junto a este bloque coloca un bloque Derivative y un bloque Integrator que encontrars bajo Control Design & Simulation > Simulation > Continuous Linear Systems > Derivative/Integrator.

17. Coloca tres bloques Multiply que encontrars bajo Programming > Numeric > Multiply. Coloca uno a lado del derivador, uno al lado del integrador y el tercero arriba del bloque del derivador. 18. Coloca de nuevo un bloque Sumation que encontrars bajo Control Design & Simulation > Simulation > Signal Arithmetic > Sumation. Da doble clic sobre este bloque y realiza las siguientes configuraciones: Icon Shape: Rectangle, Inputs: 3, da clic sobre la terminal negativa hasta que aparezca un signo + y haz lo mismo con la terminal que aparece con un crculo rojo cruzado.

19. Coloca junto al ltimo bloque Sumation un bloque Transfer Function que encontrars bajo Control Design & Simulation > Simulation > Continuous Linear Systems > Transfer Function. Da doble clic sobre este bloque y realiza la siguiente configuracin: Parameter Source: Terminal.

20. Coloca un bloque Build Array que encontrars bajo Programming > Array > Build Array. Expande este bloque hasta tener dos entradas. Lo que estamos haciendo es crear un arreglo de la salida del sistema con la seal de entrada para poderlas graficar las dos en un solo indicador grfico.

21. Coloca un bloque SimTime Waveform que encontrars bajo Control Design & Simulation > Simulation > Graph Utilities > SimTime Waveform. Realiza las conexiones como se muestra en la siguiente imagen.

22. Ahora solo nos resta conectar los valores de las ganancias del proporcional, del derivador y del integral as como la funcin de transferencia de la planta para poder tener nuestro sistema armado. Conecta la terminal Kp de la estructura Case al primer bloque Multiply (de arriba hacia abajo). Conecta la terminal Kd al segundo bloque Multiply. Conecta la terminal Ki al tercer bloque Multiply. Finalmente conecta el cable rosa que trael el modelo de la planta directamente a la terminal Transfer Function del bloque Transfer Function.

23. Dado que el Simulation Toolkit de LabVIEW genera los clculos de la simulacin de un golpe (no genera dato por dato sino que realiza todos los clculos antes de entregar el resultado) pondremos un bloque Wait para que los datos se muestren durante un cierto tiempo antes de que se vuelvan a realizar los clculos y se actualicen los valores. Coloca un bloque Wait que encontrars bajo Programming > Timing > Wait (ms). Da clic derecho sobre su terminal del lado izquierdo y crea una constante de valor 1500 (1.5 segundos).

24. Pasa al panel frontal y coloca el indicador grfico que aparece dentro de la pestaa Simulation Toolkit. Puedes expandir el indicador de manera que abarque todo el espacio de la pestaa. Da clic derecho sobre el indicador grfico y elige la opcin Visible tems > Plot Legend para desactivar la leyenda del indicador. Da clic derecho sobre el eje de las y y selecciona la opcin Auto-scale Y. Esto desactivar la auto-escala. Da doble clic sobre el valor mximo en el eje de las y y teclea 1.1. Da doble clic sobre el valor mnimo en el eje de las y y teclea 0.

25. En el panel frontal, da clic sobre el icono del browser para importar el modelo obtenido en el ejercicio 1. Navega hasta la direccin del archivo ModPlanta.sim y seleccinalo.

26. Ejecuta el programa. Cambia los valores de las ganancias del controlador y observa la respuesta del sistema. Puedes cotejar los resultados de los dos: el Control Design Toolkit y del Simulation Toolkit. Da clic en el botn Stop para detener el programa. Nota: Puede ser que haya leves diferencias entre los resultados de los dos toolkits. Incluso, puede ser que el Simulation Toolkit marque un error al tratar de resolver las ecuaciones diferenciales que se programaron en forma de diagrama de bloques dentro del Simulation Loop. Esto se debe a que los algoritmos de resolucin de ecuaciones diferenciales son distintos y con diferentes parmetros. 27. Los valores recomendados para las ganancias del controlador PID son: Kp=2.5, Kd=0.05, Ki=7.5. 28. Finalmente, guarda el archivo dando clic sobre la opcin Save que encontrars en el panel frontal desde el men File > Save.

Fin Ejercicio 3.

Ejercicio 4. Implementacin de un Controlador PID


En este ejercicio, conectaremos nuestro sistema de demostracin a la tarjeta NI MyDAQ e implementaremos directamente un controlador PID por software. La ventaja de este tipo de controlador por software es que en tiempo real se est generando una seal de control para la planta sin necesidad de crear un PID fsico (con amplificadores operacionales por ejemplo) conectado a nuestra planta. El controlador por software hace los clculos en la computadora y produce la seal de control deseada segn los parmetros de las ganancias del proporcional, el derivador y el integrador. La desventaja que tiene este tipo de control es que puede ser lento dependiendo de la velocidad de procesamiento de la computadora. Sigue estas instrucciones: 1. Abre LabVIEW si no se encuentra abierto dando clic en el cono del programa o con la ruta de acceso del men de inicio en Windows: Start > All Programs > National Intruments > LabVIEW 2011> LabVIEW. 2. Abre el archivo que se encuentra en la ruta C:\Hands On\Seminars\LabVIEW Control Design HandsOn\Exercises\Ejercicio 4 Implementa PID. 3. Notars que en el ejercicio se encuentran algunas estructuras ya hechas: funciones de DAQ para le lectura y escritura de datos, tres ciclos while y una estructura case.

4. Comenzaremos a armar nuestra medicin de la velocidad del motor usando el sensor opto interruptor. Lo que haremos es medir cuantas veces por segundo pasa la muesca del crculo en el acoplamiento por el opto interruptor y as calcularemos la velocidad. 5. Empezaremos a trabajar en el segundo ciclo while. Colocamos la funcin de comparacin mayor que que se encuentra en Programming > Comparison > Greater? ; en la primera entrada conectaremos la salida de datos del bloque de la lectura analgica del ciclo while. En la segunda entrada daremos clic derecho Create > Constant y le damos el valor de 1.

6. Agregamos la funcin de Numeric Compound que se encuentra en Programming > Numeric > Compound Arithmetic. Le damos clic derecho Change Mode > AND. Conectamos la salida del operador Mayor que a la primera entrada del Numeric Compound. Afuera del segundo ciclo while, creamos una constante booleana FALSE Programming > Boolean > False Constant. Conectamos sta al ciclo while, y a su vez a la segunda entrada del Numeric Compound.

7. Da clic sobre el contorno del ciclo While donde se encuentra la entrada booleana y elige la opcin Replace with Shift Register. Coloca el otro Shift Register en el otro extremo del ciclo While. Conctalo de la siguiente manera:

8. Agregaremos una estructura Case dentro del ciclo While, que se encuentra en Programming > Structures > Case Structure. Conectaremos la salida de nuestro Compound Arithmetic a la entrada de condicin de la estructura Case.

9. En nuestro programa, haremos uso de un Sub VI llamado CUENTA. Su objetivo es el de ir contando la cantidad de cambios que detecta el opto interruptor y regresar este valor en un momento determinado. La actividad que realiza el VI depende de la funcin descrita en la etiqueta que tenga como entrada. Coloca el Sub VI Cuenta junto al ciclo While y conctalo. Da clic derecho en la parte izquierda del Sub VI y elije Create Constant.

10. De las opciones que aparecen, selecciona la opcin de Reset. Copia el Sub VI y agrega la copia dentro del Case Structure en la opcin de TRUE. Crea otra constante y en este caso selecciona la opcin Add. Conecta la entrada y salida de error, como se muestra en la siguiente figura:

11. Agregaremos una estructura Unbundle by Name que se encuentra en Programming > Clusters > Unbundle by Name y lgalo al cable de error de la funcin de lectura de DAQ. Agrega una funcin OR que se encuentra en Programming > Boolean > OR y conctalo a la estructura. La otra entrada del OR la conectaremos despus.

12. El ciclo que trabajamos se encarga de la parte de adquisicin de los cambios detectados en el opto interruptor debido a las muescas del encoder. Cuando se da una variacin de 0 a cualquier valor arriba de 1V, este cambio se registrar en el sub VI cuenta. Ahora trabajaremos en el ciclo de abajo, que nos ayudar a calcular las revoluciones por segundo utilizando el resultado de los cambios medidos. Coloca la funcin Elapsed Time que se encuentra dentro de Programming > Timing > Elapsed Time, y colcalo dentro del ciclo. Cuando salga el cuadro de texto selecciona 0.1 (segundos). Conecta la salida del Time has Elapsed? a la condicin de la estructura CASE.

13. Dentro de la estructura CASE en el caso TRUE, agrega dos copias del sub VI Cuenta. Crea una constante en cada uno de ellas; uno con la opcin RETURN y el otro RESET. Conecta los dos Sub VIs por medio de un cable de error.

14. Utiliza la funcin de divisin y multiplicacin que encontraras en Programming > Numeric > Multiply/Divide. Crea constantes dando clic derecho en las funciones Create > Constant y conctalas de la siguiente manera:

15. Al hacer esto hacemos que cada 0.1s se cuenten cuntos cambios detect el opto interruptor, y lo dividimos por las 4 muescas del encoder (1 vuelta representa que se detecten los cambios en las cuatro muescas) y lo multiplicamos 10 para obtener revoluciones por segundo. Agregaremos un Shift Register a este ciclo dando clic derecho en el borde Shift Register. Agregaremos una constante de valor 0 en Programming > Numeric > DBL Numeric.

16. Pasa al caso false, slo pasaremos el valor tal cual se lee del shift register. Haz las conexiones siguientes:

17. La terminal de paro del ciclo lo dejaremos sin conectar por el momento. Crearemos un indicador de las revoluciones por segundo dando clic derecho en el cable Create > Indicator, nombralo Rev/sec

18. Crea una variable local de este indicador. Da click derecho en el indicador, Create > Local Variable. Colcalo en el primer ciclo while del programa

19. Pasaremos a trabajar en el primer ciclo. Agrega la funcin de PID que se encuentra en Control Design and Simulation > PID > PID.vi , conecta el control de Speed Control a la entrada Setpoint de la funcin PID. Da click derecho en la variable local que creamos y da click en Change to Read. Esta variable ir conectado a la entrada Process Variable de la funcin PID.

20. Da click derecho en las entradas Output Range y PID Gains y en ambos casos elige la opcin Create > Control. Pasa al panel frontal (CTRL + E ) y acomoda tus nuevos controles. En el control de Output Range establece los valores de Output Low como 0.2 y 0.9 como Output High (controlaremos la velocidad del motor por medio del ciclo de trabajo por lo que aqu establecemos que la salida del controlador PID ser de 20 al 90%). Establece las ganancias de 20 para la parte proporcional, 0.002 para la parte integral y 0.1 para la parte derivativa.

21. Agrega un ciclo FOR Programming > Structures > FOR. En la Count Terminal del ciclo crea una constante de 10.

22. Agrega una funcin de multiplicacin Numeric > Multiply. Agrega dos shift registers al ciclo FOR y realiza las siguientes conexiones:

23. Agrega una funcin de escritura de DAQ: Measurement I/O > NI DAQmx > Write. Da click en la funcin y elige Digital > Single Channel > Single Sample > Boolean (1 line). Agrega una funcin de temporizacin Programming > Timing > Wait Until Next ms y conecta una constante de 0.1

24. Usaremos la funcin Greater? que se encuentra en Programming > Comparison > Greater? Utiliza en la primer entrada la salida de la multiplicacin y en la segunda el ndice del ciclo FOR. La salida de la comparacin ir al dato de entrada de la funcin de escritura de DAQ. Agregaremos la funcin Boolean to (0,1) que se encuentra en Programming > Boolean > Boolean to (0,1), y sta a su vez a la salida Output.

25. Graficaremos en cada momento tanto el setpoint definido por el usuario como la respuesta del sistema. Para esto agregaremos la funcin Merge Signals que se encuentra en Express > Signal Manipulation > Merge Signals. Expande la funcin para que tenga dos entradas y la primera conecta el control de Speed Control y en la segunda la variable de rev/sec.

26. Da clic derecho a la condicin de stop del ciclo y elige Create > Control. Esto te crear un botn de stop. Crea dos variables locales dando click derecho Create > Local Variable. Da click en cada una de ellas y elige Change to Read y agrgalas (una en el segundo ciclo while en la entrada del OR, y el segundo en el tercer ciclo directamente en la condicin de paro). El programa completo se debe ver de la siguiente manera:

27. Puede que el nmero del dispositivo no coincida con el ejemplo. Slo cambia estas opciones para el correcto funcionamiento del programa. Asegrate de que la lnea digital sea por la lnea 3 y la adquisicin de la seal analgica se haga por el canal 1. Nota: Asegrate que los interruptores en el dispositivo de demostracin estn apuntando hacia el circuito 2 (C2). Nota: Es posible que tengas que ajustar los parmetros de tu sistema PID para obtener mejores respuestas. Utiliza los valores obtenidos en los ejercicios anteriores, y haz comparaciones acerca de su funcionamiento.

Fin Ejercicio 4.