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 & & = ( qi qo ) dt A
& qo = K h

ec.1 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