¿Cómo elegir la señal de referencia en un modelo de espacio de estado?

0

Estoy un poco confundido acerca de elegir la señal de referencia para controlar los modelos de espacio de estados.

He leído (sin embargo, sin una explicación matemática profunda) que uno tiene que escalar su señal de referencia para que el sistema pueda rastrear la señal de entrada. También hay una función que proporciona un coeficiente de escala Nbar, por lo que tengo que multiplicar mi señal de referencia por ella:

s = size(A,1);
Z = [zeros([1,s]) 1];
N = inv([A,B;C,D])*Z';
Nx = N(1:s);
Nu = N(1+s);
Nbar=Nu + K*Nx;

En mi caso particular, existe el modelo de un péndulo en un carro unidimensional con polos arbitrarios elegidos. Mis variables de estado son .x=[x x˙ θ θ˙]T

A continuación se muestra el código matlab:

clear all;

M = 1;
m = 1;
l = 1.5;
g = 9.8;
I = m*l^2;
b = 0.05;

denom = M*(m*l^2) + I*(m + m);

a22 = -(b*I + b*m*l^2)/denom;
a23 = (g*(l^2)*(m^2))/denom;
a42 = -(b*l*m)/denom;
a43 = (g*(M+m)*l*m)/denom;

b21 = (I + m*l^2) / denom;
b41 = l*m / denom;

A = [0 1 0 0; 0 a22 a23 0; 0 0 0 1; 0 a42 a43 0];
B = [0; b21; 0; b41];
C = [1 0 0 0];
D = 0;

% Check for controllability
co = ctrb(A, B);
fprintf("%f\r\n", rank(co));

% POLES
P = [-1.5 -0.9 -2.5 -3.5];

% Placing poles
K = place(A, B, P);

% Reference signal rescaling
sys = ss(A, B, C, D);
N = rscale(sys, K);

Mi modelo de simulink: Péndulo invertido en un carro.  Simulink

Y trama de posición: Gráfico de posición del carro de péndulo invertido

Todo funciona como un encanto. Sin embargo, extraño totalmente la intuición detrás de eso.

Imagine el control PID estándar, en este caso, si quisiera controlar la posición, establecería el error en 'posición_corriente - posición_deseable' y aplicaría la fórmula PID estándar a ese error. De lo anterior está intuitivamente claro por qué se controla la posición y si quiero controlar, por ejemplo, la velocidad, simplemente estableceré el error en la divergencia de velocidad.

Sin embargo, en un espacio de estado tengo algún coeficiente que surge después de calcular el producto de punto entre mi estado y la matriz de ganancia. Y por alguna razón, después de restarlo de una versión escalada de u, obtengo una posición controlada. ¿Por qué es un gran secreto para mí? ¿Y cómo se controlaría cualquier otra variable de estado en este caso, como la velocidad, por ejemplo?

Long Smith
fuente
La posición es la más práctica, esa es la razón. Si desea controlar la velocidad o la aceleración, puede hacerlo. Pero primero, considere el alcance físico del sistema y lo que le gustaría lograr.
Gürkan Çetin
@ GürkanÇetin Entiendo claramente que puedo hacerlo. La pregunta es cómo.
Long Smith
1
Ok, tal vez lo entendí mal. Debido a que la primera pregunta en el último párrafo pregunta qué parámetro controlar, no cómo hacerlo. ¿Intentaste reemplazar x con x_dot? ¿Cuál fue el resultado? Si especifica un poco más, estoy seguro de que la pregunta y las respuestas serán más útiles para todos. De lo contrario, me temo que puede clasificarse como "demasiado amplio".
Gürkan Çetin
@ GürkanÇetin en realidad esta pregunta puede sonar doble. Lo que quise decir es que no puedo ver ninguna razón por la cual se controla exactamente la posición. Imagine el control PID estándar, en este caso si quisiera controlar la posición, establecería el error en (posición_actual - posición deseada) y aplicaría la fórmula PID estándar a ese error. De lo anterior está intuitivamente claro por qué se controla la posición y si quiero controlar, por ejemplo, la velocidad, simplemente estableceré el error en la divergencia de velocidad.
Long Smith
@ GürkanÇetin Sin embargo, en un espacio de estado tengo algún coeficiente que surge después de calcular el producto de punto entre mi estado y la matriz de ganancia. Y por alguna razón, después de restarlo de una versión escalada de u, obtenemos una posición controlada. Solo extraño la intuición detrás de eso.
Long Smith

Respuestas:

1

Asumiendo que estamos tratando con sistemas LTI de la forma

(1)x˙=Ax+Buy=Cx+Du

con , , y que es estabilizable y detectable, sin embargo que se conoce el estado completo, por lo que no es necesario construir un observador real. El objetivo es encontrar una ley de control para modo que a medida que el tiempo llegue al infinito, el estado estable de la salida, , sea igual a una referencia constante conocida, denotada por . u R n u y R n y u y s s rxRnxuRnuyRnyuyssr

Normalmente, cuando utiliza la retroalimentación de estado de la forma tal que es Hurwitz, entonces lo único que hará es forzar el estado completo a cero y, a su vez, la salida también . Entonces esto no resolvería el problema. Para resolver el problema mencionado anteriormente, también es necesario encontrar cuál sería el estado estacionario del estado completo, , y la entrada, , para que . Como el modelo es detectable, debería ser cero cuando . Por ahora voy a suponer que yA - Bu=KxABKxyxssussyss=rx˙y=rxssusspuede expresarse como una combinación lineal de y , por lo tanto , , entonces y . Cuando comencemos a resolver el problema, verá que existen tales matrices que resuelven el problema. Es decir, si conectamos esto en la ecuación obtenemosyssrxss=Mxruss=Mur(1)

(2)0nx×nx=(AMx+BMu)rr=(CMx+DMu)r.

Pero esto debería ser solucionable para cada . Entonces, factorizando entonces esto puede reescribirse comorr

(3)[ABCD][MxMu]=[0nx×nxIny×ny]

que se puede resolver con

(4)[MxMu]=[ABCD]1[0nx×nxIny×ny].

Esto tiene una solución si la matriz que necesita ser invertida es de rango completo y si (cuando podría necesitar usar el inverso correcto ). Si , aún podría resolverse, pero no para cada .nynuny<nuny>nur

Suponiendo que la ecuación se puede resolver definiendo una nueva variable de estado y una nueva entrada de control , entonces si existe una ley de control eso lleva a a cero, luego irá a también por definición. La derivada de tiempo de se puede expresar de la siguiente manera(4)x^=xxssu^=uussx^xxssx^

x^˙=x˙x˙ss=Ax+Bu(Axss+Buss)0=A(xxss)+B(uuss)=Ax^+Bu^

Como se indicó antes de usar la ley de control modo que es Hurwitz, debería forzar a cero. Al combinar las definiciones para , y la ley de control para uno puede resolver poru^=Kx^ABKx^x^u^u^u

(5)u=Kx+Kxss+uss.

Sustituyendo en las expresiones y en función de daxssussr

(6)u=Kx+(KMx+Mu)Nr.

Usando la ecuación , la ganancia multiplicada por también se puede expresar de la siguiente manera(4)r

(7)N=[KInu×nu][ABCD]1[0nx×nxIny×ny].

Entonces, esta ganancia cambiará al elegir una diferente . Sin embargo, se puede observar que si diseña una y una correspondiente en función de un modelo de espacio de estado cuya dinámica no coincide exactamente con el sistema en el que está utilizando la ley de control, debido a algún error durante la identificación de este sistema, entonces el estado estacionario El error podría no ir a cero a medida que el tiempo llega al infinito Una solución para esto podría ser extender el espacio de estado por la integral del error , como el controlador LQI .K K N y - rNKKNyr

fibonatic
fuente