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ónEl 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.
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:
|
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:
|
Descripción:
|
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:
|
Descripción:
|
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:
|
Descripción:
|
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: rank | Función: length |
Sintaxis:
| Sintaxis:
|
Descripción:
|
Descripción:
|
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:
|
Descripción:
|
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:
|
Descripción:
|
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:
|
Descripción:
|
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:
- https://ccrma.stanford.edu/~jos/fp/Diagonalizing_State_Space_Model.html
- https://ccrma.stanford.edu/~jos/StateSpace/Example_State_Space_Diagonalization.html
- http://teal.gmu.edu/ececourses/ece521/lecturenote/chap1/node3.html
- http://www.engr.mun.ca/~millan/6825/canonicals.pdf
- http://www.mathworks.com/help/matlab/ref
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