¿Por qué el seguimiento de diferentes estados de la planta da como resultado estimaciones de observadores totalmente diferentes?

3

Estoy tratando de diseñar un observador de Luenberger (o un observador de retroalimentación de estado completo) de manera que con un sensor disponible I Puede estimar todos los estados. Se muestra un buen tutorial aquí .

Mi sistema es de 4to orden:

num = [-0.00198 2];
den = [1 0.1201 12.22 0.4201 2];
sys = tf(num,den);
[A, B, C, D] = tf2ss(num,den);

Primero tengo un vector de fila de polos para obtener mi respuesta deseada:

poles = [-2.6 + 1i*2.39, -2.6 - 1i*2.39, -100, -120];
K = acker(A,B,poles)
rank(obsv(A,C));  % =4
Mo = rank([C;C*A;C*A^2;C*A^3]) % =4

Luego procedo a calcular los polos de la planta y, por lo tanto, los polos que quiero para mi observador deberían ser aproximadamente 3 veces más rápidos.

plant = (A-B*K);
poles_cl = eig(plant)

poles = 3*poles_cl  % THIS IS WRONG
des_poles = (min(real(poles_cl))*3)-(1:4); %This is better

des_poles =

 -361.0000 -362.0000 -363.0000 -364.0000

Luego procedo a usar la fórmula de Ackermann para la colocación de postes usando los nuevos postes:

% design observer by placing poles of A-LC at des_poles 
L=acker(A',C',poles_des)'
eig_obs = eig(A-L*C) 

L =

   1.0e+09 *

    8.6121
    0.1037
    0.0005
    0.0000

eig_obs =

 -361.0000
 -362.0000
 -363.0000
 -364.0000

Y finalmente trama. Para que el observador (software) nos proporcione todos los estados como salida, debemos establecer C = eye(4) :

C = eye(4);
mysys=ss(A-L*C,[B L],C,0); %Not sure if this is correct
tf(mysys)
step(mysys)

Se pueden ver cuatro salidas:

Siguiendoestemodeloparaunobservadorderetroalimentacióndeestadocompleto:

LuegoestoytratandodeverificarlosresultadosenSimulinkyestoyteniendoproblemasconeldiagramadebloques.Comosepuedever,tengodosmodelosespacialesestatales,unoparalaplantarealyotroparaelobservador.

Enelsiguientediagrama,estoycomparandoelestado1,quedacomoresultadoelsegundográficoquesemuestraacontinuación.

Estoyutilizandoelespaciodetrabajobasegeneradoporelcódigoanterior:

Alejecutarme,obtengounasalidadelobservadorquenorastreanisiguelaplantacomoseesperaba:

Estadosrealesyobservadoresalcompararelestado4conelbloquedesuma:

Estadosrealesyobservadoresalcompararelestado1hastaelbloquedesuma:

Cualquiersugerenciasobreporquéelestadoqueelijocompararatravésdelbloquedesumaestáefectuandolasestimacionesdelobservadorseríaapreciada.

Parámetrosdelobservador:

Parámetrosdelaplanta:

  1. ¿Por qué el estado que estoy comparando afecta la respuesta del observador?
pregunta Rrz0

2 respuestas

2

Esta respuesta se refiere al título de la pregunta "Cómo diseñar un observador para estimar todos los estados a partir de un solo sensor".

Estoy bastante seguro de que tiene invertido el vector de entrada al compensador. Debe invertir el orden en que ingresan las señales en el multiplexor o cambiar el orden de la matriz B en el compensador (cambiándolo a [L B]. Para referencia, aquí hay una imagen.

Al eliminar el término \ $ x_1 \ $ de su vector de estado, también está utilizando efectivamente \ $ C = \ left [\ matrix {1 & 0 & 0 & 0} \ right] \ $ . Mira la foto. Sospecho, pero no sé, que la función tf2ss devuelve C=[0 0 0 1] , debes verificar esto.

TengaencuentaqueSimulinklepermitiráextraerelcompensadorprácticamentedelaformaenqueserealizaaquí:aceptarágananciasdematrizytransportaráseñalesvectoriales,eIIRCintegravectores.Porlotanto,puedetenerundiagramadebloquescompletodeloquedesea,enlugardetratardeobtenertodaslas'i'y't'punteadasparaquecoincidanconlaespecificacióntextualenelbloquededefinición.

De Sistemas lineales , Kailath, Prentice-Hall, 1980.

    
respondido por el TimWescott
0

Esta respuesta pertenece al título actual ("¿Por qué el seguimiento de diferentes estados de la planta da como resultado estimaciones de observadores totalmente diferentes?").

La respuesta es: desactiva Matlab hasta que sepas lo que estás haciendo y luego haz el cálculo . La respuesta debe ser clara. Si no es así, vuelve a hacer los cálculos.

Las ecuaciones del observador (de la imagen en mi primera respuesta) son $$ \ frac {d \ hat {x}} {dt} = A \ hat {x} + B u + L \ left (y - \ hat {y} \ right), \ hat {y} = C \ hat {x } $$

Usando el álgebra lineal simple, puedes eliminar la referencia a \ $ \ hat {y} \ $ en la primera ecuación: $$ \ frac {d \ hat {x}} {dt} = \ left (A - LC \ right) \ hat {x} + \ left [\ matrix {B & L} \ derecha] \ izquierda [\ matrix {u \\ y} \ derecha], \ hat {y} = C \ hat {x} $$

La frase "Seguimiento de diferentes estados de la planta" se traduce, matemáticamente, en "cambiar el valor de \ $ C \ $ ". Mirando la segunda ecuación de arriba, es bastante obvio que si \ $ A - LC_1 \ ne A - LC_2 \ $ , entonces los dos sistemas actuarán de manera diferente. Es realmente tan simple.

    
respondido por el TimWescott

Lea otras preguntas en las etiquetas