¿Ubicación de polos para crear un controlador de retroalimentación de estado completo?

Estoy aprendiendo sobre la teoría del control mediante la Ingeniería de control moderno de Oagata .

Como parte de un ejercicio de práctica, intento diseñar un controlador de retroalimentación de estado completo que satisfaga mis requisitos de diseño utilizando la técnica de colocación de polos .

MathWorks proporciona documentación de alta calidad sobre la colocación de postes.


Requisitos de diseño :

  1. Menos del 5% de sobrepaso
  2. Menos de 2 s de tiempo de estabilización
  3. Error de estado estacionario minimizado

Mi sistema de cuarto orden :

                 - 0.00198 s + 2
  ----------------------------------------------
   s^4 + 0.1201 s^3 + 12.22 s^2 + 0.4201 s + 2

Respuesta de paso:

ingrese la descripción de la imagen aquí


Lo que he hecho hasta ahora:

Primero comencé por comprender la técnica de colocación de postes. Dado que las ubicaciones de los polos de bucle cerrado tienen un impacto directo en el sobreimpulso, el tiempo de establecimiento y el error de estado estable, estos pueden ajustarse en consecuencia para obtener la respuesta deseada. La ubicación de los polos se puede realizar utilizando técnicas de espacio de estado y, por lo tanto, requiere un modelo de espacio de estado del sistema. Por lo tanto:

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


A = -0.1201  -12.2200   -0.4201   -2.0000
     1.0000        0         0         0
         0    1.0000         0         0
         0         0    1.0000         0

B = [1; 0; 0; 0]

C = [0 0 -0.0020 2.0000]

D = 0

Luego, los polos en lazo cerrado son los valores propios de A-BK, donde Kse pueden calcular usando la placefunción.

K = place(A,B,p);donde pcontiene las ubicaciones deseadas de los polos de bucle cerrado. Procedí con:

p = [-0.424+1i*1.263, -0.424-1i*1.263, -0.626+1i*0.4141, 
-0.626-1i*0.4141];
K = place(A,B,p)

Y el resultado que obtuve fue:

K =

1.9799   -8.8200    2.2799   -1.0001

Esto significa que tengo polos en el lado derecho del avión, lo que resulta en un sistema inestable . Dado que necesito diseñar un controlador de retroalimentación de estado completo que satisfaga los requisitos de diseño, esto es claramente incorrecto.

No estoy seguro exactamente de lo que está haciendo mal, pero sospecho que está tomando los valores de K como los valores propios del sistema con retroalimentación. Calculé los valores propios de A B k con los números que proporcionó, y no solo son estables, sino que están lo suficientemente cerca de sus valores objetivo como para que la desviación se pueda descartar como errores de redondeo.
Tenga en cuenta que la colocación de polos tiene que ser el segundo método de diseño de control más peligroso inventado por el hombre, detrás de las ganancias elegidas al azar. La colocación de postes, en general, solo funciona si tiene un modelo exacto de la planta (que simplemente no tiene, a menos que la "planta" sea una simulación por computadora), o si tiene una comprensión intuitiva de qué ubicaciones de postes de destino puede elija eso que dará como resultado un sistema seguro (que no lo hace, hasta que haya elegido muchas ubicaciones de postes y las haya visto fallar).
Volveré a verificar mi trabajo con respecto a su primer comentario. No estoy seguro si entendí completamente tu segundo comentario. Dado que mi modelo es una simulación por computadora, ¿esto significa que en este caso tengo un modelo exacto de la planta?
Bueno, lo hace, sí. Pero en el mundo real eso nunca sucederá. No permita que esto le impida aprender la ubicación de los postes; necesita saberlo para seguir estudiando. Solo recuerda lo que dije si quieres usarlo en una situación del mundo real.

Respuestas (1)

Según lo indicado por los útiles comentarios de @TimWescott, tomo K como los valores propios del sistema con retroalimentación.

La dinámica de lazo cerrado está dictada por A C yo = A B k y no k .

Por lo tanto, uno debe continuar:

Acl = A - B*K;
e = eig(Acl)

Resultado:

e =

  -0.4240 + 1.2630i
  -0.4240 - 1.2630i
  -0.6260 + 0.4141i
  -0.6260 - 0.4141i

El sistema de lazo cerrado en forma ss para este caso (D=0) es:

X = ( A B k ) X + B tu

Trazado de la respuesta a una entrada de paso:

[n,d] = ss2tf(Acl,B,C,D)

n =

         0         0         0   -0.0020    2.0000


d =

    1.0000    2.1000    3.4000    2.7000    0.9999

ingrese la descripción de la imagen aquí

Aunque configuré el valor final en Simulink para que 1la salida se asiente en 2. Será necesario investigar por qué sucede esto.