View
222
Download
0
Category
Preview:
Citation preview
7/25/2019 Guia de Introduccion a Scilab
1/29
Gua de comandos Scilabnfasis en Sistemas de Control
Grupo de Investigacin en Control IndustrialGICI
Facultad de Ingeniera
Escuela de Ingeniera Elctrica y Electrnica, 2013
7/25/2019 Guia de Introduccion a Scilab
2/29
Caractersticas Bsicas
Software Libre
Diferentes Toolbox [control, robtica, RT, etc.]
Sensible a las maysculas [var, Var, VAR=son variablesdiferentes]
Se pueden definir archivos de comandos *.sce(equivalente al *m de Matlab) y se ejecutan dentrode la consola de comandos con:
-> exec(nombre_archivo.sce);
Creacin de funciones en archivos *.sci y soncargadas al entorno con el comando getf
-> getf(nombre_funcion.sci);
2
7/25/2019 Guia de Introduccion a Scilab
3/29
Constantes predefinidas en Scilab
Operador Descripcin
%e Base del logaritmo natural e=2.718281
%i Nmero imaginario 1
%pi Nmero PI = 3.1415927
%eps Precisin (depende del PC)
%inf Infinito
%nan No es un nmero
%t Valor lgico verdadero
%f Valor lgico Falso%s Variable polinomio
%z Variable polinomio
3
7/25/2019 Guia de Introduccion a Scilab
4/29
Variables, Vectores y Matrices
Definicin de Variables-> a=2; // Escalar-> b=scilab; // Cadena de caracteres
Vectores-> ve_1=[1,%e,%pi]; // igual que vec=[1 2 3];-> ve_2=[4;5;6]; //igual que vec=[4
56];
Hay que tener en cuenta que una coma y un punto ycoma funciona igual que un espacio en blanco y unsalto de lnea, respectivamente, siempre y cuando no sepresente el caso como en vec_4 :
->vec_3=[4,5 +6] ->vec_4=[4,5 *6]
4
7/25/2019 Guia de Introduccion a Scilab
5/29
-> ve_3=[1:0.5:5];
-> ve_4=1:0.5:5;
-> a= spec(rand(3,3))
Matrices
-> m_n=[1 2 3;4 5 6] //definicin de una matriz
-> m_3x3=rand(3,3) //matriz aleatoria
-> m_bol= m_n>=3 //matriz booleana
-> m_zero=zeros(2,2) //matriz de ceros->inv(m_3x3) //inversa de la matriz m_3x3
Nota: los vectores y escalares son almacenados comomatrices en Scilab
5
Variables, Vectores y Matrices
7/25/2019 Guia de Introduccion a Scilab
6/29
Conjunto de funciones para crear
matricesComando Descripcin
' y .' Transpuesta (conjugada o no)
diag Matriz (m,n) con diagonal definida por el usuario (o
extraccin de la diagonal)eye Matriz (m,n) identidad
grand Matriz (m,n) aleatoria
int Parte entera de una matriz
linspace o : Vector linealmente espaciado
logspace Vector logartmicamente espaciado
ones Matriz (m,n) de unos
zeros Matriz (m,n) de ceros
rand Matriz aleatoria (uniforme o gaussiana)
6
7/25/2019 Guia de Introduccion a Scilab
7/29
Operaciones sobre matrices
-> m_n(2,2)=13; // Inserta 13 en la fila 2 columna 2
-> m_n(:,1)= 8; // Coloca el valor 8 en todas las filas de la
primera columna
-> m_n(:,$)=[]; // Elimina todas las filas de la ultima columna
-> m_n(:,$+1)=[3;2]; // Inserta una columna en la ultimaposicin
7
7/25/2019 Guia de Introduccion a Scilab
8/29
Operador Descripcin
| Lgica Or
& Lgica And
! Logica Not==, >=, ,
7/25/2019 Guia de Introduccion a Scilab
9/29
Operador Descripcin
Rank(A) Rango de una matriz A
Inv (A) Inversa de una matriz A
Cond(A) Numero de condicinDet(A) Determinante de una matriz A
Spec(A) Calculando autovalores de una matriz A
9
Operaciones sobre matrices
7/25/2019 Guia de Introduccion a Scilab
10/29
PolinomiosUn polinomio de grado nes una funcin de la forma:
= + + + +
En Scilab el orden de los coeficientes del polinomio es inverso aMatlab.
-> p=poly([1 3], 's') // Polinomio definido por sus races
-> q=poly([1 2],'s','c') // Polinomio definido por sus coeficientes
Los polinomios pueden ser sumados, multiplicados, concatenadospara formar matrices, etc.,
->p+q+2 // Suma de polinomios con un escalar
->[p*q,1] // Matriz de polinomios
Evaluar un polinomio en un punto especifico
-> s = poly(0,'s'); //definicin de s
-> p = [s, 1/s]; //polinomio
-> x= horner(p,1) //evaluacin del polinomio en 1
10
7/25/2019 Guia de Introduccion a Scilab
11/29
Comandos de PolinomiosComando Descripcin
poly Crea un polinomio, desde sus races o suscoeficientes
coeff Extrae los coeficientes de un polinomio
horner Evala un polinomio en un punto
derivat Calcula la derivada de un polinomio
roots Calcula las races de un polinomio
pdiv Divisin de polinomios
11
7/25/2019 Guia de Introduccion a Scilab
12/29
Funciones del WorkspaceComando Descripcin
typeof(a) Tipo de dato de la variable a
exists('a') Verifica si la variable a existe (Retorna 1 comoverdadero y 0 como falso)
clear Destruye y libera la memoria correspondiente(elimina las variables, vectores, matrices)definidas por el usuario
clear('a') Elimina la variable a del entorno
whos('-name', 'a') Obtiene informacin sobre la variable a
who() Muestra las variables definidas en el entornostacksize() Muestra la memoria disponible y el nmeromximo de variables que se pueden definir
Stacksize(7000000) Permite ampliar o disminuir la memoria disponible
Timer() Temporizador de tiempo de ejecucin de CPU
12
7/25/2019 Guia de Introduccion a Scilab
13/29
Comando Descripcin
who_user Lista las variables del usuario
clear Destruye y libera la memoria correspondiente
(elimina las variables, vectores, matrices) definidaspor el usuario
load Datos previamente guardados pueden ser cargadosen el workspace
save Los datos en el workspace pueden ser guardados en
un archivo binariodiary Guardando una seccin
browsevar() Explorador de variables
13
Funciones del Workspace
7/25/2019 Guia de Introduccion a Scilab
14/29
Representacin en Funcin de
Transferencia Considere los sistemas
=
+ 3 + 2
-> s=%s;En tiempo continuo
-> Gp=syslin('c',s/(s^2+3*s+2));
En tiempo discreto-> Gpz=syslin('d', (z-1)/(z^2-1.9*z+0.7));
-> Gpz.dt=0.01;
= 1
1.9 + 0.7
14
7/25/2019 Guia de Introduccion a Scilab
15/29
Representacin en espacio de
estados Considere el sistema en E.E.
=
0 2
3 5
+ 0
1 = 1 0
-> A=[0 2;-3 -5];-> B=[0; 1];
-> C=[1, 0];
-> D = 0;
En tiempo continuo-> Gp=syslin('c',A,B,C,D)
En tiempo discreto
-> -> Gpz=syslin('d',A,B,C,D)
15
7/25/2019 Guia de Introduccion a Scilab
16/29
Funciones para Representacin de
SistemasComando Descripcin
syslin Creacin de un sistema en tiempo continuo o discreto
./ Sistema con realimentacin
abcd Extraccin de la matriz de representacin de estadodscr Transformacin de sistema continuo a sistema discreto
ss2tf Transformacin de espacio de estados a funcin detransferencia
tf2ss Transformacin de funcin de transferencia a espacio
de estadosss2ss Transformacin de espacio de estado a espacio de
estados
canon Transformacin de espacio de estado a espacio deestados Cannica controlable
16
7/25/2019 Guia de Introduccion a Scilab
17/29
Transformaciones de la
representacin de sistemas-> Gp=syslin('c',s/(s^2+3*s+2));
Discretizacin del sistema Gp con ZOH-> Gpz=dscr(Gp, 0.01);
Representacin en funcin de transferencia-> Gpztf=ss2tf(Gpz)
Extraccin de las matrices A, B, C y D-> [Az,Bz,Cz,Dz]=abcd(Gpz)-> [A,B,C,D]=abcd(Gp)
17
7/25/2019 Guia de Introduccion a Scilab
18/29
Transformacin a espacios de estados FCC-> Gee=tf2ss(Gp);-> Geec=canon(Gee.A,Gee.B)
Entre otras funcionalidades se tiene que para:
Acceder a la matriz A de Geec o cualquier sistema enE.E.
-> Geec.A
Acceder al denominador de Gp o cualquier sistema enFdT
->Gp.den
18
Transformaciones de la
representacin de sistemas
7/25/2019 Guia de Introduccion a Scilab
19/29
Construccin de sistemas
Ej 1:
->Gp=syslin ( 'c', 2.5/(s2+5*s+2 ));
->Gc=Syslin('c', (5+3*s)/(1+3*s));
->Gt= Gp*Gc/.1;
Comando Descripcin
G1*G2 Sistema en Serie
G1+G2 Sistema en Paralelo
G1/.H Sistema realimentado
19
7/25/2019 Guia de Introduccion a Scilab
20/29
Respuesta en el Tiempo
-> s=%s;-> Gp=syslin('c',s/(s^2+3*s+2));
-> Gpz=ss2tf(dscr(Gp,0.1));
Respuesta al escaln para el sistema en tiempo continuo
-> tc=0:0.1:40;-> yc=csim('step',tc,Gp);
->plot(tc,yc); legends('Respuesta al escaln',3,opt=1);xgrid;
Respuesta al escaln para el sistema en tiempo discreto-> td=0:0.1:40;
-> u=ones(1, length(td) );
-> yd=dsimul(tf2ss(Gpz),u);
->plot(td,yd);
20
7/25/2019 Guia de Introduccion a Scilab
21/29
Respuesta al impulso para el sistema en tiempocontinuo
->t=0:0.1:40;->y=csim('impuls',t,Gp,[1;1;1]);->plot(t,y);
Respuesta ante una entrada genrica (en este casouna senoidal) para el sistema en tiempo continuo
-> t=0:0.1:40;-> u=sin(t);-> y=csim(u,t,Gp);->plot(t,y);
21
Respuesta en el Tiempo
7/25/2019 Guia de Introduccion a Scilab
22/29
Funciones utilizadas para obtener la
respuesta temporalComando Descripcin
csim Respuesta ante diversas entradas para sistemas en
tiempo continuodsimul Respuesta ante diversas entradas para sistemas en
tiempo discreto
ltitr Respuesta de los estados de un sistema discreto
flts Filtrado de datos discretos
22
7/25/2019 Guia de Introduccion a Scilab
23/29
Anlisis de Estabilidad
Comando para construir la tabla de Routh-> Gp=syslin('c', s/((s+4)*(s+3)*(s-2)));
-> routh_t(Gp.den);
En el caso de contar con la FdT en LA se puededeterminar la estabilidad del sistema en LC enfuncin de una ganancia K.
-> k=poly ( 0, 'k');
-> Gp1=syslin( 'c' ,1/( s3+2*s2+3*s));
-> routh_t(Gp1, k)
23
7/25/2019 Guia de Introduccion a Scilab
24/29
Lugar Geomtrico de las Races
Considere el sistema Gp
> Gp=syslin('c', (s+3)/(s3+7*s2+8*s)) ;
> evans (Gp)
-> sgrid
Anlogamente se puede obtener para un sistema entiempo discreto
> Gpz=ss2tf(dscr(Gp, 0.3));> evans (Gpz)
-> zgrid
24
7/25/2019 Guia de Introduccion a Scilab
25/29
Comando Descripcin
evans Diagrama del lugar geomtrico de las races
kpure Determina la ganancia necesaria para llevar a lospolos sobre el eje imaginario (lmite de ganancia)
krac2 Ganancia necesaria para tener dos polos realesiguales
25
Lugar Geomtrico de las Races
7/25/2019 Guia de Introduccion a Scilab
26/29
Anlisis en Frecuencia
Diagrama de Bode: magnitud dB y frecuencia en Hz-> G=syslin('c', 1/(s^2+s+1));
-> bode(G)
-> xtitle('Diagrama de Bode)')
Diagrama de Nyquist
-> nyquist(G)
Diagrama de Nichols
-> black(G)
-> chart()
26
7/25/2019 Guia de Introduccion a Scilab
27/29
Respuesta en frecuencia-> A=diag([-1,-2]); B=[1;1]; C=[1,1];-> sys=syslin('c',A,B,C);-> frq=0:0.02:5;-> w=frq*2*%pi; //frq en Hz, w en rad/sec;
-> [frq1,rep] =repfreq(sys,frq);
Calculo de la ganancia y la fase-> [db,phi]=dbphi(rep);
Calculo del pico de resonancia y la frecuencia deresonancia-> [mdb,k]=max(db);-> freqRes=w(k)-> PicoRes=mdb
27
Anlisis en Frecuencia
7/25/2019 Guia de Introduccion a Scilab
28/29
Calculo de los mrgenes de ganancia y fase
-> s=%s/(2*%pi);
-> G=20*(s+1)/((s+0.00000000000001)*(s+5)*(s^2+2*s+10));-> Gs=syslin('c',G)
-> [gg,wcp]=g_margin(Gs)
->[pg,wcg]=p_margin(Gs)-> bode(Gs);
-> show_margins(gs);
28
Anlisis en Frecuencia
7/25/2019 Guia de Introduccion a Scilab
29/29
Comando Descripcin
bode Diagrama de Bode
nyquist Diagrama de Nyquist
black Diagrama de Nicholschart Carta de Nichols
repfreq Retorna el calculo de la respuesta en frecuencia
dbphi Retorna el calculo de la ganancia (dB) y la fase ()
g_margin Retorna el margen de ganancia del sistemap_margin Retorna el margen de fase del sistema
29
Anlisis en Frecuencia
Recommended