Estimación de estados La realimentación de estados requiere medir los estados, pero normalmente, no se tiene acceso a todos los estados. Entonces ¿cómo implementar la realimentación de estados?. Si el sistema es observable, los estados se pueden estimar mediante un observador . r N u − ẋ R B x C y A Plant K ^ x Observer Un observador es un sistema dinámico que estima los estados de la planta basado en la medida de sus entradas y salidas. Observadores– p. 1/37 Estimación de estados ¿Cómo construir un observador?. Una forma intuitiva podría ser reproducir el modelo de la planta y ejecutarlo simultáneamente para obtener un estado estimado x̂(t). estimate ^ x(t). u B ẋ R x C y A B ^ x˙ R ^ x A PSfrag replacements Plant copy Copia de la planta El problema con este diseño simple es que si la planta y su ”copia” en el observador tienen diferentes condiciones iniciales, los estimados generalmente no convergirán a los valores reales. Observadores– p. 2/37 Estimación de estados Una mejor estructura de observador incluye una ”corrección del error por realimentación”. observer structure includes error feedbac u B ẋ R x y C A ^ y B y error L ^ x˙ R − C ^ x A Con un diseño apropiado de la matriz de ganancia L,se puede ajustar al observador para que entregue un estimado del estado que convergirá asintóticamente al valor real del estado. Observadores– p. 3/37 Estimación de estados Re-arreglando el diagrama en bloques anterior, se obtiene la estructura final del observador. u Si el sistema es observable, se puede escoger la ganancia L para que asigne arbitrariamente los autovalores de A − LC. De hecho, requerimos que el observador sea estable!. er Del diagrama en bloques, las ecuaciones del observador son, ẋ R B x y C A u Observer B ^ x x˙ R ^ L A − LC ˙ x̂(t) = Ax̂(t) + Bu(t) + L[y(t) − Cx̂(t)] = (A − LC)x̂(t) + Bu(t) + Ly(t) = (A − LC)x̂(t) + Bu(t) + LCx(t) Observadores– p. 4/37 Estimación de estados De la ecuación del observador, y la ecuación de la planta, ẋ y = Ax + Bu = Cx Podemos obtener una ecuación para el error de estimación , ε = x − x̂, ε̇ = ẋ − x̂˙ = Ax + Bu − Ax̂ − Bu − LC(x − x̂) = A(x − x̂) − LC(x − x̂) = (A − LC)ε ⇒ ε(t) = e(A−LC)t ε(0) Así, vemos que para que el error converja asintóticamente a cero, ε(t) → 0 (y así x̂(t) → x(t)), se necesita que (A − LC) sea Hurwitz. Observadores– p. 5/37 Diseño del observador En resumen, para diseñar el observador usamos las matrices A, B y C de la planta para formar la ecuación de estado, ˙ x̂(t) = (A − LC)x̂(t) + Bu(t) + Ly(t) donde L es tal que los autovalores de (A − LC) tengan parte real negativa. ¿Cómo escoger L?. Podemos usar por dualidad, el mismo procedimiento seguido para diseñar la ganancia de realimentación de estados K tal que A − BK fuera Hurwitz. Note que formando la matriz transpuesta, (A − LC)T = A T − C T LT = Adual − Bdual Kdual el problema se reduce a escoger Kdual para hacer Adual − Bdual Kdual Hurwitz, y finalmente, T L = Kdual Observadores– p. 6/37 Ejemplo: Observador en el motor DC. Volvamos al ejemplo del motor DC visto antes. Se desea seguimiento robusto de una referencia y rechazo a disturbios.La realimentación de estados requiere la medición de los dos estados: la corriente i(t) y la velocidad ω(t). Ahora queremos medir solamente la velocidad del motor. Construiremos un observador para estimar la corriente i(t). Las ecuaciones de la planta eran, = y(t) = d ω(t) dt i(t) −10 1 −0,02 −2 ω(t) 1 0 i(t) ω(t) 0 + V (t) i(t) 2 Y su polinomio característico, ∆(s) = s2 + 12s + 20,02 Observadores– p. 7/37 Ejemplo: Observador en el motor DC. Aumentemos la planta con una acción integral para lograr seguimiento robusto a entradas tipo paso. Aa = A −C −10 0 = −0,02 0 −1 1 −2 0 0 0 ; 0 0 B Ba = = 2 0 0 Con polinomio característico, ∆a (s) = s3 + 12s2 + 20,02s = s∆(s) Que es simplemente el mismo original con un polo extra en s = 0, añadido por el integrador. Observadores– p. 8/37 Ejemplo: Observador en el motor DC. Calculamos Ca and C¯a , para el par aumentado (Aa ; Ba ), 0 2 Ca = 2 −4 0 0 −24 7,96 ; −2 1 12 C¯a = 0 1 0 0 −1 20,02 12 1 1 −12 = 0 1 0 0 123,98 −12 1 Como vimos, el par aumentado (Aa ; Ba ) será siempre controlable siempre que el par original (A; B) sea controlable y la planta no tenga ceros en s = 0. Seleccionamos el polinomio característico deseado como ∆Ka (s) = (s + 6)∆K (s) = s3 + 16s2 + 86s + 156 (Mantenemos el polinomio característico deseado original ∆K (s) = (s + 5 − j)(s + 5 + j) = s2 + 10s + 26 y asignamos el polo extra para que sea más rápido para no alterar las características temporales deseadas de y(t)). Observadores– p. 9/37 Ejemplo: Observador en el motor DC. De ∆a (s) y ∆Ka (s) calculamos K̄a , K̄a = [(16 − 12) y finalmente, (86 − 20,02) (156 − 0)] = [4 65,98 Ka = K̄a C¯a C −1 = [12,99 2] | {z } K 156] [−78] | {z } kz Donde los primeros dos elementos de Ka corresponden a la nueva ganancia de estado K para el estado (ω(t), i(t)), mientras que el último elemento es la ganancia de realimentación kz para el estado aumentado z(t). Observadores– p. 10/37 Ejemplo: Observador en el motor DC. Un diagrama en bloques de la implementación es, Y un diagrama en bloques de Simulink, incluyendo disturbios, d_i 1 s r Integrator1 −78 d_o B* u Gain2 Matrix Gain1 1 s Integrator C* u Matrix Gain2 Scope A* u 12.99 Gain Demux Matrix Gain 2 Gain1 Observadores– p. 11/37 Ejemplo: Observador en el motor DC. No obstante, este diseño requiere medir i(t). Para diseñar el observador primero debemos chequear la observabilidad. O= 1 C = −10 CA 0 1 que es de rango completo y de allí es observable. Por dualidad, en el proceso para calcular Kdual , el rol de C es jugado por Cdual = OT , y C¯dual es el mismo de antes 1 C¯dual = C¯ = 0 α1 1 −1 = 1 0 −12 1 ya que C¯ solo depende del polinomio característico de A que es el mismo de A T . Observadores– p. 12/37 Ejemplo: Observador en el motor DC. Digamos que los autovalores deseados para el observador están en s = −6 ± j2, (un poco más rápidos que los elegidos para los de la planta en lazo cerrado, como es usual), lo que arroja ∆Kdual = s2 + 12s + 40 Así, de los coeficientes de ∆Kdual y los de ∆(s) tenemos K̄dual = [(12 − 12) (40 − 20,02)] = [0 19,98] Retornando a las coordenadas originales obtenemos Kdual , ¯ −1 ; = [0 19,98]; Kdual = K̄dual CC dual 0 . Se 19,98 puede verificar con MATLAB que L efectivamente ubica los autovalores de (A − LC) en las localidades deseadas. T = (por casualidad, lo mismo que K̄dual ). Finalmente, L = Kdual Observadores– p. 13/37 Ejemplo: Observador en el motor DC. Simulando con Simulink, fijando algunas condiciones a la planta (y ninguna al observador) the observer) 1 estimation error in speed estimation error in current States B* u r Matrix Gain1 0.8 1 s C* u Integrator Matrix Gain2 0.6 0.4 A* u 0.2 Matrix Gain 0 B* u −0.2 −0.4 Estimated states 1 s L* u −0.6 −0.8 A−L*C* u −1 0 0.5 1 1.5 2 2.5 time [s] 3 3.5 4 4.5 5 Se puede ver que los errores de estimación efectivamente convergen a cero en cerca de 1s. Observadores– p. 14/37 Ejemplo: Observador en el motor DC. El observador se puede combinar con el diseño de realimentación de estados previo, basta con reemplazar los estados medidos por los estados estimados. need to replace the state measurements by the estimated states. d_i 1 s r −78 d_o 1 s B* u Gain2 C* u Scope A* u B* u 12.99 Gain Demux 1 s L* u 2 Gain1 A−L*C* u Note que el error para la acción integral debe obtenerse de el estado medido. Observadores– p. 15/37 Ejemplo: Observador en el motor DC. Se muestran resultados de simulación con el observador de estados, se simulan disturbios de entrada y salida actuando en tiempos diferentes. La salida converge and disturbance al valor de referencia deseado. rejection. 1.4 1.2 1 y(t) 0.8 0.6 0.4 0.2 0 0 1 2 3 4 5 time [s] 6 7 8 9 10 Observadores– p. 16/37 Realimentación desde estados estimados Resumiendo lo visto hasta ahora, hemos considerado Una ganancia de realimentación K. Un estimador de estados (observador) con ganancia L. Para diseñar K utilizamos la fórmula de Bass-Gura para lograr que (A − BK) : Hurwitz Para diseñar L en el observador, usamos la dualidad y la misma fórmula de Bass-Gura para lograr que (A − LC) : Hurwitz Plant r N u(t) − ẋ(t) B R x(t) C y(t) A Observer B K ^ x(t) R L A − LC Observadores– p. 17/37 Realimentación desde estados estimados Diseñando K tal que (A − BK) sea Hurwitz, con los autovalores deseados, podemos garantizar que el sistema de lazo cerrado sea asintóticamente y BIBO estable, y con una respuesta dinámica especificada. Diseñando L para que (A − LC) sea Hurwitz, garantizamos que el observador sea asintóticamente estable, y que el estimado del error x̂(t) converja al estado real x(t) cuando t → ∞. Pero K y el observador se diseñaron independientemente . . . ¿funcionarán de la misma manera cuando se pongan juntos en un esquema de realimentación desde los estados estimados?. Observadores– p. 18/37 Realimentación desde estados estimados Al respecto se presentan 3 preguntas básicas, Los autovalores de lazo cerrado se fijaron a aquellos de (A-BK) usando la realimentación de estado, u = −Kx ¿Aún tendremos los mismos autovalores si realimentamos desde los estados estimados? u = −K x̂ ¿La interconexión afecta los autovalores del observador?. ¿Cuál es el efecto de la interconexión en la función de transferencia de lazo cerrado? Observadores– p. 19/37 Realimentación desde estados estimados Para resolver estas preguntas, miremos las ecuaciones de estado del sistema completo, poniendo juntos el observador y la planta, esto es, Planta ẋ = Ax + Bu x̂˙ = (A − LC)x̂ + LCx + Bu Planta ẋ = Ax−BK x̂ + BN r x̂˙ = (A − LC)x̂ + LCx−BK x̂ + BN r Observador Observador Agrupando estas ecuaciones en una forma más compacta, ẋ x̂˙ = y = BN x A −BK r + BN LC (A − LC − BK) x̂ x C 0 x̂ Observadores– p. 20/37 Realimentación desde estados estimados Hagamos un cambio de coordenadas para que las nuevas coordenadas sean el estado de la planta x y el error de estimación ε = x − x̂. x x x I 0 = = ε x − x̂ I −I x̂ | {z } P −1 I 0 I 0 = = P . Con esta transformación de I −I I −I equivalencia obtenemos las matrices en el nuevo sistema coordenado como, Note que P −1 = (A − BK) 0 = C 0 ĀKL = P AKL P −1 = C̄KL = CKL P −1 BK , (A − LC) B̄KL = P BKL = BN 0 Observadores– p. 21/37 Realimentación desde estados estimados El sistema en las nuevas coordenadas se representa como, ẋ ε̇ = y = (A − BK) 0 x C 0 ε BK x BN + r (A − LC) ε 0 Ya que ĀKL es triangular, sus autovalores son los de (A − BK) y (A − LC). Controlador y observador no se afectan mutuamente en la interconexión. ation Note que el error de estimación es no es controlable , de aquí que los autovalores del observador no aparecerán en la función de transferencia de lazo cerrado. r BN ẋ(t) R x(t) C y(t) A − BK ε(t) R ε̇(t) A − LC Observadores– p. 22/37 Realimentación desde estados estimados La propiedad de independencia entre el control y la estimación dele estado se llama Principio de separación Principio de separación: El diseño de la realimentación de estado y del estimador de estado se pueden realizar independientemente. Los autovalores del sistema de lazo cerrado son los determinados por la ley de realimentación y no se afectan por el uso de un estimador de estados. Los autovalores del observador no se afectan por la ley de realimentación. La función de transferencia de lazo cerrado sólo tendrá los autovalores derivados de (A − BK); ya que el error de estimación no es controlable, Gcl (s) = C(sI − A + BK)−1 BN Los transitorios en el error de estimación , no obstante, se verán en la salida ya que el error de estimación es observable. Observadores– p. 23/37 Diseño en tiempo discrteto Para las ecuaciones de tiempo discreto, x[k + 1] = Ax[k] + Bu[k]; y[k] = Cx[k]; el procedimiento de diseño para una ley de realimentación u[k] = −Kx[k] es el mismo que para sistemas de tiempo continuo. Lo mismo aplica para el diseño de un observador de estados de tiempo discreto, x̂[k + 1] = (A − LC)x̂[k] + Bu[k] + Ly[k] Una diferencia es la localización de los autovalores deseados; para estabilidad asintótica deben estar dentro del círculo unitario. Una regla práctica para escoger los autovalores deseados de tiempo discreto es, 1. Escoger una ubicación deseada de tiempo continuo, digamos p i = 2. 2. Trasladarla a tiempo discreto usando la relación λi = epi T . Observadores– p. 24/37 Diseño en tiempo discreto j Imaginario 0.2 0.25 0.3 0.15 0.35 0.1 0.4 Lugar de las raíces con factor de amortiguamiento constante ξ y frecuencias naturales ωn constantes en el plano complejo discreto. En MATLAB esta grilla puede obtenerse con el comando zgrid 0.45 -1 0.5 ωn T 2π 0.05 0 1 1 0 Real 0.9 0.8 0.7 0.6 0.5 0.4 ξ 0.3 PSfrag replacements 0.2 0.1 0 -j Observadores– p. 25/37 Ejemplo: Motor DC en tiempo discreto Retornemos al ejemplo del motor DC. Supondremos que el control se hará con un PC y por tanto el controlador debe diseñarse en tiempo discreto. Para ello, discretizamos primero el modelo de tiempo continuo d ω(t) dt i(t) = y(t) = −10 1 −0,02 −2 ω(t) 1 0 i(t) 0 ω(t) V (t) + 2 i(t) El primer parámetro a determinar es el periodo de muestreo T . Del teorema de muestreo de Shannon, la frecuencia de muestreo ωs = 2π/T debe ser al menos dos veces el ancho de banda del sistema de lazo cerrado (ya que se cambiará el ancho de banda del sistema con la acción de control). Observadores– p. 26/37 Ejemplo: Motor DC en tiempo discreto La especificación que teníamos para el diseño previo de tiempo continuo fue un tiempo de establecimiento ts de cerca de 1s. La regla basada en el teorema de Shannon debería darnos un periodo de muestreo de menos de T = 0,5s. En la práctica, T debe ser del orden de 10 a 20 veces más répida que el tiempo de establecimiento de lazo cerrado. De aquí obtenemos, T = 0,1s Desde luego, la máxima velocidad de muestreo está limitada por la máxima frecuencia de adquisición del PC más el tiempo requerido para los cálculos y el procesamiento de señales. Calculamos las matrices de estado, Ad = e AT y Bd = Z T eAτ Bdτ 0 Observadores– p. 27/37 Ejemplo: Motor DC en tiempo discreto Utilizando MATLAB, hacemos [Ad, Bd] = c2d(A, B, 0,1) y obtenemos, Ad = 0,3678 0,0563 ; −0,0011 0,8186 Bd = 0,0068 0,1812 Como se puede verificar, los autovalores del sistema de lazo abierto de tiempo discreto son, 0,3679 = e(−9,9975×0,1) 0,8185 = e(−2,0025×0,1) El polinomio característico de tiempo discreto es ∆(z) = (z − e−9:9975T )(z − e−2,0025T ) = z 2 − 1,1864z + 0,3011 Para el polinomio característico deseado de tiempo discreto, primero obtenemos el mapeo discreto p → epT de los autovalores p1;2 = −5 ± j especificados para el sistema de tiempo continuo. Observadores– p. 28/37 Ejemplo: Motor DC en tiempo discreto δ ± jγ = e(−5±j)×0,1 = 0,6035 ± j0,0605 el cual arroja el polinomio característico discreto deseado ∆K (z) = z 2 − 1,2070z + 0,3678 De los coeficientes de ∆K (z) y ∆(z) obtenemos la ganancia de realimentación de estados discreta K̄d = [(−1,2070 + 1,1864) (0,3678 − 0,3011)] = [−0,0206 0,0667] Las matrices de controlabilidad discretas Cd (a partir del par (Ad , Bd )) y C¯d , Cd = 0,0068555 0,0127368 ;y 0,1812645 0,1483875 1 −1,1864 C¯d = 0 1 −1 Observadores– p. 29/37 Ejemplo: Motor DC en tiempo discreto En las coordenadas originales, obtenemos la ganancia de realimentación, Kd = K̄d C¯d Cd−1 = [8,3011164 − 0,4270676] como puede verificarse con MATLAB, (Ad −Bd Kd ) tiene los autovalores discretos deseados. De forma similar, podemos diseñar el observador de tiempo discreto, basado en el modelo de tiempo discreto de la planta. frag replacements El diseño de realimentación de la salida se implementa finalmente a partir del sistema de tiempo continuo, mediante un retenedor de orden cero y un muestreador. r u[k] N - ZOH Kd u(t) x̂[k] y(t) y[k] Observador de tiempo discreto Observadores– p. 30/37 Ejemplo: Motor DC en tiempo discreto El siguiente código de MATLAB calcula las ganancias y ejecuta las simulaciones % matrices de tiempo continuo A=[-10 1;-0.02 -2];B=[0;2];C=[1 0];D=0; G=ss(A,B,C,D); % definición del sistema e.e. T=0.1; % periodo de muestreo Gd=c2d(G,T,’zoh’) % discretización % ganancia de realimentación de tiempo discreto Kd=place(Gd.a,Gd.b,exp([-5-i,-5+i]*T)) % ganancia del observador de tiempo discreto Ld=place(Gd.a’,Gd.c’,exp([-6-i,-6+i]*T))’ % compensación del error de régimen permanente N=inv(Gd.c*inv(eye(2)-Gd.a+Gd.b*Kd)*Gd.b) % Ejecuta el diagrama de simulink sim(’motordc’) % Dibujos (después de ejecutar la simulación) subplot(211),plot(y(:,1),y(:,2));grid subplot(212),stairs(u(:,1),u(:,2));grid Observadores– p. 31/37 Ejemplo: Motor DC en tiempo discreto El siguiente es el esquema en Simulink, N Step Gain 1 s K*u Zero−Order Hold G.c K*u Integrator G.d y(t) K*u G.a u[k] K*u Gd.b K*u Kd 1 z Unit Delay K*u Ld K*u Gd.a−Ld*Gd.c Note que las señales muestreadas se muestran en rojo (chequear la opción Sample Time Colors en el menú Format). Todos los bloques con señales muestreadas incluyen un muestreador en su entrada. Observadores– p. 32/37 Ejemplo: Motor DC en tiempo discreto Las siguientes gráficas muestran la respuesta del sistema controlado de tiempo discreto: la salida de tiempo continuo y(t) y el control de tiempo discreto u[k] 1 0.9 0.8 0.7 0.6 0.5 0.4 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 14.5 14 13.5 13 12.5 12 11.5 11 10.5 10 Observadores– p. 33/37 Peculiaridades en tiempo discreto Hay dos diferencias especiales en el procedimiento de diseño de tiempo discreto: La ganancia N para compensación del error de régimen permanente es, como en tiempo continuo, la inversa de la ganancia DC de régimen permanente de la función de transferencia de lazo cerrado. Note sin embargo, que en tiempo discreto, N= 1 1 = C(zI − Ad + Bd Kd )−1 Bd |z=1 C(I − Ad + Bd Kd )−1 Bd Si implementamos seguimiento robusto añadiendo una acción integral en el diseño de realimentación de estados, note que el aumento de la planta es diferente en tiempo discreto, Aa = Ad −C 0 1 Observadores– p. 34/37 Peculiaridades en tiempo discreto Ya que la integración de tiempo discreto del error de seguimiento tiene que implementarse como, z[k + 1] = z[k] + r − Cx[k] La implementación de la acción integral en tiempo discreto en el diagrama debe ser consistente, i.e. integración discreta del error de seguimiento. tracking error. di (t) ε(t) r − 1 z−1 kz − − u(t) ZOH do (t) B ẋ(t) R x(t) C y(t) A K Aparte de esas dos diferencias, y la ubicación para los autovalores, el diseño de tiempo discreto se obtiene realizando los mimos cálculos que para el diseño por realimentación de estados de tiempo continuo. Observadores– p. 35/37 Control Dead-Beat Un diseño especial de tiempo discreto que no tiene correlación en tiempo continuo es el control dead-beat. Una respuesta dead-beat es una respuesta que se establece en su valor final en un tiempo finito. Esta característica tiene lugar en e.g., un sistema de tiempo discreto que tiene todos sus polos en z = 0, por ejemplo, Step Response 1.5 (7z − 1)(5z − 1) ; G(z) = 24z 3 Amplitude 1 0.5 0 0 1 2 3 4 5 Time (sec) 6 7 8 9 10 sampling periods (the dynamics is just a delay un el cual se establece en tres periodos de muestreo (la dinámica es justamente retardo de tres periodos de muestreo). Observadores– p. 36/37 Control Dead-Beat Para diseñar un controlador dead-beat, solo tenemos que encontrar un K d para colocar todos los polos de lazo cerrado en z = 0. El observador de tiempo discreto también puede diseñarse dead-beat, con Ld para ubicar todos los polos del observador en z = 0. No obstante, el Dead-beat usualmente requiere acción de control grande y puede provocar saturación de los actuadores. Observadores– p. 37/37