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:

\[u=u_{ss}-\mathbf K(\mathbf x - \mathbf{x_ss})\]

Para resolver cuanto vales \(u_ss\) y \(\mathbf{x_ss}\) debemos expresar las ecuaciones de estado con las condiciones de estado estacionario, es decir:

\[\begin{split} \begin{align*} 0&=&\mathbf{Ax_{ss}}+\mathbf{B}u_{ss} \\ yss&=&\mathbf{Cx_{ss}}+\mathbf{D}u_{ss} \end{align*} \end{split}\]

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:

\[\begin{split} \begin{bmatrix} \mathbf A & \mathbf B\\ \mathbf C & D \end{bmatrix} \begin{bmatrix} \mathbf{N_x}\\ N_u\\ \end{bmatrix} =\begin{bmatrix} \mathbf 0\\ 1\end{bmatrix} \end{split}\]

De esta manera

\[\begin{split}\begin{bmatrix} \mathbf{N_x}\\ N_u\\ \end{bmatrix} = \begin{bmatrix} \mathbf A & \mathbf B\\ \mathbf C & D \end{bmatrix}^{-1}\begin{bmatrix} \mathbf 0\\ 1\end{bmatrix}. \end{split}\]

Con estos valores, entonces podemos introducir la referencia (de forma 芦no robusta禄) haciendo:

\[u=N_ur-\mathbf {K}(\mathbf{x} - \mathbf{N_x}r)\]

Sabiendo cuanto vale la ley de control, es decir \(\mathbf{K}\), podemos simplificar la expresi贸n anterior de la siguiente manera:

\[u=-\mathbf{Kx}+\bar Nr\]

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

\[u=-\mathbf{K x}+\bar Nr\]

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:

\[\begin{split} \begin{align*} \dot{ \hat{ \mathbf{x}}}(t)&= (\mathbf A-\mathbf{BK-LC}) \hat{\mathbf x}(t)+\mathbf Ly(t)\\ u(t)&=-\mathbf{K}\mathbf{x}(t) + \mathbf 0 u(t) \end{align*} \end{split}\]

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:

\[\begin{split} \begin{align*} \dot{ \hat{ \mathbf{x}}}(t)&= (\mathbf A-\mathbf{BK-LC}) \hat{\mathbf x}(t)+\mathbf Ly(t) + \mathbf M r(t)\\ u(t)&=-\mathbf{K}\mathbf{x}(t) + \mathbf 0 u(t)+ N r(t) \end{align*} \end{split}\]

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:

\[\dot{ \hat{ \mathbf{x}}}(t)= (\mathbf A-\mathbf{BK-LC}) \hat{\mathbf x}(t)+\mathbf Ly(t) + \mathbf M r(t)\]

y

\[\dot{ \mathbf{x}}(t)= \mathbf A\mathbf x(t) +\mathbf{B} (-\mathbf K\hat{\mathbf{x}}(t)+ N r(t)) \]

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:

\[ \mathbf M = \mathbf{B} N \]

Se puede demostrar que para que el error en estado estacionario sea cero (de forma 芦no robusta禄), \(N=\bar N\) sacada anteriormente.

Entonces:

\[\mathbf M = \mathbf{B} \bar N\]

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:

\[\mathbf M = -\mathbf L\]

y

\[N=0\]

Entonces se tiene:

\[\dot{ \hat{ \mathbf{x}}}(t)= (\mathbf A-\mathbf{BK-LC}) \hat{\mathbf x}(t)+\mathbf L (y(t) - \mathbf r(t))\]

y

\[\dot{ \mathbf{x}}(t)= \mathbf A\mathbf x(t) +\mathbf{B} (-\mathbf K\hat{\mathbf{x}}(t)\]

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:

\[\begin{split}\begin{align*} \dot{\mathbf x}_C &= \mathbf A_r \mathbf x_C + \mathbf B_r y(t)\\ u(t) &= \mathbf C_r \mathbf x_C + \mathbf D_r y(t) \end{align*}\end{split}\]

Donde las matrices que definen el espacio de estado son:

\[\begin{split} \begin{align*} \mathbf A_r &= (\mathbf {A}_{bb}-\mathbf L\mathbf A_{ab})-(\mathbf B_b- \mathbf L B_a)\mathbf K_B \\ \mathbf B_r &= \mathbf {A}_r \mathbf L +\mathbf A_{ba}-\mathbf L \mathbf A_{aa} - (\mathbf B_b- \mathbf L B_a) K_a\\ \mathbf C_r &= -\mathbf K_b\\ \mathbf D_r &= -K_a -\mathbf K_b \mathbf L \end{align*} \end{split}\]

Si ahora le agregamos la referencia tenemos:

\[\begin{split}\begin{align*} \dot{\mathbf x}_C &= \mathbf A_r \mathbf x_C + \mathbf B_r y(t) + \mathbf M_r r(t)\\ u(t) &= \mathbf C_r \mathbf x_C + \mathbf D_r y(t) + N_r r(t) \end{align*}\end{split}\]

Por lo tanto la ecuaci贸n de la entrada resulta:

\[u(t) =-\mathbf K _b\mathbf x_C(t) +(-K_a - \mathbf K _b \mathbf L) y(t) + N_rr(t) \]

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:

\[\mathbf M = (\mathbf B_b - \mathbf L \mathbf B_a)N\]

El valor de \(N\) para que el sistema tenga error cero en estado estacionario (de forma no robusta), debe ser \(N=\bar N\).