02 - Matlab - Simulink. Introducción
02 - Matlab - Simulink. Introducción
02 - Matlab - Simulink. Introducción
Matlab - Simulink:
introducción
Índice
Esquema. . . . . . . . . . . . . . . . . . . . . . . 2
Ideas clave . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Introducción y objetivos . . . . . . . . . . . . . 3
2.2 Simulink como entorno de modelado y simulación . . . 4
2.3 Los principales elementos de Simulink. . . . . . . . 9
2.4 El proceso de creación de un modelo . . . . . . . . 13
2.5 Tocando Simulink: “Primeros códigos en Simulink” . . . 15
Esquema
En esta sección vamos a seguir los pasos necesarios para realizar un primer programa
en Simulink. Vamos a realizar el código que se muestra en la figura 1 que realiza la su-
ma de dos números. Podemos pensar que estamos modelando el problema: Tenemos
dos depósitos de agua, uno de 1 litro y otro de 4 litros. ¿Cuál es el volumen que po-
demos almacenar?. Evidentemente, este problema no requiere de ningún programa
para resolverlo. Sin embargo, este ejemplo nos permitirá ver rápidamente las ideas
básicas de Simulink.
Una vez tenemos instalado Simulink, debemos abrir Matlab y pulsar sobre el botón
Simulink, tal y como se muestra en la Figura 2. Con esto se nos abrirá la ventana de ini-
cio de Simulink. Deberemos situarnos encima de blank model y pulsar sobre el botón
create model que nos aparece.
Se nos abrirá una nueva ventana como la que se muestra en la Figura 3. En esta venta-
na encontraremos nuestro lienzo en blanco para realizar plantear un modelo. Marcado
con un 1 tenemos el espacio destinado a la elaboración del modelo. En este espacio
añadiremos las diferentes piezas y componentes que necesitemos. El botón library
Browser (2) nos permite abrir la ventana de herramientas y elementos de Simulink, es-
ta será nuestra pieza clave a lo largo de todo el proceso. Finalmente, una vez tengamos
completado el modelo, podremos simularlo usando las herramientas que aparecen en
la sección 3.
Vamos a prescindir de la mayor parte de las opciones disponibles en este primer ejem-
plo. Por ahora, será suficiente con abrir el Library Browser. Esto nos abrirá una nueva
Por ahora, nos vamos a centrar en tres de estos bloques. El bloque de fuentes (sources)
que nos permitirá introducir información a nuestro sistema, el bloque de salidas (sinks)
que nos permitirá leer y/o obtener la información de nuestro modelo y, finalmente, el
Con el fin de clarificar los contenidos de nuestro modelo, vamos a asignar nombres a
los dos depósitos. Para ello, pulsamos sobre el elemento constante que hemos intro-
ducido. En la parte inferior del mismo, nos aparecerá el nombre del elemento. Pode-
mos modificar el nombre por el nombre deseado. Si dejamos el bloque con su nombre
por defecto, no aparecerá pero si lo modificamos, quedará reflejado el nombre. Esto
nos ayudará a comprender qué hace el modelo y detectar fácilmente los posibles erro-
res que cometamos.
El siguiente paso será conectar los diferentes elementos del modelo. Para ello, debe-
remos unir las entradas y salidas de los diferentes bloques. Cada bloque puede tener
una o varias entradas y/o salidas. En nuestro modelo tenemos: el bloque constante
que tiene una única salida, el bloque de suma que tiene dos entradas y una salida y el
bloque de mostrar el valor por pantalla que tiene una única entrada.
Todos los puertos de entrada y salida deben acabar conectados al finalizar el modelo.
Para conectar un puerto podemos arrastrar la flecha del puerto salida del elemento
deseado hasta el puerto de entrada del elemento correspondiente. Vamos a enlazar
los elementos de la forma natural. Cada depósito a un puerto de entrada de la suma,
y el puerto de salida de la suma al elemento display.
Con esto completamos nuestro primer modelo en Simulink. Ahora solo nos queda rea-
lizar la simulación del modelo para obtener los resultados. Para ello, debemos pulsar
el botón run en el bloque de simulate (3) de la figura 3. El resultado final se muestra
en la figura 6. En el podemos ver como el bloque de muestra de resultados nos indica
el resultado esperado.
En esta sección veremos los apartados y los tipos de instrucción elementales que po-
demos encontrar en Simulink. A lo largo del curso, profundizaremos en los elementos
y opciones más importantes e introduciremos algunos avanzados que puedan resultar
de interés.
Bloques matemáticos
En esta pestaña encontraremos todos los bloques relacionados con operaciones ma-
temáticas. Ya sean operaciones elementales como la suma y la resta (bloque Add), el
producto y la división (bloque Product y su variante Divide), el cálculo de funciones
elementales (bloque Math Function) o el valor absoluto (bloque Abs).
Tenemos dos pestañas que nos permitirán introducir dinámica en un sistema según
este sea un sistema continuo o discreto. La primera de las dos pestañas es la pesta-
ña de bloques de dinámica continua (continuous), ver la Figura 8. En ella podremos
introducir diferentes valores para modelar sistemas de ecuaciones que vengan defi-
nidos por ecuaciones diferenciales. El sistema nos permite añadir un integrador nu-
méricos a nuestro modelo para poder implementar la ecuación diferencial (bloques
integrator y Integrator second order). También introduce otras funcionalida-
des como el cálculo de derivas o la inclusión de funciones de transferencia o descrip-
ciones de sistemas mediante el par estado-espacio.
Los bloques de entrada y salida de un modelo nos permiten introducir y leer resultados
de un sistema. Bajo la pestaña de bloques de entrada (source, del inglés fuente) po-
dremos escoger multitud de bloques para introducir señales a nuestro modelo. Hemos
visto el uso de la señal constante (Constant), pero también podemos introducir se-
ñales sinusoidales (Sine Wave), señales escalón (Step), selañes aleatorias (Uniform
Random Number) o escoger variables del Workspace de Matlab (From Workspace o
de un archivo (From File). También tenemos la opción de incluir el bloque clock
que nos permite iniciar una señal con el tiempo interno de la simulación.
Dos bloques importantes que veremos en temas posteriores son el bloque de tierra
(ground) que nos permite indicar que una señal no queda conectada y el bloque de
entrada a un subsistema (in) que nos permite pasar variables a un susbsistema para
clarificar el estado. Tenemos que tener en cuenta, que todas las señales deben iniciar
y terminar en un bloque. Nunca podemos dejar un puerto de entrada sin una señal,
ni una señal sin puerto de entrada.
En cuanto a los bloques de salida (bajo la pestaña sinks, del inglés sumidero) son aque-
llos bloques que nos permiten obtener resultados por patalla (Display) o exportarlos
a otro subsistema (out), fichero (To file) o variable (To Workspace).
Graph.
Al igual que sucedía con las entradas, tenemos una salida a nada bajo el bloque Terminator.
Esto nos permitirá finalizar un hilo que no nos interese de un bloque. Sucederá en si-
tuaciones raras, pero puede ocurrir cuando el bloque en cuestión tenga más de una
salida y únicamente estemos interesados en una de ellas.
3. Añadir bloques a nuestro modelo. Podemos añadir un nuevo bloque a través de los
siguientes métodos:
I Copiando y pegando el bloque (los atajos típicos Ctrl+C, Ctrl+V también fun-
cionan. También podemos arrastrar un bloque con el botón derecho para crear
una copia del mismo.
I Pulsando con el botón izquierdo en el elemento que queremos introducir y des-
pués en Add to model NombreDeMiModelo.
I Usando el atajo de teclado Ctrl+I.
4. Renombrar los bloques. En nuestro ejemplo inicial hemos visto que si pulsamos un
bloque en nuestro modelo nos aparece el nombre resaltado y podemos cambiarlo.
Esta práctica de nuevo nos ayudará a mantener el código fácil de entender y limpio.
Recuerda que no podemos tener dos bloques con el mismo nombre.
5. Implementar el algoritmo. En este paso tendremos que realizar las conexiones ne-
cesarias para implementar el algoritmo. También deberemos dar formato a los di-
ferentes bloques introduciendo sus propiedades.
Para finalizar este tema vamos a realizar algunos modelos sencillos en Simulink para
familiarizarnos con las herramientas y el uso del software.
El teorema de Pitágoras
Ejercicio 1. El primer problema que vamos a abordar es el cálculo de un cateto a
partir de la hipotenusa y el otro cateto de un triangulo rectángulo. Es conocida la
fórmula:
c21 + c22 = h2 .
Vamos a implementar este cálculo en Simulink. Para ello seguiremos los pasos siguien-
5. Unimos los bloques de forma que se calcule la fórmula deseada. Para calcular los
cuadrados vamos a tener que bifurcar una misma señal. Podemos hacer esto vamos
a crear un enlace que una la constante con la primera entrada del producto. Una
vez creado el primer enlace realizamos la bifurcación pulsando y arrastrando con
el botón derecho sobre el enlace hasta la segunda entrada. A continuación unimos
la salida del cuadrado de h a la entrada de la suma del bloque subtraction y el
cuadrado de c2 a la entrada de la resta. La salida de este último bloque va enlazada
al bloque de la raíz y finalmente del bloque de la raíz al Display.
defecto la función que calcula es una exponencial. Sin embargo, si abrimos la interfaz
con una doble pulsación podremos cambiar el tipo de función a realizar. En el desple-
gable Function deberemos buscar la opción Square. Ahora podemos duplicar el blo-
que y cambiar los bloques de producto por este nuevo bloque. De forma que ahora el
modelo quedará como se muestra en la Figura 14.
Siempre que nos sea posible, intentaremos usar un bloque que minimice el número
de entradas y salidas. Así el código Simulink creado será más sencillo de comprender
y explicar.
En próximos temas veremos como generar subsistemas de forma que podamos em-
plear un código generado a modo de función.
ax2 + bx + c = 0.
Una vez tenemos claro el modelo a seguir vamos a implementarlo. Para ello, vamos a
seguir los pasos siguientes:
I Dos bloques de producto por escalar (Math Operation → Gain). Estos blo-
ques sirven para multiplicar por un escalar fijo del modelo. En nuestro caso
configuraremos uno a multiplicar por 4 para conseguir el 4ac y el otro a 2 para
conseguir el 2a del denominador.
I Un bloque de resta (Math Operations → Subtract) para realizar la diferen-
cia del interior de la raíz.
I Un bloque para calcular la raíz (Math Operations →Sqrt).
5. Unimos los bloques de forma que se calcule la fórmula deseada. Deberemos unir
las constantes a y c con el producto. La salida del producto deberá pasar por el
bloque Gain con constante 4 y llegar al primer bloque Subtract en su entrada con
signo negativo. El bloque b deberá conectarse con el bloque Square y éste al primer
bloque Subtract en su entrada con signo positivo. Éste bloque Subtract deberá
conectarse con el bloque de la raíz. La salida del bloque b también deberá bifurcarse
hacia el bloque Unary Minus y de aquí irá a los bloques de Add y Subtract con
entrada positiva que definen el numerador. En la segunda entrada conectaremos
la salida del bloque de la raíz. Conectaremos la salida de estos dos bloques a la
entrada del numerador de los bloques de división respectivos. Para construir el
denominador deberemos bifurcar la señal proveniente de a, pasarla por el bloque
Gain con constante 2 y conectarla a la entrada con el signo de división. Finalmente
conectamos las salidas a los Displays para obtener el resultado.
Figura 15: Modelo de simulink para obtener la solución de una ecuación de segundo
grado a partir de sus coeficientes.
Para ello vamos a considerar la velocidad de salida como (vx , vy ) = (v cos(x), v sin(x)).
A continuación, definiremos la posición en la coordenada x como un movimiento
rectilineo uniforme, de forma que:
x = vx t
y = −gt2 + vy t + y0
Una vez tenemos claro el modelo que queremos desarrollar vamos a implementarlo.
5. Unimos los bloques de forma que se calcule la fórmula deseada. Deberemos unir la
constante θ a las entradas de los bloques seno y coseno. A continuación uniremos
el bloque constante v a la primera entrada de los primeros bloques de producto. La
segunda entrada deberá recibir la salida de las funciones seno y coseno respectiva-
mente. Con esto habremos completado las velocidades iniciales en las coordenadas
x e y. Para crear la evolución de la coordenada x deberemos conectar la salida del
producto asociado al coseno (que nos da vx ) y la salida del bloque de tiempo. Para
la coordenada y deberemos conectar el reloj al bloque que nos da el cuadrado, y
conectar éste al bloque del producto por escalar para obtener el término cuadrá-
tico. Para el término lineal deberemos multiplicar el bloque del producto que nos
Cuando ejecutamos este modelo obtenemos una solución que sobrepasa el límite del
suelo. En temas posteriores vamos a ver estrategias para poder valorar el momento
en el que parar la simulación acorde a alguna de las variables. La Figura 16 muestra el
modelo que acabamos de desarrollar junto con el gráfico generado por la simulación.
Figura 16: Modelo de simulink para obtener la evolución temporal de una bala de
cañón disparada desde una altura de 20 metros con un ángulo de π/4 y una velocidad
inicial de 20m/s.