Automatización y Control de Sistemas Dinámicos
Laboratorio: Entrada 7
Laboratorio: Entrada 7
Como última entrega de laboratorio seleccioné un problema del libro Sistemas de Control Moderno, y este pide determinar si el sistema tiene controlabilidad y observabilidad, usando las funciones del paquete control en Octave.
El problema es el siguiente:
Un motor de corriente continua tiene un modelo de variables de estado como se muestra a continuación.
$\dot x=
\begin{bmatrix}{-3}&&{-2}&&{-0.5}&&{0}&&{0}\\
{2}&&{0}&&{0}&&{0}&&{0}\\
{0}&&{2}&&{0}&&{0}&&{0}\\
{0}&&{0}&&{1}&&{0}&&{0}\\
{0}&&{0}&&{0}&&{2}&&{0}\end{bmatrix}x+
\begin{bmatrix}{1}\\{0}\\{0}\\{0}\\{0}\end{bmatrix}u$
$y=\begin{bmatrix}{0}&&{0}&&{0}&&{0}&&{1.25}\end{bmatrix}x$
Determinar si el sistema es controlable y observable.
Utilizando las funciones ctrb para obtener la matriz de controlabilidad y obsv para obtener la matriz de observabilidad, podremos obtener la determinante de cada una de estas matrices.
Se sabe que cuando la determinante de la matriz de observabilidad da como resultado un valor diferente de cero, el sistema es observable y que cuando la determinante de la matriz de controlabilidad da como resultado un valor diferente de cero, el sistema es controlable.
Por lo tanto cree en octave funciones simples que hacen uso del paquete control para determinar si el sistema dado, en este caso en la forma de espacio de estados, es controlable y observable.
Este script tiene definidas las funciones "controlabilidad" y "observabilidad", y una más que hace la llamada a estas dos anteriores y yo la llamo "verificar".
Este es el código en octave.
Ahora para poder determinar si el sistema es controlable y observable pasamos las matrices del espacio de estados a matrices en octave. Esta las declaramos como se muestra a continuación.
$\begin{bmatrix}{-3}&&{-2}&&{-0.5}&&{0}&&{0}\\
{2}&&{0}&&{0}&&{0}&&{0}\\
{0}&&{2}&&{0}&&{0}&&{0}\\
{0}&&{0}&&{1}&&{0}&&{0}\\
{0}&&{0}&&{0}&&{2}&&{0}\end{bmatrix}$
A = [-3 -2 -0.5 0 0;2 0 0 0 0;0 2 0 0 0;0 0 1 0 0;0 0 0 2 0];
$\begin{bmatrix}{1}\\{0}\\{0}\\{0}\\{0}\end{bmatrix}$
B = [1; 0; 0; 0; 0];
$\begin{bmatrix}{0}&&{0}&&{0}&&{0}&&{1.25}\end{bmatrix}$
C = [0 0 0 0 1.25];
Ahora es así como cargamos el módulo con las funciones de controlabilidad y observabilidad y creamos las matrices así como se mostró anteriormente.
octave:1> source 'contr-obser.m' octave:2> A = [-3 -2 -0.5 0 0; 2 0 0 0 0; 0 2 0 0 0; 0 0 1 0 0; 0 0 0 2 0]; octave:3> B = [1; 0; 0; 0; 0]; octave:4> C = [0 0 0 0 1.25]; octave:5> verificar(A, B, C) ------------------------ Matriz de controlabilidad contr = 1 -3 5 -5 1 0 2 -6 10 -10 0 0 4 -12 20 0 0 0 4 -12 0 0 0 0 8 Determinante deter = 256 CONTROLABLE ------------------------ Matriz de observabilidad obser = 0.00000 0.00000 0.00000 0.00000 1.25000 0.00000 0.00000 0.00000 2.50000 0.00000 0.00000 0.00000 2.50000 0.00000 0.00000 0.00000 5.00000 0.00000 0.00000 0.00000 10.00000 0.00000 0.00000 0.00000 0.00000 Determinante deter = 390.62 OBSERVABLE ------------------------ octave:6>
Referencias:
Sistemas de Control Moderno, 10ma edición, Richard C. Dorf, Robert H. Bishop, PEARSON.