Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Guia de Introduccion A Scilab

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 29

Gua de comandos Scilab

nfasis en Sistemas de Control

Grupo de Investigacin en Control Industrial GICI


Facultad de Ingeniera
Escuela de Ingeniera Elctrica y Electrnica, 2013

Caractersticas Bsicas
Software Libre
Diferentes Toolbox [control, robtica, RT, etc.]
Sensible a las maysculas [var, Var, VAR=son variables
diferentes]
Se pueden definir archivos de comandos *.sce
(equivalente al *m de Matlab) y se ejecutan dentro
de la consola de comandos con:
-> exec(nombre_archivo.sce);
Creacin de funciones en archivos *.sci y son
cargadas al entorno con el comando getf
-> getf(nombre_funcion.sci);

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

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

5
6];

Hay que tener en cuenta que una coma y un punto y


coma funciona igual que un espacio en blanco y un
salto de lnea, respectivamente, siempre y cuando no se
presente el caso como en vec_4 :
->vec_3=[4,5 +6]
->vec_4=[4,5 *6]

Variables, Vectores y Matrices


-> 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]
-> m_3x3=rand(3,3)
-> m_bol= m_n>=3
-> m_zero=zeros(2,2)
->inv(m_3x3)

//definicin de una matriz


//matriz aleatoria

//matriz booleana
//matriz de ceros
//inversa de la matriz m_3x3

Nota: los vectores y escalares son almacenados como


matrices en Scilab

Conjunto de funciones para crear


matrices
Comando

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)

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 ultima


posicin

Operaciones sobre matrices


Operador

Descripcin

Lgica Or

&

Lgica And

Logica Not

==, >=, <=, >,


<,<>,=

Operadores de comparacin

+, -

Suma y resta binaria

.*, ./, .\, .*., ./., *,


/, /., \.

Multiplicaciones y divisiones

^, **, .^, .**

Potenciacin

', .'

Transpuesta

Operaciones sobre matrices


Operador

Descripcin

Rank(A)

Rango de una matriz A

Inv (A)

Inversa de una matriz A

Cond(A)

Numero de condicin

Det(A)

Determinante de una matriz A

Spec(A)

Calculando autovalores de una matriz A

10

Polinomios
Un polinomio de grado n es una funcin de la forma:
= 0 + 1 + 2 2 + +
En Scilab el orden de los coeficientes del polinomio es inverso a
Matlab.
-> 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, concatenados
para 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

11

Comandos de Polinomios
Comando

Descripcin

poly

Crea un polinomio, desde sus races o sus


coeficientes

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

12

Funciones del Workspace


Comando

Descripcin

typeof(a)

Tipo de dato de la variable a

exists('a')

Verifica si la variable a existe (Retorna 1 como


verdadero 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 entorno

stacksize()

Muestra la memoria disponible y el nmero


mximo de variables que se pueden definir

Stacksize(7000000)

Permite ampliar o disminuir la memoria disponible

Timer()

Temporizador de tiempo de ejecucin de CPU

13

Funciones del Workspace


Comando

Descripcin

who_user

Lista las variables del usuario

clear

Destruye y libera la memoria correspondiente


(elimina las variables, vectores, matrices) definidas
por el usuario

load

Datos previamente guardados pueden ser cargados


en el workspace

save

Los datos en el workspace pueden ser guardados en


un archivo binario

diary

Guardando una seccin

browsevar()

Explorador de variables

14

Representacin en Funcin de
Transferencia

Considere los sistemas

= 2
+ 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
2 1.9 + 0.7

15

Representacin en espacio de
estados

Considere el sistema en E.E.


1
0
2 1
0
=
+

2
3 5 2
1

-> 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)

1
= 1 0
2

16

Funciones para Representacin de


Sistemas
Comando

Descripcin

syslin

Creacin de un sistema en tiempo continuo o discreto

./

Sistema con realimentacin

abcd

Extraccin de la matriz de representacin de estado

dscr

Transformacin de sistema continuo a sistema discreto

ss2tf

Transformacin de espacio de estados a funcin de


transferencia

tf2ss

Transformacin de funcin de transferencia a espacio


de estados

ss2ss

Transformacin de espacio de estado a espacio de


estados

canon

Transformacin de espacio de estado a espacio de


estados Cannica controlable

17

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)

18

Transformaciones de la
representacin de sistemas
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 en
E.E.
-> Geec.A

Acceder al denominador de Gp o cualquier sistema en


FdT
->Gp.den

19

Construccin de sistemas
Comando

Descripcin

G1*G2

Sistema en Serie

G1+G2

Sistema en Paralelo

G1/.H

Sistema realimentado

Ej 1:
->Gp=syslin ( 'c', 2.5/(s2+5*s+2 ));
->Gc=Syslin('c', (5+3*s)/(1+3*s));

->Gt= Gp*Gc/.1;

20

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);

21

Respuesta en el Tiempo
Respuesta al impulso para el sistema en tiempo
continuo
->t=0:0.1:40;
->y=csim('impuls',t,Gp,[1;1;1]);
->plot(t,y);

Respuesta ante una entrada genrica (en este caso


una senoidal) para el sistema en tiempo continuo
-> t=0:0.1:40;
-> u=sin(t);
-> y=csim(u,t,Gp);
-> plot(t,y);

22

Funciones utilizadas para obtener la


respuesta temporal
Comando

Descripcin

csim

Respuesta ante diversas entradas para sistemas en


tiempo continuo

dsimul

Respuesta ante diversas entradas para sistemas en


tiempo discreto

ltitr

Respuesta de los estados de un sistema discreto

flts

Filtrado de datos discretos

23

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 puede


determinar la estabilidad del sistema en LC en
funcin de una ganancia K.
-> k=poly ( 0, 'k');
-> Gp1=syslin( 'c' ,1/( s3+2*s2+3*s));
-> routh_t(Gp1, k)

24

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 en


tiempo discreto
> Gpz=ss2tf(dscr(Gp, 0.3));
> evans (Gpz)
-> zgrid

25

Lugar Geomtrico de las Races


Comando

Descripcin

evans

Diagrama del lugar geomtrico de las races

kpure

Determina la ganancia necesaria para llevar a los


polos sobre el eje imaginario (lmite de ganancia)

krac2

Ganancia necesaria para tener dos polos reales


iguales

26

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()

27

Anlisis en Frecuencia
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 de


resonancia
-> [mdb,k]=max(db);
-> freqRes=w(k)
-> PicoRes=mdb

28

Anlisis en Frecuencia

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);

29

Anlisis en Frecuencia
Comando

Descripcin

bode

Diagrama de Bode

nyquist

Diagrama de Nyquist

black

Diagrama de Nichols

chart

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 sistema

p_margin

Retorna el margen de fase del sistema

También podría gustarte