22 de noviembre de 2012

Controlabilidad y Observabilidad

Automatización y Control de Sistemas Dinámicos
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>
Podemos ver en las impresiones que el resultado de las determinantes es diferente de cero por lo tanto el motor de corriente continua es controlable y observable.

Referencias:
Sistemas de Control Moderno, 10ma edición, Richard C. Dorf, Robert H. Bishop, PEARSON.

1 comentario:

Nota: solo los miembros de este blog pueden publicar comentarios.