Está en la página 1de 21

Tema 5.

Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 1








TEMA 5


Simulink



1. Introduccin ............................................................................................................ 1
2. Simulink ................................................................................................................... 2
2.1 Cmo iniciar Simulink ...................................................................................... 2
2.2 Construccin de modelos ................................................................................. 3
2.3 Parmetros de simulacin y bloque Scope ....................................................... 4
2.4 Subsistemas y mscaras ................................................................................. 10
2.5 Funciones S .................................................................................................... 11
3. Stateflow ................................................................................................................ 15
4. Efectos de animacin con Simulink .................................................................... 19


1. Introduccin

SIMULINK es una toolbox especial de MATLAB que sirve para simular el
comportamiento de los sistemas dinmicos. Puede simular sistemas lineales y no
lineales, modelos en tiempo continuo y tiempo discreto y sistemas hbridos de todos los
anteriores. Es un entorno grfico en el cual el modelo a simular se construye clicando y
arrastrando los diferentes bloques que lo constituyen. Los modelos SIMULINK se
guardan en ficheros con extensin *. mdl .

Con las nuevas versiones, SIMULINK ha ido ampliando sus libreras de bloques
(blocksets) y capacidades. En concreto, destaca el paquete STATEFLOW, que permite
la simulacin de mquinas de estados.


Stateflow
Simulink
Matlab

Fig. 1. J erarqua de Matlab, Simulink, Stateflow
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 2
Otras blocksets de inters son, por ejemplo, las de comunicaciones (Communications
Blockset, CDMA Reference Blockset, RF Blockset) que incluyen bloques que simulan
estaciones de telefona mvil o dispositivos tales como los PLLs; las de aplicaciones
especficas (Aerospace Blockset, Signal Processing Blockset, Video and Image
Processing Blockset); y las de soporte (Gauges Blockset). Hay muchas demos y
efectos (ver, por ejemplo, las demos de SimMechanics o Virtual Reality Toolbox
>>mech_conveyor _vr , >>mech_ai r bag_vr ).

Adems algunas toolboxes de MATLAB incorporan tambin bloques de SIMULINK.
Es el caso, por ejemplo, de la Control Systems Toolbox, Neural Network Toolbox, Fuzzy
Logic Toolbox, System Identification Toolbox, Finalmente, tambin existen libreras
de bloques que permiten interactuar con tarjetas de adquisicin de dados y DSPs: Real-
Time Workshop, Embedded Targets for Motorola and TI, xPC Target.

Teclear >>ver en la ventana de comandos de MATLAB para ver qu versin de
SIMULINK y qu blocksets estn instaladas.

2. Simulink

2.1 Cmo iniciar Simulink

Para abrir la librera de bloques SIMULINK puede hacerse escribiendo >>si mul i nk en
la ventana de comandos de MATLAB, o bien clicando en el icono de la barra de
mens de MATLAB.





Fig. 2. Inicio de Simulink (en Matlab v6.1)
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 3
Si ya tenemos algn modelo SIMULINK creado, model o1. mdl , basta hacer doble clic
en su nombre para que primero se abra MATLAB y a continuacin se abra la ventana
model o1 que contiene a dicho modelo. O bien, si se tiene el MATLAB abierto, basta
con teclear >>model o1 en la ventana de comandos.

Si vamos a crear un modelo nuevo hay que seleccionar Fi l e New Model o bien
clicar en el icono de la librera de SIMULINK.


2.2 Construccin de modelos

Ventana de modelo: Cada modelo (o submodelo) se construye en una ventana diferente.
Por ello, para construir un nuevo modelo hay que abrir una nueva ventana de modelo
unt i t l ed (ver Fig. 2) A partir de ah, se trata de arrastrar los bloques que compondrn
el modelo desde la librera de SIMULINK a dicha ventana. Antes de empezar a trabajar
con SIMULINK, se sugiere echar un vistazo a las opciones de la barra de mens y la
barra de herramientas de la ventana de modelo.

Interconectar bloques: Las interconexiones entre bloques se realizan arrastrando el
ratn entre los puertos de entrada y salida de dichos bloques. Tambin es posible
seleccionar un bloque y, manteniendo la tecla <ct r l > presionada, clicar en el otro
bloque. Se puede poner texto en cualquier sitio (haciendo doble clic en el sitio
deseado), se pueden cambiar los nombres de los bloques y se pueden usar distintos
colores (For mat For egr ound Col or ). Tambin se pueden rotar bloques (For mat
Fl i p bl ock, Rot at e bl ock), etc.


Ejemplo 1. Construccin de un modelo sencillo

La siguiente figura muestra la construccin de un modelo sencillo que nos permite la
simulacin de la respuesta indicial (al escaln) del sistema en tiempo continuo de
segundo orden
1 5 . 0
1
) (
2

s s
s H .

La seal de excitacin St ep la hemos arrastrado desde la librera Sour ces, el
visualizador Scope desde la librera Si nks y el sistema en tiempo continuo Tr ansf er
Fcn desde la librera Cont i nuous.

Puesto que los parmetros de nuestro sistema continuo son diferentes a los que vienen
por defecto en la librera de SIMULINK, hemos hecho doble clic en el bloque
Tr ansf er Fcn de nuestra ventana para editar dicho bloque con nuestro numerador y
denominador particulares.

Para iniciar la ejecucin del modelo basta con clicar en el icono o seleccionar
Si mul at i on St ar t . Para cambiar los parmetros de simulacin (tiempo final,
muestreo, etc.) seleccionar Si mul at i on Conf i gur at i on Par amet er s ( o bien
Si mul at i on Si mul at i on Par amet er s segn la versin).

Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 4
Para ver el resultado de la simulacin clicar sobre el bloque Scope a fin de abrirlo y, una
vez en l, clicar en el icono para realizar un autoescalado de los ejes.







Fig. 3. Construccin y simulacin de modelos



2.3 Parmetros de simulacin y bloque Scope

Parmetros de simulacin: En la v6, los parmetros de la simulacin se pueden
modificar desde la barra de men con Si mul at i on Si mul at i on par amet er s. . . .


Fig. 4. Parmetros de la simulacin (matlab v6)
Autoescalado
Run
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 5
En la v7, los parmetros de la simulacin se pueden modificar desde la barra de men
con Si mul at i on Conf i gur at i on par amet er s. . . .


Fig. 5. Parmetros de la simulacin (matlab v7)


Run: Para iniciar la simulacin basta con clicar en el icono o seleccionar
Si mul at i on St ar t en la ventana del modelo (ver Ejemplo 1).


Funcin sim: Tambin es posible ejecutar un modelo Simulink desde la ventana de
comandos o desde un fichero M. La instruccin es si m. En nuestro ejemplo:

>>si m( ' unt i t l ed' )

War ni ng: Usi ng a def aul t val ue of 0. 2 f or maxi mumst ep si ze. The
si mul at i on st ep si ze wi l l be equal t o or l ess t han t hi s val ue.
You can di sabl e t hi s di agnost i c by set t i ng ' Aut omat i c sol ver
par amet er sel ect i on' di agnost i c t o ' none' i n t he Di agnost i cs page
of t he conf i gur at i on par amet er s di al og.


Interaccin con el workspace de MATLAB: Desde un modelo SIMULINK, es posible
usar funciones *. m, *. mat y variables del workspace de MATLAB. Los bloques
relacionados son los bloques From File, From Workspace (en la librera Sources), To
File, To WorkSpace (en la librera Sinks) y MATLAB Fcn (en la librera Functions &
Tables).

Tambin es posible poner nombres de variables del workspace dentro del modelo
Simulink. Por ejemplo:


Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 6

Fig. 6. Modelo Simulink con variables del workspace (a y Tf i n)

Antes de ejecutar el modelo, estas variables deben tener asignado un valor:

>>a=0. 5; Tf i n=10;
>>si m( ' unt i t l ed' )


Model Explorer: Esta utilidad se abre al clicar en el icono de la ventana de modelo.
En concreto, el objeto Base Wor kspace contiene las variables a las que pueden acceder
todos los modelos Simulink.


Fig. 7. Model Explorer


Bloque Scope: Para visualizar el resultado de una simulacin hay que clicar en el
bloque Scope a fin de abrir la ventana de visualizacin. El autoescalado se consigue
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 7
clicando en . Para hacer un zoom, clicar en . Los iconos y permiten hacer
un zoom a lo largo del eje x o del eje y respectivamente.

Si queremos poner un ttulo, se puede clicar con el botn derecho sobre la
representacin a fin de abrir un men de contexto y, en l, seleccionar la opcin Axes
pr oper t i es:

Fig. 8. Ttulos en el Scope

Los parmetros del Scope se pueden modificar clicando en . Por defecto, el Scope
representa slo las ltimas 5000 muestras. Si nuestra simulacin tiene ms de 5000
muestras y las queremos ver todas hay que deseleccionar la opcin Li mi t dat a
poi nt s t o l ast : de la ficha Dat a hi st or y (ver Fig. 9).


Tambin es posible guardar las variables de la simulacin en el workspace desde la
ventana del Scope:


Fig. 9. Cmo pasar datos al workspace desde el bloque Scope

La opcin Save dat a t o wor kspace permite guardar en el workspace los valores
representados en el Scope. Hay tres formatos posibles: St r uct ur e wi t h t i me,
St r uct ur e y Ar r ay.


Formato Structure with time: Una vez realizada la simulacin en Simulink, si el
formato elegido es Structure with Time, podemos comprobar que en el workspace de
Matlab aparecen dos nuevas variables

Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 8

Fig. 10. Formato Struct with time en el workspace de Matlab

La variable ScopeDat a es una estructura (st r uct ar r ay). Para ver su contenido, basta
con hacer:

>> ScopeDat a
ScopeDat a =
t i me: [ 53x1 doubl e]
si gnal s: [ 1x1 st r uct ]
bl ockName: ' unt i t l ed/ Scope'

' t i me' , ' si gnal s' y ' bl ockName' son los tres campos (fields) que componen la
estructura (struct) ScopeDat a. Vemos que el campo ' si gnal s' es, a su vez, otra
estructura.


Funciones fieldnames, isfield, getfield: Es posible consultar qu campos tiene
ScopeDat a con ayuda de f i el dnames (esta funcin guarda el resultado en un cell
array)

>> nombr es=f i el dnames( ScopeDat a)
nombr es =
' t i me'
' si gnal s'
' bl ockName'

Tambin se puede ver si un determinado campo forma parte de una estructura:
i sf i el d( ScopeDat a, ' t i me' ) .

Hay dos maneras de acceder al contenido de los campos. Una es mediante puntos y la
otra mediante la funcin get f i el d:

>> ScopeDat a. si gnal s
ans =
val ues: [ 53x1 doubl e]
di mensi ons: 1
l abel : ' '
t i t l e: ' Respuest a i ndi ci al '
pl ot St yl e: 0

>> ScopeDat a. si gnal s. di mensi ons
ans =
1

>> y=get f i el d( ScopeDat a, ' si gnal s' )
y =
val ues: [ 53x1 doubl e]
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 9
di mensi ons: 1
l abel : ' '
t i t l e: ' Respuest a i ndi ci al '
pl ot St yl e: 0


As, al representar los datos, podemos ver que las
instrucciones son equivalentes:

y1=get f i el d( ScopeDat a, ' si gnal s' , ' val ues' ) ;
y2=ScopeDat a. si gnal s. val ues;
pl ot ( t out , y1, t out , y2, ' - - ' )

0 2 4 6 8 10
0
0.5
1
1.5

Formato Array: En el caso de haber escogido el formato Array, es posible acceder
directamente a dichas variables:

>> si ze( ScopeDat a)
ans =
53 2
>> si ze( t out )
ans =
53 1
En concreto, las dos siguientes instrucciones hacen lo mismo:

>> pl ot ( t out , ScopeDat a( : , 2) )
>> pl ot ( ScopeDat a( : , 1) , ScopeDat a( : , 2) )

Otra forma de analizar las variables es a travs de la ventana de workspace y del editor
de variables:


Fig. 11. Acceso a los resultados de la simulacin (formato array)
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 10

Formato Structure: Si en el Scope se selecciona el formato Structure, en el Workspace
aparecen las variables ScopeDat a y t out , pero la diferencia con el formato anterior
(Structure with time) es que el campo t i me de ScopeDat a ahora est vaco.


2.4 Subsistemas y mscaras

Creacin de subsistemas: Es posible agrupar diversos bloques para crear subsistemas.
Para ello basta con seleccionar con el ratn todos los bloques de inters. (Nota: el
bloque Gai n lo hemos arrastrado desde la librera Mat h Oper at i ons o Mat h, segn la
versin)

Fig. 12. Seleccin de bloques
Una vez seleccionados todos los bloques que formarn el subsistema, ir a Edi t
Cr eat e Subsyst em:


Fig. 13. para crear un subsistema
Notar que automticamente se crean, rotulan y numeran los puertos de entrada y salida
del submodelo y que, al hacer doble clic sobre el bloque subsistema, se abre una nueva
ventana de modelo que lo contiene:


Fig. 14. Ventana del subsistema
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 11
Mscaras: Una vez creado un subsistema es posible personalizarlo. El editor de
mscaras que se abre al hacer Edi t Mask Subsyst empermite personalizar el
icono del subsistema, poner unos comentarios de ayuda e introducir, en su caso
(normalmente en Funciones S), los valores de los parmetros necesarios.

Por ejemplo, en la v7, poner como Dr awi ng commands el siguiente comando:
i mage( i mr ead( ' b747. j pg' ) ) , tiene como resultado:



Fig. 15. Mscaras
Una vez creada la mscara, sta se puede modificar haciendo Edi t Edi t Mask. . . .


2.5 Funciones S

Las funciones S son bloques SIMULINK programables por el usuario y que sirven para
describir modelos dinmicos complicados (parmetros variantes con el tiempo, sistemas
no lineales, con diferentes periodos de muestreo, etc.).

La comunicacin con el exterior (hardware-in-the-loop) tambin se realiza con
funciones S. En este ltimo caso las funciones S estn escritas en C (contienen los
comandos para comunicacin con las tarjetas de adquisici de datos y DSPs) y han de
ser compiladas y lincadas con la utilidad mex de Matlab.

Funciones S para sistemas dinmicos: Para la simulacin de sistemas dinmicos,
existen unos ficheros plantilla (sistemas continuos csf unc. m, sistemas discretos
dsf unc. my caso general sf unt mpl . m) cuyo propsito es ser copiados en el directorio
de trabajo y particularizados con las instrucciones y parmetros del usuario.

>> whi ch csf unc. m
C: \ Ar chi vos de pr ogr ama\ MATLAB704\ t ool box\ si mul i nk\ bl ocks\ csf unc. m

Estos ficheros estn estructurados en una serie de rutinas bsicas que SIMULINK
ejecuta de manera secuencial:

Inicializacin (mdl I ni t i al i zeSi zes), f l ag=0,
clculo de la derivada en sistemas continuos (mdl Der i vat i ves), f l ag=1,
clculo de la diferencia finita en sistemas discretos (mdl Updat e), f l ag=2,
clculo de la salida del sistema (mdl Out put s), f l ag=3, y
tareas de terminacin (mdl Ter mi nat e), f l ag=9.
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 12

Notar que esta estructura lo que hace es simular (muestra a muestra) las ecuaciones de
estado del sistema. Primero, simula la ecuacin de estado propiamente dicha
(mdl Der i vat i ves), Bu Ax x , y, despus, la ecuacin de salida (mdl Out put s),
Du Cx y . En el caso de sistemas discretos en el tiempo la ecuacin de estado es
una ecuacin en diferencias (mdl Updat e) es ] [ ] [ ] 1 [ n n n Bu Ax x .


Funcin csfunc: El contenido del modelo de muestra csf unc. mes el siguiente. Notar
que se trata de un sistema de dos estados (la matriz A es 22), dos entradas (la matriz B
tiene dos columnas) y dos salidas (la matriz C tiene dos filas).

>> t ype csf unc

f unct i on [ sys, x0, st r , t s] = csf unc( t , x, u, f l ag)
%CSFUNC An exampl e M- f i l e S- f unct i on f or def i ni ng a cont i nuous syst em.
% Exampl e M- f i l e S- f unct i on i mpl ement i ng cont i nuous equat i ons:
% x' = Ax + Bu
% y = Cx + Du
%
% See sf unt mpl . mf or a gener al S- f unct i on t empl at e.
%
% See al so SFUNTMPL.

% Copyr i ght 1990- 2002 The Mat hWor ks, I nc.
% $Revi si on: 1. 9 $

A=[ - 0. 09 - 0. 01
1 0] ;

B=[ 1 - 7
0 - 2] ;

C=[ 0 2
1 - 5] ;

D=[ - 3 0
1 0] ;

swi t ch f l ag,
%%%%%%%%%%%%%%%%%%
%I ni t i al i zat i on %
%%%%%%%%%%%%%%%%%%
case 0,
[ sys, x0, st r , t s] =mdl I ni t i al i zeSi zes( A, B, C, D) ;
%%%%%%%%%%%%%%%
%Der i vat i ves %
%%%%%%%%%%%%%%%
case 1,
sys=mdl Der i vat i ves( t , x, u, A, B, C, D) ;
%%%%%%%%%%%
%Out put s %
%%%%%%%%%%%
case 3,
sys=mdl Out put s( t , x, u, A, B, C, D) ;
%%%%%%%%%%%%%%%%%%%
%Unhandl ed f l ags %
%%%%%%%%%%%%%%%%%%%
case { 2, 4, 9 },
sys = [ ] ;
%%%%%%%%%%%%%%%%%%%%
%Unexpect ed f l ags %
%%%%%%%%%%%%%%%%%%%%
ot her wi se
er r or ( [ ' Unhandl ed f l ag = ' , num2st r ( f l ag) ] ) ;
end
%end csf unc

%
%=============================================================================
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 13
%mdl I ni t i al i zeSi zes
%Ret ur n t he si zes, i ni t i al condi t i ons, and sampl e t i mes f or t he S- f unct i on.
%=============================================================================
%
f unct i on [ sys, x0, st r , t s] =mdl I ni t i al i zeSi zes( A, B, C, D)
si zes = si msi zes;
si zes. NumCont St at es = 2;
si zes. NumDi scSt at es = 0;
si zes. NumOut put s = 2;
si zes. NumI nput s = 2;
si zes. Di r Feedt hr ough = 1;
si zes. NumSampl eTi mes = 1;
sys = si msi zes( si zes) ;
x0 = zer os( 2, 1) ;
st r = [ ] ;
t s = [ 0 0] ;
%end mdl I ni t i al i zeSi zes
%
%=============================================================================
%mdl Der i vat i ves
%Ret ur n t he der i vat i ves f or t he cont i nuous st at es.
%=============================================================================
%
f unct i on sys=mdl Der i vat i ves( t , x, u, A, B, C, D)
sys = A*x + B*u;
%end mdl Der i vat i ves
%
%=============================================================================
%mdl Out put s
%Ret ur n t he bl ock out put s.
%=============================================================================
%
f unct i on sys=mdl Out put s( t , x, u, A, B, C, D)
sys = C*x + D*u;
%end mdl Out put s

Para simular una funcin S hay que arrastrar el bloque correspondiente a nuestra
ventana de modelos. El bloque S- Funct i on est en la librera Si mul i k User -
Def i ned Funct i ons. Hacer doble clic para editar el bloque y poner S-function name
igual a csfunc.




Fig. 16. Edicin de una Funcin-S
Acabar de construir el modelo con una excitacin (seno) y un Scope. Simular. Notar
que da error puesto que estamos intentando excitar con una nica seal un sistema que
tiene dos entradas:
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 14






Fig. 17. Error debido a las dimensiones
Para solucionarlo, arrastrar un bloque Demux y volver a simular. El resultado ahora es:


Fig. 18. Simulacin de un sistema con 2 entradas y 2 salidas

Debugger: Simulink tambin tiene su propio debugger. Se abre al clicar en el icono
. Si hubiramos ejecutado el debugger antes de simular el modelo de la Fig. 17, ya
hubiramos visto que haba un conflicto con las dimensiones:

Fig. 19. Debugger de Simulink
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 15
3. Stateflow

Inicio: Para abrir el STATEFLOW hay que abrir la librera del SIMULINK y, desde
all, arrastrar el bloque Char t a una ventana de nuevo modelo, para, a continuacin,
abrir el editor de mquinas de estado haciendo doble clic en Char t .



Fig. 20. Inicio de Stateflow

Componentes: Para crear la mquina de estados hay que arrastrar los componentes que
se encuentran en la parte lateral de esta ltima ventana: Estados , Histrico ,
Transicin por defecto y Punto de conexin/decisin . Las versiones ms
recientes incluyen Tabla de verdad , Funcin y Funcin Matlab .

Las transiciones entre estados se crean arrastrando el ratn entre bloques y, para
editarlas, se clica en ellas y se escribe sobre el interrogante que aparece.


Ejemplo 2. Encendido/apagado
Suponer que se quieren simular los dos estados de un dispositivo (encendido y
apagado). El dispositivo se enciende cuando la variable externa hora es mayor que 12
y se apaga cuando es menor o igual que 12. De entrada est apagado.

En primer lugar se arrastran los dos estados y se edita su nombre: apagado y
encendido. Indicar que el estado apagado es el estado por defecto insertando sobre
l una transicin por defecto.

Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 16
Las transiciones entre los dos estados se trazan con ayuda del ratn y, para editarlas, se
clica sobre ellas y se escribe sobre el signo ?. Las condiciones booleanas, como es el
caso del ejemplo, se introducen entre corchetes [ ], mientras que las acciones a realizar
durante una transicin, si las hubiera, se indican entre llaves { }.


Fig. 21. Construccin de un modelo Stateflow (matlab v6)

Para indicar que la variable hor a es externa (vendr de SIMULINK), hay que abrir el
explorador de modelos (clicar en , o bien seleccionar Vi ew Model Expl or er ).
En el explorador, seleccionar Add Dat a y ajustar los siguientes parmetros:
Name=hor a, Scope=I nput f r om Si mul i nk (o I nput , segn la versin). As, en el
modelo SIMULINK, en el bloque Char t aparecer la entrada hor a.

Notar que el Model Expl or er tiene muchas opciones disponibles, como por ejemplo, el
Model Advi sor . Se recomienda echar un vistazo a todas las opciones del men y la
barra de herramientas.


Fig. 22. Model explorer en la v7
Explorer
Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 17

Ahora basta con generar en Simulink una variable que oscile de 0 a 24 y excitar el
bloque Char t con ella. En el ejemplo hora es una sinusoide de amplitud 12,
frecuencia 0.5Hz y offset 12. El tiempo final de simulacin es 10s y el tiempo de
muestreo es fijo e igual a 0.001.

Para iniciar la simulacin basta con clicar en el botn run (o seleccionar Si mul at i on
St ar t ) del modelo Simulink. En la pantalla de comandos de Matlab aparecern una
serie de mensajes relacionados con la creacin de la mquina de estados.

A medida que la simulacin se lleva a cabo, podemos ver cul de los estados est
activado cada vez.








Fig. 23. Ejecucin del modelo Stateflow



Acciones durante los estados: Pueden ser de entrada al estado, de salida del estado o a
realizar mientras se est en el estado. Las acciones se indican mediante las etiquetas
ent r y: , dur i ng: , exi t : (o sus abreviaturas en: , du: ).

Si se quiere ejecutar una funcin de matlab dentro de estos bloques hay que usar la
funcin ml, por ejemplo, en: a=ml ( si n( x) ) o bien en: a=ml ( si n( %f ) , x) si x es
una variable local del Stateflow.



Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 18
Ejemplo 3. Producto
El siguiente modelo implementa el producto de dos nmeros:







Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 19
4. Efectos de animacin con Simulink

El siguiente ejemplo muestra cmo conseguir un efecto de animacin por medio de
funciones S y las herramientas GUI.

Ejemplo 4. Pelota que bota
En primer lugar, editar el siguiente fichero bot a. m. Este fichero ser introducido en un
bloque S-function (de ah la definicin de argumentos de entrada y salida).

f unct i on [ sys, x0] = bot a( t , x, u, f l ag)
%
%BOTA Ani maci : j o t i nc una pi l ot a que bot a, bot a, bot a. . .
%

gl obal f i gH bol aH %l a H i ndi ca que aquest es var i abl es sn obj ect handl es

i f not ( i sempt y( f l ag) ) & f l ag==0 %i ni ci al i t zaci
%
f i gH=f i gur e( ' Name' , ' pi l ot a que bot a' , ' number t i t l e' , ' of f ' ) ;
%
r adi =1; phi =l i nspace( 0, 2*pi ) ;
bol a=r adi *exp( j *phi ) +j ;
bol aH=pat ch( r eal ( bol a) , i mag( bol a) , ' b' ) ;
set ( bol aH, ' user dat a' , bol a)
axi s( [ - 5 5 0 10] ) , axi s( ' squar e' )
%
sys=[ 0 0 0 1 0 0] ; %di mensi ons 0- var d est at 1- ent r ada 0- sor t i des
x0=[ ] ; %condi ci ons i ni ci al s no hi ha pq no hi ha [ var i abl es d ] est at
%
end

i f not ( i sempt y( f l ag) ) & f l ag==2 %act ual i t zaci [ posi ci ] bol a ( posi ci : cent r e=u)
%
i f any( get ( 0, ' chi l dr en' ) ==f i gH)
posi c=u;
bol a=get ( bol aH, ' user dat a' ) ;
nova_bol a=( bol a+j *posi c) ;
set ( bol aH, ' xdat a' , r eal ( nova_bol a) , ' ydat a' , i mag( nova_bol a) , ' er ase' , ' nor mal ' ) ;
end
%
%sor t i da. No t or na r es
sys=[ ] ;
x0=[ ] ;
dr awnow;
end

i f not ( i sempt y( f l ag) ) & f l ag==9 %t er mi naci
cl ose
end

En este fichero se ha usado la propiedad User Dat a del objeto pat ch. La propiedad
User Dat a (de user-specified data) permite asociar una matriz de datos al objeto pat ch.
En nuestro caso hemos asociado la matriz bol a (que contiene los puntos que forman el
contorno de la pelota y la posicin de sta) a fin de poderlo modificar a lo largo de la
simulacin con SIMULINK.


En segundo lugar, creamos un modelo SIMULINK (pi l ot a. mdl ) con los siguientes
bloques. Este modelo es el que genera una seal u con la posicin de la bola en cada
instante de la simulacin.

Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 20

Fig. 24. Generacin de la excitacin

Los bloques St ep, Tr anf er Fcn y S- Funct i on contienen los siguientes parmetros:


Fig. 25. Parmetros de Step y Transfer Fcn


Fig. 26. Parmetros de S-Function


Tema 5. Simulink

ETSETB. MATLAB. Fundamentos y/o Aplicaciones. Curso 11/12b 21
En tercer lugar, ajustar los parmetros de simulacin (Si mul at i on Conf i gur at i on
Par amet er s) tal como se indica:



Finalmente, abrir el bloque Scope y clicar en el botn de Run. Los resultados de la
simulacin son:








Fig. 27. Pelota que bota (efecto de animacin)

También podría gustarte