Post on 02-Jul-2015
description
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:
dt
tdeKpdtteKteKtp D
t
IIP
)(..)0()(.)(.)(
0
∫ +++= (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:
I
IK
T1
= y D
DK
T1
= (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
I deKtu0
)()( ττ
Que en el dominio de Laplace será:
s
KsC I
I =)(
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:
∫+=
t
i
PP de
T
KteKtu
0
)()()( ττ
Lo que en el dominio de Laplace será:
)1
1()(sT
KsCi
PPI +=
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:
dt
tdeTKteKtu DPP
)()()( +=
Lo que en el dominio de Laplace queda:
DPpPDTSKKsC +=)(
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:
dt
tdeTKde
T
KteKtu
DP
t
I
P
P
)()()()(
0
∫ ++= ττ
Que en el dominio de Laplace quedaría:
)1
1()( sTsT
KsC D
I
pPID ++=
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:
TTkeTke
dtte
n n
k
.2
))1(().()(
0 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:
T
TkeTke
dt
tde )).1(().()( −−= (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 creamos
nuestro 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.