Está en la página 1de 37

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 u ẋ R x y
N B C

A
Plant

^
x
K Observer

Un observador es un sistema dinámico que estima los estados de la planta basa-


do 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 ẋ R x y
B C

A
x˙ R
^ ^
x
B

A
PSfrag replacements
Copia de la planta Plant copy

El problema con este diseño simple es que si la planta y su ”copia” en el ob-


servador 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 ẋ R x y
B C

error y
L
^
y −
C
x˙ R
^ ^
x
B

Con un diseño apropiado de la matriz de ganancia L,se puede ajustar al obser-


vador 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 ẋ R x y
B C
Si el sistema es observable, se puede es-
coger la ganancia L para que asigne arbitrari- A
u
amente los autovalores de A − LC.
De hecho, requerimos que el observador Observer
B
sea estable!. er
Del diagrama en bloques, las ecuaciones del ^
x x˙
R ^
L
observador son,
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,

ẋ = Ax + Bu
y = 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,

      
d ω(t) −10 1 ω(t) 0
= + V (t)
dt i(t) −0,02 −2 i(t) 2
 
  ω(t)
y(t) = 1 0
i(t)

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.
   
  −10 1 0   0
A 0 B
Aa = = −0,02 −2 0 ; Ba = =  2
−C 0 0
−1 0 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 ),
   −1  
0 2 −24 1 12 20,02 1 −12 123,98
Ca = 2 −4 7,96 ; C¯a = 0 1 12  = 0 1 −12 
0 0 −2 0 0 1 0 0 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) (86 − 20,02) (156 − 0)] = [4 65,98 156]

y finalmente,
 

Ka = K̄a C¯a C −1 = [12,99 2]


 
[−78]
| {z } | {z }
K 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 d_o

1
−78
s 1
B* u C* u
s
r Integrator1 Gain2
Integrator Matrix
Matrix
Gain2 Scope
Gain1
A* u

Matrix
12.99
Gain
Demux
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.
   
C 1 0
O= =
CA −10 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  
1 α1 1 −12
C¯dual = C¯ = =
0 1 0 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
(por casualidad, lo mismo que K̄dual ). Finalmente, L = Kdual
T
= . Se
19,98
puede verificar con MATLAB que L efectivamente ubica los autovalores de (A −
LC) en las localidades deseadas.

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
States estimation error in current
0.8
B* u 1 C* u
s
0.6
r Matrix Integrator Matrix
Gain1 Gain2
0.4
A* u
0.2
Matrix
Gain
0

−0.2
B* u

−0.4
Estimated
states
1 −0.6
L* u
s
−0.8

A−L*C* u −1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
time [s]

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 d_o

1
−78
s 1
B* u C* u
s
r Gain2

Scope

A* u

B* u

1
12.99 Demux L* u
s
Gain
2
A−L*C* u
Gain1

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
al valor de referencia deseado. rejection.
and disturbance
1.4

1.2

0.8
y(t)

0.6

0.4

0.2

0
0 1 2 3 4 5 6 7 8 9 10
time [s]

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 Plant

de Bass-Gura para lograr que r u(t) ẋ(t) R x(t) y(t)


N B C

(A − BK) : Hurwitz
A

Para diseñar L en el observador, us- Observer

amos la dualidad y la misma fórmula B


de Bass-Gura para lograr que ^
x(t) R
K L

(A − LC) : Hurwitz 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,

ẋ = Ax + Bu Planta
x̂˙ = (A − LC)x̂ + LCx + Bu Observador

ẋ = Ax−BK x̂ + BN r Planta
x̂˙ = (A − LC)x̂ + LCx−BK x̂ + BN r Observador

Agrupando estas ecuaciones en una forma más compacta,


      
ẋ A −BK x BN
= + r
x̂˙ LC (A − LC − BK) x̂ BN
 
  x
y = C 0

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 I 0 x
= =
ε x − x̂ I −I x̂
| {z }
P

 −1  
I 0 I 0
Note que P −1 = = = P . Con esta transformación de
I −I I −I
equivalencia obtenemos las matrices en el nuevo sistema coordenado como,
   
(A − BK) BK BN
ĀKL = P AKL P −1 = , B̄KL = P BKL =
0 (A − LC) 0
 
C̄KL = CKL P −1 = C 0

Observadores– p. 21/37
Realimentación desde estados estimados
El sistema en las nuevas coordenadas se representa como,
      
ẋ (A − BK) BK x BN
= + r
ε̇ 0 (A − LC) ε 0
 
  x
y = C 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.
r ẋ(t) R x(t) y(t)
ation BN C
Note que el error de estimación es no es
controlable , de aquí que los autovalores A − BK
del observador no aparecerán en la fun- ε(t) R ε̇(t)
ción de transferencia de lazo cerrado.
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 esti-
mador 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
Imaginario
j
0.25 0.2
0.3
0.15 ωn T
0.35

0.4 0.1

Lugar de las raíces con factor


de amortiguamiento constante ξ 0.45 0.05

y frecuencias naturales ωn con-


stantes en el plano complejo dis- -1 0.5 0 1 0
1 Real

creto. En MATLAB esta grilla 0.9


puede obtenerse con el coman- 0.8
0.7
ξ
do zgrid 0.6
0.5
0.4
0.3
0.2
PSfrag replacements 0.1

-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) −10 1 ω(t) 0
= + V (t)
dt i(t) −0,02 −2 i(t) 2
 
  ω(t)
y(t) = 1 0
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,
Z T
AT
Ad = e y Bd = 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,
   
0,3678 0,0563 0,0068
Ad = ; Bd =
−0,0011 0,8186 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 ,


   −1
0,0068555 0,0127368 1 −1,1864
Cd = ;y C¯d =
0,1812645 0,1483875 0 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 sis-
tema de tiempo continuo, mediante un retenedor de orden cero y un muestreador.

r u[k] u(t) y(t) y[k]


N ZOH
-

x̂[k] Observador de
Kd
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 K*u 1 K*u
s
Step Gain Zero−Order G.c Integrator G.d y(t)
Hold
K*u

G.a

u[k]
K*u

Gd.b
1
K*u K*u
z
Kd Unit Delay Ld

K*u

Gd.a−Ld*Gd.c

Note que las señales muestreadas se muestran en rojo (chequear la opción Sam-
ple 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

14.5

14

13.5

13

12.5

12

11.5

11

10.5

10
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

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,

1 1
N= =
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,
 
Ad 0
Aa =
−C 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) do (t)
r ε(t) 1 − u(t) ẋ(t) R x(t) y(t)
z−1
kz ZOH B C
− −
A

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 con-
tinuo 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
un sistema de tiempo discreto que tiene todos sus polos en z = 0, por ejemplo,
e.g.,
Step Response
1.5

(7z − 1)(5z − 1)
Amplitude
G(z) = ;
24z 3
0.5

0
0 1 2 3 4 5 6 7 8 9 10
Time (sec)

el cual se establece en tres periodos


sampling de muestreo
periods (la dinámica
(the dynamics es justamente
is just a delay un
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 dis-
creto 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

También podría gustarte