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