Estimación de Estados Observadores Reducidos o de...
Transcript of Estimación de Estados Observadores Reducidos o de...
3
Observador reducido o de orden mínimo clásico
El vector de estado x(t) es de dimensión n y la salida y(t) es un escalar medible que
se expresa como una combinación lineal de las variables de estado (y(t)=Cx(t)).
Por lo que no necesitan estimarse la n variable de estado, sino sólo n-1. Así, el
observador de orden reducido se vuelve un observador de orden n-1.
4
Procedimiento de diseño de un observador reducido
Paso 1) El modelo de estados ( , , , )ABC D se transforma a la forma Canónica
Controlable 1b o beta ( , , , )ABC D . En estas coordenadas la salida queda como el
primer estado (así, no es necesario construir un observador para estimar todo el
estado, sino solamente los n -1 restantes).
Si el par (A,C) es observable, usamos la matriz de observabilidad (que es no
singular) como matriz de transformación o cambio de base llevamos la planta
original a la forma Canónica Controlable 1b (FCC1b).
1 TnC CA CA
1
0 1 2 1
0 1 0 0
0 0 1 0
0 0 0 1
n
A A
a a a a
5
11 1 2 1 0
2 2 3 11
1 1 2
1
1
1 0
1 0 0
1 0 0 0
n
n n n
n n
a a a b
a a b
B B
a b
b
-1 bM
1 1 0 0 0 , 0C C D
Donde los coeficientes se obtienen de la función de transferencia
11 1 0
11 1 0
( )( )
( )
n nn nn n
n
b s b s b s bY sG s
U s s a s a s a
El cambio de base a la FCC1b se hace teniendo en cuenta que la matriz de
transformación es la matriz de observabilidad del sistema original.
A,B, , = ss2ss A,B,C,D,obsC D v A,C
6
Paso 2) Se particiona el vector de estados x en dos partes xa (un escalar) y xb [un
vector de dimensión (n-1)]. Aquí la variable de estado xa es igual a la salida y de
modo que se mide directamente, y xb es la parte no medible del vector de estado.
De esta forma, el estado particionado y las ecuaciones de salida son:
1 1
( ) ( )( )
( ) ( )
( )( ) 1 0
( )
a aa ab a a
b ba bb b b
an
b
x t A A x t Bu t
x t A A x t B
x ty t
x t
donde
(1,1) escalar
(1,2 : end) vector fila de 1 ( -1)
(2 : end,1) vector columna de ( -1) 1
(2 : end,2 : end) matriz de ( -1) ( -1)
(1) escalar
(2 : end) vector columna de ( -1) 1
aa
ab
ba
bb
a
b
A A
A A n
A A n
A A n n
B B
B B n
7
Paso 3) Se determina la matriz de ganancia del observador L, 1, 2, ..., n-1 son
los valores propios deseados para el observador de orden mínimo.
1 2 11 2
2 1 0
( )( ) ( )
0bb ab n
n nn
sI A LA s s s
s s s
Determinación de la matriz de ganancia del observador de orden reducido L
con MATLAB
Debido a la dualidad del diseño de asignación de polos y del observador, se puede
aplicar el mismo algoritmo a ambos problemas. Así los comandos de Matlab
acker y place se pueden utilizar para determinar la matriz de ganancia del
observador L.
1 2 1acker( , ,[ ])T T Tbb ab nL A A
Donde 1, 2, ..., n-1 son valores propios deseados. También se puede utilizar
1 2 1place( , ,[ ])T T Tbb ab nL A A
8
Paso 4) Se construye el siguiente sistema de orden 1n que genera
una estimación asintótica de x(t).
1 1
1
ˆ ( )ˆ ˆˆ ˆ( ) ( ) ( ) ( ) ( ) ˆ ( )
( ) 0 1 ( ) ( )ˆ ˆ ˆ ˆ(̂ ) ( ) ( )( ) ( ) ( ) ( )
n
n
F u tt A t Fu t By t A t
y tB
y t t tx t C D C t Dy t
t Ly t I L y t y t
donde
ˆ
ˆˆ
ˆ
bb ab
ba aa
b a
A A LA
B AL A LA
F B LB
1 1
1
0ˆ
1ˆ
n
n
CI
DL
10
El scripts siguiente simula este caso. clear, clc, close all
planta_original=ss(zpk([-2+2i -2-2i],[-1 -1.5+2i -1.5-2i -3],2.344)); [A,B,C,D]=ssdata(planta_original);
% OBSERVADOR DE ORDEN REDUCIDO
% 1) Se pasa la planta a la FCC1b.
[Acc,Bcc,Ccc,Dcc]=ss2ss(A,B,C,D,obsv(A,C));
planta_FCC1b=ss(Acc,Bcc,Ccc,Dcc); x0=[3 2 -3 -1]; % Condiciones iniciales
% Realizo la partición de las matrices Acc y Bcc
Aaa=Acc(1,1); Aab=Acc(1,2:end); Aba=Acc(2:end,1); Abb=Acc(2:end,2:end); Ba=Bcc(1); Bb=Bcc(2:end);
%Se especifican los autovalores deseados del observador y se determina L
lambdas_obs=[-10 -10 -10]; L=acker(Abb',Aab',lambdas_obs)';
% Calculo las matrices y vectores con sombrero (hat)Ahat, Bhat, Chat, Dhat, Fhat
Ahat=Abb-L*Aab; Bhat=Ahat*L+Aba-L*Aaa;
Chat=[zeros(1,length(A)-1);eye(length(A)-1)]; Dhat=[1;L]; Fhat=Bb-L*Ba;
observer=ss(Ahat,[Bhat Fhat],eye(length(A)-1),zeros(length(A)-1,2));
% Se simula la planta ya que se necesita y(t)
t=[0:0.01:5];u=zeros(length(t),1); [y,t,x]=lsim(planta_FCC1b,u,t, x0);
% Se simula el observador
[z,t]=lsim(observer,[y u]',t);
%xe=Chat*z'+Dhat*y;
z=z'; for i=1:length(t); xe(i,:)=Chat*z(:,i)+Dhat*y(i); end;
subplot(2,2,1);plot(t,xe(:,1),'r',t,x(:,1),'b','LineWidth',2);
line([0 max(t)],[0 0],'LineWidth',1,'Color','k','LineStyle','-') %Eje real
legend('x1e(t)','x1(t)'); xlabel('tiempo [seg]'); ylabel('y(t)=x1(t)=x1e(t)'); grid on
subplot(2,2,2);plot(t,xe(:,2),'r',t,x(:,2),'b','LineWidth',2); axis([0 t(end) ...
min(min(x(:,2)),min(xe(:,2))) max(max(x(:,2)),max(xe(:,2)))])
line([0 max(t)],[0 0],'LineWidth',1,'Color','k','LineStyle','-') %Eje real
legend('x2e(t)','x2(t)'); xlabel('tiempo [seg]'); ylabel('x2(t), x2e(t)'); grid on
subplot(2,2,3);plot(t,xe(:,3),'r',t,x(:,3),'b','LineWidth',2); axis([0 t(end)...
min(min(x(:,3)),min(xe(:,3))) max(max(x(:,3)),max(xe(:,3)))])
line([0 max(t)],[0 0],'LineWidth',1,'Color','k','LineStyle','-') %Eje real
legend('x3e(t)','x3(t)'); xlabel('tiempo [seg]'); ylabel('x3(t), x3e(t)'); grid on
subplot(2,2,4);plot(t,xe(:,4),'r',t,x(:,4),'b','LineWidth',2); axis([0 t(end) ...
min(min(x(:,4)),min(xe(:,4))) max(max(x(:,4)),max(xe(:,4)))])
line([0 max(t)],[0 0],'LineWidth',1,'Color','k','LineStyle','-') %Eje real
legend('x4e(t)','x4(t)'); xlabel('tiempo [seg]'); ylabel('x4(t), x4e(t)'); grid on
11
Observar que en el observador de orden reducido las estimaciones
iniciales de los estados son distintas de cero¡¡
13
Realimentación de los estados estimados
Ahora queremos utilizar el observador de orden reducido que hemos obtenido en
el controlador (realimentación de los estados estimados). Para regulación como
muestra la figura.
15
Obtención del modelo a lazo cerrado
La planta ( , , , )ABC D está en la Fcc1b.
Planta: ( ) ( ) ( )
( ) ( )
x t Ax t Bu t
y t Cx t
Controlador: ˆ( ) ( ) ( )u t Nr t Kx t
Observador:
ˆ ˆ ˆ( ) ( ) ( ) ( )
ˆ ˆ(̂ ) ( ) ( )
t A t Fu t By t
x t C t Dy t
Reemplazando en la ecuación del controlador la salida del observador
ˆ ˆˆ( ) ( ) ( ) ( ) ( ) ( )u t Nr t Kx t Nr t KC t KDy t
Reemplazando ( )u t y ( ) ( )y t Cx t en las ecuaciones de la planta y el observador
ˆ ˆ( ) ( ) ( ) ( )x t A BKDC x t BKC t BNr t
ˆˆ ˆ ˆ ˆ ˆ ˆ( ) ( ) ( ) ( )t BC FKDC x t A FKC t FNr t
16
Reescribiendo en forma vectorial-matricial se obtiene el modelo completo del
sistema a lazo cerrado que permite realizar la simulación en Matlab.
1 ( 1)
ˆ ˆ( ) ( )( )
ˆ( ) ( )ˆˆ ˆ ˆ ˆ ˆ
( )( ) [ ]
( )n
BNA BKDC BKCx t x tr t
t t FNBC FKDC A FKC
x ty t C
t0
Definiendo ( )
( )( )
x tx t
t se reescribe en forma compacta
( ) ( ) ( )
( ) ( )
x t A x t B r tcl cly t C x tcl
con 1 ( 1)
ˆ ˆ, , [ ]
ˆˆˆ ˆ ˆ ˆ ˆn
BNA BKDC BKCA B C Ccl cl cl
FNBC FKDC A FKC0
17
Cálculo de N : Como la planta ( )G s está en la Fcc1b ( , , , )ABC D se tienen 2
posibilidades para el cálculo de N .
1) Si la planta es Tipo 0, N se calcula en la manera usual:
1
1 1N
(0) C [ ]G A BK B
2) Si la planta es Tipo 1 o superior, N no se puede calcular de la manera anterior
ya que (0) N 0G . Vimos anteriormente en la clase:
Tema 08.d1-Servosistemas Tipo 1-Esquema de Ogata para plantas Tipo 1
Que este esquema de realimentación para plantas Tipo 1 (o superior) en la FCC1b
era equivalente a la realimentación de estados con precompensación con:
1N k
18
% EJEMPLO DE DISEÑO DE CONTROLADOR CON OBSERVADOR DE ORDEN REDUCIDO CLÁSICO
clear, clc, close all
planta=ss(zpk([-2+2i -2-2i],[-1 -1.5+2i -1.5-2i -3],2.344));% Planta Tipo 0
[A,B,C,D]=ssdata(planta); n=length(A); % n es el orden de la planta
% DISEÑO DEL CONTROLADOR
% 1) Se pasa la planta a la FCC1b
[Acc,Bcc,Ccc,Dcc]=ss2ss(A,B,C,D,obsv(A,C)); x0=[-2; 5; -10; -1]; % Condiciones iniciales
% 2) Se especifican los autovalores deseados a lazo cerrado
lambdas_con=[-2+2*sqrt(3)*1i -2-2*sqrt(3)*1i -3 -6];
% 3) Se calcula K con place, acker o ppdesign
K=place(Acc,Bcc,lambdas_con);
% Para plantas Tipo 0 Nbar=1/dcgain(sys), para plantas Tipo 1 Nbar=K(1)
if 1/dcgain(ss(Acc-Bcc*K,Bcc,Ccc,Dcc)) ~= 0;
Nbar=1/dcgain(ss(Acc-Bcc*K,Bcc,Ccc,Dcc)); % Planta Tipo 0
else
Nbar=K(1); % Si la planta es Tipo 1 Nbar coincide con K(1)
end % if
ss_cl=Nbar*ss(Acc-Bcc*K,Bcc,Ccc,Dcc); %Planta a lazo cerrado sin observador
% OBSERVADOR DE ORDEN REDUCIDO CLÁSICO
% 1) Se especifican los autovalores deseados del observador
lambdas_obs=[-5 -6 -7];
% 2) Se definen las matrices intermedias Aaa, Aab, Aba, Abb, Ba, Bb
Aaa=Acc(1,1);Aab=Acc(1,2:end);Aba=Acc(2:end,1);Abb=Acc(2:end,2:end);Ba=Bcc(1);Bb=Bcc(2:end);
% 3) Se calcula L con place, acker o ppdesign
L=place(Abb',Aab',lambdas_obs)';
% 4) Se definen las matrices "hat" del observador
19
Ahat=Abb-L*Aab; Bhat=Ahat*L+Aba-L*Aaa;Chat=[zeros(1,n-1);eye(n-1)]; Dhat=[1;L]; Fhat=Bb-L*Ba;
% SISTEMA A LAZO CERRADO CON OBSERVADOR
Acl=[Acc-Bcc*K*Dhat*Ccc -Bcc*K*Chat; Bhat*Ccc-Fhat*K*Dhat*Ccc Ahat-Fhat*K*Chat];
Bcl=[Bcc*Nbar; Fhat*Nbar]; Ccl=[Ccc zeros(1,n-1)]; Dcl=0;
ss_cl_obs=ss(Acl,Bcl,Ccl,Dcl); x0_ss_cl=[x0; 0; 0; 0];% Planta a lazo cerrado con observador
time=[0:.01:3]; [y,time,xbar]=lsim(ss_cl_obs,ones(1,length(time)),time,x0_ss_cl);
y=y'; xbar=xbar'; x=xbar(1:n,:);nu=xbar(n+1:end,:); xhat=Chat*nu+Dhat*y;
figure, plot(time,x,'k',time,xhat,'--r','LineWidth',1), grid on
figure, plot(time,y,'b','LineWidth',2),hold on,
line([0 max(time)],[1 1],'LineWidth',2,'LineStyle','--','Color','k');grid on
21
Observador de orden reducido de Chen
Paso 1) Se transforma el modelo de estados original ( , , , )ABC D a la forma
Canónica Controlable 1b o beta ( , , , )ABC D . En estas coordenadas la salida queda
como el primer estado.
Paso 2) a. Se elige una matriz F cualquiera que sea Hurwitz de ( 1) ( 1)n n y
que no tenga autovalores en común con los de A (o los de A ya que son los mismos).
Una opción es a partir de los valores propios deseados del observador 1, 2, ...,
n-1 construir la matriz diagonal.
1
21 n-1
n-1
0 0
0 0diag([ ])
0 0
F
b. Se elige un vector L cualquiera de ( 1) 1n tal que el par ( , )F L sea controlable.
Una opción es elegir las componentes de L aleatorios L=rand(n-1,1), y verificar
que ctrb(F,L) sea de rango completa.
22
Paso 3) Se calcula T, la solución única no singular, de la ecuación de Sylvester:
TA FT LC
Notar que T es una matriz rectangular de ( 1)n n .
Con Matlab: T = sylvester(-F,A,L*C)
Paso 4) Se construye el siguiente sistema de orden 1n que genera z(t).
( )( ) ( ) ( ) ( ) ( )
( )
TB u tz t Fz t TBu t Ly t Fz t
L y t
23
Paso 5) Se realiza la siguiente transformación lineal para obtener (̂ )x t
1
1( ) ( )ˆ ˆ( ) (
ˆ ˆ( ) ()
ˆ( ) ( ) ( ) ( )
) ( )C y t C y t Cx ty tx t x t
T z t T z t z t
t
Tx t
x
Observar que 1̂( ) ( )y t x t
Si se define:
1
ˆ
1 ( 1)
[ ]x y z
n n n
CM M M
T
se tiene:
( )(̂ ) ( ) ( )
( )y z y z
y tx t M M M y t M z t
z t
Luego el observador es:
( ) ( ) ( ) ( )
(̂ ) ( ) ( )z y
z t Fz t TBu t Ly t
x t M z t M y t
24
Realimentación de los estados estimados
Ahora queremos utilizar el observador de orden reducido que hemos obtenido en
el controlador (realimentación de los estados estimados). Para regulación como
muestra la figura.
26
Obtención del modelo a lazo cerrado
La planta ( , , , )ABC D está en la Fcc1b.
Planta: ( ) ( ) ( )
( ) ( )
x t Ax t Bu t
y t Cx t
Controlador: ˆ( ) ( ) ( )u t Nr t Kx t
Observador:
( ) ( ) ( ) ( )
(̂ ) ( ) ( )
z t Fz t TBu t Ly t
x t M z t M y tz y
Reemplazando en la ecuación del controlador la salida del observador
ˆ( ) ( ) ( ) ( ) ( ) ( )u t Nr t Kx t Nr t KM z t KM y tz y
Reemplazando ( )u t y ( ) ( )y t Cx t en las ecuaciones de la planta y el observador
( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( )
x t A BKM C x t BKM z t BNr ty z
z t LC TBKM C x t F TBKM z t TBNr ty z
27
Reescribiendo en forma vectorial-matricial
1 ( 1)
( ) ( )( )
( ) ( )
( )( ) [ ]
( )n
A BKM C BKM BNx t x ty zr t
z t z tLC TBKM C F TBKM TBNy zx t
y t Cz t
0
Definiendo ( )
( )( )
x tx t
z t, se reescribe en forma compacta
( ) ( ) ( )
( ) ( )
x t A x t B r tcl cly t C x tcl
con 1 ( 1)
, , [ ]n
A BKM C BKM BNy zA B C Ccl cl clLC TBKM C F TBKM TBNy z
0
28
% Diseño alternativo de Chen para observadores de orden reducido
clear, clc, close all
planta_original=ss(zpk([-2+2i -2-2i],[-1 -1.5+2i -1.5-2i -3],2.344));
[A,B,C,D]=ssdata(planta_original);
% OBSERVADOR DE ORDEN REDUCIDO DE CHEN
% 1) Se pasa la planta a la FCC1b. La matriz de transformación es la matriz de observabilidad del
sistema original.
[Acc,Bcc,Ccc,Dcc]=ss2ss(A,B,C,D,obsv(A,C));
% Se describe la planta en las nuevas coordenadas
planta=ss(Acc,Bcc,Ccc,Dcc);
% Se simula la planta
t=[0:0.01:5];u=ones(length(t),1);
[y,t,x]=lsim(planta,u,t,[3 2 -3 -1]);
% 2) Se especifican los autovalores deseados del observador y se eligen F y L
lambdas_obs=[-5 -6 -7]; F=diag(lambdas_obs);L=rand(length(Acc)-1,1);
% 3)Se calcula T resolviendo la ecuación de Sylvester -F*T+T*Acc=L*Ccc
T = sylvester(-F,Acc,L*Ccc);
% 4) Se construye el siguiente sistema de orden n-1 que genera una estima de x(t).
Aob=F; Bob=[T*Bcc L]; Cob=eye(length(Aob));Dob=zeros(length(Aob),2);
observer=ss(Aob,Bob,Cob,Dob); [z,t]=lsim(observer,[u y]',t);
% 5) Se realiza la transformación final para obtener el estimador xe(t)
P=inv([Ccc;T]); zz=[y z]';
for i=1:length(t); xe(:,i)=P*zz(:,i); end;
subplot(2,2,1);plot(t,zeros(1,length(t)),'k',t,xe(1,:),'r',t,x(:,1),'b','LineWidth',2);
title('y(t)=x1(t)=x1e(t)'); xlabel('tiempo [seg]'); ylabel('y(t)=x1(t)=x1e(t)')
subplot(2,2,2);plot(t,zeros(1,length(t)),t,xe(2,:),'r',t,x(:,2),'b','LineWidth',2); axis([0 t(end) -5 5])
title('x2(t)(azul), x2e(t)(rojo)'); xlabel('tiempo [seg]'); ylabel('x2(t), x2e(t)')
subplot(2,2,3);plot(t,zeros(1,length(t)),t,xe(3,:),'r',t,x(:,3),'b','LineWidth',2); axis([0 t(end) -20 5])
title('x3(t)(azul), x3e(t)(rojo)'); xlabel('tiempo [seg]'); ylabel('x3(t), x3e(t)')
subplot(2,2,4);plot(t,zeros(1,length(t)),t,xe(4,:),'r',t,x(:,4),'b','LineWidth',2); axis([0 t(end) -10 40])
title('x4(t)(azul), x4e(t)(rojo)'); xlabel('tiempo [seg]'); ylabel('x4(t), x4e(t)')
30
Observaciones generales para
ambos tipos de observadores de
orden reducido
Fernando di Sciascio (2017)
31
1) La estructura de ambos tipos de observadores es idéntica y
corresponde a un modelo en el espacio de estados con las mismas
entradas ( ), ( )u t y t y las mismas salidas (̂ )x t (estados estimados).
Observador reducido clásico: ˆ ˆ ˆ( ) ( ) ( ) ( )
ˆ ˆ(̂ ) ( ) ( )
t A t Fu t By t
x t C t Dy t
Observador reducido de Chen: ( ) ( ) ( ) ( )
(̂ ) ( ) ( )
z t Fz t TBu t Ly t
x t M z t M y tz y
Por lo que ambos observadores reducidos son equivalentes.
Esta observación es obvia, todos los observadores deben ser
equivalentes entre si ya que deben tener las mismas entradas ( ), ( )u t y t y
entregar a la salida los mismos estados estimados (̂ )x t .
32
2) Se pueden realizar simulaciones a lazo cerrado mediante la
construcción de los modelos de la planta y el observador en Simulink.
y realizar la simulación desde Matlab con el comando sim en vez
del lsim.
33
3) Es posible obtener la función de transferencia empírica del
observador-controlador de orden reducido ( )ocG s como hicimos en el
observador de orden completo y analizar la respuesta del sistema con la salida. Como se conoce la función de transferencia de la planta a lazo
abierto ( )olG s y la función de transferencia a lazo cerrado ( )clG s , es más
sencillo y directo obtener la función de transferencia conjunta del
observador de orden reducido-controlador ( )ocG s mediante Matlab a partir
de la ecuación de la función de transferencia sistema a lazo cerrado:
( ) ( )( )
1 ( ) ( )oc ol
cloc ol
G s G sG s
G s G s
( )( )
( ) 1 ( )cl
ocol cl
G sG s
G s G s
Gol=minreal(Gcl/(Gol*(1-Gcl)))
34
4) Al utilizar la función de transferencia empírica del observador-
controlador de orden reducido ( )ocG s , se pierde la información de la
evolución de los estados de la planta y de los del observador (estimaciones) pero se asume que si la salida es la adecuada todo va bien (recordemos que los estados son un medio para construir un controlador que nos de la salida deseada).