Está en la página 1de 7

Práctica

INTRODUCCIÓN A MATLAB-SIMULINK
Ingeniería de Sistemas y Automática

Ángel M. Cuenca Lacruz

Julián J. Salt Llobregat

1
1. Objetivo.

El objetivo de esta práctica es familiarizarse con una herramienta científica de grandes


prestaciones como es MATLAB/SIMULINK, que es preciso conocer pues se trata de un
estándar en el cálculo científico actual. El alumno podrá utilizarla opcionalmente a lo largo
del curso para analizar y simular diversos sistemas continuos y discretos. La sintaxis de los
comandos escritos en este entorno se ha transmitido hasta las aplicaciones de simulación
interactiva que será muy utilizada durante este curso, por lo que conviene conocerla.

Para llevar a cabo el objetivo se propondrán sencillos ejercicios que ayudarán al alumno a
adquirir destreza ante dicha aplicación científica.

2. MATLAB.

MATLAB está integrada por funciones aritméticas, comandos, librerías de funciones,


gráficos y macros/funciones de usuario.

Una de sus características más relevantes es que está orientada a matrices (MATrix
LABoraty), es decir, todas las variables se definen como matrices en las que los tipos no es
necesario que se especifiquen. Se trata de un lenguaje interpretado. En concreto, MATLAB es
capaz de trabajar con enteros, reales, complejos y cadenas de caracteres. Además dispone de
variables predefinidas (como la variable pi, entre otras) y de una serie de comandos
específicos que se irán viendo progresivamente a lo largo de la práctica y durante el curso.

Para entrar en el programa hemos de hacer los siguientes pasos: Inicio – UPVNet –
Aplicaciones Científicas – Matlab – Matlab 6.5.1. Una vez dentro de la aplicación vamos a
empezar introduciendo una serie de datos (el símbolo >> es el prompt de la aplicación):

>> A=[1 2 3; 4 5 6; 7 8 9]
>> B=[1 2 3
456
7 8 9]
>> C=[13; 14; 15; 16];

Fijarse como la matriz A y la B son iguales, ya que la forma de definirlas es equivalente.


Fijarse también en el efecto del ; al final de toda la introducción de la variable C.

Combinemos ahora las variables anteriores:

>> A=[A; [10 11 12]]


>> D=[A C]

Comprobemos el resultado de las siguientes instrucciones, las cuales nos sirven para
acceder a diferentes elementos de la matriz D:

>> D(2,3)
>> D(2,:)
>> D(:,2)
>> D(1:2, 3:4)
2
Trabajemos ahora con diferentes comandos relativos a variables y veamos sus
consecuencias:
>> who
>> whos
>> save prueba.mat A
>> clear A
>> whos
>> load prueba.mat
>> whos

Para saber más de cada comando presentado (y de otros cualesquiera) utiliza la orden
help seguida del nombre del comando a consultar. La orden help es de gran utilidad puesto
que hace un breve resumen del uso del comando, así como informa de la sintaxis a utilizar. El
símbolo ? de la barra de menú también conduce a un help, el cual es más interactivo y útil
cuando se busca la existencia o no de cierto comando.

Informarse de cuáles son los operadores aritméticos y de relación que usa MATLAB.
Para ello teclea help ops. Después comprobar el efecto de estas instrucciones:

>> A+B
>> A*B
>> C’
>> A<5
>> A>5

Hágase lo mismo con help lang en el que se encuentran los constructores que usa
MATLAB.

• Ejercicio 1: En base a dichos constructores impleméntese una sencilla macro de


ejemplo que realice el factorial de un número pedido al usuario. Para realizarla es
necesario un editor ascii. MATLAB cuenta con uno, el cual se habilita al teclear la
orden edit. Por tanto, implementar la macro dentro del editor y después guardarla con
el nombre factorial.m. Seguidamente teclear en el prompt el nombre factorial para
habilitar dicha macro. Observar que el resultado es correcto.

Además de la macros, MATLAB permite implementar funciones. Tanto las macros como
las funciones sirven para automatizar la ejecución sucesiva de varios comandos, pero se
diferencian en que las funciones permiten parámetros de entrada y salida (cosa que no hacen
las macros). Por tanto, dependiendo del uso que se les quiera dar, se utilizarán unas u otras.

• Ejercicio 2: Se propone pasar a función la macro anterior, de tal forma que tenga un
parámetro de entrada (número a calcular su factorial) y otro de salida (resultado del
factorial). Guardarla como factorial2.m y llamarla desde el prompt. Observar que el
resultado es correcto.

3
3. SIMULINK.

SIMULINK es un paquete gráfico para el diseño asistido por ordenador de sistemas


físicos (CACSD). Para entrar en él se debe teclear el comando simulink en el prompt de
MATLAB o bien pinchar en el botón que lo representa en la barra de menú.

Al entrar en SIMULINK se abre una ventana. Se trata de la librería de SIMULINK, la


cual está compuesta por diferentes elementos enmarcados bajo diversas categorías. Así, en la
categoría Simulink se encuentra, entre otras, las subcategorías siguientes: sources (fuentes),
sinks (sumideros), discrete (sistemas discretos lineales), continuous (sistemas continuos
lineales), nonlinear (sistemas continuos no lineales) y math (elementos matemáticos).

Para empezar a diseñar un esquema SIMULINK se ha de abrir una ventana nueva (icono
superior izquierda de la librería SIMULINK). Para realizar dicho diseño uniremos diferentes
elementos de la librería, tras ser arrastrados con el ratón hacia la ventana del modelo. En dicha
ventana del modelo es interesante mencionar la opción Simulation de la barra de menú, ya que
dentro de ésta está la opción Parameters, la cual nos servirá para definir los parámetros de
simulación de nuestro modelo. En concreto, en la pestaña Solver tenemos los siguientes
parámetros de relevancia:

- Start time y Stop time: parámetros de inicio y fin de simulación.

- Type: indica el tipo de sistema a simular (variable-step para sistemas continuos y


fixed-step para sistemas discretos). En el caso de variable-step se habilita los cuadros
max step size e initial step size (por defecto a auto) que marcan el periodo de
muestreo máximo e inicial (respectivamente) a utilizar para la simulación, y los
cuadros relative tolerance y absolute tolerance que fijan la tolerancia elegida para la
ejecución de los algoritmos de simulación utilizados (cuadro que está a la derecha de
Type). En el caso de fixed step se habilita el cuadro de fixed step size que define el
periodo de muestreo del sistema discreto (por defecto a auto).

Para una información más detallada de estos parámetros hacer uso del help de la ventana
Simulation parameters.

• Ejercicio 3:
a) Montar un esquema SIMULINK que conste de un generador de señales (signal
generator) y un visualizador de señal (scope). Define los parámetros de ambos
elementos, de tal forma que el generador de señal genere una onda senoidal de
amplitud la unidad y de frecuencia 2 Hertz, y el visualizador mantenga sus
parámetros por defecto. Ejecutar la simulación indicando un max step size e initial
step size a 0.01 y observar la salida en el visualizador.

b) Añade a ese esquema otro enlace compuesto por una ganancia (gain) y otro
visualizador (este se puede obtener pinchando el ratón con el botón derecho sobre
el scope que ya tenemos y, tras ello, arrastrar al lugar que queramos). Simula el
esquema dándole diferentes valores (negativos, positivos y nulo) a la ganancia.
Observa los resultados que presentan los visualizadores.

4
c) Implementa ahora un esquema en el que la salida que proviene directamente del
generador y la proveniente del amplificador salgan por el mismo visualizador. Para
ello ayúdate de un multiplexador de señal (mux). Obtén también la salida en una
variable llamada yout, a través de un bloque to workspace. Simula el sistema y
observa que la salida del visualizador y la correspondiente a plotear la variable
yout desde el prompt de MATLAB (comando plot(yout)) son idénticas.
Comprueba las características de la variable yout desde el entorno MATLAB. Haz
uso de los comandos grid y zoom para la visualización de la variable ploteada.

4. MATLAB-SIMULINK PARA EL CONTROL DE PROCESOS CONTINUOS Y


DISCRETOS.

La herramienta Matlab junto con Simulink nos permite simular de manera sencilla sistemas de
control de diversa naturaleza. En esta parte de la práctica se va a mostrar cómo hacerlo
posible. Para ello se van a considerar sistemas continuos y discretos, presentándolos en
diferentes configuraciones (bucle abierto (ba) y bucle cerrado (bc)).

• Ejercicio 4: Sistemas Continuos en ba.

En este ejercicio el objetivo es simular la respuesta en ba del modelo de primer orden


continuo de una red RC (visto en clase de teoría) ante varias entradas diferentes (impulso,
escalón y rampa). Para ello tendrás que formar en primer lugar un esquema Simulink como el
que se muestra a continuación:

1
0.1s+1
Pulse RC=0.1 ba
Generator3

1
0.1s+1
Step1 RC=0.1 ba1

1
0.1s+1
Ramp RC=0.1 ba2

Recuerda que las entradas al sistema puedes encontrarlas en la librería Sources. Configura
correctamente cada una para hacer posible su funcionalidad, según las definiciones vistas en
teoría. Si lo necesitas, haz uso del botón de ayuda (Help), el cual se encuentra en la ventana
que surge tras dar doble click sobre el bloque seleccionado. Por otro lado, el bloque que
define al modelo lo podrás obtener en la librería Continuous y las respuestas las podrás ver
con el bloque Scope de la librería Sinks.

5
En segundo lugar, para hacer esto con órdenes de Matlab debes recurrir a la orden impulse
(para el impulso) y step (para escalón). Para rampa no existe una orden asociada en Matlab.
Introduce los valores del modelo en estos casos de la siguiente manera: impulse(1,[0.1 1]).
Comprueba que las respuestas obtenidas ahora coinciden con las obtenidas anteriormente con
Simulink.
• Ejercicio 5: Sistemas Continuos en bc.

En este ejercicio el objetivo es simular la respuesta en bc del modelo de primer orden


continuo de la red RC del ejercicio anterior para una referencia escalón unitario. Se va a
considerar el modelo en bc y en bc con ganancia de realimentación. Para ello tendrás que
formar en primer lugar un esquema Simulink como el que se muestra a continuación:

1
0.1s+1
Step3 Transfer Fcn3 bc1

1
5
0.1s+1
Step2 Gain1 Transfer Fcn2 bc

Recuerda que los bloques Sum (nudo sumador) y Gain (ganancia) los puedes encontrar en la
librería Math.

En segundo lugar, para hacer esto con órdenes de Matlab debes recurrir fundamentalmente a
la orden feedback. Si haces un help de feedback verás que esta orden trata con modelos
definidos como funciones de transferencia (fdt). Por tanto, lo primero es definir el modelo de
la red RC como una fdt por medio de la orden tf (consúltala con help). Después ya, recurre a
feedback para definir el modelo en bc e introdúcele un escalón unitario. En definitiva, debes
seguir estos pasos desde el prompt de Matlab:

sys1 = tf(1,[0.1 1])


sys = feedback(sys1,1)
step(sys)

Repítelo ahora para el caso de tener una ganancia de realimentación de valor 5.

• Ejercicio 6: Sistemas Discretos en ba y bc.

El objetivo en este ejercicio es discretizar la fdt continua considerada en los ejercicios


anteriores y simular el comportamiento en ba y bc del sistema discreto resultante. Para ello
has de seguir los mismos pasos que en los ejercicios precedentes teniendo en cuenta que:
6
a) En Simlink: el bloque que define al modelo ahora lo podrás obtener en la librería
Discrete. Para utilizarlo correctamente, primero tienes que discretizar el sistema continuo.
Utiliza la orden c2d desde Matlab, la cual te devolverá el sistema discreto a introducir en
el bloque de Simulink.. Si le haces un help verás que hay diferentes métodos de
discretización y que debes elegir un periodo de muestreo (T). Considera el método de
ZOH (Zero Order Hold) y un T=0.01 seg. Recuerda que la fdt continua ya la tienes
definida del ejercicio anterior (sys1).

b) En Matlab: en vez de utilizar impulse y step utiliza dimpulse y dstep, que son las órdenes
especificas para sistemas discretos.

Para finalizar, comprueba que si en los diagramas de bloques de Simulink hechos en los
ejercicios 4 y 5 (de sistemas continuos) antepones un bloque ZOH al modelo del sistema
(definido al periodo T considerado), las respuestas coinciden con las de este ejercicio 6.