You are on page 1of 41

Prctica: Introduccin a Matlab-Simulink.

Nota: Esta prctica se basa en la elaborada por los profesores ngel Valera Fernndez y Julin J. Salt Llobregat. Posteriormente
ha sido mejorada por los profesores Ral Simarro Fernndez, Marina Valls Miquel, Juan Manuel Herrero Dur y Cesar Ramos
Fernndez. Para la elaboracin de la misma se ha utilizado el Matlab v7.0.2. Las versiones anteriores y posteriores de Matlab
tambin pueden ser utilizadas para la realizacin de la prctica, sin embargo, la ubicacin de los bloques y algunas funciones
pueden cambiar, fundamentalmente de aspecto.
Prctica: Introduccin a Matlab-Simulink

ndice

1. Introduccin .............................................................................................................. 3
2. Arrancar Matlab. ....................................................................................................... 3
3. Creacin de Variables. .............................................................................................. 4
3.1. La variable ans. .................................................................................................. 4
3.2. Definicin de variables. ..................................................................................... 4
3.3. Listar y borrar las variables definidas. ............................................................... 5
4. Utilizacin de matrices con Matlab .......................................................................... 5
4.1. Crear matrices en Matlab ................................................................................... 5
4.1.1. Lista explcita de elementos ....................................................................... 5
4.1.2. Reusando matrices ya definidas ................................................................. 6
4.1.3. Generacin automtica ............................................................................... 6
4.1.4. Generacin a partir de funciones ................................................................ 7
4.1.5. Referencia a elementos de matrices / Creacin de submatrices ................. 8
5. Almacenamiento de sesin. ...................................................................................... 9
6. Operaciones con matrices ....................................................................................... 10
7. Funciones escalares ................................................................................................ 10
8. Funciones vectoriales ............................................................................................. 11
9. Funciones matriciales ............................................................................................. 12
10. For, while, if y relaciones .................................................................................... 12
11. Archivos *.m ....................................................................................................... 13
12. Archivos de funciones ......................................................................................... 13
13. Grficos ............................................................................................................... 14
14. Arrancar Simulink ............................................................................................... 17
15. Bloques ................................................................................................................ 17
16. Modelos continuos............................................................................................... 22
17. Modelos discretos ................................................................................................ 34
18. Funciones avanzadas ........................................................................................... 35

2
Prctica: Introduccin a Matlab-Simulink

1. Introduccin
MATLAB es el nombre abreviado de MATrix LABoratory. MATLAB es un
programa para realizar clculos con vectores y matrices. Resulta una magnfica
herramienta de alto nivel para desarrollar aplicaciones tcnicas, fcil de utilizar
y que permite la simulacin de sistemas dinmicos mediante Simulink.

2. Arrancar Matlab.
Matlab se puede arrancar, o bien haciendo doble clic sobre el icono del
escritorio o bien a travs del men Inicio, en UPVnet/Aplicaciones Cientficas de
Windows. Se abrir la ventana de Matlab que tiene un aspecto como el que
sigue:

En la parte derecha aparece lo que se denomina la ventana de comandos, en


donde insertaremos los comandos que deseemos que Matlab ejecute, tras el
promt >>.

3
Prctica: Introduccin a Matlab-Simulink

3. Creacin de Variables.
Una variable ser, bsicamente, un lugar en donde guardar un valor y a la que
se le puede dar un nombre. La idea es que cuando, posteriormente, se quiera
realizar un clculo, sea posible utilizar el valor al que se refiere la variable como
parte del nuevo clculo.

La forma ms sencilla de utilizar Matlab es como una calculadora, por ejemplo:

>>4+10

ans =

14

3.1. La variable ans.


La variable ans es como una especie de respuesta (answer, en ingls). Acta
como una variable en donde se guarda el resultado de un clculo, en el caso de
que no se indique otro nombre de variable. Por tanto, es posible acceder a su
valor tecleando ans+Intro.

3.2. Definicin de variables.


Definir tus propias variables es mucho ms til que usar la variable ans.
Algunos ejemplos son los siguientes:

>>a=10

a =

10

>>b=20

b =

20

>> media=(a+b)/2

media =

15

4
Prctica: Introduccin a Matlab-Simulink

3.3. Listar y borrar las variables definidas.


Para ver las variables que han sido definidas en una sesin de trabajo es posible
hacerlo de varias formas:

Whos: Muestra las variables del espacio de trabajo y su tamao.


Who: Muestra las variables del espacio de trabajo pero no su tamao.
Accediendo a la etiqueta Workspace de la parte superior izquierda de
la pantalla

Para eliminar variables tambin es posible proceder de varias formas:


Clear: Borra todas las variables del espacio de trabajo
Clear nombre_variable: Borra nicamente la variable indicada mediante
nombre_variable.
A travs de la pantalla Workspace comentada anteriormente, o bien
seleccionando el botn de men correspondiente, o bien pinchando
sobre el nombre de la variable a eliminar y pulsando la tecla Supr

Nota: Podemos obtener informacin sobre una funcin y sus parmetros de


entrada y salida utilizando la instruccin help:
>> help nombre_funcion

4. Utilizacin de matrices con Matlab


4.1. Crear matrices en Matlab
4.1.1. Lista explcita de elementos
En Matlab las matrices se definen dentro de corchetes ([ ]). Las filas se
introducen separando los elementos con espacios o con comas (,) e indicamos
una nueva fila poniendo un punto y coma (;).

Ejemplo.
3 6
Sea A = , para introducir la matriz en Matlab haremos lo siguiente:
2 8
>>A=[3 6;2 8]

Esta es una de las formas de crear una matriz, como una lista explcita de
elementos, pero existen otras ms.

Ejercicio 1

Introduce en Matlab las siguientes matrices:


1 2 3
10
A = 4 5 6 , B = , C = [12 13]
11
7 8 9

5
Prctica: Introduccin a Matlab-Simulink

4.1.2. Reusando matrices ya definidas


Otra forma de crear una matriz es combinando vectores o matrices ya definidos.

Ejemplo.
1 2 3
Imaginemos que queremos formar la matriz A = y tenemos definidos
3 2 1
los vectores v1 = [1 2 3] y v 2 = [3 2 1] . En lugar de introducir explcitamente los
elementos de A podemos hacer lo siguiente:

>> A=[v1;v2]

A =

1 2 3
3 2 1

Ejercicio 2

Haciendo uso de lo anteriormente mencionado, define la matriz:


1 2 3 10 1
B = 4 5 6 11 1

7 8 9 12 13

4.1.3. Generacin automtica


Otra posibilidad que dispone Matlab a la hora de crear matrices, en los casos en
los que sus elementos sean consecutivos, es la generacin automtica
mediante el operador dos puntos (:), con la siguiente notacin:
valor_inicio : incremento : valor_final

Ejemplo.
Se desea crear un vector que contenga los valores temporales para representar
los datos de la temperatura a lo largo del da, tomada cada hora. Haciendo uso
de este operador, haramos:

>>t=0:23

t =

Columns 1 through 10

0 1 2 3 4 5 6 7 8 9

Columns 11 through 20

10 11 12 13 14 15 16 17 18 19

6
Prctica: Introduccin a Matlab-Simulink

Columns 21 through 24

20 21 22 23

Tambin es posible crear vectores con valore decrecientes. En ese caso


haramos:

>> t_dec=23:-1:0

Ejercicio 3
Crea una base de tiempos desde las 0 a 3seg., teniendo en cuenta que en este
caso, se toman muestras de temperatura cada 0.1seg.

4.1.4. Generacin a partir de funciones


Podemos generar matrices de prueba utilizando las siguientes funciones:

eye matriz identidad tril triangular inferior


zeros matriz de ceros rand generada aleatoriamente
ones matriz de unos hilb matriz de hilbert
diag matriz diagonal magic matriz mgica
triu triangular superior toeplitz

Ejemplo. Generacin de una matriz nula de tamao 2x3


>>zeros(2,3)

Ejemplo. Sea x el vector:


>>x=[3 7 2 8]
Vamos a crear una matriz que tenga a x en la diagonal utilizando:
>>diag(x)

Ejemplo. Sea A la matriz cuadrada que hemos visto en el ejemplo anterior:


>>A=[1 2 3; 4 5 6; 7 8 9]

Vamos a obtener un vector con los elementos de la diagonal de la matriz A:


>>diag(A)

Ejercicio 4
Crea la siguiente matriz usando los conceptos y funciones estudiadas
1 2 3 0
4 5 6 0
C=
7 8 9 0

0 0 0 1

7
Prctica: Introduccin a Matlab-Simulink

4.1.5. Referencia a elementos de matrices / Creacin de


submatrices
La referencia a los elementos de una matriz se realiza poniendo entre
parntesis los ndices del elemento que queremos referenciar.

Para referenciar el elemento que ocupa la primera fila y la segunda columna


pondremos:
>>A(1,2)
Obteniendo como resultado: 6

Tambin es posible, por otro lado, acceder a cualquier subconjunto contiguo de


elementos en una matriz. Para ello se utiliza el operador de dos puntos,
comentado anteriormente, indicando as el rango de filas y columnas deseada.

Ejemplo. Supongamos que tenemos la siguiente matriz:

>> mat=[1 8 9 4 5 2 4 8
9 3 7 4 8 2 8 8
1 2 9 4 6 2 3 4
10 2 2 4 6 7 3 2
3 12 3 3 2 8 4 9]

mat =

1 8 9 4 5 2 4 8
9 3 7 4 8 2 8 8
1 2 9 4 6 2 3 4
10 2 2 4 6 7 3 2
3 12 3 3 2 8 4 9

Si hacemos:

>> nueva_mat=mat(2:4,4:7)

nueva_mat =

4 8 2 8
4 6 2 3
4 6 7 3

El resultado es el que aparece, es decir, los elementos de la fila 2 a la 4 y las


columnas de la 4 a la 7.

En el caso de que nicamente se ponga el operador dos puntos, estaremos


indicando los elementos de todas las filas o todas las columnas, segn en donde
se emplee.

8
Prctica: Introduccin a Matlab-Simulink

Ejemplo. Vase el resultado de la siguiente instruccin:

>> nueva_mat=mat(:,4:7)

nueva_mat =

4 5 2 4
4 8 2 8
4 6 2 3
4 6 7 3
3 2 8 4

Ejercicio 5
A partir de la matriz obtenida en el ejercicio anterior, obtener una nueva
formada con los elementos de la fila 2 a la 3 y la columna 3.

5. Almacenamiento de sesin.
Es posible almacenar las variables definidas en una sesin de trabajo para ser
reutilizadas en otras sesiones.

Para ello se puede proceder de varias formas. O bien se escribe desde la lnea de
comando de Matlab :

>>save nombre_fichero

Esto provocar que aparezca un nuevo fichero en nuestro directorio de trabajo,


con nombre nombre_fichero y extensin .mat.

Esto mismo es posible conseguirlo a partir de la opcin de men File,


seleccionando la opcin Save Workspace As.

Una vez se tiene almacenado el fichero es posible cargarlo de nuevo para una
sesin posterior, o bien usando el comando

>>load nombre_fichero

o bien seleccionando File/Open y el nombre del fichero .mat.

Nota: Mediante la instruccin load tambin es posible cargar los datos de un


experimento guardado en un fichero en formato ASCII.

Ejercicio 6
Guarda un fichero con las variables definidas hasta ahora, borra todas las
variables y vuelve a cargarlas a travs del fichero previamente grabado.

9
Prctica: Introduccin a Matlab-Simulink

6. Operaciones con matrices


Operaciones utilizadas con matrices:

+/- adicin / sustraccin transpuesta


* multiplicacin \ divisin izquierda
^ potenciacin / divisin derecha

Las operaciones a coordenadas ( elemento a elemento) se realizan precediendo


las operaciones vistas anteriormente por un punto.

Ejemplo.
>>[1 2 3 4].*[1 2 3 4]

El resultado es [1 4 9 16]

7. Funciones escalares
Sobre escalares o matrices (elemento a elemento):
sin atan sqrt
cos exp sign
tan log round
asin rem(resto) floor
acos abs ceil

Ejemplo.
>>sin((0:30:360)*pi/180)

El resultado es: [0 0.5 0.866 1 0.866 0.5 0]

>> exp(log(10))

El resultado es 10.

>> floor(10.1) El resultado es 10


>> ceil(10.1) El resultado es 11
>> round(10.1) El resultado es 10

Mientras que,

>> floor(10.6) El resultado es 10


>> ceil(10.6) El resultado es 11
>> round(10.6) El resultado es 11

10
Prctica: Introduccin a Matlab-Simulink

8. Funciones vectoriales
Sobre vectores o columnas de matrices o filas ()
max prod any
min median all
sort mean var
sum std cov

Ejemplo.

>> max(sin((0:1:360)*pi/180)) El resultado es 1

Mientras que,

>> min(sin((0:1:360)*pi/180)) El resultado es -1

Los siguientes clculos obtienes el mismo resultado:

>> mean([1 3 4 2 5 6])

>> sum([1 3 4 2 5 6])/6

El siguiente clculo obtiene la matriz de varianzas y covarianzas de los dos


argumentos:

>> x=[1 3 4 2 5 6];


>> y=[3 1 2 5 0 7];
>> cov(x,y)

ans =

3.5000 0.6000
0.6000 6.8000

As mismo la varianza se puede calcular de dos formas:

>>var(x)

>> sum((x-mean(x)).^2)/5

Nota: Por defecto se realiza la varianza con N-1

Mientras que la covarianza es:

>> sum((x-mean(x)).*(y-mean(y)))/5

11
Prctica: Introduccin a Matlab-Simulink

9. Funciones matriciales
eig autovalores y autovectores expm matriz exponencial
chol factorizacin Cholesky sqrtm matriz raz cuadrada
svd descomposicin en valores poly polinomio caracterstico
singulares det determinante
inv inversa size tamao
lu factorizacin LU norm norma 1, norma 2, norma de
qr factorizacin QR Frobenius, norma infinita
hess forma de Hessenberg cond nmero de condicin en la
schur descomposicin de Schur norma 2
rref forma escalonada reducida rank rango
por filas

10. For, while, if y relaciones


Creacin de rutinas:

For:
x=[];
for i=1:n
x=[x, i^2];
end

while:
while relacin
instrucciones
end

if:
siguiente bifurcacin elseif
if relacin
instrucciones
end

Relaciones
== igual & y lgico
~= distinto | o lgico
~ no

12
Prctica: Introduccin a Matlab-Simulink

11. Archivos *.m


Los archivos *.m sirven para ejecutar secuencias de instrucciones almacenadas
en disco. Hay de dos tipos:
Archivos de instrucciones.
Archivos de funciones.

Ejercicio 7
Crea un fichero .m para que genere un vector fila de 10 elementos en donde sus
elementos tengan como valor el doble de la posicin que ocupan. Ejectalo para
comprobar que funciona (escribe su nombre en la lnea de comandos de Matlab
y pulsa Enter)

Ejercicio 8
Crea un fichero .m para que genere 2 vectores de tal manera que en uno se
almacenen los valores pares del 1 al 10 y en otro los valores impares.

12. Archivos de funciones


Los archivos de funciones se guardan como archivos .m con el mismo nombre
que la funcin que estn implementando:

Ejemplo.
function a=ental(m,n)
%ENTAL Matriz entera generada aleatoriamente.
% ental(m,n) produce una matriz mxn con entradas
% enteras entre 0 y 9
a=floor(10*rand(m,n));

Ejemplo.
function [media, desv]=estad(x)
%ESTAD Media y desviacin tpica
[m n]=size(x);
if m==1
m=n; %caso de un vector fila
end
media=sum(x)/m;
desv=sqrt(sum(x .^2)/m - media .^2)

Ejercicio 7
Implementa una funcin que permita calcular los dos resultados de una
ecuacin de segundo grado. Ejectalo para comprobar que funciona (escribe su
nombre en la lnea de comandos de Matlab y pulsa Enter)

13
Prctica: Introduccin a Matlab-Simulink

13. Grficos
Grficos planos:
plot(x,y): grfico plano de los elementos de x contra los de y.
grid: activa la rejilla
title: ttulo del grfico
xlabel: comentario eje x
ylabel : comentario eje y
gtext: texto posicionado interactivamente
text: texto posicionado mediante coordenadas
axis: definir la escala de los ejes
hold: congela la pantalla grfica. Posteriores dibujos, encima.
plot(x,y,+): cambia el tipo de lnea por defecto.
subplot: divide la pantalla de forma que se vean varios grficos a la vez
polar: representacin en coordenadas polares

Grficos de malla de superficies tridimensionales:


mesh(z): grfico tridimensional en perspectiva de la matriz z

La instruccin ms utilizada es plot. Esta instruccin abrir una ventana grfica


en donde aparecern representados los datos pasados como parmetros, en
donde, Matlab ofrece comandos que permiten aadir ttulos y etiquetas a las
grficas.

Ejemplo. Definamos inicialmente dos vectores:

>> puntos_x=[1 2 3 4 5]

puntos_x =

1 2 3 4 5

>> puntos_y=[25 0 20 5 15]

puntos_y =

25 0 20 5 15

Ahora, para dibujar estos vectores en Matlab, tecleamos:

>> plot(puntos_x,puntos_y)

Aparecer la siguiente figura:

14
Prctica: Introduccin a Matlab-Simulink

Ahora es posible poner ttulos, activar la rejilla, etc. seleccionando la opcin de


men Edit/Figure Properties y pinchando en la parte del grfico del cual
deseamos cambiar las propiedades. En este sentido, si la impresin del grfico
es en blanco y negro, es aconsejable utilizar diferentes tipos de lnea para las
diferentes seales que aparezcan en un mismo grfico. Se pueden copiar los
grficos directamente para generar un documento y/o memoria de resultados.

Ejercicio 8
Define un vector x con valores desde -5 a 5 en incrementos de 0.1 y un vector y
con los mismos componentes que el vector x pero elevados al cuadrado.
Dibuja los valores anteriores en un grfico.
Aade el ttulo de Una Parbola al grfico y el de eje x y eje y en los ejes
correspondientes.
Aade la rejilla al grfico.
Copia el grfico generado y pgalo en un documento WORD.

Cuando se quiere representar ms de una seal en un mismo grfico existen


varias opciones:
1) Representar el grfico mediante un nico comando plot que exige te
las dimensiones de todas las seales sea la misma. En este caso MATLAB
escoger los colores de las seales por defecto (azul, verde, etc.):
>> x=[1 4 5 4 6 3]

15
Prctica: Introduccin a Matlab-Simulink

>> y=[5 3 1 9 2 4]
>> t=[0 0.1 0.2 0.3 0.4 0.5]
>> plot(t,[x y])
2) Representar el grfico mediante varios comandos plot manteniendo la
representacin anterior. Se utiliza el comando hold on y hold off
para mantener o borrar los datos del grfico anterior cada vez que
realizamos un comando plot. En este caso, NO es necesario que las
seales tengan la misma dimensin:
>> plot(x,r)
>> hold on
>> plot(y,k)
3) Representar las seales mediante diferentes grficos en una misma
ventana. Con el comando subplot es posible subdividir el grfico en
una matriz de grficos, habitualmente en filas, columnas y/o en forma
matricial (2x2, 3x3, etc.):
>> figure
>> subplot(2,1,1)
>> plot(t,x)
>> subplot(2,1,2)
>> plot(t,y)

Habitualmente se realizan dos tipos de representaciones en la ingeniera:


grfico temporal y grfico XY. En el grfico temporal se representa la evolucin
de una variable con respecto del tiempo, mientras que en el grfico XY se
representan los valores que toma una seal X con respecto a los valores que
toma en Y. En este sentido, para los grficos XY es habitual que si ambas seales
tienen las mismas unidades y orden de magnitud, entonces se realice un
escalado de los ejes mediante el comando axis equal. Mientras que para los
grficos temporales, no suele realizarse este ajuste.

Ejercicio 9
Define dos vectores x(t)=2*sin(2*pi*omega*t) e y(t)=cos(2*pi*omega*t) con
valores omega=0.25 y t un vector de 0 a 4 con incrementos de 0.1.
Genera un primer grfico temporal subdividido en dos, uno para representar la
evolucin temporal de x y otro la evolucin temporal de y. Aade los ttulos X
[m.] e Y [m.] en el eje Y de ambos grficos y Tiempo [seg.] en el eje X del
segundo grfico. Ajusta la escala vertical de ambos grficos para que vaya de -
2.2 a 2.2 para X y de -1.1 a 1.1 para Y.

Representar las seales en un nuevo grfico XY ajustando debidamente la


escala para conseguir que sea la misma en ambos grficos. Modificar el tipo de
lnea, para que sea del tipo .- e introducir los siguientes ttulos en los ejes X e
Y: X [m.] y Y [m.].

16
Prctica: Introduccin a Matlab-Simulink

14. Arrancar Simulink


Para arrancar Simulink tan slo debemos introducir en la lnea de comandos de
Matlab Simulink abrindose el Simulink Library Browser.

15. Bloques
Como se ha visto, al arrancar Simulink se genera una ventana donde estn las
libreras (o bloques) con las que podemos trabajar. En este apartado
pretendemos realizar una introduccin a las funciones ms usadas dentro de
cada librera.

El acceso a cada librera se realiza haciendo clic sobre su icono.

17
Prctica: Introduccin a Matlab-Simulink

Sources
Como el nombre indica esta librera contiene fuentes de seales, de entre las
que cabe destacar el escaln (Step), el seno (Sine Wave), el generador de seales
(Signal Generador) y el reloj con los tiempos de la simulacin (Clock).

Sinks
La librera Sinks proporciona sumideros o lugares de salida que se desean para
la simulacin. Es decir, proporciona un osciloscopio para visualizar la salida
(Scope), o bien la salida la podemos redirigir a una variable de tipo matriz (To
Workspace) o a un fichero (To File).

18
Prctica: Introduccin a Matlab-Simulink

Discrete
La librera discrete proporciona los bloques necesarios para la simulacin de
sistemas discretos, tales como retardos (Unit Delay), filtros (Discrete Filter),
funciones de transferencia discreta (Discrete Transfer Fcn), espacio de estados
(Discrete State-Space), etc. Los bloque discretos disponen a su entrada un
muestreador y a su salida un retenedor de orden cero, de forma que las
entradas tan slo se actualizan en los instantes de muestreo.

Continuous
Esta librera proporciona los elementos necesarios para la simulacin de
sistemas lineales continuos. Los bloques ms usados son: el integrador
(Integrator), la funcin de transferencia (Transfer Fcn), la funcin de
transferencia en forma de polos y ceros (Zero-Pole) y el espacio de estados
continuo (State-Space).

19
Prctica: Introduccin a Matlab-Simulink

Math Operations
En esta librera los bloques ms usados son: la ganancia (Gain), el producto
(Product) y el bloque sumador (Sum).

20
Prctica: Introduccin a Matlab-Simulink

User-Defined Functions
En esta librera cabe destacar las funciones Matlab (Matlab Fcn) y las S-
Funciones (S-Function) que nos permiten usar funciones existentes como
bloques.

Signal Routing
Esta librera proporciona los elementos de multiplexacin y demultiplexacin
(Mux y Demux) de seales:

21
Prctica: Introduccin a Matlab-Simulink

16. Modelos continuos


Una vez introducidos todos los mens y bloques ms importantes, vamos a
ponerlo en prctica realizando unos cuantos modelos simples. Para ello
suponemos que ya estamos en el espacio de trabajo de Simulink despus de
haber realizado la ejecucin de la llamada al paquete.

Ejercicio 10. Simulacin de un generador de funciones y un


osciloscopio
El esquema que se va a realizar consiste en conectar un osciloscopio para
visualizar la forma de onda que proporciones un generador de seales.

Los pasos para realizar este montaje son:


Inicializar el Simulink desde MATLAB y crear un nuevo modelo. Esto lo
hacemos a travs de la opcin NewModel del men File o mediante el icono
correspondiente
Abrir la librera Sources (haciendo click sobre su icono), pinchar sobre el
generador de seal (Signal Generator) y sin soltar llevarlo hasta la ventana de
Simulink que hemos creado anteriormente.
Hacer lo mismo con el osciloscopio (Scope) que se encuentra en la librera
Sinks.
a) Conectar los elementos mediante el ratn (para realizar la conexin
pinchar con el botn izquierdo del ratn en la salida del generador de
seal y sin soltar se conecta con la entrada del osciloscopio. De esta
forma el montaje queda de la siguiente manera:

b) Una vez establecido el modelo debemos configurar todos los parmetros


de los distintos elementos que lo componen. Para poder acceder a los
parmetros de un elemento haremos doble clic encima de l.

22
Prctica: Introduccin a Matlab-Simulink

Los parmetros que se pueden modificar en el generador de seales son:


Tipo de Onda (Wave form): Senoidal, Cuadrada, Rampa o
aleatoria).
Usar la simulacin del tiempo o una seal externa.
Amplitud de la seal.
Frecuencia de la seal.
Unidades para la frecuencia: hercios, radianes.

Los parmetros que se pueden modificar en el osciloscopio son:


Mximo nmero de puntos para representar.
Nmero de decimales.
Opcin de guardar la representacin en un vector.

Configurar los parmetros de la simulacin mediante la opcin Configuration


parameters del men Simulation de la ventana Simulink que hemos creado.

23
Prctica: Introduccin a Matlab-Simulink

Los parmetros que se pueden modificar en la simulacin son:


El tiempo de inicio y de fin de la simulacin (Stara y Stop Time).
El mtodo para resolver el sistema dinmico (Solver).
Mximo y Mnimo intervalo de muestreo (Min y Max Step Time).
y la tolerancia.
Tolerancia para los algoritmos de integracin (Relative/Absolute
tolerante).

Ejercicio 11. Simulacin del generador y ganancia


A partir del esquema anterior, que se ha guardado como un fichero de
extensin *.m, vamos a modificarlo para poder aadirle una ganancia a la seal
generada.

Lo primero que tendremos que hacer ser abrir el archivo utilizando cualquiera
de los siguientes mtodos:
Entrar en Simulink y mediante la opcin FileOpen buscar el fichero y abrirlo.
Sin llegar a entrar en Simulink, teclear el nombre del modelo (sin la
extensin .m) en la lnea de comandos de Matlab (El directorio de trabajo
de Matlab deber ser el mismo en el que se encuentra en fichero).

En la barra de herramientas aparece el directorio de trabajo de Matlab

24
Prctica: Introduccin a Matlab-Simulink

La modificacin consiste en introducir un elemento de ganancia que


conectaremos con el generador de funciones y cuya salida ser lea por un
osciloscopio igual que en el ejercicio anterior.

El elemento de ganancia (Gain) se encuentra en la librera Math Operations.


Haciendo doble clic sobre el elemento de ganancia aparece su ventana de
dilogo. Lo que haremos ser cambiar el valor de la ganancia de 1 a 2 unidades.

Necesitaremos tambin otro osciloscopio (Scope) que se encuentra en la librera


Sinks. Una forma de copiar un elemento ya existente en nuestra ventana de
trabajo de Simulink es arrastrarlo con el botn derecho del ratn.

Para conectar los elementos se utiliza el botn izquierdo del ratn


mantenindolo apretado a partir de las entradas salidas del elemento
correspondiente.

Si hacemos doble clic sobre los osciloscopios podremos ver la respuesta del
sistema: el efecto de introducir la ganancia (Scope1) es el de amplificar la seal
original (Scope).

25
Prctica: Introduccin a Matlab-Simulink

Para acabar este segundo ejemplo vamos a modificar y mejorar el modelo


realizado, de forma que visualicemos en un mismo osciloscopio las dos seales,
la del generador y la de la ganancia, utilizando para ello un multiplexor.
Borraremos la conexin que une el generador de seal con el osciloscopio y
borraremos tambin la conexin que une el elemento de la ganancia y el del
osciloscopio1, as como este ltimo. Para borrar una lnea o un elemento se
selecciona con el botn izquierdo del ratn y luego se pulsa la tecla Supr.

Una vez borrado todo nos queda introducir el multiplexor (Mux) que se
encuentra en Signal Routing. Pinchamos sobre el multiplexor y lo arrastramos
hasta el modelo, podremos cambiarle el nmero de entradas, si es necesario,
pulsando dos veces sobre l. As el montaje queda de la siguiente forma:

26
Prctica: Introduccin a Matlab-Simulink

Ahora, si iniciamos la simulacin veremos las dos respuestas en un solo


osciloscopio.

Se puede ver como se multiplexan las salidas en un nico vector. La lnea de


conexin del multiplexor con el osciloscopio, en nuestro caso, se convierte en
una lnea multivariable. Lo que puede ocurrir es que interese almacenar
cualquier seal del esquema o circuito en el entorno de trabajo. En este caso,
podemos utilizar el elemento To Workspace (librera Sinks).

Para traerlo al fichero de trabajo y para cambiar sus parmetros se hace igual
que con el resto de elementos vistos hasta ahora. Los parmetros que tiene el
elemento pueden verse en la siguiente figura:

27
Prctica: Introduccin a Matlab-Simulink

Lo que se ha cambiado es el nombre por la variable salida as como el formato


de los datos por Array para que lo guarde en forma de vector. Tambin
podemos cambiar el periodo con el que queremos que se guarden los datos
(Sample time).

La salida generada en el osciloscopio es la misma que la anterior, lo nico que


ocurre es que ahora los datos se han almacenado tambin en una variable
llamada salida. Si vamos a Matlab y ejecutamos la orden whos obtendremos
las variables que tenemos en el espacio de trabajo de Matlab:

>> whos
Name Size Bytes Class

salida 51x2 816 double array

Si queremos representar cualquier variable utilizaremos el comando plot. En


nuestro caso ejecutando plot(salida) obtendremos, en una ventana grfica de
Matlab, lo mismo que en el osciloscopio:

28
Prctica: Introduccin a Matlab-Simulink

En el eje de ordenadas tenemos el valor de la variable que representamos y en el


de abscisas el nmero de muestras.

Ejercicio 12. Funcin de transferencia continua en bucle


abierto
Cuando se necesita trabajar con sistemas fsicos (para analizar el
comportamiento esttico o dinmico, la estabilidad o inestabilidad, etc.)
tenemos que obtener las ecuaciones diferenciales que rigen al sistema. Lo que
ocurre es que dichas ecuaciones no son muy cmodas para trabajar, por lo que
habitualmente se utiliza una herramienta matemtica que simplifica mucho la
tarea, y esta herramienta es la Transformada de Laplace.

Los sistemas ms simples que podemos encontrar son los sistemas de primer
orden, los cuales se rigen mediante una ecuacin diferencial de primer grado:


y + ay = bu
Donde:
u = entrada del sistema
y = salida del sistema

y = primera derivada de la salida del sistema
a, b = constantes del sistema

Para poder trabajar cmodamente con este tipo de sistemas, vamos a aplicar la
Transformada de Laplace, de forma que tenemos:

sy ( s ) + ay ( s ) = bu ( s )

Ahora podemos agrupar los trminos y(s):

29
Prctica: Introduccin a Matlab-Simulink

y ( s ) [ s + a ] = bu ( s )

Y podemos obtener el cociente entre y(s) y u(s):

y( s) b
G (s) = =
u (s) s + a

A este cociente se le conoce como Funcin de Transferencia (fdt) del sistema, y


como se puede observar, indica la relacin que existe entre la entrada y la
salida. Dicha fdt la podemos poner en forma normalizada dividiendo por el
trmino a:

y( s) b k
G (s) = = =
u ( s ) s + a 1 + s

Donde:
k = ganancia esttica del sistema
= constante de tiempo

Para analizar el comportamiento de sistemas vamos a partir de uno muy


simple:

Para este circuito simular la respuesta del sistema ante escaln a la entrada. El
valor inicial del escaln debe ser 0, y el valor final 1, empezando en el instante
inicial (Step Time = 0). La simulacin debe ser de 10 segundos y el Max Step
Size de 0.01 segundos.

Cul es el valor final de la salida del sistema?

Para analizar el efecto de la variacin de la ganancia se propone variar el


esquema anterior:

30
Prctica: Introduccin a Matlab-Simulink

Cul es el efecto de la variacin de la ganancia del sistema?

A continuacin vamos a ver como afecta la variacin de la constante de tiempo


del sistema en la respuesta de ste. Para ello, obtener el siguiente esquema:

Cul es el efecto de la variacin de la constante de tiempo del sistema?

Ejercicio 13. Funcin de transferencia continua en bucle


cerrado
En el ejercicio anterior se ha visto como es la respuesta del sistema en bucle
abierto. Lo que ocurre es que cuando se establece el control de sistemas se
realiza la realimentacin del sistema (conocida tambin como bucle cerrado).
De esta forma, la accin de control que se introduce al sistema es la diferencia
entre la referencia y la salida del sistema:

31
Prctica: Introduccin a Matlab-Simulink

Si a la funcin de transferencia del proceso le llamamos GP(s), es fcil obtener la


funcin de transferencia del sistema en bucle cerrado:

G P ( s)
G BC ( s ) =
1 + G P (s)

Nota: Al cociente de la funcin de transferencia del sistema en bucle cerrado


igualado a cero se le conoce como Ecuacin Caracterstica del sistema, y es la
que fijar cual es el comportamiento del sistema (la respuesta dinmica y
esttica del sistema).

1 + GP (s) = 0

y de esta forma, se pueden obtener la ganancia y la constante de tiempo del


sistema en bucle cerrado:

k BA
k BC =
1 + k BA
BA
BC =
1 + k BA

por lo que:
La ganancia en bucle cerrado es menor con tendencia a la unidad.
El sistema se hace ms rpido.

Para observar mejor las diferencias entre ambos esquemas, se propone el


montaje siguiente (el reloj incluir en la matriz senyal el tiempo, para poder
calcular la constante de tiempo del circuito en bucle abierto y cerrado):

32
Prctica: Introduccin a Matlab-Simulink

Comprobar experimentalmente la relacin entre las ganancias y las


constantes de tiempo en bucle abierto y bucle cerrado.

Nota: Para tomar nicamente la informacin contenida en una columna de una


matriz se hace utilizando la siguiente notacin:

nombrematriz(:, numero_columna)

significa que de la matriz nombrematriz, vamos a tomar todas las filas y slo
la columna que indiquemos. Por lo tanto, para representar la salida del sistema
en bucle cerrado en funcin del tiempo lo haremos de la siguiente forma:

plot(senyal(:,3), senyal(:,1))

Ejercicio 14. Sistemas no-lineales continuos


Para la simulacin de sistemas no-lineales no se puede utilizar directamente la
funcin de transferencia y se debe de implementar la ecuacin diferencial.
Supongamos un sistema de segundo orden que modela el comportamiento
fsico de un par de depsitos acoplados entre s:
h1 = S1 (Qe Q1 )
h2 = S 2 (Q1 Q2 )
Q1 = 0.65 k12 h1 h2
Q2 = k 2 h2
Siendo Qe = 1 el caudal de entrada (constante), S1 = 1 y S 2 = 1 las secciones de
los depsitos y k12 = 1 y k 2 = 1 constantes de los depsitos.

Utilizar el bloque de Simulink Integrator para la implementacin de la


ecuacin diferencial.

Implementar el diagrama Simulink y representar la evolucin de la curva de


llenado de los depsitos.

33
Prctica: Introduccin a Matlab-Simulink

17. Modelos discretos

Al igual que en el plano continuo se utiliza una herramienta matemtica (la


Transformada de Laplace) que nos ayuda a entender y trabajar mejor con los
sistemas y su dinmica, en el plano discreto tenemos la Transformada en Z, de
forma que para pasar del plano continuo S al plano discreto Z se realiza el
cambio de variable:

z = e sT

De esta forma tenemos que los sistemas pueden ser de primer orden,

b z 1
G (s) =
1 + a z 1

de segundo orden:

b1 z 1 + b2 z 2
G (s) =
1 + a1 z 1 + a 2 z 2

o de orden superior. Ntese que en el caso del control discreto vamos a


necesitar un parmetro ms, el periodo de muestreo que se va a utilizar para
ver la salida del sistema y para introducir la seal de control al sistema.

Ejercicio 15. Simulacin de Sistemas discretos


Simular la respuesta de un determinado sistema discreto, como por ejemplo:

Analizar como influye la respuesta del sistema en funcin de los parmetros


a y b as como el periodo de muestreo que se utilice en el sistema.

34
Prctica: Introduccin a Matlab-Simulink

Ejercicio 16. Simulacin de Sistemas no-lineales discretos


Simular la respuesta de un determinado sistema discreto, como por ejemplo:
x k +1 = 0.25 x k + 0.1 u k 0.1 x k u k 1
Representar la evolucin del sistema con un periodo de muestreo de T=0.1seg,
siendo u k = 1 .

Utilizar el bloque Simulink Delay para implementar el operador retardo de


una seal. Representar la evolucin del sistema.

18. Funciones avanzadas

Ejercicio 17. Comando Subsystem


Cuando trabajamos con Simulink, a menudo ocurre que nos gustara compactar
ms la informacin que tenemos en los esquemas, ya que tenemos tal cantidad
de bloques que nos impide ver con claridad las distintas partes de los circuitos.
Para estos casos tenemos un comando que puede ser til, el comando
Subsystem. Supongamos que tenemos un motor de corriente continua con una
funcin de transferencia de primer orden que relaciona la tensin de entrada
con la velocidad de giro del motor:


1.5
GM (s) = =
1 + 0.5 s

adems, se obtiene la posicin del eje del motor mediante un integrador:

1
G I ( s) = =

s
Por lo tanto, el sistema ser:

35
Prctica: Introduccin a Matlab-Simulink

Si queremos que este motor sea una caja negra en la que tengamos una entrada
(la tensin de control del motor) y dos salidas (la posicin y la velocidad del
motor), tendremos que utilizar el comando Subsystem. Para ello:

Arrastramos con el botn izquierdo del ratn, seleccionando todo lo que


queramos agrupar, dejando fuera las entradas y salidas a ese subsistema.

Una vez seleccionado, le damos al botn derecho del ratn y nos aparecer un
men contextual, en el que seleccionaremos la opcin Create Subsystem.

36
Prctica: Introduccin a Matlab-Simulink

De esta forma ya tenemos un nuevo elemento que podemos incorporar a las


libreras existentes. As podemos utilizarlo sin importarnos cual es su estructura
interna.

Realizar el esquema siguiente de control para el motor de corriente continua


anterior (para facilitar la identificacin del subsistema se le ha cambiado el
nombre pinchando sobre el mismo con el botn izquierdo del ratn):

Variar el valor de la ganancia y analizar como cambia la respuesta del


sistema en funcin de este parmetro.

Ejercicio 18. Comando Mask


Como se ha visto, con el comando anterior se consigue una compactacin de la
informacin de los circuitos y simulaciones, pero a veces necesitamos una
encriptacin mucho mayor, y para ello necesitamos el comando Mask. Cuando
se trabaja con este comando se crea una mscara, de manera que nos presenta
una ventana de dilogo para introducir los datos. Para verlo con claridad
vamos a trabajar con el ejercicio anterior. Partiendo de la situacin reflejada en
el esquema anterior, vamos a hacer doble clic sobre el subsistema Motor CC, de
esta forma se abrir una nueva ventana donde estar el interior de este grupo:

37
Prctica: Introduccin a Matlab-Simulink

El paso siguiente ser hacer doble clic sobre la funcin de transferencia del
sistema de primer orden de dicho motor. Cuando aparezca la caja de dilogo,
en vez de teclear directamente los polinomios del numerador y del
denominador, vamos a teclear el nombre de dos variables (num para el
numerador y den para el denominador, por ejemplo).

(Con este esquema ya podramos modificar el valor de estas variables desde la


ventana de comandos de Matlab, aunque la idea es utilizarlo de una forma
interactiva, como veremos ahora). A continuacin, salvamos las modificaciones
y cerramos el subsistema del motor. Ya por ltimo, en el esquema de control del
motor en bucle cerrado seleccionamos el bloque del Motor CC y pulsando el
botn derecho del ratn nos aparecer un men contextual en el que
seleccionaremos la opcin Mask Subsystem

38
Prctica: Introduccin a Matlab-Simulink

En la ventana de opciones de la mscara que aparece debemos aadir dos


nuevos parmetros e inicializarlos como se indica en los dilogos siguientes:

39
Prctica: Introduccin a Matlab-Simulink

Una vez se han introducido estos valores, el bloque del motor ha cambiado,
ahora si hacemos doble clic con el botn izquierdo del ratn se abre una nueva
ventana en la que podremos introducir los dos parmetros que hemos aadido
y nos modificar el valor del numerador y del denominador tal y como le
hemos indicado en la inicializacin.

Por supuesto, de esta forma facilitaremos la utilizacin de los bloques que


vamos creando, estableciendo una jerarqua dentro del diseo.

Realizar el enmascaramiento del motor de corriente continua y realizar


varias ejecuciones modificando el valor de la ganancia y la constante de tiempo
del motor, as como la ganancia del regulador en bucle cerrado.

40
Prctica: Introduccin a Matlab-Simulink

Aadir una descripcin de la mscara que se est modificando y que


aparezca en la ventana de dilogo tal y como se muestra a continuacin (la
descripcin aparece dentro de la pestaa Documentation de la mscara):

41