Guia de Introduccion a Scilab

download Guia de Introduccion a Scilab

of 29

Transcript of Guia de Introduccion a Scilab

  • 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