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 .
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);
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?
fuente
Respuestas:
Asumiendo que estamos tratando con sistemas LTI de la forma
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 rx∈Rnx u∈Rnu y∈Rny u yss r
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=−Kx A−BK x y xss uss yss=r x˙ y=r xss uss puede 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 obtenemosyss r xss=Mxr uss=Mur (1)
Pero esto debería ser solucionable para cada . Entonces, factorizando entonces esto puede reescribirse comor r
que se puede resolver con
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 .ny≤nu ny<nu ny>nu r
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^=x−xss u^=u−uss x^ x xss x^
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^ A−BK x^ x^ u^ u^ u
Sustituyendo en las expresiones y en función de daxss uss r
Usando la ecuación , la ganancia multiplicada por también se puede expresar de la siguiente manera(4) r
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 - rN K K N y−r
fuente