Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Descripción de S-Function
El bloque S-Function permite manejar eventos continuos, discretos o híbridos, todos
simultáneamente debido a su particular estructura de programación. La S-Function, se ubica en la
librería Function & Tables y se edita como sigue:
De tales variables, la forma de utilizar la variables flag, hace que del archivo.m posea característica
de S-Function. Los valores permitidos para esta variable son:
La variable sys debe ser especificada cuando la simulación esta en el estado flag=0. Esta es un
vector con la siguiente descripción:
Ejemplo no lineal
Considere el oscilador de Van der Poll modificado, correspondiente a la siguiente ecuación
diferencial:
d 2 y
a · y 2
1
dy
b · y u x
1 x2
dt 2 dt
x1 y x
2
ax 2 1
Para conocer la solución dinámica de tal ecuación, implementemos una S-Function, que posea como
entrada un escalón ( u=u(t) ). Además, que sea posible ingresar desde la línea de comandos las
condiciones iniciales ci (por ejemplo x0=[0.02 0] ) y las ganancias a y b (por ejemplo a=3, b=1).
2º De acuerdo al diagrama SIMULINK, se crea un archivo.m con el nombre vdp_mod.m, con una
entrada u=u(t), dos salidas x1 y x2, dependiente de ci, a y b. El número de estados continuos es
2, estados discretos: 0, salidas: 2, entradas: 1, raíces y lazos: 0.
%S-Function para el oscilador de Los resultados son los siguientes:
%Van der Pool modificado.
function [sys,x0]=vdp_mod(t,x,u,flag,ci,a,b)
switch flag
case 1
sys(1)=x(2);
sys(2)=a*x(2)*(1-x(1)^2) - b*x(1) + u;
case 3
sys(1)=x(1);
sys(2)=x(2);
case 0
sys=[2,0,2,1,0,0];
x0=ci;
case {2,4,9}
sys=[ ];
otherwise
error(['Flag desconocido=', num2str(flag)]);
end;
» ci=[0.02; 0];
» a=1;
» b=1;