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

Upload: gaston

Post on 07-Sep-2015

425 views

Category:

Documents


17 download

DESCRIPTION

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

TRANSCRIPT

  • 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/