Manual Scilab

30
Scilab/Scicos una alternativa a Matlab/Simulink Prof. Víctor M. Alfaro Departamento de Automática Escuela de Ingeniería Eléctrica Universidad de Costa Rica Abril de 2006

description

Manual del software SCILAB, una version libre similar al potente MATLAB.

Transcript of Manual Scilab

  • Scilab/Scicos una alternativa a

    Matlab/Simulink

    Prof. Vctor M. AlfaroDepartamento de AutomticaEscuela de Ingeniera ElctricaUniversidad de Costa Rica Abril de 2006

  • Programas CACSD y de simulacin dinmica

    Scilab/ScicosTM

    1990 INRIA, ENPC Consorcio Scilab (2003) Software de distribucin

    gratuita INRIA, ENPC http://scilab.org Windows (9x/XP),

    GNU/Linux, Mac OS X, Solaris

    Versin 4.0 (Febrero 2006)

    Matlab/Simulink

    1988 The Mathworks, Inc. Comercial (varios miles

    de US$, versin para estudiantes > US$100)

    http://www.mathworks.com Windows 2000/XP,

    Linux, Mac OS X Release 2006a (Matlab

    7.2/Simulink 6.4)

    http://scilab.org/http://scilab.org/http://www.mathworks.com/
  • Scilab/Scicos Scilab

    Lenguage de programacin de alto nivel

    Intrprete Fundamentado en el

    manejo de matrices Herramientas

    lgebra lineal Control clsico Control robusto Modelos ARMA Manejo de polinomios Comunicaciones

    Grficos 2D y 3D Procesamiento de

    seales Lgica difusa Identificacin Optimizacin no lineal Otras ...

    Scicos Simulacin de sistemas

    dinmicos hbridos Interconexin de

    bloques Paletas de bloques

    (entrada/salida, lineal/no lineal, ...

  • Scilabinterfaz del usuario

  • Scilabopciones del men

  • Scilabayuda en lnea

  • Scilabayuda en lnea

  • Scilabcaractersticas de programacin, ...

    Nombres de variables (24 caracteres significativos)

    Sensible a las maysculas, a, A, var, VAR, Var, VAr

    Variables predefinidas: %i, %e, %pi, %t, %f

    Objeto bsico: matriz de dos dimensiones con elementos de punto flotante, precisin doble

    Matrices entre [ ] , separador de columnas ; separador de filas traspuesta

    //comentarios Operadores lgicos: ==,

    >, < , >=, exec(achivo.sce); Funciones: *.sci carga de biblioteca de

    funciones:getf(bl_fun.sci)

    los grficos son sobrepuestos en la ventana activa

  • Scilabvariables, vectores, matrices, polinomios, ...

    -->help()-->clear-->a=2;-->b=4;-->c=a*b c = 8.-->d=[1,2,3];-->e=[4;5;6];-->d*e ans = 32.-->e*d ans =! 4. 8. 12. !! 5. 10. 15. !! 6. 12. 18. !

    -->d d =! 1. 2. 3. !-->d' ans =! 1. !! 2. !! 3. !-->x=poly(0,'x');-->p=x^3+5*x^2+10*x+1;-->roots(p) ans =! - 0.1054418 !! - 2.4472791 + 1.8694208i !! - 2.4472791 - 1.8694208i !

  • Scilabpolinomios, funciones de transferencia, ...

    -->s=poly(0,'s');-->g1=2/((s+1)*(5*s+1));-->g2=5*(2*s+1)/(3*s+1)^3;-->g1*g2 ans =

    10 + 20s ---------------------------------- 2 3 4 5 1 + 15s + 86s + 234s + 297s + 135s

    -->syslin('c',g1*g2/(1+g1*g2)) ans = 0.0740741 + 0.1481481s ---------------------------------------------------------- 2 3 4 5 0.0814815 + 0.2592593s + 0.6370370s + 1.7333333s + 2.2s + s

  • ScilabSciPad (editor)

    --> exec('F:\scilab.test01.sce'); ans = - 2. 4.i - 4.i Scilab 4.0 Scicos Scilab 4.0/Scicos-->

  • Scilabestructuras de control, flujo del programa

    if elseif else end

    for end

    while end

    select varcase case else end

  • Scilabfunciones y cadenas de texto

    //Funciones en Scilabclear//definicin de la funcinfunction xfac = fac(x) if x exec('scilab.test02.sce');Introduzca un nmero--> 5

    El factorial de 5 es 120

    -->

  • Scilabmodelado, simulacin (ecuac. diferenciales)

    inLcL

    Lc

    VtiRtVdttdiL

    tidttdVC

    +=

    =

    )()()(

    )()(

    //Solucin de ecuaciones diferen.cleart=0:0.05:8;//definicin del modelofunction px = modelo(t,x) R=1.5,L=0.25,C=0.5,u=10 px(1)=1/C*x(2) px(2)=-1/L*x(1)-R/L*x(2)+1/L*uendfunction//llamado a la funcin odey=ode('rk',[0;0],0,t,modelo);plot2d(t',y'),xgrid(17)xtitle('Circuito RLC','tiempo

    (segundos)','Variables de estado')

    R

    L

    CVin

    iL

    Vc

    inLc VuixVx === ,, 21

  • Scilabgrficos de dos y tres dimensiones

    Ventanas xset(window,1)

    Sub-ventanas subplot(2,3,2)

    Grficos 2D plot2d(t,y) plot2d(x,y)

    Grficos 3D plot3d(x,y,z)

    Grficos siempre sobre impuestos 0 1 2 3 4 5 6 7 80

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    Circuito RLC

    tiempo (segundos)

    Varia

    bles d

    e es

    tado

  • Scilabgrficos 2D

    //Grficos en Scilabclears=poly(0,'s');cv=[1,2,3,5,6];t=0:0.05:5;w=4;z=[0.1,0.2,0.4,0.6,0.8];//funcin de transferenciafor i=1:5 g=2/(s^2+2*z(i)*w*s+w^2); gs=syslin('c',g); y=csim('step',t,gs); plot2d(t,y,style=cv(i))endxgrid(17)xtitle('Repuesta sistema

    subamortiguado','tiempo','y(t)')legends(['z = 0.1','z = 0.2','z =

    0.4','z = 0.6','z = 0.8'],[1,2,3,5,6],opt=4) 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

    0.00

    0.05

    0.10

    0.15

    0.20

    0.25

    Repuesta sistema subamortuiguado

    tiempo

    y(t)

    z = 0.1

    z = 0.2

    z = 0.4

    z = 0.6

    z = 0.8

  • Scilabsimulacin (sistemas lineales)

    //Simulacin en Scilabcleart=0:0.05:5;s=poly(0,'s');z=0.25;w=4;//funcin de transferenciag=2/(s^2+2*z*w*s+w^2);gs=syslin('c',g);//respuesta al escalnsubplot(2,1,1)y=csim('step',t,gs);plot2d(t,y,style=2),xgrid(17)xtitle('Respuesta a un escaln','',

    'y1(t)')//respuesta al impulsosubplot(2,1,2)y=csim('impulse',t,gs);plot2d(t,y,style=5),xgrid(17)xtitle('Respuesta al impulso','tiempo

    (seg.)','yo(t)')

    0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.00.00

    0.02

    0.04

    0.06

    0.08

    0.10

    0.12

    0.14

    0.16

    0.18

    0.20

    Respuesta a un escaln

    y1(t)

    0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

    -0.2

    -0.1

    0.0

    0.1

    0.2

    0.3

    0.4

    Respuesta al impulso

    tiempo (seg.)

    yo(t)

  • Scilabgrficos 3D

    x=linspace(-%pi,%pi,40);y=x;

    plot3d(x,y,sinh(x')*cos(y))

    t=linspace(-20*%pi, 20*%pi, 2000);

    param3d1(sin(t),t.*cos(t)/max(t),t/100)

    -15

    -10

    -5

    0

    5

    10

    15

    Z

    -4-3

    -2-1

    01

    23

    4 X

    -4-3

    -2-1

    01

    23

    4Y

    -0.8

    -0.4

    0.0

    0.4

    0.8

    Z

    -1.0-0.8

    -0.6-0.4

    -0.20.0

    0.20.4

    0.60.8

    1.0

    X

    -1.0-0.8

    -0.6-0.4

    -0.20.0

    0.20.4

    0.60.8

    1.0

    Y

  • Scilabsistemas de control

    Races de polinomios Funciones de

    transferencia Diagramas de

    bloques Modelos en variables

    de estado (ABCD) Conversin de

    sistemas (FT a VE y viceversa)

    Grficos Respuesta al escaln

    y al impulso (csim) Diagrama de Bode Diagrama de Nyquist Grfico de Evans

    (lugar de las races) Diagrama de Black

    -cartilla de Nichols

  • Scilabgrficos para control

    Evans root locus

    Real axis

    Imag. axis

    -25 -20 -15 -10 -5 0 5-15

    -10

    -5

    0

    5

    10

    15open loop poles

    asymptotic directions

    Magnitude

    Hz

    db

    -210

    -110

    010

    110

    210

    -140-120-100-80-60-40-200

    20

    Phase

    Hz

    degrees

    -210

    -110

    010

    110

    210

    -300-250-200-150-100-500

    -1000

    -0.453

    -0.304 -0.203

    -0.123

    -0.053

    0.011

    0.075

    0.1440.336

    0.507

    Nyquist plot

    Re(h(2i*pi*f))

    Im(h(2i*pi*f))

    -0.5 0.0 0.5 1.0 1.5 2.0 2.5-1.5

    -1.0

    -0.5

    0.0

    0.5

    1.0

    1.5

    0.01 0.21 0.45

    0.74 1.2

    1.7 2.2

    2.9 3.7

    5.2

    8.2

    14

    22

    38

    70

    1e+002

    2.3db curve

    -12-8-6-5-4-3-2-1.4-1-0.5

    0.250.50.711.422.33456812

    amplitude and phase contours of y/(1+y)

    phase(y) - degree

    magnitude(y) - db

    -360 -288 -216 -144 -72 0-50.0

    -38.8

    -27.5

    -16.3

    -5.0

    6.3

    17.5

    28.8

    40.0

  • Scilaboptimizacin (optim, leastsq, lsqrsolve)

    //Mnimo de una funcinclear//funcin a optimizar (fx)//y su derivada (gx)function [fx,gx,vest]=fcost(x,vest) fx=x.^2-8*x+6 gx=2*x-8endfunction//estimacin inicialvin=1;//llamado a la rutina de

    optimizacin[vmin,xopt]=optim(fcost,vin);disp(El valor mnimo de la funcin

    es'),disp(vmin)disp('y ocurre en x ='),disp(xopt)

    --> exec(scilab.test08.sce');

    El valor mnimo de la funcin es

    - 10.

    y ocurre en x =

    4.

    -->

  • Scilabajuste de curvas (datafit)

    clear//conjunto de pares de datosv=[1,2,3,4,5;1,1.25,3.25,3.75,4.25];...function z=fun2(p,v) z=v(2)-p(1)-p(2)*v(1)-p(3)*v(1).^2-

    p(4)*v(1).^3endfunctionpo1=[1 1 1]';po2=[1 1 1 1]';[p1,err1]=datafit(fun1,v,po1)[p2,err2]=datafit(fun2,v,po2)...y1=p1(1)+p1(2)*x+p1(3)*x.^2;y2=p2(1)+p2(2)*x+p2(3)*x.^2+p2(4)*x.^3

    ;...Parmetros del polinomio de 3er orden[1.9501086,- 2.1132493,1.2411307,- 0.1458400]

    0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

    0

    1

    2

    3

    4

    5

    polinomio orden 2

    polinomio orden 3

  • Scilabinterfaz grfica de usuario (GUI)

    //interfaz grficadestinos=['Alajuela','Heredia','Limn','

    Puntarenas','Volcn Pos'];anuncio=['TRANSPORTES PURA

    VIDA','Seleccione su destino'];resp=x_choose(destinos,anuncio);if resp > 0

    disp('Buen viaje a '+ destinos(resp))

    elsedisp('No seleccion su destino')

    end

    -->exec('scilab.test11.sce');

    Buen viaje a Limn

  • Scicosinterfaz del usuario

  • Scicospaletas de bloques

  • Scicosdiagramas de bloques

  • Comparacin de la sintaxisScilab Matlab

    //Programa en Scilabcleart=0:0.05:5;s=poly(0,'s');z=0.25;w=4;//funcin de transferenciag=32/(s^2+2*z*w*s+w^2);gs=syslin('c',g);//respuesta al escalnsubplot(2,1,1)y1=csim('step',t,gs);plot(t,y1,'b'),xgrid(17)xtitle('Respuesta a un escaln','','y1(t)')////respueta al impulsosubplot(2,1,2)yo=csim('impulse',t,gs);plot(t,yo,'r'),xgrid(17)xtitle('Respuesta al impulso','tiempo

    (seg.)','yo(t)')

    %Programa en Matlabcleart=0:0.05:5;s=tf('s');z=0.25;w=4;%%funcin de transferenciags=32/(s^2+2*z*w*s+w^2);%respuesta al escalnsubplot(2,1,1)y1=step(gs,t);plot(t,y1,'b'),grid ontitle('Respuesta a un

    escaln'),ylabel('y1(t)')%respueta al impulsosubplot(2,1,2)yo=impulse(gs,t);plot(t,yo,'r'),grid ontitle('Respuesta al

    impulso'),xlabel('tiempo (seg.)'),ylabel('yo(t)')

  • Comparacin de la respuestaScilab Matlab

    0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.00.0

    0.5

    1.0

    1.5

    2.0

    2.5

    3.0

    Respuesta a un escaln

    y1(t)

    0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0-3

    -2

    -1

    0

    1

    2

    3

    4

    5

    6

    Respuesta al impulso

    tiempo (seg.)

    yo(t)

    0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

    0.5

    1

    1.5

    2

    2.5

    3Respuesta a un escaln

    y1(t)

    0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-4

    -2

    0

    2

    4

    6Respuesta al impulso

    tiempo (seg.)

    yo(t)

  • Scilabinformacin en Internet

    Scilab: http://www.scilab.org Scicos: http://www.scicos.org EIE:

    http://www.eie.ucr.ac.cr/software/scilab/ Scilab lEnpc (en frances):

    http://cermics.enpc.fr/scilab_new/site/ Libro: Campbell, S.L., J-P. Chancellier y R.

    Nikoukhah - Modeling and Simulation in Scilab/Scicos, Springer(2006) (Ver 3.1)

    http://www.scilab.org/http://www.scilab.org/http://www.scilab.org/http://www.scicos.org/http://www.scicos.org/http://www.scicos.org/http://www.eie.ucr.ac.cr/software/scilab/http://cermics.enpc.fr/scilab_new/site/