martes, 22 de mayo de 2012

Practica Simulink (Matlab)


Practica Simulink (Matlab)


En este post analizaremos la posibilidad que nos da matlab para simular sistemas de primer orden y de segundo orden.
También gracias a una extensión de Matlab llamada Simulink nos permitirá hacer lo mismo pero de forma mas gráfica y mas sencilla.

¿Que es simulink?

Simulink es una plataforma para simulación multidominio y diseño basado en modelos de sistemas dinámicos y embebidos. Proporciona un entorno gráfico interactivo y un conjunto de librerías de bloques personalizables que permiten diseñar, simular, implementar y probar una gran variedad de sistemas con variación temporal, entre los que se incluyen sistemas de comunicaciones, control, procesado de señales, vídeo e imagen.(fuente:mathworks.es)


Lo primero, señalar que las variables utilizadas en Simulink hay que declararlas en Matlab.


Para entrar en Simulink lo que hay que hacer es pinchar en este icono:




SISTEMA DE PRIMER ORDEN CON SIMULINK.

Tendremos que obtener la salida de la función Y(s) a partir de una entrada   calculando la función de tranferencia siguiente:


La salida seria igual al producto de la entrada por la función de transferencia:

 

Para obtener la salida Y(t) aplicaremos la inversa de Laplace:





El resultado de lo anterior lo hará Simulink así que no nos tenemos que preocupar si no sabemos hacerlo. Ahora mediante simulik visualizaremos la gráfica de los resultados obtenidos:

En primer lugar entramos en Simulik haciendo click en el icono visto anteriormente en la ventana de Matlab. Esto nos mostrara la ventana Simulink mostrándonos las distintas librerías que dispone con todos los tipos de bloques que existen aunque nosotros solo utilizaremos tres:

Step : Lo encontramos en la librería sources, y es un generador de funciones. Si pinchamos dos veces en él nos mostrara un menú de para configurar los valores de nuestra función de salto. Los valores que introduciremos en esta practica sera Steptime a cero y Final value a cinco.



Transfer Fun: La encontramos en la librería continous y nos permite determinar la función de transferencia, G(s) antes mencionada.Como antes al hacerle doble click se nos abrirá una ventana para introducirle la función de transferencia.


Scope: Nos permite ver el resultado de la simulación en una gráfica de Y(t) haciendo doble click sobre él. Se incluye en la librería sinks.


Este seria el resultado de nuestro diagrama de bloques:



SISTEMA DE SEGUNDO ORDEN CON SIMULINK.
Es el mismo proceso que el anterior pero cambia nuestra función de transferencia que en este caso es de segundo orden.





Primero definiremos en la ventana de Matlab las variables A=10, wn=6, xi=0.2.
Modificamos la función de transferencia en el bloque Transfer Fun y simulamos, como en el caso anterior.
Simulamos y hacemos doble clic sobre Scope

El resultado de la nueva función de transferencia será:


Sistemas de Primer Orden con MATLAB.

Como hemos dicho al inicio del post esto mismo se puede hacer con Matlab a continuación veremos como se realizan.
Utilizaremos las mismas funciones que antes:






En la ventana de Matlab escribiremos:
>> clear
>> syms t s
>> A=10

A =

    10

>> a=2

a =

     2

>> U=1/s

U =

1/s

>> G=A/(s+a)

G =

10/(s + 2)

>> Y=G*U

Y =

10/(s*(s + 2))

>> y=ilaplace(Y,s,t)

y =

5 - 5/exp(2*t)

>> ezplot(y,[0,5]), axis([0,5 0,3])
>> ezplot(y,[0,5]), axis([0,5 0,6])

(En el post anterior ya vimos como se utilizaban los comandos de Matlab)

Primero definimos las variables a utilizar y las ecuaciones U, G, e Y, mediante el comando "ilaplace" nos hará su transformada en función de s y de t.


Ahora con el comando "ezplot" nos hará su gráfica que debería ser igual a la anterior.



Sistema de Segundo Orden con MATLAB.

Para este ejemplo cambiamos la función de transferencia G(s):






Y en la ventana de Matlab escribimos:

>> syms s t
>> A=10

A =

    10

>> xi=0.2

xi =

    0.2000

>> wn=6

wn =

     6

>> U=1/s

U =

1/s

>> G=A*wn^2/(s^2+2*xi*wn*s+wn^2)

G =

360/(s^2 + (12*s)/5 + 36)

>> Y=G*U

Y =

360/(s*(s^2 + (12*s)/5 + 36))

>> y=ilaplace(Y,s,t)

y =

10 - (10*(cos((12*6^(1/2)*t)/5) + (6^(1/2)*sin((12*6^(1/2)*t)/5))/12))/exp((6*t)/5)

>> ezplot(y,[0,5]), axis([0,5,0,3])
>> ezplot(y,[0,5]), axis([0,5,0,30])
>> ezplot(y,[0,5]), axis([0,5,0,20])

El resultado de nuestra función será:




Sistema de control en lazo cerrado.
Para acabar con este post veremos el ejemplo un sistema de control de lazo cerrado utilizando Simulink, lo que lo diferencia de los otros ejemplos es que este dispone de retroalimentación.

Lo primero que tenemos que hacer es declarar las variables necesarias en la ventana de Matlab:
 


Ahora escribiremos nuestra función de transferencia:


 


A la función de transferencia de retroalimentación le llamaremos "C".
Incluimos nuestros bloques como en los ejemplos anteriores como indica la imagen:




Si nos fijamos en esta ocasión al tener retroalimentación tenemos que poner una función de suma y nos tendremos que fijar que los signos +- de esta función estén correctamente. Por ultimo indicar que el bloque de realimentación y el de función de transferencia son del mismo tipo solo cambia la función de transferencia y que para que encaje bien hay que rotarlo con el botón secundario del ratón y pinchar en propiedades=>rotate.
Después simulamos y vemos el resultado haciendo doble click en Scope.