Introducción Tarea básica de un controlador –
ajustar el estado de un proceso (variable de proceso – VA) a un
valor deseado (valor de referencia – VR) La diferencia entre
ambos valores es el error: E = VR – VA Entonces el objetivo del
controlador es reducir el error a cero (o al mínimo)
Sistema de Control Controlador Proceso Sensor VA VR E + –
Ejemplo 1 – mantener al robot a una distancia (DR) de la
pared(seguimiento de pared)
Ejemplo 2 – mantener al robot sobre la línea
(seguimiento de línea) ?
Ejemplo – mantener al robot a una distancia (DR) de la
pared(seguimiento de pared) Control dirección Robot Sensor
de distancia DA DR E
Lazo abierto vs. lazo cerrado Lazo abierto – se ajusta el
valor del controlador de acuerdo al valor deseado pero no hay
medición del valor actual (retroalimentación) Lazo
cerrado – se mide la salida del proceso de forma que se
compare con el valor deseado y se pueda automáticamente
reducir el error
Lazo abierto Control dirección Robot Sensor de distancia
DA DR Lazo cerrado Control dirección Robot DA DR
Algoritmo de Control La forma de ajustar el proceso en
función del error se le denomina el algoritmo de control
Algunos de los algoritmos básicos en control
clásico son: Control ON –OFF Control proporcional
Control proporcional derivativo (PD) Control proporcional
integral (PI) Control proporcional integral-derivativo
(PID)
Control ON – OFF Se basa en que el controlador tiene sólo
dos estados (ON/OFF, abieto/cerrado, izq./der.) Si comparamos el
VA con el VR, se toma una de las dos posibles acciones
dependiendo del signo del error Por ejemplo, en un control de
temperatura de un refrigerador: Si Temp > T-ref. ? encender
compresor Si Temp < T-ref. ? apagar compresor
Control ON – OFF OFF ON Ref. T
Control ON – OFF Normalmente se tiene una zona de tolerancia (GAP
o histéresis) en la que se mantiene el estado anterior
Algoritmo de control: E = VR – VA C = signo E Si |E| –
½ GAP < 0 ? OFF Si |E| + ½ GAP > 0 ? ON
Control ON – OFF, con GAP OFF ON Ref. T Gap
Control On-Off Esquema de control on-off void main() { while(1) {
int error = goal – sensor_lecture; int power = 100;
if(error < (goal – gap))/*to far from line*/ left(power); else
right(power); /* turn toward the line */ msleep(100L); /* 10
iterations per second */ } }
Control ON – OFF Respuesta Temp. Ref. Tiempo Control ON
OFF
Control On-Off Control On-Off Resultados experimentales para
seguimiento de linea recta, con diferentes valores de
(setpoint).
Control On-Off
Control On-Off
Control On-Off Cuando la dirección del robot sobrepasa el
limite inferior de la banda, entonces el volante se gira
completamente a la izquierda, pero debido a la inercia del
sistema pasa algun tiempo para que la dirección del
vehiculo cambie. En la siguiente ocación que la
dirección del robot sobrepasa el limite superior de la
banda, entonces el volante se gira completamente a la derecha,
sobrepasandose a la dirección deseada.
Control On-Off Es fácil notar que el robot oscila al
rededor del valor de referencia del algoritmo y por lo tanto
nunca viajará en linea recta
Control Proporcional (P) En lugar de tener una acción
constante que sólo depende del signo del error, podemos
hacer que la magnitud del control dependa del tamaño del
error En otras palabras la ley de control debe ser de la
siguiente forma: V = KE + M E = PV – SP (error) K es una
constante de proporcionalidad M es una posición donde E =
0
Control proporcional La ecuación anterior define una linea
recta (Gp:) Error (Gp:) ?V (Gp:) M (Gp:) Valor de la
posición (Gp:) Totalmente a la derecha (Gp:) Totalmente a
la izquierda (Gp:) 0% (Gp:) 100% (Gp:) Rango de la variable de
proceso (Gp:) Set point
Control proporcional La pendiente de la línea, determina
el cambio en el giro del volante, que corresponde al valor del
error. (Gp:) M (Gp:) Valor de la posición (Gp:) Totalmente
a la derecha (Gp:) Totalmente a la izquierda (Gp:) 0% (Gp:) 100%
(Gp:) PV (Gp:) SP
Control proporcional El porcentaje de cambio del error, necesario
para mover el volante a escala completa, se conoce como banda
proporcional (PB). Por lo tanto, en la figura anterior se nota
que se requiere de un valor grande de error para girar el volante
completamente en cualquier dirección. En la figura
siguiente se requiere de un error pequeño para girar el
volante completamente en cualquier dirección.
Control proporcional (Gp:) M (Gp:) Valor de la posición
(Gp:) Totalmente a la derecha (Gp:) Totalmente a la izquierda
(Gp:) 0% (Gp:) 100% (Gp:) PV (Gp:) SP
Control proporcional La relación entre la ganancia
proporcional y la banda proporcional es: K = 100/PB donde PB esta
en porcentaje El termino de estado estable M se conoce como
restablecimiento manual (manual reset)
Control proporcional La acción de control con respecto al
tiempo de este esquema se muestra en la siguiente figura: (Gp:)
Derecha (Gp:) Izquierda (Gp:) Volante (Gp:) PV (Gp:) SP (Gp:)
E
Control proporcional Control proporcional void main() { while(1)
{ int error = reference – sensor_lecture; int power =
100error + M; if(error < goal)/*to far from line */
left(power); else right(power); /* turn toward the line */
msleep(100L); /* 10 iterations per second */ } }
Control proporcional
Control proporcional
Control proporcional
Control proporcional
Control Proporcional – Derivativo (PD) De las graficas anteriores
se puede ver que al incrementar la ganancia proporcional, no
mejora el comportamiento del sistema. Para ganancias grandes, se
lleva al sistema rápidamente al valor de referencia, pero
aún se tienen sobretiros y oscilaciones. La
solución es agregar al algoritmo de control un
término que permita corregir el efecto del momento del
sistema, cuando se esta moviendo hacia el valor de
referencia
Control Proporcional Derivativo Donde: E = Valor de referencia –
lectura del sensor, es el error Kp es la constante del
término proporcional Kd es la constante del término
derivativo dE/dt es la derivada del error
Control Proporcional Derivativo void main() { while(1) { int
sensor_lecture = analog(CENTRAL_SENSOR); int error = reference –
sensor_lecture int power = kp*error – kd(erro – last_error);
if(sensor_lecture < goal) /* to far from line /* left(power);
else right(power); /* turn toward the line */ msleep(100L); /* 10
iterations per second */ int last_error = error; } }
Control Proporcional Derivativo La potencia ahora es una
función del error proporcional (kp*error) y la derivada
del error (kd*(error – last_error)) o velocidad del error
Control Proporcional Derivativo
Control Proporcional Derivativo Los resultados muestran una
reducción en el sobretiro y una minimización en el
comportamiento oscilatorio del sistema. Debe observarse la
naturaleza discreta de la grafica de velocidad, debida
principalmente al “error de muestreo discreto”. Este
error es a consecuencia del intervalo que existe entre la lectura
del error en un instante dado y el valor del error un instante
anterior.
Control Proporcional Derivativo
Control Proporcional Derivativo Para ganancias derivativas
grandes un sistema podria presentar inestabilidades de tal forma
que el sistema se puede frenar y detenerse aún sin
alcanzar el valor de referencia. Cuando la velocidad pasa por el
valor cero, entonces la ganancia obliga al sistema a moverse de
nuevo y el control empieza a corregir otra vez. Lo que da como
resultado un comportamiento poco elegante.
ESTA PRESENTACIÓN CONTIENE MAS DIAPOSITIVAS DISPONIBLES EN
LA VERSIÓN DE DESCARGA