Vous êtes sur la page 1sur 37

Estimación de Estados

Observadores

Fernando di Sciascio (2016)


1
Estimación de Estados
La realimentación de los estados requiere poder medirlos pero
normalmente no tenemos acceso directo a todos los estados.
¿Entonces, como implementamos la realimentación de estados? Si
el sistema es observable los estados podrán ser estimados
mediante un observador.
Un observador es un sistema dinámico que estima los estados de la
planta a partir de las mediciones de las entradas y las salidas.

2
Estimación de Estados: Observador a lazo abierto
¿Cómo construir un observador? La figura muestra un camino intuitivo. Copiar
el modelo de la planta y dejar “correr” los sistemas simultáneamente para
obtener una estimación de los estados xˆ(t ).

El problema con este diseño a lazo abierto es que la planta y su “copia” en


el observador tienen condiciones iniciales distintas, la estimación
normalmente no converge a los valores verdaderos.
3
Estimación de Estados: Observador de realimentación
Esta estructura a lazo cerrado es mucho mejor. Se realimenta el
error de salida para corregir. Eligiendo apropiadamente la matriz
de ganancia L, se puede ajustar el observador para que los estados
estimados converjan asintóticamente a los estados verdaderos.

4
Estimación de Estados: Estructura final del observador
Reordenando el diagrama en
bloques anterior, se obtiene
la estructura final del
observador.
Si el sistema es observable, se
puede elegir la ganancia L
para ubicar los autovalores de
(A LC ) arbitrariamente.
Obviamente se busca que el
observador sea estable!
Del diagrama en bloques se
obtienen las ecuaciones del
observador

xˆ(t ) Axˆ(t ) Bu(t) L[y(t) Cxˆ(t)]


(O)
(A LC )xˆ(t ) Bu(t ) Ly(t)
5
Estimación de Estados
De la ecuación del observador: xˆ(t) (A LC )xˆ(t) Bu(t) Ly(t)
x(t ) Ax(t ) Bu(t )
Y de las ecuaciones de estado de la planta:
y(t ) Cx(t )
Podemos obtener el error del estimador: x x(t) xˆ(t)
x(t) x(t ) xˆ(t ) Ax(t ) Bu(t ) Axˆ(t ) Bu(t ) L[y(t ) Cxˆ(t )]
A[x(t ) xˆ(t )] LC [x(t ) xˆ(t )]
(A LC )[x(t ) xˆ(t )] (A LC )x(t)

x(t) (A LC )x(t)
Si la matriz (A LC ) es Hurwitz x(t) x(t) xˆ(t) 0 , por lo tanto
xˆ(t) x(t). El error converge asintóticamente a cero.
6
Diseño del Observador: Para diseñar el observador se utilizan
las matrices A, B y C de la planta y se forma la ecuación del
estimador
xˆ(t ) (A LC )xˆ(t ) Bu(t) Ly(t)
Para que el observador sea estable el vector columna L se debe
elegir para que los autovalores de (A LC ) tengan la parte real
negativa.
¿Cómo se elige L? Podemos aprovechar la dualidad y utilizar
el mismo procedimiento que vimos para el diseño de la
ganancia de realimentación de estados K para que la matriz (A-
BK) sea Hurwitz. Observar que la matriz transpuesta
(A LC )T AT C T LT Adual Bdual Kdual
Elegimos Kdual para que Adual BdualKdual sea Hurwitz, finalmente
T
L Kdual
7
 El problema de diseñar un observador es idéntico (vía modelo
dual) al de diseñar la realimentación K de estados. Vimos que el
problema de hallar K era sencillo si el modelo estaba en la forma
canónica controlable. Ahora por ser el problema dual el problema de
hallar L es sencillo si el modelo está en la forma canónica
observable.
Ejemplo de Diseño de un Observador

3 1 0
x(t ) Ax(t ) Bu(t ) A , B , C 1 0
0 5 1
y(t ) Cx(t )
Los valores propios (polos) del observador los queremos en
 Pd (s) (s 10)(s 10) s2 20s 100 

Los polos reales dobles y rápidos, al ser reales la respuesta es


amortiguada.
8
Construimos el polinomio característico y lo igualamos al deseado.
s 3 l1 1
Pc(s ) sI A LC s2 (l1 8)s (5l1 l2 15)
l2 s 5

Pc(s ) Pcd (s )
s2 (l1 8)s (5l1 l2 15) s2 20s 100 12
L
l1 12 , l2 25  25

Alternativamente podemos utilizar la fórmula de Ackermann


1 1
C 0 2
1 0 0
L (A) (A 20A 100I )
CA 1 3 1 1

2 1
3 1 3 1 100 0 1 0 0 12
20
0 5 0 5 0 100 3 1 1 25

Simulamos para u(t) 0(regulador), x1(0) 2, x2(0) 3
9
clear, clc, close all
A=[-3 1;0 -5]; B=[0 1]'; C=[1 0];D=0;
lambdas_obs=[-10 -10]; %Autovalores deseados del observador
L=acker(A',C',lambdas_obs)';
planta=ss(A,B,C,D); x0=[2 -3]; % x0 son los valores iniciales de los estados
t=[0:0.01:1.5];u= zeros(length(t),1);
[y,t,x]=lsim(planta,u,t,x0); % Se simula la planta para u(t)=0 y x0
observer=ss(A-L*C,[B L],eye(length(A)),0);
[ye,t,xe]=lsim(observer,[u x(:,1)],t,zeros(1,length(A)));
plot(t,x(:,1),'--k',t,x(:,2),'--b',t,xe(:,1),'k',t,xe(:,2),'b','LineWidth',2)
legend('x1(t)','x2(t)','xe1(t)','xe2(t)'), grid on

Observaciones:
1) [y,t,x]=lsim(planta,u,t,x0) simula la planta para u(t) = 0 y condiciones iniciales de los
estados x0 = x(0). Se puede reemplazar por el comando initial (This MATLAB function calculates
the unforced response of a state-space (ss) model sys with an initial condition on the states specified
by the vector x0).
[y,t,x] = initial(planta,x0,t)
2) observer=ss(A-L*C,[B L],eye(length(A)),0) crea el modelo en estados del observador,
puede reemplazarse por el comando estim.
observer = estim(planta,L,[1],[1]); % Igual a ss(A-L*C,[B L],eye(length(A)),0);

10
clear, clc, close all
A=[-3 1;0 -5]; B=[0 1]'; C=[1 0];D=0;
lambdas_obs=[-10 -10]; %Autovalores deseados del observador
L=acker(A',C',lambdas_obs)';
planta=ss(A,B,C,D); x0=[2 -3]; % x0 son los valores iniciales de los estados
t=[0:0.01:1.5];u= zeros(length(t),1);
[y,t,x] = initial(planta,x0,t);
observer = estim(planta,L,[1],[1]); % Igual a ss(A-L*C,[B L],eye(length(A)),0);
[ye,t,xe]=lsim(observer,[u x(:,1)],t,zeros(1,length(A)));
plot(t,x(:,1),'--k',t,x(:,2),'--b',t,xe(:,1),'k',t,xe(:,2),'b','LineWidth',2)
legend('x1(t)','x2(t)','xe1(t)','xe2(t)'), grid on


11
Aunque la controlabilidad es invariante con respecto a la realimentación
de estados, la observabilidad no lo es, como se veremos en el siguiente
ejemplo.
Ejemplo: El sistema
1 2 0
x(t) x(t) u(t)
3 1 1

y(t) 1 2 x(t )

es controlable y observable, ya que las matrices de controlabilidad


0 2 C 1 2
[B AB ] 1 1
y observabilidad CA 7 4
, son no singulares.

El control por realimentación de estados u(t) r(t) [3 1]x(t) lleva al


sistema a lazo cerrado
1 2 0
x(t ) x(t) u(t )
0 0 1

y(t ) 1 2 x (t )
12
0 2
La matriz de controlabilidad de sistema a lazo cerrado es cl 1 0
, que es
no singular y comprueba que el sistema realimentado es controlable. Sin
1 2
embargo, la matriz de observabilidad ahora es cl 1 2
, que es singular,
por lo que el sistema con esta realimentación no es observable.

La observabilidad de un sistema no es invariante con


respecto a realimentación de estados.
 

13
Realimentación de los
Estados Estimados

14
Realimentación de los estados estimados
x(t ) Ax(t ) Bu(t )
Consideremos nuevamente la planta:
y(t ) Cx(t )

 Si (A,B) es controlable, la realimentación de estados u=r-Kx


asignará los autovalores de (A-BK) en cualquier posición deseada.
 Si las variables de estado no están disponibles para la
realimentación pero (A,C) es observable, podemos construir un
observador con autovalores arbitrarios.
xˆ(t ) (A LC )xˆ(t ) Bu(t) Ly(t)
u(t) r(t) Kxˆ(t)
 La conexión controlador-observador, es efectivamente un
controlador dinámico que realimenta la salida.

15
Realimentación de estados estimados

16
Es conveniente agregar un precompensador para reducir el error en
estado estacionario ante una entrada escalón.

17
Las ecuaciones que describen el sistema completo (juntando las
del sistema y las del observador y con u(t) r(t) Kxˆ(t) son:
x (t ) Ax (t ) Bu(t )
y(t ) Cx (t )
u(t ) Fr (t ) Kxˆ(t )
xˆ(t ) (A LC )xˆ(t ) Bu(t ) Ly(t )

x (t ) Ax (t ) BKxˆ(t ) BFr (t )
xˆ(t ) LCx (t ) (A LC BK )xˆ(t ) BFr (t )

x (t ) A BK x (t ) BF
r (t )
xˆ(t ) LC A LC BK xˆ(t ) BF
Acl Bcl

x (t )
y(t ) C 0
xˆ(t )
Ccl

18
clear, clc, close all; A=[-3 1;0 -5]; B=[0 15]'; C=[1 0];
lambdas_cont=[-2+2*i -2-2*i];%Autovalores deseados en -2+-j2 para el controlador
lambdas_obs=[-10 -10]; %Autovalores dobles en -10 para el observador
K=acker(A,B,lambdas_cont); L=acker(A',C',lambdas_obs)';
Alc=[A -B*K; L*C A-L*C-B*K]; F=8/15;
Bcl=[B*F; B*F]; Ccl=[C zeros(1,2)]; Dcl=0;
planta_lc=ss(Alc,Bcl,Ccl,Dcl); %Modelo de la planta a lazo cerrado
t=[0:0.01:3]; [y,t,X]=lsim(planta_lc,ones(1,length(t)),t,[0 -3 0 0]);
x=[X(:,1) X(:,2)]; xe=[X(:,3) X(:,4)];
% F es la precompensación para que la respuesta al escalón este escalada se calcula de la
% siguiente manera: se hace F=1 y se corre la simulación, luego se calcula el F necesario con
el comando dcgain(planta_lc): F=1/dcgain(planta_lc)
plot(t,x(:,1),'--k',t,x(:,2),'--b',t,xe(:,1),'k',t,xe(:,2),'b','LineWidth',2)
legend('x1(t)','x2(t)','xe1(t)','xe2(t)'), grid on
figure; plot(t,y,'b','LineWidth',2), legend('Salida y(t)'), grid on; axis([0 3 -.25 1.25])

19
Las ecuaciones anteriores se pueden reescribir en función del error
de estimación
x(t) x(t) xˆ(t) xˆ(t) x(t) x(t)
x (t ) (A BK )x (t ) BKx (t ) BFr (t )
x (t ) (A LC )x (t )
y(t ) Cx (t )
xˆ(t ) x (t ) x (t )
x (t ) A BK BK x (t ) BF
r (t )
x (t ) 0 A LC x (t ) 0
Acl Bcl

x (t )
y(t ) C 0
x (t )
Ccl

Se llega al mismo modelo equivalente mediante la transformación lineal


x (t ) x(t ) I 0 x (t ) x (t )
P
x (t ) x (t ) xˆ(t ) I I xˆ(t ) xˆ(t )
20
Se observa que la matriz del sistema es triangular (por bloques). El
polinomio característico es:

sI (A BK ) BK
Pc(s ) 0
0 sI (A LC )

Pc (s) sI (A BK ) sI (A LC ) 0

Los autovalores del sistema completo son la unión de los


autovalores de A-BK y A-LC. Esto implica que el estimador no afecta
la realimentación de estados original; tampoco son afectados los
autovalores del observador por la realimentación de estados.

Propiedad de separación de control y observación: Los diseños


del control por realimentación de estados y el observador pueden
realizarse en forma independiente.

21
Finalmente, notemos que en la última representación del sistema:
x (t ) A BK BK x (t ) BF
r (t )
x (t ) 0 A LC x (t ) 0

la matriz de controlabilidad no es de rango completa.


BF A BK BK BF BF (A BK )BF
0 0 A LC 0 0n 1 0n 1

Esto se debe a que los estados x(t) son no controlables ya que


x(t) (A LC )x(t), no depende de r(t).
Los autovalores asociados a estos estados no aparecerán en la
función transferencia del sistema completo (recordar que la función
de transferencia solo representa la parte controlable y observable del
sistema).
x(t ) (A BK )x(t ) Br(t )
G(s) C (sI A BK ) 1B
y(t ) Cx(t )
22
Como el último modelo (desacoplado) es equivalente al primero este
resultado es general. Nunca aparecen los polos de estimador en
la Función de Transferencia a lazo cerrado.
% Ejemplo
A=[-3 1;0 -5]; B=[0 1]'; C=[1 0];D=0;n= length(A);
%Con la fórmula de Ackerman se calculan los autovalores
%deseados del sistema a lazo cerrado en -2+-j2
K=acker(A,B,[-2-2*1i -2+2*1i]);
%Con la fórmula de Ackerman se calculan los autovalores
%deseados del observador dobles en -10
L=acker(A',C',[-10 -10])';
syms s
Acl=[A-B*K B*K; zeros(2,2) A-L*C];
Bcl=[B;zeros(2,1)];
Ccl=[C zeros(1,2)]; Dcl=0;
Gcl_sym=Ccl*inv(s*eye(length(Acl))-Acl)*Bcl;
Gcl_sym=collect(Gcl_sym,s);clc
disp(['Gcl(s) =' ]); pretty(Gcl_sym)

1
Gcl(s) No aparecen los polos del observador
s2 4s 8

23
Función de Transferencia Observador-Controlador
Queremos calcular ahora la función de transferencia conjunta del
observador-controlador Goc(s) teniendo en cuenta que u(t) Kxˆ(t)
xˆ(t ) (A LC BK )xˆ(t ) Ly(t )
1
Xˆ(s ) (sI A LC BK ) LY (s )
1
U (s ) KXˆ(s ) K (sI A LC BK ) LY (s )

U (s ) 1
Goc (s ) K (sI A LC BK ) L
Y (s )

24
La matriz del controlador-observador A LC BK puede o no ser
estable, aunque A BK y A LC se escojan estables. De hecho,
en algunos casos la matriz A LC BK puede ser pobremente
estable o incluso inestable.

K adj(sI A LC BK ) L
Goc (s )
sI A LC BK

Esto se debe a que ahora los autovalores del observador y el


controlador no están desacoplados. El polinomio característico del
observador-controlador es:

PG (s ) sI A BK LC
oc

Y el polinomio característico del sistema completo a lazo cerrado


vimos que es:

Pcl (s ) sI (A BK ) sI (A LC )
25
Ejemplo de Observador-Controlador

x (t ) Ax (t ) Bu(t ) 0 1 0
, A , B , C 1 0
y(t ) Cx (t ) 20.6 0 1

los polos en lazo cerrado deseados para este sistema se eligen en:

1 1.8 j 2.4, 2 1.8 j 2.4

La matriz de ganancias de realimentación del estado K para este caso es:

K 29.6   3.6

los polos del observador se eligen dobles en: 3


8, 4
8

16
La matriz de ganancias del observador es L
84.6

26
El Sistema completo es:

27
La función de transferencia del controlador-observador es:

U (s ) K adj(sI A LC BK ) L
Gco (s )
Y (s ) sI A LC BK

s 16 1 16 778.2s 3690.7
29.6 3.6
93.6 s 3.6 84.4 s2 19.6s 151.2

28
Por ser R(s)=0 la función de transferencia del observador controlador
puede estar el lazo de realimentación.

Para R(s) = 0 la respuesta es la misma para ambas configuraciones


para R(s) ≠ 0 la respuesta no es la misma. La script siguiente grafica
la respuesta al escalón para ambas configuraciones (precompensadas
para que la respuesta sea unitaria).
29
G=tf([1],[1 0 -20.6 ]); Gco=tf([778.2 3690.7],[1 19.6 151.2]);
F1=576/3691; F2=576/151.2;
Gcl1=F1*feedback(Gco*G,1); Gcl2=F2*feedback(G,Gco); step(Gcl1,Gcl2)
% Se ha precompensado con F1 y F2 para tener respuesta unitaria al escalón
% 778.2 s + 3691
% Gcl1(s) = ------------------------------------------
% s^4 + 19.6 s^3 + 130.6 s^2 + 374.4 s + 576
% s^2 + 19.6 s + 151.2
% Gcl2(s) = ------------------------------------------
% s^4 + 19.6 s^3 + 130.6 s^2 + 374.4 s + 576

30
La función de transferencia de la planta es:
NG (s ) C adj(sI A) B
G (s )
DG (s ) sI A

La función de transferencia del controlador-observador es:


NG (s ) K adj(sI A LC BK ) L
Gco (s ) co

DG (s ) sI A LC BK
co

Para la configuración 1 (el controlador en serie con la planta), la función


de transferencia del sistema a lazo cerrado es:
Gco (s )G (s ) NG (s )NG (s )
Gcl (s ) co

1 Gco (s )G (s ) DG (s )DG (s ) NG (s )NG (s )


co co

Para la configuración 2 (el controlador en la realimentación), la función de


transferencia del sistema a lazo cerrado es:
G (s ) DG (s )NG (s )
Gcl (s ) co

1 Gco (s )G (s ) DG (s )DG (s ) NG (s )NG (s )


co co

31
En ambos casos el polinomio característico a lazo cerrado es el mismo:
Pcl (s ) DG (s )DG (s ) NG (s )NG (s ) (*)
co co

Anteriormente vimos que el polinomio característico a lazo cerrado era:


Pcl (s ) sI (A BK ) sI (A LC ) Pdco (s )Pdob (s )
(**)
Pdco (s ) Pdob (s )

con:
Pdco (s ) sI (A BK ) (s 1 )(s 2) (s n)

sn c
n 1s
n 1 c
1s
c
0 0

Pdob (s ) sI (A LC ) (s n 1 )(s n 2) (s 2n )

sn o
n 1s n 1 o
1s
o
0 0

Donde 1, 2,…, n, son los autovalores (polos) deseados para el sistema a
lazo cerrado (autovalores del controlador) y  n+1, n+2,…, 2n, son los
autovalores deseados del observador de orden completo.
32
Ambos polinomios característicos (*) y (**) deben ser iguales.

DG (s )DG (s ) NG (s )NG (s ) Pdco (s )Pdob (s )


co co

Al comenzar el diseño conocemos la planta (NG(s) y DG(s)) y las


especificaciones de diseño (Pdco(s) y Pdob(s) a partir de los autovalores
deseados a lazo cerrado y del observador) y nuestro objetivo es
encontrar el controlador, o lo que es equivalente los polinomios
NGco(s) y DGco(s) (indirectamente vía la teoría de variables de estado).
La identidad anterior es una ecuación polinómica cuyas incógnitas son
los polinomios NGco(s) y DGco(s). Esta ecuación polinómica es muy
conocida con distintos nombres en la literatura de control, se la
denomina ecuación diofantina, de Aryabhatta, o de Bezout.

33
Ecuacion Diofantina-Aryabhatta-Bezout

DG (s )DG (s ) NG (s )NG (s) Pdco (s)Pdob (s)


co co

La function de Matlab diofantina.p (disponible en el sitio de Dropbox


de la materia) devuelve los polinomios NGco y DGco si se le ingresa los
polinomios NG, DG y conv(Pdco,Pdob), (recordar que la convolución de
dos polinomios realiza el producto).

DG ,NG = diofantina DG,NG,conv(Pdco,Pdob)


co co

Para el ejemplo hallamos anteriormente que la función de transferencia del


controlador-observador es:
K adj(sI A LC BK ) L 778.2s 3690.7
Gco (s )
sI A LC BK s2 19.6s 151.2

Obtenemos el mismo resultado utilizando la function diofantina.p


34
clear;clc
% Datos y especificaciones
A=[0 1;20.6 0]; B=[0 ; 1]; C=[1 0];D=0; %Planta en variables de estado
[Ng,Dg]=ss2tf(A,B,C,D); %Numerador y denominador de la ft de la planta
lambdas_cont=[-1.8+2.4*1i -1.8-2.4*1i];% Polos deseados a lazo cerrado
lambdas_obs=[-8 -8]; %Polos del observador
% Calculamos los polinomios deseados
Pdco=poly(lambdas_cont); Pdob=poly(lambdas_obs);
% Resolvemos la diofantina y obtenemos el numerado y denominador de la
% función de transferencia del controlador-observador
[Dgco,Ngco]=diofantina(Dg,Ng,conv(Pdco,Pdob)), Gco=tf(Ngco,Dgco)
% Da la misma función de transferencia hallada anteriormente
% 778.2 s + 3691
% Gco = --------------------
% s^2 + 19.6 s + 151.2

778.2s 3690.7 778.2(s 4.74)


Gco (s )
s2 19.6s 151.2 (s 9.8 j 7.43)(s 9.8 j 7.43)

35
Comentarios
1. Al diseñar un sistema regulador, obsérvese que si los
polos dominantes del controlador se colocan lejos a la izquierda del
eje j, los elementos de la matriz de ganancia de realimentación del
estado K se harán grandes. Grandes valores de la ganancia K harán
que la salida del actuador sea también grande, de manera que
puede dar lugar a saturación de los actuadores.
2. También, al colocar los polos del observador suficientemente lejos
a la izquierda del eje j, el controlador-observador se hace
inestable, aunque el sistema en lazo cerrado es estable. Un
controlador observador inestable no es aceptable.
3. Si el controlador observador se hace inestable, se mueven los
polos del observador a la derecha en el semiplano izquierdo del
plano s hasta que se estabilice. También, la localización de los polos
en lazo cerrado deseados puede tener que modificarse.

36
4. Obsérvese que si los polos del observador se colocan lejos a la
izquierda del eje j, el ancho de banda del observador aumentará y
originará problemas de ruido. El requisito general es que el ancho
de banda debería ser suficientemente bajo para que el ruido del
sensor que mide y(t) y se realimenta al observador no se convierta
en un problema.

En resumen, los polos del observador deben ser


bastante más rápidos que los de la planta a lazo cerrado,
pero no tanto como para que generen problema de
inestabilidad y ruido. Como regla general, los polos del
observador deben ser de dos a cinco veces más rápidos
que los polos del controlador para asegurarse de que el
error de observación (error de estimación) converge a
cero rápidamente.

37

Vous aimerez peut-être aussi