Subido por Lorena Mendieta

observadores

Anuncio
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
Descargar