34
1 Estimación de Estados Observadores Reducidos o de Orden Mínimo Fernando di Sciascio (2017)

Estimación de Estados Observadores Reducidos o de …dea.unsj.edu.ar/control2/Clase09b_Observadoresdeordenreducido.pdf · Observador reducido o de orden mínimo clásico El vector

Embed Size (px)

Citation preview

1

Estimación de Estados

Observadores Reducidos

o de Orden Mínimo

Fernando di Sciascio (2017)

2

Observador Reducido Clásico

Fernando di Sciascio (2017)

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

n

n

CI

DL

9

El diseño anterior lo verificamos en una simulación “sin realimentación de

los estados”.

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¡¡

12

Realimentación de los

Estados Estimados

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.

14

o para seguimiento.

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

20

Diseño alternativo de Chen para

observadores de orden reducido

Fernando di Sciascio (2017)

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.

25

o para seguimiento.

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)')

29

Como antes, los valores iniciales de las estimaciones son distintos de cero.

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).