Inserci贸n de referencias#
Comenzaremos nuestro estudio agreando referencias a un sistema controlado mediante la ley de control \(u(t)=\mathbf{Kx}(t)\).
Siguiendo la idea de control cl谩sico uno podr铆a hacer \(u=-\mathbf K \mathbf x + r\), siendo \(r\) la referencia. Sin embargo esto en general llevar铆a a tener errores de estados estacionarios muy grandes.
La forma correcta ser铆a tratar de calcular los estados y la entrada en estado estacionario(\(t \rightarrow \infty\)). Si entramos con el valor de estado estacionario de \(u\) y hacemos que para \(t \rightarrow \infty\) la realimentaci贸n sea 0, entonces nos aseguramos que el sistema tendr谩 error nulo. Matem谩ticamente esto lo podemos lograr haciendo que:
Para resolver cuanto vales \(u_ss\) y \(\mathbf{x_ss}\) debemos expresar las ecuaciones de estado con las condiciones de estado estacionario, es decir:
Entonces se quiere resolver los valores para los cuales \(y_{ss }=r_{ss}\) para cualquier \(y_ss\). Para hacer esto hacemos que \(\mathbf{x_{ss}}=\mathbf{N_x}r_{ss}\) y \(u_{ss}=N_ur_{ss}\). Haciendo esto tenemos el siguiente sistema de ecuaciones:
De esta manera
Con estos valores, entonces podemos introducir la referencia (de forma 芦no robusta禄) haciendo:
Sabiendo cuanto vale la ley de control, es decir \(\mathbf{K}\), podemos simplificar la expresi贸n anterior de la siguiente manera:
donde \(\bar N = N_u+\mathbf{KN_x}\)
Para poder ver el esfuerzo de control en la salida del sistema que agreguemos tenemos que expresar las ecuaciones de estado en funci贸n de las entradas (ahora la entrada es \(r\)) y los estados (siguen siendo \(\mathbf{x}\)). Entonces la ecuaci贸n de salida que tengo que agregar es
Funciones para el c谩lculo del seguimiento a referencia
Con esta funci贸n podemos calcular las matrices para el seguimiento a referencia:
def seguimiento_referencia(sys):
aux1=np.vstack((np.hstack((sys.A,sys.B)),
np.hstack((sys.C,sys.D))))
n=np.shape(sys.A)[0]
aux2=np.vstack((np.zeros((n,1)),[1]))
N=np.linalg.inv(aux1)@aux2
Nx=N[0:n]
Nu=N[n]
return Nx, Nu
Para simplificar la implementaci贸n podemos usar solo esta ganancia:
def calculate_Nbar(Nx,Nu,K):
return Nu+K@Nx
Inserci贸n de referencia a un controlador con estimado en forma general#
Recordando la ecuaci贸n del estimador con la ley de control, resulta la ecuaci贸n:
Podemos ver que este sistema, que es un controlador, tiene un sola entrada, que es la salida (o medici贸n) de nuestra planta a controlar. A este tipo de controlador, que solo tiene como objetivo mantener al sistema controlador en su punto de trabajo con un determinado comportamiento din谩mico se lo conoce como regulador.
Para darle la posibilidad al sistema controlado de ser un servosistema controlador por un servoregulador, es decir que tenga la capacidad de seguir referencias, es necesario de alguna manera agregar al controlador la entrada referencia.
Es importante destacar que el comportamiento din谩mico del sistema controlador no debe cambiar. Es decir la matriz \(\mathbf A\) del sistema controlado (a lazo cerrado) debe ser la misma que antes de introducir la referencia.
Por lo tanto, la forma general de introducir la referencia sin modificar las din谩micas obtenidas anteriormente es a la ecuaci贸n anterior agregarle el t茅rmino de entrada a la referencia. Es decir:
La pregunta ahora es como elegir \(\mathbf M\) y \(N\) para que la inserci贸n de referencias tenga una configuraci贸n correcta.
En este curso presentar茅 2 formas:
Inserci贸n de referencias para estimador aut贸nomo: para esto se elige \(\mathbf M\) y \(N\) de forma tal que la din谩mica del error de estimaci贸n no dependa de ls referencias. Es decir, el error de la estimaci贸n no se ver谩 afectado cuando se cambie la referencia.
Inserci贸n de referencias mediante error de seguimiento: esto transforma nuevamente a nuestro sistema en uno de una sola entrada \(y(t)-r(t)\). Este sistema es m谩s parecido al controlador/compensador cl谩sico ya que aparece la resta \(y(t)-r(t)\) a la entrada. Esta forma de introducir la referencia en general tiene una peor performance que cuando se usa la anterior. Sin embargo es util cuando se mide la diferencia entre los que se quiere y lo que se tiene. Es decir, el sensor nos da
Inserci贸n de referencias mediante error de seguimiento: esto transforma nuevamente a nuestro sistema en uno de una sola entrada \(y(t)-r(t)\). Este sistema es m谩s parecido al controlador/compensador cl谩sico ya que aparece la resta \(y(t)-r(t)\) a la entrada. Esta forma de introducir la referencia en general tiene una peor performance que cuando se usa la anterior. Sin embargo es util cuando se mide la diferencia entre los que se quiere y lo que se tiene. Es decir, el sensor nos da directamente \(y(t)-r(t)\). En cualquier otro caso es preferible la inserci贸n de referencia para lograr el estimador autonomo.
Estimador completo aut贸nomo#
Recordando la ecuaci贸n del estimador completo tenemos que:
y
Como queremos que el error de estimaci贸n \(\dot{ \mathbf{x}}(t) - \dot{ \hat{ \mathbf{x}}}(t)\) no dependa de \(r(t)\), entonces tenemos entonces cuando la resta de las dos ecuaciones anteriores se deben anular los t茅rminos dependientes de \(r(t)\). Entonces, por inspecci贸n notamos que:
Se puede demostrar que para que el error en estado estacionario sea cero (de forma 芦no robusta禄), \(N=\bar N\) sacada anteriormente.
Entonces:
Estimador por error de seguimiento#
Se tiene que elegir \(\mathbf M\) y \(N\) talque se la entradas queden de la forma \(y(t)-r(t)\). Inspeccionado las ecuaciones del controlador podemos notar que si elegimos:
y
Entonces se tiene:
y
Por lo que ahora nuestro sistema controlador solo tiene una entrada igual a \(y(t)-r(t)\).
Estimador reducido aut贸nomo#
Las ecuaciones para el sistema compensador con estimador reducido resutlaron:
Donde las matrices que definen el espacio de estado son:
Si ahora le agregamos la referencia tenemos:
Por lo tanto la ecuaci贸n de la entrada resulta:
De forma an谩loga a la anterior tenemos que el error estimaci贸n de \(\mathbf x_b(t) - \hat {\mathbf x}_b(t)\), no debe depender de \(r(t)\). Sin embargo, el trabajo algebraico para obtener explicitamente cuando debe valor \(\mathbf M\) es bastante tedioso. Por lo tanto aqu铆 se presenta el resultado:
El valor de \(N\) para que el sistema tenga error cero en estado estacionario (de forma no robusta), debe ser \(N=\bar N\).