martes, 13 de noviembre de 2012

Reporte Grupal sobre Propiedades Estructurales

Reporte en LATEX
El reporte para esta tarea fue hecho tanto en una publicación como en pdf generado con LATEX.. 

PDF:


Link del Código de LATEX.
Links a los blogs de mis compañeros:
I. Introducción

El sistema que controlaremos consiste en un ventilador, que al recibir la temperatura ambiental por medio de un sensor analógico ajusta la velocidad del ventilador a mayor temperatura mayor velocidad a menor temperatura menor velocidad.

Materiales tentativos:
  • Sensor analógico de temperatura LM35
  • Amplificador Operacional
  • Resistencias
  • Ventilador(VN4-012P)
  • Fuente de Poder de 12V
  • Cable para conexiones.
  • Entre otros.
II. Función de Transferencia

Para construir la función de transferencia para nuestro sistema, necesitamos las funciones de transferencia de cada uno de los componentes que actuarán en el sistema, dichas funciones de transferencia de los componentes son:

Función de transferencia sensor de temperatura:
$\frac{V(s)}{T(s)}= \frac{0.01}{s}$

Funcion de transferencia amplificador operacional
$\frac{V_{out}} {V_{in}}=\frac{R_{2}+R_{1}}{R_{2}}$

Comparador 1
$A=\frac{V_{0}} {\left(V_{ref}-V{i}\right)}$

Comparador2
$A=\frac{V_{0}}{\left ( V_{i}-V{ref} \right )}$

Relay de estado sólido
$\frac{V_{0}\left ( s \right )}{V_{i}\left ( s \right )}=\frac{R_{2}CS+1}{R_{1}CS}$

Ventilador con motor DC
$\frac{1}{s}$

Al manejar cada una de las funciones de transferencia a manera de un diagrama de bloques y aplicando sus propiedades obtenemos la función de transferencia final:
$\frac{0.0026s + 0.12}{s^{2} + 0.0026s + 0.1}$

Diagrama de Bloques



Representación en el espacio de estados

La representación en el espacio de estados de un sistema LTI esta dada por:
$ H(s) = \frac{B(s)}{A(s)} = \frac{ b_{1}s^{n-1}+...b_{n-1}s + b_{n} }{a_{1}S^{m-1} +...+a_{m-1}s+a_{m}  } = C(sI-A)^{-1}B+D $

$ \dot{x} = Ax + Bu $
$ y = Cx + Du $

Donde:
$x $ es el vector de estado
$y$ es el vector de salida
$u$ es el vector de entrada (o de control)
$A$ es la matriz de estados
$B$ es la matriz de entrada
$C$ es la matriz de salida
$D$ es la matriz de transmisión directa.

Podemos obtener las matrices de espacio de estados del sistema, utilizando la función tf2ss, descrita a continuación:

Función: tf2ss
Sintaxis:
    [A,B,C,D]=tf2ss(b,a)

Descripción:
  • Convierte los parámetros de la representación de una función de transferencia de un sistema a su representación en el espacio de estados equivalente. Retorna las matrices A, B, C, D de la representación del espacio de  estados para el sistema.

Utilizando el sistema creado con nuestra función de transferencia, Octave proporciona la siguiente salida:



Lo que significa que las matrices de espacio de estado del sistema, son las siguientes:
$A = \begin{bmatrix}
3.3307e^{-16} & 0.1\\
 -1.0 & -0.0026
\end{bmatrix}

B = \begin{bmatrix}
-0.1200\\
 0.0026
\end{bmatrix}$
$C = \begin{bmatrix}
0.0000 & 1.0000
\end{bmatrix}

D = \begin{bmatrix}
0
\end{bmatrix}$

Y entonces la representación en el espacio de estados es así:
$ \dot{x} = \begin{bmatrix}
3.3307e^{-16} & 0.1\\
 -1.0 & -0.0026
\end{bmatrix}x
+
\begin{bmatrix}
-0.1200\\
 0.0026
\end{bmatrix}u $
$
y = \begin{bmatrix}
0.0000 & 1.0000
\end{bmatrix}
x+
D = \begin{bmatrix}
0
\end{bmatrix}u $

III. Controlabilidad

La controlabilidad es una propiedad de los sistemas de control que se refiere a la capacidad de cambiar toda la configuración de espacios de un sistema utilizando ciertas manipulaciones admisibles. En pocas palabras, se puede alcanzar un estado desde cualquier otro.

Para analizar la controlabilidad de nuestro sistema, se hará lo siguiente:
  •     Obtener la Matriz de controlabilidad.
  •     Calcular el gramiano de controlabilidad.
  •     Obtener la forma canónica controlable.

1. Matriz de Controlabilidad

La matriz de controlabilidad esta dada por:
$C_{0} = \begin{bmatrix}B & AB & A^{2}B & ... & A^{n-1}B
\end{bmatrix}$
Octave cuenta con una función ctrb que calcula la matriz de controlabilidad de un sistema tomando como parámetros el sistema o las matrices A y B del espacio de estados del sistema.

Función: ctrb
Sintaxis:
  •     Co = ctrb(sys)
  •     Co = ctrb(A, B)
Descripción:
  •     Calcula la matriz de controlabilidad para sistemas de espacio de estados


Como se ve, podemos calcularlo de dos formas, utilizando el sistema creado con la función de transferencia, o utilizando las matrices A y B del espacio de estados del sistema.




Ambas producen el mismo resultado, la matriz de controlabilidad:

$
C_{0} = \begin{bmatrix}
-0.12 & 0.00026 \\
0.0026 & 0.11999
\end{bmatrix}
$

Es posible calcular el número de estados no controlables utilizando la matriz de controlabilidad. Basta con realizar una resta, el largo de la matriz A menos el rango de la matriz de controlabilidad.



El resultado de esta resta es el número de estados no controlables, en este caso cero, por lo cual nuestro sistema es controlable.

2. Gramiano de controlabilidad

En teoría de control, el gramiano de controlabilidad es un gramiano utilizado para determinar si un sistema lineal invariante en el tiempo(LTI) es controlable o no.
Debido a que el gramiano de controlabilidad tiene mejores propiedades numéricas que la matriz de controlabilidad formada por la función ctrb, se calculará también el gramiano de controlabilidad para de igual manera analizar la controlabilidad del sistema.

El gramiano de controlabilidad está definido por la siguiente ecuación:

$W_{c} = \int_{0}^{\infty} e^{A\tau }BB^{T}e^{A^{T}\tau}d\tau$

Sí la matriz resultante Wc es invertible, y es de rango completo, entonces el sistema para el cual pertenece el par A, B es controlable.

Podemos utilizar el gramiano de controlabilidad para saber si nuestro sistema es controlable. Para ello hacemos uso de octave y la función gram de Octave.

Función: gram(para controlabilidad)
Sintaxis:
  •     Wc = gram(sys,'c')
Descripción:
  •     Wc = gram(sys,'c') calcula el gramiano de controlabilidad del modelo de espacio de estados sys.

Siendo sys el sistema creado con la función de transferencia, calculamos el gramiano:



El resultado es la siguiente matriz:

$ W_{c}(y) = \begin{bmatrix}
2.769256 & -0.072000 \\
-0.072000 & 27.693608
\end{bmatrix}$

Para comprobar si el sistema es controlable o no, es necesario verificar que la matriz resultante sea invertible, es decir, que exista otra matriz a la cual multiplicándose, el resultado sea una matriz identidad (con 1’s en la diagonal principal). Para hacer esto, se utiliza la función inv de Octave.

Función: inv
Sintaxis:
  •     inv(A)
Descripción:
  •     Retorna el inverso de una matriz cuadrada ‘A’.

Haciendo uso de inv, se obtiene la matriz inversa de la obtenida con el gramiano de controlabilidad.  Después se multiplican ambas, para comprobar que el resultado sea una matriz identidad. El resultado es en efecto, una matriz identidad, por lo que se cumple ese punto.



Lo restante es verificar que sea de rango completo, lo cual sencillamente podemos hacerlo utilizando la funciones rank y length de Octave.

Función: rankFunción: length
Sintaxis:
  •     k = rank(A)
Sintaxis:
  •     n = length(array)
Descripción:
  •     Retorna un estimado del número de columnas o filas linealmente independientes de una matriz completa.
Descripción:
  •     Encuentra el número de elementos en la dimensión más larga de un arreglo.


Se obtiene el rango y el tamaño de la matriz utilizando rank(wc) y length(wc) y se comparan para saber si la matriz es de rango completo.



Como el resultado es 1, es decir True, se comprueba que wc es de rango completo, y por lo tanto el sistema es controlable.


3. Forma Canónica Controlable.

La forma canónica controlable es como sigue:

$\begin{bmatrix}
\dot{x_{1}} \\ \dot{x_{2}} \\ \vdots \\ \dot{x_{n-1}} \\ \dot{x_{n}}
\end{bmatrix}
=
\begin{bmatrix}
0 & 1 & 0 & \cdots & 0 \\
0 & 0 & 1 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots  & \vdots \\
-a_{n} & -a_{n-1} & -a_{n-2} & \cdots & -a_{1} \\
\end{bmatrix}
\begin{bmatrix}
x_{1} \\ x_{2} \\ \vdots \\ x_{n-1} \\ x_{n}
\end{bmatrix}
+
\begin{bmatrix}
0 \\ 0 \\ \vdots \\ 0 \\ 1
\end{bmatrix}
u$


$y =
\begin{bmatrix}
b_{n}-a_{n}b_{0} & b_{n-1}-a_{n-1}b_{0} & \cdots & b_{n-1}-a_{n-1}b_{0}
\end{bmatrix}

\begin{bmatrix}
x_{1} \\ x_{2} \\ \vdots \\ x_{n-1} \\ x_{n}
\end{bmatrix}
+ b_{0}u$

Donde  podemos obtener a, y b desde la función de transferencia, tomando en cuenta lo siguiente:

$ \frac{Y(s)}{U(s)} = \frac{b_{0}s^{n}+b_{1}s^{n-1}+ \cdots + b_{n-1}s+b_{n} }{s^{n}+a_{1}s^{n-1}+ \cdots +a_{n-1}s + a_{n}}$
Tomando nuestra función de transferencia, por inspección obtenemos los siguientes valores de a y b:

$a_{1} = 0.0026 $
$a_{2} = 0.1$
$b_{0} = 0$
$b_{1} = 0.0026$
$b_{2} = 0.12$


Sustituyendo, obtenemos nuestra forma canónica controlable

 $ \begin{bmatrix}
\dot{x}_{1}(t) \\
\dot{x}_{1}(t)
\end{bmatrix}
=
\begin{bmatrix}
0 & 1 \\ -0.1 & -0.0026
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}
+
\begin{bmatrix}
0 \\ 1
\end{bmatrix}
u(t)$

$ y(t) = \begin{bmatrix}
0.12 & 0.0026
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}$


III. Observabilidad
Para analizar la observabilidad de nuestro sistema, se hará lo siguiente:
  •     Obtener la Matriz de Observabilidad
  •     Calcular el gramiano de observabilidad.
  •     Obtener la forma canónica observable.


1. Matriz de Observabilidad
La matriz de observabilidad está dada por:

$ Ob =
\begin{bmatrix}
C \\ CA \\ CA^{2} \\ \cdots \\ CA^{n-1}
\end{bmatrix} $

Igual que con la controlabilidad, Octave también proporciona una función para calcular la matriz de observabilidad de un sistema.

Función: obsv
Sintaxis:
  •     ob = obsv(A, C)
Descripción:
  •     Calcula la matriz de observabilidad para sistemas de espacio de estados.

Calculamos la matriz de observabilidad usando la función obsv.


Con esto tenemos nuestra matriz de observabilidad:

$ Ob =
\begin{bmatrix}
0 & 1.0 \\ -1.0 & -0.0026
\end{bmatrix}
$

 
Como en la controlabilidad, podemos calcular directamente con la matriz de observabilidad si el sistema es totalmente observable. Para hacerlo simplemente calculamos el largo de la matriz A y se le resta el rango de la matriz de observabilidad.

El resultado es el número de estados no observables, en este caso siendo 0. Por lo cual es el sistema es completamente observable.

2. Gramiano de Observabilidad

El gramiano de observabilidad es un gramiano utilizado en teoría de control para determinar si un sistema lineal invariante en el tiempo (LTI) es observable.

Al igual que en el caso de la controlabilidad, lo utilizaremos debido a que proporciona mejores propiedades numéricas para estudiar, en este caso, la observabilidad del sistema.

El gramiano de observabilidad esta dado por:

$W_{0} = \int_{0}^{\infty} e^{A\tau }BB^{T}e^{A^{T}\tau}d\tau$

Sí la matriz resultante Wc es invertible, entonces el sistema para el cual pertenece el par A, C es controlable.
Podemos utilizar el gramiano de observabilidad para saber si nuestro sistema es observable. Igualmente, se utiliza la función gram de Octave, pero cambiando el parámetro mode a “o”

Función: gram
Sintaxis:
  •     Wo = gram(sys,'o')
Descripción:
  •     Wo = gram(sys,'o') calcula el gramiano de observabilidad del modelo de espacio de estados sys.

Utilizando el sistema como parámetro:


Se da como resultado la siguiente matriz:

$W_{0} = \begin{bmatrix} 192.31 & 6.4082e^{-13} \\ 6.4082e^{-13} & 192.31 \end{bmatrix} $

Ahora para comprobar si es observable, debemos verificar que cumpla con el requisito de ser invertible. Para ello calculamos su matriz inversa y multiplicamos ambas.




Debido a que el resultado es una matriz identidad, se comprueba que es invertible, y por lo tanto el sistema es observable.

3. Forma Canónica Observable

La forma canónica observable es aquella que cumple con lo siguiente:

$\begin{bmatrix}
\dot{x_{1}} \\ \dot{x_{2}} \\ \vdots \\
\dot{x_{n}}
\end{bmatrix}
=
\begin{bmatrix}
0 & 0 & \cdots & 0 & -a_{n} \\
1 & 0 & \cdots & 0 & -a_{n-1} \\
\vdots & \vdots &   & \vdots & \vdots \\
0 & 0 & \cdots & 1 & -a_{1}
\end{bmatrix}

\begin{bmatrix}
x_{1} \\ x_{2} \\ \vdots \\
x_{n}
\end{bmatrix}
+
\begin{bmatrix}
b_{n}-a_{n}b_{0} \\
b_{n-1}-a_{n-1}b_{0} \\
\vdots \\
b_{1}-a_{1}b_{0}
\end{bmatrix}
u$

$\begin{bmatrix}
0 & 0 & \cdots & 0 & 1
\end{bmatrix}
\begin{bmatrix}
\dot{x_{1}} \\ \dot{x_{2}} \\ \vdots \\ \dot{x_{n-1}} \\ \dot{x_{n}}
\end{bmatrix}
+ b_{0}u$


De igual manera que en la forma canónica controlable, obtenemos las a y b a partir de la función de transferencia, tomando en cuenta:
$\frac{Y(s)}{U(s)} = \frac
{ b_{0}s^{n} + b_{1}s^{n-1} + \cdots + b_{n-1}s + b_{n} }
{s^{n} + a_{1}s^{n-1} + \cdots + a_{n-1}s + a_{n}}$


Entonces, las a y b son:
$a_{1} = 0.0026$
$a_{2} = 0.1$
$b_{0} = 0$
$b_{1} = 0.0026$
$b_{2} = 0.12$


Lo cual nos produce la forma canónica observable: 
$\begin{bmatrix}\dot{x}_{1}(t)\\\dot{x}_{2}(t)\end{bmatrix}=
\begin{bmatrix}0 & -0.1 \\ 1 & -0.0026\end{bmatrix}
\begin{bmatrix}x_{1}(t) \\ x_{2}(t)\end{bmatrix}u(t)$

$y(t) = \begin{bmatrix}
0 & 1
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}$


Nota: Puede notarse que la matriz A de la forma canónica observable es la transpuesta de la matriz A de la forma canónica controlable.

IV. Diagonalización

1. Mediante Eigenvectores

Para que el sistema pueda ser diagonalizado se necesita que los eigenvectores de la matriz "A" sean linealmente independientes, esto se puede comprobar utilizando las raíces del sistema, si las raíces son diferentes esto puede lograrse, en cambio si son iguales podría o no ser posible la diagonalización.

Para diagonalizar se utiliza la matriz de eigenvectores de la matriz transición de estados "E":

$Ae_{i} = \lambda_{i}e_{i}$

Donde lambda representa una constante llamada eigenvalor, A es la matriz de estados y “e” subíndice “i” es un eigenvector de esa matriz.

Conociendo los eigenvectores se puede formar la matriz ya mencionada:

$E = \begin{bmatrix}
e_{1}, e_{2}, \cdots, e_{N}
\end{bmatrix}$


Siendo esta última matriz linealmente independiente, puede utilizarse para una transformación lineal uno a uno. Ahora tenemos que la transformada de la matriz de transiciones esta dada por la siguiente fórmula:

$\tilde{A} = E^{-1}AE$

Este es el código en octave que utilizamos para implementar lo explicado:


El resultado obtenido se muestra en la captura del programa corriendo, como se puede observar las raíces son diferentes y los valores que no son de la diagonal principal visiblemente son muy cercanos a cero:


Quedando la matriz diagonalizada de la siguiente forma:

$\tilde{A} = \begin{bmatrix}
-1.3e^{-3}+3.1263e^{-1}i & 0\\
0 & -1.3e^{-3}-3.1263e^{-1}i
\end{bmatrix}$

2. Forma Canónica Diagonal

Para obtener la forma canónica diagonal es necesario que el polinomio de nuestro denominador se pueda factorizar en diferentes raíces. Podemos comprobar lo anterior utilizando la función roots de Octave, dando como parámetro el denominador de la función de transferencia.

Función: roots
Sintaxis:
  •     r = roots(c)
Descripción:
  •     Retorna un vector en columna cuyos elementos son las raíces del polinomio c.

Calculando las raíces, obtenemos que son diferentes, como se pueden ver:


Entonces podemos calcular la forma canónica diagonal. Sí tenemos que:

$\frac{Y\left ( s \right )}{U\left ( s \right )}=\frac{b_{0}s^{n}+b_{1}s^{n-1}+...+b_{n-1}}{\left ( s+p_{1} \right )\left ( s+p_{2} \right )...\left ( s+p_{n} \right )}
$

Expandiéndose con fracciones parciales:

$\frac{Y\left ( s \right )}{U\left ( s \right )}=b_{0}+\frac{c_{1}}{s+p_{1}}+\frac{c_{2}}{s+p_{2}}+...+\frac{c_{n}}{s+p_{n}}
$

Entonces la forma canónica diagonal esta dada por:

$\begin{bmatrix}
\dot{x_{1}}\\\dot{x_{2}}
\\...
\\\dot{x_{n}}
\end{bmatrix}=\begin{bmatrix}
-p_{1} &  &  &0 \\
&-p_{2}  &  & \\
&  &...  & \\
0&  &  &-p_{n}
\end{bmatrix}\begin{bmatrix}
x_{1}\\x_{{2}}
\\...
\\ x_{n}
\end{bmatrix}+\begin{bmatrix}
1\\
1\\
...\\1
\end{bmatrix}u
\\\\y=\begin{bmatrix}
c_{1} &c_{2}  &...  & c_{n}
\end{bmatrix}\begin{bmatrix}
x_{1}\\x_{2}
\\...
\\ x_{n}
\end{bmatrix}+b_{0}u$

Para poder obtener las c, debido a que Octave no cuenta con una forma directa de obtener la forma canónica diagonal como Matlab, haremos uso de la función residue para obtener las fracciones parciales(y de nuevo también las raíces) para después simplemente sustituir en la forma canónica.

Función: residue
Sintaxis:
    [r, p, k]  = residue(b, a)
Descripción:
    Encuentra los residuos, polos, y términos directos de una expansión de fracciones parciales de dos polinomios a y b.

Utilizando residue con la función de transferencia obtenemos lo siguiente:

De estos datos obtenemos las p y las c, siendo p = p y c =r. Entonces:

$p_{1} = -0.00130+0.31623i$
$p_{2} = -0.00130-0.31623i$
$c_{1} = 0.00130-0.18973i$
$c_{2} = 0.00130+0.18973i$

Sustituyendo en la forma canónica diagonal:

$\begin{bmatrix}
\dot{x}_{1}(t) \\ \dot{x}_{2}(t)
\end{bmatrix}
\begin{bmatrix}
-0.00130+0.31623i & 0 \\ 0 & -0.00130+0.31623i
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}
+
\begin{bmatrix}
1 \\ 1
\end{bmatrix}
u(t)$
$y(t) = \begin{bmatrix}
0.00130-0.18973i \\ 0.00130+0.18973i
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}$

Referencias:

1 comentario:

  1. En vez de poner los códigos octave como capturas de pantalla, podrían usar el ambiente \begin{verbatim} ... \end{verbatim}. Para poner variables dentro de texto, pongan $A$ etc. (en la lista esa de "x significa esto y esto". El formateo pudiera haberse mejorado, pero está bien el contenido. Van 18 pts.

    ResponderEliminar