Está en la página 1de 5

Modelado y Linealizacin de Sistemas No Lineales usando MATLAB y SIMULINK

1 Introduccin
En este documento discutiremos la forma de emplear Simulink para modelar la conducta dinmica de
sistemas no lineales y obtener modelos dinmicos lineales de su correspondiente representacin no
lineal.
La informacin obtenida puede servir para diversos propsitos, como explorar la conducta dinmica de
un sistema dado, o bien, el diseo de controladores usando alguna representacin lineal del sistema a
controlar (ya sea en forma de espacio de estado o de funcin de transferencia).
2 Modelado
El modelo que usaremos para mostrar la forma de realizar las actividades anteriores en SIMULINK se
refiere al control de nivel de aguan en un tanque con un nico caudal de entrada y salida:

dh
1
=
( q&i q&o )
dt A

ec.1

q&o = K h

ec.2

Donde qi y qo son los caudales msicos de entrada y salida, respectivamente y h es la altura del nivel de
agua. Los parmetros del sistema son: = 1 kg/m3, A = 1 m2 y K = 1 kg/s m1/2. El estado de equilibrio se
fija alrededor del punto h0 = 1, calculando el caudal de entrada en estado estacionario se obtiene qi0 = 1
kg/s.
3 Diagrama de Bloques en SIMULINK
Para representar el modelo dinmico del ncleo del reactor dado por las ecuaciones 1 y 2 en Simulink
empezamos ejecutando desde el Workspace de Matlab la siguiente instruccin:
>> simulink
esta instruccin invoca el programa Simulink donde aparece la biblioteca bsica de funciones. Cree un
nuevo modelo y aparecer el rea de trabajo Es recomendable comenzar colocando los bloques
integradores, tantos como ecuaciones, para este caso solo un integrador. Desde el bloque de funciones
continuas arrastrar el bloque del integrador y soltarlo en el rea de trabajo de Simulik, luego con el
botn derecho del mouse copiaremos el bloque del integrador haciendo clic sobre el bloque integrador y
soltando donde se desee ubicar el nuevo bloque. Colocar flechas de entrada/salida, y etiquetar las
flechas con la informacin pertinente tal como se muestra a continuacin:

figura 1
Antes de continuar, guardar el trabajo con el nombre ctrl_nivel_no_lineal.
A continuacin definiremos las constantes que sean necesarias creando desde el workspace de Matlab
un nuevo M-File. En este tipo de archivos ejecutables desde Matlab se puede crear programas y
funciones o simplemente definir constantes. Dentro del archivo escribir las siguientes lneas:
%Constantes
rho = 1 %[kg/m3]
A = 1 %[m2]
K=1
%Condicion de equilibrio
h0 = 1
qi0 = 1
Luego salvar como dinmica_tanque.
Siguiendo con el modelo colocaremos un bloque sumador (de la librera Math Operations) a la entrada
del integrador anterior (la salida de este sumador ser el lado derecho de la ecuacin 1) tal como se
muestra en la figura siguiente:

figura 2

Ahora agregamos los bloques necesarios para construir la parte derecha de la ecuacin 1, haciendo
doble clic sobre los bloques es posible cambiar algunos parmetros, en los bloques de ganancia colocar
el nombre de la variable que corresponda segn las definiciones que se hicieron en el M-File, hacer lo
mismo con el bloque de la constante. Luego unir los bloques como muestra la siguiente figura (hint: para
unir los bloques puede ser til seleccionar el bloque origen, presionar la tecla ctrl y hacer clic sobre el
bloque destino, tambin es til para copiar bloques, hacer clic con el botn derecho del mouse arrastrar
y soltar):

figura 3

De la misma forma que antes, completamos el modelo de control de nivel del tanque agregando los
bloques de entrada y salida (inport/outport), en la siguiente figura se ve el modelo terminado:

Figura 4

4 Linealizacin del Sistema No Lineal


Antes de proceder a explicar el procedimiento de linealizacin debemos mencionar que dicho proceso
normalmente se acostumbra realizarlo alrededor de algn estado estacionario del proceso en cuestin.
Por lo tanto, antes de linealizar el proceso debemos primero evaluar el estado estacionario
4.1 Estado estacionario del proceso (antes de usar Matlab, hallar las condiciones a mano)
Para obtener el estado estacionario de un sistema cualquiera modelado en Simulink usamos el comando
trim (hacer help trim para ver los parmetros que necesita y devuelve) el cual es parte de Matlab.
Entonces desde la ventana de comandos de Matlab, o bien directamente en el M-File, tecleamos la
siguiente instruccin:
xo = [h0];
uo = 0;
yo = 0;
ix = [h0];
[x,u,y,dx] = trim('ctrl_nivel_no_lineal',xo,uo,yo,ix)
donde:
xo = estimado inicial para evaluar el estado estacionario
uo = valor fijo de la entrada
yo = estimado inicial de las salida
ix = valor fijo de los estados
iu = variable de entrada cuyo valor permanece constante
ejecutando el comando anterior obtenemos la siguiente respuesta de Matlab:
x=
1
u=
1
y=
1

dx =
0
Observar que la derivada en el punto hallado es dx = 0, esto indica que el punto es un punto
estacionario.
Nota: Antes de continuar, nos detendremos un instante a imaginar un sistema de mayor complejidad,
supongamos que en lugar de una nica variable de estado, x, existen dos o mas variables, es decir, dos o
mas integradores. Deberamos preguntarnos como hace Simulink para ordenar las variables de estado.
Es posible extraer la estructura de las variables de estado x del modelo usando el siguiente comando.
x = Simulink.BlockDiagram.getInitialState('ctrl_nivel_no_lineal');
Donde x, es una estructura del tipo:
x.signals
struct array with fields:
values
dimensions
label
blockName
stateName
inReferencedModel
sampleTime
Si accedemos al blockName (ejecutando x.signals.blockName) veremos los nombres de todos los bloques
integradores del modelo, segn el orden que les da Simulink. Algunos parmetros pueden ser
configurados desde el modelo, para facilita el la identificacin de los estados, es recomendable los
parmetros stateName y blockName.
4.2 Linealizacin
Una vez que hemos calculado un estado estacionario del sistema estamos listos para proceder a
linealizar el modelo no lineal original. Para este propsito usaremos el estado estacionario evaluado
anteriormente. Tecleando la siguiente instruccin en Matlab (hacer un help de linmod):
[A,B,C,D] = linmod('ctrl_nivel_no_lineal',x)
Con este resultado se puede construir un bloque de espacio de estado y validar los resultados de la
linealizacin. Tambin es posible obtener el sistema linealizado en funcin transferencia.

También podría gustarte