Manual de Scilab/Xcos/Sistemas en tiempo continuo

De testwiki
Ir a la navegación Ir a la búsqueda

Plantilla:Navegar

Acoplamiento de sistemas

La función (/.) resuelve:

st(s)=s2(s)1+s1(s)s2(s)

sistema acoplado, construido con Xcos.

-->s1=1;s2=1/s;
-->st=s2/.s1
 st  =
 
      1     
    -----   
    1 + s

Respuesta al escalón de un sistema en tiempo continuo

Dada la siguiente función de transferencia se requiere graficar la respuesta al escalón desde t=0 a t=5 segundos, con un intervalo de 0,005.

gp(s)=1010+2s+s2

La idea fundamental de este ejemplo es la de no construirlo en Xcos para poder ver la respuesta al escalón. Si no que definiendo el sistema desde Scilab podemos excitar el mismo; como se puede apreciar en el siguiente script.

s=poly(0,'s');
t=0:0.005:5;             //vector de tiempos para la simulación 
gp=10/(s^2+2*s+10);      //Sistema
sist=syslin('c',gp);
yp=csim('step',t,sist);
plot(t',yp);             //Gráfico de la simulación

En el siguiente gráfico se presenta el resultado de la simulación.

Espacio de estados

Se puede consultar en wikipedia acerca de la definición del espacio de estado. En esta sección vamos a ver las funciones que tiene Scilab para pasar desde una función de transferencia y viceversa.

Pasaje de la función transferencia al espacio de estados

Dado un sistema simple como el doble integrador se plantea como obtener la representación en el espacio de estados.

La función de transferencia del sistema es:

sisc(s)=1(s2+1)

Esquema del sistema planteado:

Doble integrador

de Acá resulta simple ver como queda la matriz A del sistema:

x˙=Ax+Bu
y=Cx

Del esquema podemos observar como quedan las ganancias del sistema

A=[x1˙x2˙]=[0110]
B=[01]

Código en Scilab para resolver el problema:

s=poly(0,'s');
-->g=1/(s^2+1)
 g  =
 
      1     
    -----   
         2  
    1 + s 
sistG=syslin('c',g);
-->sisve=tf2ss(sistG);
 sisve  =
 
 
       sisve(1)   (state-space system:)
 
!lss  A  B  C  D  X0  dt  !
 
       sisve(2) = A matrix = 
 
    0.    1.  
  - 1.    0.  
 
       sisve(3) = B matrix = 
 
    0.  
    1.  
 
       sisve(4) = C matrix = 
 
    1.    0.  
 
       sisve(5) = D matrix = 
 
    0.  
 
       sisve(6) = X0 (initial state) = 
 
    0.  
    0.  
 
       sisve(7) = Time domain = 
 
 c

Otro ejemplo

sisc(s)=ke*ωn2(s2+2*pr*s+ωn2)
s=poly(0,'s');
ke=15.1;tp=0.6;mp=.1987;pr=-log(mp)/tp;wn=sqrt(pr^2+(%pi/tp)^2);
sisc=ke*wn*wn/(s^2+2*pr*s+wn^2);
K=1;
G=(sisc/(1-K*sisc));
sistG=syslin('c',G);
-->sisve=tf2ss(sistG)
 sisve  =
 
 
       sisve(1)   (state-space system:)
 
!lss  A  B  C  D  X0  dt  !
 
       sisve(2) = A matrix = 
 
    0.           16.        
    30.552272  - 5.3865304  
 
       sisve(3) = B matrix = 
 
    0.         
    22.880245  
 
       sisve(4) = C matrix = 
 
    1.4300153    0.  
 
       sisve(5) = D matrix = 
 
    0.  
 
       sisve(6) = X0 (initial state) = 
 
    0.  
    0.  
 
       sisve(7) = Time domain = 
 
 c

Pasaje del espacio de estado a una función transferencia

Por ejemplo si:

A=[11001]
B=[20]
C=[23]
D=2

Podemos aplicar entonces:

G(s)=C(sIA)1B+D

Código en Scilab

-->s=poly(0,'s');
-->A=[-1 10;0 1];B=[-2;0];C=[-2 3];D=[-2];
-->gs=C*inv((s*eye(2,2)-A))*B+D
 gs  =
 
    2 - 2s   
    ------   
    1 + s

O también directamente podemos hacer esto, teniendo previamente las matrices definidas:

-->sis57=syslin('c',A,B,C,D)
-->ss2tf(sis57)
 ans  =
 
    2 - 2s   
    ------   
    1 + s
  1. Espacio de estados: Manual de Scilab/Xcos/Control en el espacio de estados

Referencias

Plantilla:Listaref

Plantilla:AutoCat