Está en la página 1de 29

Guía de comandos Scilab

Énfasis en Sistemas de Control

Grupo de Investigación en Control Industrial – GICI


Facultad de Ingeniería
Escuela de Ingeniería Eléctrica y Electrónica, 2013
2

Características Básicas
 Software Libre
 Diferentes Toolbox [control, robótica, RT, etc.]
 Sensible a las mayúsculas [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);
 Creación de funciones en archivos *.sci y son
cargadas al entorno con el comando getf
-> getf(nombre_funcion.sci);
3

Constantes predefinidas en Scilab


Operador Descripción
%e Base del logaritmo natural e=2.718281
%i Número imaginario √−1
%pi Número PI = 3.1415927
%eps Precisión (depende del PC)
%inf Infinito
%nan No es un número
%t Valor lógico verdadero
%f Valor lógico Falso
%s Variable polinomio
%z Variable polinomio
4

Variables, Vectores y Matrices


 Definición 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 línea, respectivamente, siempre y cuando no se
presente el caso como en vec_4 :
->vec_3=[4,5 +6] ->vec_4=[4,5 *6]
5

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] //definición 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 como


matrices en Scilab
6

Conjunto de funciones para crear


matrices
Comando Descripción
' y .' Transpuesta (conjugada o no)
diag Matriz (m,n) con diagonal definida por el usuario (o
extracción 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 logarítmicamente espaciado
ones Matriz (m,n) de unos
zeros Matriz (m,n) de ceros
rand Matriz aleatoria (uniforme o gaussiana)
7

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


posición
8

Operaciones sobre matrices

Operador Descripción
| Lógica Or
& Lógica And
! Logica Not
==, >=, <=, >, Operadores de comparación
<,<>,=
+, - Suma y resta binaria
.*, ./, .\, .*., ./., *, Multiplicaciones y divisiones
/, /., \.
^, **, .^, .** Potenciación
', .' Transpuesta
9

Operaciones sobre matrices

Operador Descripción
Rank(A) Rango de una matriz A
Inv (A) Inversa de una matriz A
Cond(A) Numero de condición
Det(A) Determinante de una matriz A
Spec(A) Calculando autovalores de una matriz A
10

Polinomios
Un polinomio de grado “n” es una función 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 raíces
-> 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'); //definición de s
-> p = [s, 1/s]; //polinomio
-> x= horner(p,1) //evaluación del polinomio en 1
11

Comandos de Polinomios
Comando Descripción
poly Crea un polinomio, desde sus raíces o sus
coeficientes
coeff Extrae los coeficientes de un polinomio
horner Evalúa un polinomio en un punto
derivat Calcula la derivada de un polinomio
roots Calcula las raíces de un polinomio
pdiv División de polinomios
12

Funciones del Workspace


Comando Descripción
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 información sobre la variable a
who() Muestra las variables definidas en el entorno
stacksize() Muestra la memoria disponible y el número
máximo de variables que se pueden definir
Stacksize(7000000) Permite ampliar o disminuir la memoria disponible
Timer() Temporizador de tiempo de ejecución de CPU
13

Funciones del Workspace

Comando Descripción
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 sección
browsevar() Explorador de variables
14

Representación en Función de
Transferencia
 Considere los sistemas
𝑠 𝑧−1
𝐺 𝑠 = 2 𝐺𝑧 𝑠 =
𝑠 + 3𝑠 + 2 𝑧 2 − 1.9𝑧 + 0.7

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

Representación en espacio de
estados
 Considere el sistema en E.E.
𝑥1′ 0 2 𝑥1 0 𝑥1
= + 𝑢 𝑦= 1 0 𝑥
𝑥2′
−3 −5 𝑥2 1 2

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

Funciones para Representación de


Sistemas
Comando Descripción
syslin Creación de un sistema en tiempo continuo o discreto
./ Sistema con realimentación
abcd Extracción de la matriz de representación de estado
dscr Transformación de sistema continuo a sistema discreto
ss2tf Transformación de espacio de estados a función de
transferencia
tf2ss Transformación de función de transferencia a espacio
de estados
ss2ss Transformación de espacio de estado a espacio de
estados
canon Transformación de espacio de estado a espacio de
estados Canónica controlable
17

Transformaciones de la
representación de sistemas
-> Gp=syslin('c',s/(s^2+3*s+2));

 Discretización del sistema Gp con ZOH


-> Gpz=dscr(Gp, 0.01);

 Representación en función de transferencia


-> Gpztf=ss2tf(Gpz)

 Extracción de las matrices A, B, C y D


-> [Az,Bz,Cz,Dz]=abcd(Gpz)
-> [A,B,C,D]=abcd(Gp)
18

Transformaciones de la
representación de sistemas
 Transformación 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

Construcción de sistemas
Comando Descripción
G1*G2 Sistema en Serie
G1+G2 Sistema en Paralelo
G1/.H Sistema realimentado

 Ej 1:
->Gp=syslin ( 'c', 2.5/(sˆ2+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 escalón para el sistema en tiempo continuo


-> tc=0:0.1:40;
-> yc=csim('step',tc,Gp);
->plot(tc,yc); legends('Respuesta al escalón',3,opt=1);xgrid;

 Respuesta al escalón 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 genérica (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 Descripción
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

Análisis 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
función de una ganancia K.
-> k=poly ( 0, 'k');
-> Gp1=syslin( 'c' ,1/( sˆ3+2*sˆ2+3*s));
-> routh_t(Gp1, k)
24

Lugar Geométrico de las Raíces


 Considere el sistema Gp
−> Gp=syslin('c', (s+3)/(sˆ3+7*sˆ2+8*s)) ;
−> evans (Gp)
-> sgrid

 Análogamente se puede obtener para un sistema en


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

Lugar Geométrico de las Raíces

Comando Descripción
evans Diagrama del lugar geométrico de las raíces
kpure Determina la ganancia necesaria para llevar a los
polos sobre el eje imaginario (límite de ganancia)
krac2 Ganancia necesaria para tener dos polos reales
iguales
26

Análisis 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

Análisis 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

Análisis en Frecuencia
 Calculo de los márgenes 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

Análisis en Frecuencia

Comando Descripción
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