ScilabTutorial y Practicas

16
´ Indice 1. Presentaci´ on 2 2. Un ejemplo 2 3. Scilab como calculadora 3 4. Lenguaje de programaci´ on 3 5. Funciones para control de procesos 4 5.1. Definir polinomios ................................... 4 5.2. Definir sistemas lineales ................................ 5 5.3. Trazado del lugar de las raices ............................ 5 5.4. Trazado del diagrama de Bode ............................ 5 5.5. Simulaci´ on de sistemas en el dominio del tiempo .................. 6 5.5.1. Ajustando los par´ ametros del sistema .................... 13 5.6. Guardando el trabajo ................................. 13 6. Pr´ acticas de Sistemas Continuos 15 6.1. Ejercicio 1 ........................................ 15 6.2. Ejercicio 2 ........................................ 15 6.3. Ejercicio 3 ........................................ 15 7. Pr´ acticas de Sistemas Discretos 15 7.1. Ejercicio 1 ........................................ 15 7.2. Ejercicio 2 ........................................ 16 7.3. Ejercicio 3 ........................................ 16 1

Transcript of ScilabTutorial y Practicas

Page 1: ScilabTutorial y Practicas

Indice

1. Presentacion 2

2. Un ejemplo 2

3. Scilab como calculadora 3

4. Lenguaje de programacion 3

5. Funciones para control de procesos 45.1. Definir polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45.2. Definir sistemas lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55.3. Trazado del lugar de las raices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55.4. Trazado del diagrama de Bode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55.5. Simulacion de sistemas en el dominio del tiempo . . . . . . . . . . . . . . . . . . 6

5.5.1. Ajustando los parametros del sistema . . . . . . . . . . . . . . . . . . . . 135.6. Guardando el trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6. Practicas de Sistemas Continuos 156.1. Ejercicio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.2. Ejercicio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.3. Ejercicio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

7. Practicas de Sistemas Discretos 157.1. Ejercicio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157.2. Ejercicio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167.3. Ejercicio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1

Page 2: ScilabTutorial y Practicas

Primeros pasos, en simulacion de procesos, con

Scilab.

Carlos de Mora

1. Presentacion

El presente manual no tiene por objeto ser una guıa detallada del programa Scilab, sino masbien al contrario, presentar de forma clara y concisa, solamente aquellos aspectos de Scilab queinteresan al alumno de la asignatura Regulacion Automatica, especialmente para realizar laspracticas de la asignatura.

Scilab es un programa muy potente orientado a realizar calculo numerico. Esto permite entreotras cosas realizar simulaciones de sistemas dinamicos, tanto contınuos como discretos.

Los calculos de Scilab son fundamentalmente matriciales, es decir se utilizan matrices paraplantear y resolver los problemas. Esto se traduce en que la notacion que se utiliza suele involucarmatrices.

Scilab posee una inmensa coleccion de funciones y posibilidades que hacen que su manejosea muy complejo. Posee rutinas de dibujo que permiten generar graficos. Ademas tiene unlenguaje de programacion que permite plantear y resolver problemas muy diversos.

En lo que nos interesa, Scilab ofrece una utilidad que permite la definicion de sistemasdinamicos de forma grafica, formando diagramas de bloques. Una vez definido un sistema, estese puede simular y obtener informacion acerca de su comportamiento.

Scilab se descarga gratuitamente del sitio Web http://www.scilab.org.La instalacion es sencilla y no se trata en este documento ya que se asume que el lector es

capaz de realizarla sin ayuda.

2. Un ejemplo

Para empezar veamos el siguiente ejemplo. Abramos Scilab. En la ventana del programaveremos la indicacion de atencion que es −− > .Escribimos las siguientes instrucciones:

x=10y=20.5sqrt(x^2+y^2)

En la ventana de Scilab veremos:

-->x=10x =

10.

-->y=20.5y =

2

Page 3: ScilabTutorial y Practicas

En Scilab Significado%i unidad imaginaria

√(− 1)

%pi π%e base de los logaritmos naurales

Cuadro 1: Constantes

20.5

-->sqrt(x^2+y^2)ans =

22.808989

-->sin(ans)ans =

- 0.7296711

-->

Observamos que despues de introducir cada linea, Scilab da una respuesta cuyo significadoes claro.

En el caso de la instruccion x = 10, hemos definido una variable x, y le hemos asignadoel valor 10. Esta variable queda almacenada en la memoria de Scilab. Notese que el acentocircunflejo es el signo de potenciacion.

En el caso de la instruccion sqrt(x2 + y2) no hemos guardado el resultado de la expresionen ninguna variable y entonces Scilab lo guarda en la variable ans. Observamos que la ulti-ma instruccion sin(ans) calcula el seno de 22,808989 y guarda el resultado de nuevo en ans.Notese que las funciones trigonometricas siempre toman y devuelven los valores enradianes.

3. Scilab como calculadora

El ejemplo anterior muestra que Scilab puede ser utilizado como una calculadora. Los usuar-ios que pueden manejar calculadoras cientıficas no tendran ningun problema en realizar conScilab los mismos calculos que con su calculadora.

Las constantes mas utilizadas en los calculos se encuentran en el cuadro 1

4. Lenguaje de programacion

Se pueden escribir programas que realizan calculos con Scilab. Para ello existe un lenguajede programacion mediante el cual generamos programas que despues guardamos en ficheros,para poderlos re-ejecutar. Esto dota a Scilab de una gran potencia.

Los programas se escriben en un fichero de texto plano es decir, no puede tener caracteresextranos como lo que introducen los procesadores de texto. En Windows el editor puede ser

3

Page 4: ScilabTutorial y Practicas

Notepad.Los comandos que introducimos interactivamente en la ventana de aplicacion pueden ser

escritos uno tras otro en un fichero de programa y despues ser ejecutados de nuevo.El lenguaje de programacion es, sin embargo, mas potente pues incluye instrucciones condi-

cionales, bucles, etc..Los ficheros de programa tienen la extension .sci.La descripcion en detalle del lenguaje de programacion no es objeto de este manual.No obstante supongamos que deseamos automatizar alguna tarea sencilla, como por ejemplo

el calculo de la sobreoscilacion de un sistema. La formula de la sobreoscilacion es 1

Mp = e− π.ζ√

1−ζ2 (1)

Para calcular esta formula en Scilab escribirıamos la expresion

z=0.1Mp=exp(-%pi*z/sqrt(1-z^2))

La primera linea, z = 1 crea la variable z en la memoria y le asigna el valor 0,1. La segundalinea crea la variable Mp y le asigna el resultado de la operacion a la derecha de la igualdad.Esto es analogo a lo que realizarıamos en una calculadora programable.

Para no tener que teclear estas lineas cada vez que deseamos calcular la sobreoscilacion, lomas logico es guardarlas en un fichero con extension .sci y ejecutarlo cuando sea necesario.

La orden para ejecutar un fichero es

exec(‘‘nombre_del_fichero’’)

Notese que el nombre del fichero debe incluir el trayecto al mismo, para que Scilab loencuentre.

Tambien podemos ejecutar un fichero usando en el menu principal la opcion File:Operations.Scilab ofrece una infraestructura mucho mas rica de cara a la programacion, pero es demasi-

ado compleja para los objetivos de este documento.

5. Funciones para control de procesos

Para las practicas que nos ocupan solo nos interesan las funciones que sirven para dibujarel lugar de las raices y el diagrama de Bode de los sistemas.

Sin embargo para poder aplicar estas funciones, es necesario conocer algunas cosas maspreviamente.

5.1. Definir polinomios

Primeramente definimos la variable del polinomio. Por ejemplo, si queremos crear un poli-nomio cuya variable sea s, lo haremos con la instruccion.

s=poly(0, ‘‘s’’)

Una vez definida esta variable, podemos crear un polinomio cualquiera. Por ejemplo

p=1+2*s+3*s^2

Para hayar las raices de este polinomio usaremos

4

Page 5: ScilabTutorial y Practicas

roots(p)

Existen muchas otras funciones para manipular polinomios. La ayuda en linea de Scilabproporciona informacion sobre ellas.

NOTA: Estamos acostumbrados a utilizar la variable s para los sistemas contınuos y z paradiscretos. Evidentemente en este caso utilizaremos la instruccion

z=poly(0, ‘‘z’’)

para nuestra mayor comodidad aunque en el fondo es indeferente el nombre de la variable.

5.2. Definir sistemas lineales

Para definir un sistema lineal, una vez que ya hemos definido la variable que vamos autilizar en los polinomios, crearemos primeramente la funcion de transferencia, como vemos enel siguiente ejemplo

G=(1+s)/(1+3*s+s^3)

despues definimos el sistema lineal mediante la funcion syslin, como sigue para sistemascontınuos:

miSistema=syslin(’c’, G)

para sistemas discretos solo cambia un parametro de la instruccion. Es como sigue

miSistema=syslin(’d’, G)

Insistimos; el primer argumento de syslin, es decir ’c’, indica que el sistema es continuo. Parasistemas discretos utilizamos ’d’. A partir de ahora la variable miSistema, contiene el sistemaque hemos definido.

5.3. Trazado del lugar de las raices

El lugar de las raices, o trazado de Evans, se dibuja en Scilab mediante la funcion Evans(H,[kMax]) (ver informacion en la ayuda), donde H es el sistema y kMax es un valor opcional: elvalor maximo de la ganancia.

Ası si deseamos trazar el lugar de las raices de miSistema introduciremos la instruccion

evans(miSistema)

Se abrira una ventana en la que aparecera dicho grafico. Ver fig. 1El significado es el lugar geometrico de las raices de 1 + K.H(s).Notese que en este ejemplo no hemos definido una kMax, por lo que esta es ∞.

5.4. Trazado del diagrama de Bode

Existe una funcion para dibujar el diagrama de Bode de un sistema. Esta es bode. Veasela ayuda en linea de Scilab para una descripcion completa.

Una forma sencilla de usarla es

bode(sistema, frecMin, frecMax)

por ejemplo en el sistema que estamos siguiendo escribirıamos

bode(miSistema, 0.01, 100)

y obtendrıamos la figura 2

5

Page 6: ScilabTutorial y Practicas

Figura 1: Lugar de las raices

5.5. Simulacion de sistemas en el dominio del tiempo

Scilab nos permite simular sistemas a base de construirlos mediante diagramas de bloques,mediante una fun ion denominada scicos().

Si tecleamos scicos() o scicos en Scilab se abrira una ventana dotada de un menu que nospermite representar graficamente los sistemas.

Una vez en scicos, seleccionamos el menu Edit:Palettes. Ver figs. 3 y 4La paleta que nos interesa mas es Linear. Ver fig. 5Los bloques que mas nos interesan son el sumador, y el num(s)/den(s), ya que mediante

ellos dibujaremos nuestros diagramas de bloques.Pruebe a dibujar un diagrama como el de la figura 6.NOTE QUE PARA MOVER O ENLAZAR ES NECESARIO UTILIZAR EL MENU Edit.Cada vez que deseamos cambiar de modo, por ejemplo de mover bloques a enlazar bloques, oborrar, es necesario seleccionarlo previamente en el menu Edit.

Para obtener ayuda sobre un bloque, hay que abrir el menu Misc y seleccionar la opcion Help.A continuacion se cliquea sobre el bloque cuya ayuda solicitamos.

Para introducir una entrada al sistema abriremos la paleta de sources. Ver fig. 7Elegimos como entrada el escalon y lo conectamos a la entrada de nuestro diagrama, obte-

niendo la fig. 8A continuacion debemos poder examinar las senales que circulan por el diagrama.Para ello abrimos la paleta de sinks o sumideros y extraemos de ella un bloque de los que

representan un eje de coordenadas con una senal.Notese que hay que elegir el bloque que tiene dos entradas: una superior en rojo y otra a laizquierda en negro.

6

Page 7: ScilabTutorial y Practicas

Figura 2: Diagrama de Bode

7

Page 8: ScilabTutorial y Practicas

Figura 3: Ventana de scicos

Figura 4: Paletas

8

Page 9: ScilabTutorial y Practicas

Figura 5: Repertorio para sistemas lineales

9

Page 10: ScilabTutorial y Practicas

Figura 6:

10

Page 11: ScilabTutorial y Practicas

Figura 7: Paleta de fuentes

11

Page 12: ScilabTutorial y Practicas

Figura 8:

12

Page 13: ScilabTutorial y Practicas

Ademas necesitamos abrir la paleta de Events y extraer de ella un relog.Con todo ello confeccionamos finalmente el diagrama de la figura 9

Figura 9: Diagrama final

5.5.1. Ajustando los parametros del sistema

Cliqueando sobre cada bloque podemos definir los parametros del mismo.Ası por ejemplo indicaremos la funcion de transferencia de un sistema, de forma muy sencilla.Analogamente se definen los parametros del relog o el osciloscopio.En concreto para poder visualizar bien la simulacion, es necesario adaptar el periodo de

muestreo del relog, a la rapided del sistema.Supongamos que en nuestro ejemplo, la funcion de transferencia del bloque superior es

G(s) =1

s + 1Como se trata de un sistema de primer orden, sabemos que su constante de tiempo es 1

seg.. Parece entonces adecuado que el relog trabaje por ejemplo a 0,1 seg. de velocidad. Paraello cliqueamos en el relog. Notese que al realimentar hemos alterado la constante de tiempo yla ganancia.

Ademas nuestra simulacion debe durar un tiempo del mismo orden, por ejemplo en 10 segs.habremos visto completamente la evolucion del sistema.

El sistema realimentado tiene una ganancia de 0,5, por lo que adaptamos el rango del eje ydel osciloscopio (spcope). Para ello cliqueamos en el osciloscopio y adaptamos los parametros.

Finalmente cliqueamos en el bloque de entrada escalon y ponemos el tiempo en el que seproduce la subida en el valor deseado.

Abrimos el menu Simulate y pulsamos en la opcion Run. Veremos la siguiente figura 10.

5.6. Guardando el trabajo

Podemos guardar nuestro diagrama con sus parametros en un fichero de extension .cos,mediante el menu de archivo de scicos.

Despues se puede recuperar este fichero para continuar trabajando con el.

13

Page 14: ScilabTutorial y Practicas

Figura 10: Respuesta a un escalon

14

Page 15: ScilabTutorial y Practicas

6. Practicas de Sistemas Continuos

Las practicas se entregaran enviando un email a los cursos virtuales, al foro depracticas, que llevara adjuntos los ficheros necesarios.

En general se piden para cada ejercicio un documento realizado en un procesador de textoy un fichero generado con Scilab.

No se olvide de especificar claramente su nombre.A continuacion se proponen los siguientes tres ejercicios sencillos:

6.1. Ejercicio 1

Dado el sistema con funcion de transferencia

G(s) =2.(s + 1)

(s + 3)(s + 5)

Dibujar su lugar de las raices de 1 + K.G(s).

Hallar los puntos de corte del lugar con el eje imaginario.

Se entregara un documento ralizado con Word o bien con OpenOffice (descargarle sise desea de http://www.openoffice.org) en el que se incluira una imagen capturada dela pantalla del lugar de las raices, que habra dibujado mediante Scilab, y una someraexplicacion incluyendo los comandos utilizados.Ademas se incluira el fichero con extension .sci que contendra los comandos utilizados.

6.2. Ejercicio 2

Para el sistema del ejercicio anterior dibujar su diagrama de Bode.Se entregara un documento ralizado con Word o bien con OpenOffice (descargarle sise desea de http://www.openoffice.org) en el que se incluira una imagen capturada dela pantalla del diagrama de Bode, que habra dibujado mediante Scilab, y una someraexplicacion incluyendo los comandos utilizados.Ademas se incluira el fichero con extension .sci que contendra los comandos utilizados.

6.3. Ejercicio 3

Dado el sistema del problema 9-2 del libro de texto, realizar una simulacion del mismomediante scicos. Se considerara el sistema con el compensador desarrollado en el ejemplo.

Se entregara el fichero con extension .cos en el que habremos guardado la simulacion.Ademas se entregara un documento de tipo Word u OpenOffice con una explicacion brevesobre lo realizado.

7. Practicas de Sistemas Discretos

7.1. Ejercicio 1

Dado el sistema con funcion de transferencia

G(z) =2.(z + 0,3)

(z + 0,53)(z + 0,9)(z − 0,2

Dibujar su lugar de las raices de 1 + K.G(z).

15

Page 16: ScilabTutorial y Practicas

Hallar los puntos de corte del lugar con el eje imaginario.

Se entregara un documento ralizado con Word o bien con OpenOffice (descargarle sise desea de http://www.openoffice.org) en el que se incluira una imagen capturada dela pantalla del lugar de las raices, que habra dibujado mediante Scilab, y una someraexplicacion incluyendo los comandos utilizados.Ademas se incluira el fichero con extension .sci que contendra los comandos utilizados.

7.2. Ejercicio 2

Para el sistema del ejercicio anterior dibujar su diagrama de Bode.Se entregara un documento ralizado con Word o bien con OpenOffice (descargarle sise desea de http://www.openoffice.org) en el que se incluira una imagen capturada dela pantalla del diagrama de Bode, que habra dibujado mediante Scilab, y una someraexplicacion incluyendo los comandos utilizados.Ademas se incluira el fichero con extension .sci que contendra los comandos utilizados.

7.3. Ejercicio 3

Dado el sistema del problema A14-1 del libro de texto, realizar una simulacion del mismomediante scicos. Se considerara el sistema con el compensador desarrollado en el ejemplo.

Asımismo obtener los diagramas de Bode que se indican en el libro de texto.Se entregara el fichero con extension .cos en el que habremos guardado la simulacion.Ademas se entregara un documento de tipo Word u OpenOffice con una explicacion brevesobre lo realizado.

–oOo–

16