Trabajo Práctico N° 10 IMPLEMENTACIÓN EN LabView DE UN CONTROLADOR PID Breve introducción teórica: PID = Proporcional – Integral – Derivativo
Es un tipo de control analógico, un controlador que satisfaga el modo de control analógico PID se caracteriza por una salida del controlador p(t) relacionada con la señal de error e(t) mediante la expresión:
t
p(t ) = K P .e(t ) + K I .∫ e(t )dt + p I (0) +.K D . 0
de(t ) dt
(1)
Donde KP no tiene dimensiones, KI se da en seg-1 y KD en seg. También se utiliza en muchas ocasiones el tiempo integral TI y el derivativo TD, los cuales vienen relacionados mediante expresiones inversas de KI y KD respectivamente:
TI =
1 KI
y
TD =
1 KD
(2)
Usaremos las expresiones (3) y (4) más adelante para implementar en LabView los modos integral y derivativo. Vemos, del gráfico que en rigor podemos implementar 4 tipos de control: •
Proporcional
•
Proporcional + integral
•
Proporcional + integral + derivativo
•
Proporcional + derivativo
El quinto posible (integral + derivativo) no es posible, pues carece de la amplificación de la señal de error. P: acción de control proporcional, da una salida del controlador que es proporcional al error, es decir: u(t) = KP. e(t) que descripta desde su función transferencia queda: CP(s) = KP (1) Donde KP es una ganancia proporcional ajustable. Un controlador proporcional puede controlar cualquier planta estable, pero posee desempeño limitado y error en régimen permanente (off-set). I: acción de control integral: da una salida del controlador que es proporcional al error acumulado, lo que implica que es un modo de controlar lento. t
u (t ) = K I ∫ e(τ )dτ 0
Que en el dominio de Laplace será: CI ( s) =
KI s
La señal de control u(t) tiene un valor diferente de cero cuando la señal de error e(t) es cero. Por lo que se concluye que dada una referencia constante, o perturbaciones, el error en régimen permanente es cero. PI: acción de control proporcional-integral, se define mediante:
u (t ) = K P e(t ) + Lo que en el dominio de Laplace será:
KP t e(τ )dτ Ti ∫0
C PI ( s ) = K P (1 +
1 ) Ti s
Con un control proporcional, es necesario que exista error para tener una acción de control distinta de cero. Con acción integral, un error pequeño positivo siempre nos dará una acción de control creciente, y si fuera negativa la señal de control será decreciente. Este razonamiento sencillo nos muestra que el error en régimen permanente será siempre cero. Muchos controladores industriales tienen solo acción PI. Se puede demostrar que un control PI es adecuado para todos los procesos donde la dinámica es esencialmente de primer orden. Lo que puede demostrarse en forma sencilla, por ejemplo, mediante un ensayo al escalón. PD: acción de control proporcional-derivativa, se define mediante: u (t ) = K P e(t ) + K PTD
de(t ) dt
Lo que en el dominio de Laplace queda: C PD ( s ) = K p + SK PTD
Cuando una acción de control derivativa se agrega a un controlador proporcional, permite obtener un controlador de alta sensibilidad, es decir que responde a la velocidad del cambio del error y produce una corrección significativa antes de que la magnitud del error se vuelva demasiado grande. Aunque el control derivativo no afecta en forma directa al error en estado estacionario, añade amortiguamiento al sistema y, por tanto, permite un valor más grande que la ganancia K, lo cual provoca una mejora en la precisión en estado estable. PID: acción de control proporcional-integral-derivativa, esta acción combinada reúne las ventajas de cada una de las tres acciones de control individuales. La ecuación de un controlador con esta acción combinada se obtiene mediante:
u (t ) = K P e(t ) +
KP t de(t ) e(τ )dτ +K PTD ∫ TI 0 dt
Que en el dominio de Laplace quedaría: C PID ( s ) = K p (1 +
1 + TD s ) TI s
No vamos a entrar en el análisis de los métodos de Oscilación, o de Respuesta en frecuencia, o de la curva de reacción o de la respuesta al escalón (ajustes de Ziegler and Nichols). Por no ser tema de este curso, pero nos baste con saber lo siguiente:
• Desde una perspectiva moderna, un controlador PID es simplemente un controlador de hasta segundo orden, conteniendo un integrador.
• Descubrimientos empíricos demuestran que la estructura del PID por lo general tiene la suficiente flexibilidad como para alcanzar excelentes resultados en muchas aplicaciones.
• El término básico es el término proporcional, P, que genera una actuación de control correctivo proporcional al error.
• El término integral, I, genera una corrección proporcional a la integral del error. Esto nos asegura que si aplicamos un esfuerzo de control suficiente, el error de seguimiento se reduce a cero.
• El término derivativo, D, genera una acción de control proporcional al cambio de rango del error. Esto tiende a tener un efecto estabilizante pero por lo general genera actuaciones de control grandes. Aplicaciones / Ejemplo Un ejemplo muy sencillo que ilustra la funcionalidad básica de un PID es cuando una persona entra a una ducha. Inicialmente abre la llave de agua caliente para aumentar la temperatura hasta un valor aceptable (también llamado "Setpoint"). El problema es que puede llegar el momento en que la temperatura del agua sobrepase este valor así que la persona tiene que abrir un poco la llave de agua fría para contrarrestar el calor y mantener el balance. El agua fría es ajustada hasta llegar a la temperatura deseada. En este caso, el humano es el que está ejerciendo el control sobre el lazo de control, y es el que toma las decisiones de abrir o cerrar alguna de las llaves; pero no sería ideal si en lugar de nosotros, fuera una maquina la que tomara las decisiones y mantuviera la temperatura que deseamos?
Esta es la razón por la cual los lazos PID fueron inventados. Para simplificar las labores de los operadores y ejercer un mejor control sobre las operaciones. Algunas de las aplicaciones más comunes son: •
Lazos de Temperatura (Aire acondicionado, Calentadores, Refrigeradores, etc.)
•
Lazos de Nivel (Nivel en tanques de líquidos como agua, lácteos, mezclas, crudo, etc.)
•
Lazos de Presión (para mantener una presión predeterminada en tanques, tubos, recipientes, etc.)
•
Lazos de Flujo (mantienen la cantidad de flujo dentro de una línea o tubo)
Al implementar mediante software los términos integral y derivativo hay que tener en cuenta que para poder representar de forma discreta mediante las instrucciones del software que se utilice los valores deben aproximarse. El término integral se aproxima teniendo en cuenta el método numérico trapezoidal de integración (figura 1).
De la figura 1, es posible aproximar el término integral (área sombreada) mediante la función: n
n e(k .T ) + e((k + 1)T ) e ( t ) dt = .T ∑ ∫0 2 k =0
(3)
Por otra parte, la acción derivativa puede aproximarse mediante la regla de la diferencia finita (figura 2).
El término derivativo se aproxima, por tanto mediante la expresión:
de(t ) e( k .T ) − e(( k − 1).T ) = dt T
(4)
Para ver la eficiencia del control PID, en esta dirección se puede ver un video de equilibrio de una pelota en una bandeja, con y sin PID, implementado en labview: http://www.youtube.com/watch?v=uERF6D37E_o
DESCRIPCIÓN DE LA PRÁCTICA. Vamos a diseñar un IV que realice el clásico algoritmo de control PID (proporcional-integral-derivativo). La práctica consta de 5 ejercicios. En los primeros diseñaremos los VI que realicen por separado los modos proporcional, integral y derivativo. En el cuarto se implementará el tiempo entre muestra y muestra de las variables involucradas en el controlador PID, y el quinto y último utilizará los cuatro anteriores para realizar el algoritmo con el nombre PID. Ejercicio 1: Creación de un sub-IV para implementar el modo proporcional.
Panel frontal:
Abrir un instrumento virtual en blanco y crear el panel frontal de la figura 3. En este panel colocamos dos controles y un indicador con las etiquetas “Error”, “Kp” y “Acción proporcional”, respectivamente. Diagrama de bloques: Cableamos como muestra la figura, luego de definir a los elementos como de doble precisión, con lo que llegamos a algo como lo de la figura 3. Panel Frontal
Diagrama de bloques
Figura 3
Este VI se encargará de realizar la acción proporcional. Para ello editaremos el ícono y lo cablearemos para guardarlo como un Sub VI, con el nombre de Proporcional.vi Para lo que ejecutamos los siguientes pasos, dados en forma muy resumida, dado que y fueron vistos oportunamente.
Editamos el ícono para dejarlo como se indica en la figura:
A continuación definimos y cableamos los conectores de
entrada y de salida al VI, y procedemos a salvarlo con el nombre de proporcional.vi.
Con lo que nos quedaría:
Ejercicio 2: Creación de un sub-IV para implementar el modo integral. Panel frontal: Abrir un instrumento virtual en blanco y crear el panel frontal de la figura 4. En este panel colocamos tres controles, un indicador y una booleana con las etiquetas “Error”, “Dt”, “KI” y “Acción integral”, respectivamente. Diagrama de bloques: Armamos el diagrama que muestra la figura 5.
Figura 4
Figura 5
Veamos ahora el único bloque que nos puede resultar desconocido:
Functions Numeric Compound Arithmetic Click derecho Change Mode Multiply. Este bloque es un operador aritmético de varias entradas, donde la operación seleccionada es la multiplicación. Al crear la estructura repetitiva While, en ella aparecen estos dos íconos. Un índice de repetición (es el cuadrado azul “i”) y un icono rojo de finalización. El bucle repetitivo While se ejecuta mientras el icono rojo sea evaluado a “Verdadero”. Nosotros haremos lo siguiente: click derecho sobre el botón rojo y seleccionamos: •
Continue if True
•
Create Constant
Otros elementos que pueden resultar novedosos son los elementos que están en los bordes de la estructura y se llaman registros de desplazamiento. Su misión es la de incorporar en la iteración siguiente los valores obtenidos en la iteración anterior. Para que aparezcan, hay que situar el cursor y con click del ratón sobre el borde del bucle y mediante su botón derecho seleccionar “Add Shift Register”. Una vez hecho esto, editamos el ícono para dejarlos como se indica en la figura:
Definición de conectores: En el panel frontal, con el ratón situado en el área del icono y hacemos click derecho y tomamos las siguientes opciones: • Disconnect All Terminals • Patterns Seleccionamos el que tenga 4 entradas y 1 salida.
Y cableamos los terminales en forma secuencial el conector y el terminal del ícono del panel frontal que se desea asignar a dicho conector. Realizando, en particular, las siguientes asignaciones:
Ahora lo salvamos con el nombre de Integral.vi, para usarlos luego:
Ejercicio 3: Creación de un sub-IV para implementar el modo derivativo. Panel frontal: Abrir un instrumento virtual en blanco y crear el panel frontal de la figura 6. En este panel colocamos tres controles y un indicador con las etiquetas “Valor anterior”, “Dt”, “Kd” y “Acción derivativa”, respectivamente. Diagrama de bloques: Armamos el diagrama que muestra la figura 6.
Figura 6
Editamos el ícono para que nos quede como muestra la figura
Hacemos la selección del ícono de terminales como se vio en el caso anterior y cableamos como vemos en esta figura.
Salvamos con el nombre de Derivativa.vi
Ejercicio 4: Creación de un sub-IV para implementar el tiempo entre muestras. Panel frontal: Abrir un instrumento virtual en blanco y crear el panel frontal de la figura 7. En este panel colocamos un indicador con la etiqueta “Dt”. Diagrama de bloques: Armamos el diagrama que muestra la figura 7.
Figura 7 Donde el tiempo lo tomamos de la paleta: Functions Timing Tick Count (ms). Ahora nuestro
creamos sub
VI
modificando el ícono como lo vemos en la figura.
Y lo cableamos de la siguiente manera
Y lo guardamos con el nombre de Tiempo.vi:
Ejercicio 5: Creación de un sub-IV para implementar el control PID. Panel frontal: Abrir un instrumento virtual en blanco y crear el panel frontal de la figura 8. Dicho panel está formado por iconos de tres tipos: indicadores, controles y “waveform chart”.
Figura 8 Diagrama de bloques: Armamos el diagrama que muestra la figura 9.
Figura 9
Los elementos que pueden resultarnos nuevos: Functions Comparison In Range and Coerce. Que evalúa el rango de la salida.
,
,
,
Functions Select a VI Buscar la carpeta donde
esté guardado el VI correspondiente.
Ahora editaremos el ícono para crear el símbolo de nuestro VI. Lo cablearemos:
Y lo guardaremos bajo el nombre de PID básico.vi
Ejercicio 6: Control de lazo cerrado con PID y NI USB 6008
Vamos a trabajar con nuestra placa USB 6008. Para ello vamos a adquirir datos de entrada, ejecutar un algoritmo de control (PID) y con ello generar una respuesta por la salida analógica. Para ello vamos a colocar en el panel frontal un Wave Form chart (Modern Graph Wave form chart). Configuramos el valor mínimo (0) y el máximo (6) que queremos mostrar. Con click derecho seleccionamos Y Scale y destildamos Austoscale Y.
En la ventana de los diagramas de bloques abrimos el DAQ assistant y seleccionamos como entrada analógica de tensión a ai0, en la configuración mantengo el rango de -10 V a 10 V y elijo entrada referencial (RSE), y en el modo de adquisición, una muestra a la vez:
De la misma forma, creamos ahora nuestra salida, eligiendo el canal ao0, en la configuración seleccionamos entrada referencial (RSE), y en el modo de adquisición, una muestra a la vez, si es que no está definida por defecto.
Y ahora seleccionamos el algoritmo de control, para ello vamos a usar el que desarrollamos, para ello hacemos click derecho para desplegar el menú y seleccionamos Select a VI . . .
Y en la pantalla que se abre seleccionamos: PID Basico.vi:
Quedándonos ahora la siguiente pantalla en el diagrama de bloques:
Adaptar el sistema para que la entrada provista por la placa genere la salida de corrección a través de instrumento PID Básico y muestre ambas en el indicador gráfico.