Manual Scilab
description
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/