Ingeniería de Control Tema 6. Diseño de controladores discretos Daniel Rodríguez Ramírez Teodoro Alamo Cantarero Contextualización del tema • Conocimientos que se adquieren en este tema: – Como obtener el equivalente discreto de un controlador continuo usando diversas aproximaciones. – Conocer las propiedades de cada una de las aproximaciones. – Como obtener las aproximaciones sustituyendo la variable compleja s por una expresión en z. – Saber usar el método de diseño directo para diseñar un controlador discreto sin partir de uno continuo. – Conocer el control en un número finito de intervalos y sus limitaciones. Esquema del tema 5.1. Discretización de controladores PID continuos. 5.1.1. Aproximación rectangular hacia delante (Euler I). 5.1.2. Aproximación rectangular hacia atras (Euler II). 5.1.3. Aproximación bilineal (trapezoidal o Tustin). 5.2. Correspondencias s - z para las aproximaciones de la integral. 5.2.1. Rectangular hacia delante. 5.2.2. Rectangular hacia atrás. 5.2.3. Trapezoidal o Bilineal. 5.3. Estabilidad de las aproximaciones. 5.4. Funciones de Matlab útiles. 5.5. Método de diseño directo (Ragazzini-Truxal). 5.5.1. Causalidad. 5.5.2. Estabilidad Interna. 5.5.3. Errores en régimen permanente. 5.6. Control en un número finito de intervalos. Discretización de controladores continuos • • Se parte de un controlador en tiempo continuo, se discretiza con un determinado tiempo de muestreo y se implementa en un computador. El caso más común es el del PID: • Existen diversos métodos de sintonía, como el de Ziegler-Nichols: • El punto crítico es la técnica empleada para la aproximación: – Euler I y II. – Tustin. Aproximación rectangular hacia delante (Euler I) • La derivada se aproxima por: • El término integral: T e(t) K-1 • La expresión del PID queda: K t Aproximación rectangular hacia delante (Euler I) • Retrasando la expresión de la aproximación del PID: y restándosela a la original se obtiene: • Aplicando la transformada Z se obtiene la función de transferencia del controlador: Aproximación rectangular hacia delante (Euler I) • El código de programa que implementaría el controlador sería: 1. 2. 3. 4. Esperar a que se cumpla el tiempo de muestreo T. Leer yk. Calcular ek = rk - yk. Calcular uk según la expresión: 5. 6. Aplicar uk. Actualizar uk-1, ek-1, ek-2. Aproximación rectangular hacia atrás (Euler II) • En este caso la integral se aproxima por: T • Se llega a: K-1 K t Aproximación bilineal (trapezoidal o Tustin) • En el caso de la aproximación bilineal la integral se calcula mediante: T e(t) K-1 K t Es la mejor aproximación Ejemplo de discretización de PID • Sea el sistema: Diseñar un PID usando Z-N y discretizar usando T=0.1 segundos. • Los parámetros del PID continuo son: 2 Tustin 2 1.5 1.5 1 1 0.5 0.5 0 0 2 4 6 8 10 4 0 Euler I 0 2 4 6 8 10 0 2 4 6 8 10 6 3 4 2 2 1 0 0 -1 0 2 4 6 8 10 -2 Esquema del tema 5.1. Discretización de controladores PID continuos. 5.1.1. Aproximación rectangular hacia delante (Euler I). 5.1.2. Aproximación rectangular hacia atras (Euler II). 5.1.3. Aproximación bilineal (trapezoidal o Tustin). 5.2. Correspondencias s - z para las aproximaciones de la integral. 5.2.1. Rectangular hacia delante. 5.2.2. Rectangular hacia atrás. 5.2.3. Trapezoidal o Bilineal. 5.3. Estabilidad de las aproximaciones. 5.4. Funciones de Matlab útiles. 5.5. Método de diseño directo (Ragazzini-Truxal). 5.5.1. Causalidad. 5.5.2. Estabilidad Interna. 5.5.3. Errores en régimen permanente. 5.6. Control en un número finito de intervalos. Correspondencia s - z para la aproximación de la integral • • Las aproximaciones vistas se corresponden con una sustitución de la “s” por una función de z en la función de transferencia. Partimos de un ejemplo: • En el dominio del tiempo: • Obtenemos el valor de u(kT): e(t) A Integral de -au(t) au(t) +ae +ae(t) ae(t) entre (k(k-1)T y kT K t Correspondencia s - z para la aproximación de la integral Aproximación rectangular hacia delante • Se cumple que u(t) = u((k-1)T) en todo el intervalo: T e(t) • Teniendo en cuenta que: K-1 se llega a: • Tomando la transformada z: • Luego: K t Correspondencia s - z para la aproximación de la integral Aproximación rectangular hacia atrás • • Se cumple que u(t) = u(kT) en todo el intervalo. En este caso: • Teniendo en cuenta que: T se llega a: K-1 • Aplicando la transformada z: K t Correspondencia s $ z para la aproximación de la integral Trapezoidal o Bilineal • En este caso u(t) a lo largo del intervalo vale: • Esto implica: T e(t) K-1 • Llevándolo a: se obtiene: • Aplicando transformada z: K t Esquema del tema 5.1. Discretización de controladores PID continuos. 5.1.1. Aproximación rectangular hacia delante (Euler I). 5.1.2. Aproximación rectangular hacia atras (Euler II). 5.1.3. Aproximación bilineal (trapezoidal o Tustin). 5.2. Correspondencias s - z para las aproximaciones de la integral. 5.2.1. Rectangular hacia delante. 5.2.2. Rectangular hacia atrás. 5.2.3. Trapezoidal o Bilineal. 5.3. Estabilidad de las aproximaciones. 5.4. Funciones de Matlab útiles. 5.5. Método de diseño directo (Ragazzini-Truxal). 5.5.1. Causalidad. 5.5.2. Estabilidad Interna. 5.5.3. Errores en régimen permanente. 5.6. Control en un número finito de intervalos. Estabilidad de las aproximaciones • ¿ Como se transforma la región de estabilidad en continuo al aplicar las aproximaciones vistas ? Rectangular hacia delante La aproximación es z = Ts+1 Controladores estables en continuo pueden resultar inestables en discreto. Estabilidad de las aproximaciones Bilineal o Tustin • La aproximación es: La bilineal es la mejor Rectangular hacia atrás • La aproximación es: Ejemplo de estabilidad de las aproximaciones • Sea • Usando un tiempo de muestreo de 0.3 segundos: 0.4 0.7 0.35 0.6 Euler Atrás 0.5 0.3 0.4 0.25 0.3 0.2 0.2 Tustin 0.15 0.1 0.1 0 0.05 -0.1 Euler Adelante -0.2 0 0 2 4 6 8 10 12 0 1 2 3 4 5 6 7 Ejemplo discretización de un controlador • Dado Discretizarlo con T=0.1 segundos usando Euler hacia delante. • La aproximación es: llevándola a Gc(s): • La versión implementable es: Esquema del tema 5.1. Discretización de controladores PID continuos. 5.1.1. Aproximación rectangular hacia delante (Euler I). 5.1.2. Aproximación rectangular hacia atras (Euler II). 5.1.3. Aproximación bilineal (trapezoidal o Tustin). 5.2. Correspondencias s - z para las aproximaciones de la integral. 5.2.1. Rectangular hacia delante. 5.2.2. Rectangular hacia atrás. 5.2.3. Trapezoidal o Bilineal. 5.3. Estabilidad de las aproximaciones. 5.4. Funciones de Matlab útiles. 5.5. Método de diseño directo (Ragazzini-Truxal). 5.5.1. Causalidad. 5.5.2. Estabilidad Interna. 5.5.3. Errores en régimen permanente. 5.6. Control en un número finito de intervalos. Funciones de Matlab útiles • G=tf([1],[1 1 4]) Crea el sistema en tiempo continuo. • Gf = tf(bilin(ss(G),1,'fwdrec',0.3)) Devuelve la aproximación Euler hacia delante con un tiempo de muestreo de 0.3 segundos. • bilin funciona con sistemas en espacio de estados, de ahí que se pase a esta descripción con ss y después se vuelva a poner en función de transferencia. • Gb = tf(bilin(ss(G),1,‘bwdrec',0.3)) Devuelve la aproximación Euler hacia atrás. • Gtu = tf(bilin(ss(G),1,’Tustin',0.3)) Devuelve la aproximación Tustin. Esquema del tema 5.1. Discretización de controladores PID continuos. 5.1.1. Aproximación rectangular hacia delante (Euler I). 5.1.2. Aproximación rectangular hacia atras (Euler II). 5.1.3. Aproximación bilineal (trapezoidal o Tustin). 5.2. Correspondencias s - z para las aproximaciones de la integral. 5.2.1. Rectangular hacia delante. 5.2.2. Rectangular hacia atrás. 5.2.3. Trapezoidal o Bilineal. 5.3. Estabilidad de las aproximaciones. 5.4. Funciones de Matlab útiles. 5.5. Método de diseño directo (Ragazzini-Truxal). 5.5.1. Causalidad. 5.5.2. Estabilidad Interna. 5.5.3. Errores en régimen permanente. 5.6. Control en un número finito de intervalos. Método de diseño de Ragazzini-Truxal • • Es una alternativa a la discretización de controladores, se diseña directamente en discreto. Se imponen condiciones a la función de transferencia del controlador y a la de bucle cerrado. La idea es obtener una función de bucle cerrado deseada Gd(z) y a partir de ahí obtener el controlador necesario. La función de bucle cerrado deseada será igual a: • Despejando C(z): • C(z) puede ser no implementable se imponen condiciones: – Causalidad. – Estabilidad interna. – Errores en régimen permanente. • • Condición de causalidad • • El controlador debe ser causal para evitar que u(k) dependa de errores futuros. C(z) es causal si: • Por otra parte: Grado(N(z)) · grado(D grado(Dd(z)) Causalidad El exceso de polos sobre ceros de Gd(z) debe ser mayor o igual que el exceso de polos sobre ceros de G(z). Estabilidad Interna • • No se debe haber cancelaciones de polos-ceros inestables entre C(z) y G(z). La ecuación característica del sistema es: • Supóngase que G(z) tiene un polo inestable: que se cancela con un cero inestable: • La ecuación característica quedaría: Raiz inestable 1. Todos los polos inestables de G(z) deben aparecer como ceros de 11-Gd(z). 2. Todos los ceros inestables de G(z) deben aparecer como ceros de Gd(z). Errores en régimen permanente • El error de bucle cerrado es: y en régimen permanente: ERP NULO ANTE ESCALÓN: ERP ESCALÓN NULO : Gd(1) = 1 ERP NULO ANTE ESCALÓN: ERP ESCALÓN Y RAMPA NULO : Esquema del tema 5.1. Discretización de controladores PID continuos. 5.1.1. Aproximación rectangular hacia delante (Euler I). 5.1.2. Aproximación rectangular hacia atras (Euler II). 5.1.3. Aproximación bilineal (trapezoidal o Tustin). 5.2. Correspondencias s - z para las aproximaciones de la integral. 5.2.1. Rectangular hacia delante. 5.2.2. Rectangular hacia atrás. 5.2.3. Trapezoidal o Bilineal. 5.3. Estabilidad de las aproximaciones. 5.4. Funciones de Matlab útiles. 5.5. Método de diseño directo (Ragazzini-Truxal). 5.5.1. Causalidad. 5.5.2. Estabilidad Interna. 5.5.3. Errores en régimen permanente. 5.6. Control en un número finito de intervalos. Control en un número finito de intervalos. Control dead-beat • • • Objetivo: lograr tiempo de establecimiento finito con error en régimen permanente nulo. Gd(z) debe tener respuesta impulsional finita : polinomio de orden N: Gd(z) tiene todos los polos en cero, la salida llega a cero en N tiempos de muestreo y el tiempo de establecimiento es de t=NT segundos. Cuando N toma el valor mínimo posible (n, el orden de G(z)) el control obtenido se llama deaddead-beat. • Gd(z) tomará la forma: • El controlador C(z) será: Control en un número finito de intervalos. Control dead-beat • Como Nd(z) se puede tomar: lo que implica que: • Además el error en régimen permanente debe ser nulo: • Siendo Ejemplo de Ragazzini-Truxal • Sea el sistema discreto: Se desea calcular un controlador que coloque los polos en z=0 y 0.8 y tenga e.r.p. ante escalón cero. • Al tener exceso de polos sobre ceros igual a 1: • Estabilidad interna: 1-Gd(z) debe tener un cero en z=-2. • Imponiendo el cero en z=-2: Ejemplo de Ragazzini-Truxal • De lo anterior: • Imponiendo la condición de e.r.p. nulo,Gd(1)=1: • Usando las dos ecuaciones anteriores: • Por tanto: • De ahí: Ejemplo de Ragazzini-Truxal • Luego: • La ley de control se calcularía como: 3 2.5 2 1.5 Sistema de fase no mínima con cero en 1.11 1 0.5 0 -0.5 -1 -1.5 -2 0 20 40 60 80 100 120 Ejemplo de control dead-beat • Sea el sistema: • La función de transferencia del controlador será: 1 0.8 Se alcanza la salida en un sólo tiempo de muestreo 0.6 0.4 0.2 0 0 1 2 3 4 5