School report (Butterfly design) - Universidad Nacional de Tucumán

Anuncio
Introducción a
MATLAB y
Simulink
por
Ing. Miguel G. Alarcón
Cátedra de Sistemas de Control
Facultad de Ciencias Exactas y Tecnología
Universidad Nacional de Tucumán
CONTENIDO
INTRODUCCIÓN A MATLAB ..................................................................................................................... 2
EL ENTORNO DE MATLAB ....................................................................................................................... 2
DEFINICIÓN DE MATRICES DESDE TECLADO ................................................................................................ 5
DEFINICIÓN DE FUNCIONES DE TRANSFERENCIA ......................................................................................... 7
EJEMPLO 1: ...................................................................................................................................... 9
ÁLGEBRA DE BLOQUES - DETERMINACIÓN DE LA FT ................................................................................. 11
EJEMPLO 2: .................................................................................................................................... 11
DESARROLLO EN FRACCIONES PARCIALES ............................................................................................... 12
EJEMPLO 3: .................................................................................................................................... 13
REPRESENTACIÓN DE POLOS Y CEROS ...................................................................................................... 13
EJEMPLO 4: .................................................................................................................................... 13
RESPUESTA TRANSITORIA DE UN SISTEMA ............................................................................................... 14
RESPUESTA AL ESCALÓN UNITARIO ..................................................................................................... 14
RESPUESTA AL IMPULSO UNITARIO ...................................................................................................... 14
EJEMPLO 5: .................................................................................................................................... 14
RESPUESTA EN FRECUENCIA DE UN SISTEMA ............................................................................................ 15
REPRESENTACIÓN LOGARITMICA ......................................................................................................... 16
REPRESENTACIÓN POLAR ................................................................................................................... 16
EJEMPLO 6: .................................................................................................................................... 17
SIMULINK ............................................................................................................................................ 18
EJEMPLO 7: .................................................................................................................................... 27
1
INTRODUCCIÓN A MAT LAB
MATLAB es el nombre abreviado de “MATrix LABoratory”. MATLAB es un programa para realizar
cálculos numéricos con vectores y matrices. Como caso particular puede también trabajar con números
escalares −tanto reales como complejos−, con cadenas de caracteres y con otras estructuras de información
más complejas. Una de las capacidades más atractivas es la de realizar una amplia variedad de gráficos en
dos y tres dimensiones. MATLAB tiene también un lenguaje de programación propio.
MATLAB dispone de un código básico y de varias librerías especializadas (toolboxes). En estos apuntes se
hará referencia exclusiva al código básico y al Control Systems Toolbox. MATLAB se puede arrancar como
cualquier otra aplicación de Windows, haciendo doble click en el icono correspondiente en el escritorio o por
medio del menú Inicio).
SIMULINK es una función de MATLAB que permite el diseño y análisis de sistemas, a partir de
representaciones gráficas como diagramas de bloques.
EL ENTORNO DE MATLAB
Al ingresar a MATLAB se visualizará una ventana, en la cual se podrán observar las siguientes partes
principales:
Barra de tareas: En la barra de tareas encontrará los comandos básicos de todo programa, nuevo, abrir,
copiar, pegar, etc. Pero aparece un nuevo icono, el icono de SIMULINK el cual abre dicha función. Tambien
es posible invocarla tipeando en la ventana de comandos simulink.
Barra de direcciones: En la misma se podrá seleccionar la carpeta en la que se desea trabajar. Por defecto
esta posicionada en C:\Mis Documentos\MATLAB.
2
Indicador de Estado: Indica el estado de operación de MATLAB puede indicar “Ready” o “Busy” esto
avisa al usuario cuando el programa está listo para una nueva operación.
Ventana de comandos: En la misma se ingresarán y visualizarán, por parte del usuario, las funciones y/o
variables.
3
Carpeta Actual: En la misma se visualizan las subcarpetas, archivos y funciones contenidas en la carpeta
seleccionada en la barra de direcciones.
Espacio de Trabajo: En esta ventana se observan todas las variables activas en el espacio de trabajo, dichas
variables podrán ser matrices, vectores, cadenas de caracteres, estructuras, etc.
4
Historial de Comandos: Se visualizan con fecha y hora las funciones u operaciones realizadas en la ventana
de comandos.
DEFINICIÓN DE MATRICES DESDE TECLADO
Como en casi todos los lenguajes de programación, en MATLAB las matrices y vectores son variables que
tienen nombres. Ya se verá luego con más detalle las reglas que deben cumplir estos nombres. Por el
momento se sugiere que se utilicen letras mayúsculas para matrices y letras minúsculas para vectores y
escalares (MATLAB no exige esto, pero puede resultar útil).
Para definir una matriz no hace falta declararlas o establecer de antemano su tamaño (de hecho, se puede
definir un tamaño y cambiarlo posteriormente). MATLAB determina el número de filas y de columnas en
función del número de elementos que se proporcionan (o se utilizan). Las matrices se definen o introducen
por filas; los elementos de una misma fila están separados por blancos o comas, mientras que las filas están
separadas por caracteres punto y coma (;). Por ejemplo, el siguiente comando define una matriz A de
dimensión (3×3):
>> A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es la siguiente:
A =
1 2 3
4 5 6
7 8 9
A partir de este momento la matriz A está disponible para hacer cualquier tipo de operación con ella (además
de valores numéricos, en la definición de una matriz o vector se pueden utilizar expresiones y funciones
matemáticas). Por ejemplo, una sencilla operación con A es hallar su matriz traspuesta.
5
En MATLAB el apóstrofe (') es el símbolo de transposición matricial. Para calcular A' (traspuesta de A)
basta teclear lo siguiente (se añade a continuación la respuesta del programa):
>> A'
ans =
1 4 7
2 5 8
3 6 9
Como el resultado de la operación no ha sido asignado a ninguna otra matriz, MATLAB utiliza un nombre de
variable por defecto (ans, de answer), que contiene el resultado de la última operación. La variable ans puede
ser utilizada como operando en la siguiente expresión que se introduzca. También podría haberse asignado el
resultado a otra matriz llamada B:
>> B=A'
B =
1 4 7
2 5 8
3 6 9
Ahora ya están definidas las matrices A y B, es posible seguir operando con ellas. Por ejemplo, se puede
hacer el producto B*A (deberá resultar una matriz simétrica):
>> B*A
ans =
66 78 90
78 93 108
90 108 126
En MATLAB se accede a los elementos de un vector poniendo el índice entre paréntesis (por ejemplo x(3) ó
x(i)). Los elementos de las matrices se acceden poniendo los dos índices entre paréntesis, separados por una
coma (por ejemplo A(1,2) ó A(i,j)). Las matrices se almacenan por columnas (aunque se introduzcan por
filas, como se ha dicho antes), y teniendo en cuenta esto puede accederse a cualquier elemento de una
matriz con un sólo subíndice. Por ejemplo, si A es una matriz (3×3) se obtiene el mismo valor escribiendo
A(1,2) que escribiendo A(4).
Invertir una matriz es casi tan fácil como trasponerla. A continuación se va a definir una nueva matriz A -no
singular- en la forma:
>> A=[1 4 -3; 2 1 5; -2 5 3]
A =
1 4 -3
2 1 5
-2 5 3
Ahora se va a calcular la inversa de A y el resultado se asignará a B. Para ello basta hacer uso de la función
inv( ) (la precisión o número de cifras con que se muestra el resultado se puede cambiar con el menú
File/Preferences/General):
>>B=inv(A)
B =
0.1803 0.2213 -0.1885
0.1311 0.0246 0.0902
-0.0984 0.1066 0.0574
6
Para comprobar que este resultado es correcto basta pre-multiplicar A por B;
>> B*A
ans =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
De forma análoga a las matrices, es posible definir un vector fila x en la forma siguiente (si los tres números
están separados por blancos o comas, el resultado será un vector fila):
>> x=[10 20 30] % vector fila
x =
10 20 30
Por el contrario, si los números están separados por puntos y coma (;) se obtendrá un vector columna:
>> y=[11; 12; 13] % vector columna
y =
11
12
13
MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Por ejemplo, si se intenta
sumar los vectores x e y se obtendrá el siguiente mensaje de error:
>> x+y
??? Error using ==> +
Matrix dimensions must agree.
Estas dificultades desaparecen si se suma x con el vector transpuesto de y:
>> x+y'
ans =
21 32 43
MATLAB considera vectores fila por defecto, como se ve en el ejemplo siguiente:
>> x(1)=1, x(2)=2
x =
1
x =
1 2
DEFINICIÓN DE FUNCIONES DE TRANSFERENCIA
En MATLAB una función de transferencia se describe de tres formas posibles:

Utilizando dos vectores filas, cada uno de los cuales contiene los coeficientes del numerador y del
denominador respectivamente. Para esto se utiliza la función tf (transfer function) cuya sintaxis es la
siguiente:
>>sys=tf(num,den)
7

Utilizando dos vectores columnas y un escalar, donde cada vector contendrá las posiciones de los
ceros y polos respectivamente, y el escalar será el valor de la ganancia. Para ello se utiliza la función
zpk, cuya sintaxis es la siguiente:
>>sys=zpk(zeros,poles,gain)

Utilizando cuatro matrices, cada matriz se corresponderá a las utilizadas en la representación
mediante variables de estados. La función a utilizar es ss, la sintaxis:
>>sys=ss(a,b,c,d)
Muchas veces una función de transferencia que se especificó como una razón de polinomios debe convertirse
a una forma que se especifica por los valores de los polos, ceros y un factor de ganancia o a la forma de
variables de estados y viceversa. Para estas conversiones MATLAB permite utilizar las tres funciones antes
vistas y además proporciona seis funciones específicas para cada conversión.

tf2zp Convierte la función de transferencia expresada como una razón de polinomios, en la forma
polos-ceros y la sintaxis es la siguiente:
>>[z,p,k]=tf2zp(num,den)

zp2tf Convierte una función de transferencia expresada en la forma polos-ceros, a una razón de
polinomios, la sintaxis es la siguiente:
>>[num,den]=zp2tf(z,p,k)

tf2ss Convierte una function de transferencia expresada como una razón de polinomios, a la
representación mediante variables de estados. La sintaxis es la siguiente:
>>[A,B,C,D]=tf2ss(num,den)

ss2tf Convierte una function de transferencia expresada en la forma variables de estados, a una
razón de polinomios. La sintaxis:
>>[num,den]=ss2tf(A,B,C,D)

zp2ss Convierte una función de transferencia expresada en la forma polos-ceros, a la representación
mediante variables de estados. La sintaxis es la siguiente:
>>[A,B,C,D]=zp2ss(zeros,poles,gain)

ss2zp Convierte una función de transferencia expresada en variables de estados, a la forma polosceros. La sintaxis es la siguiente:
>>[z,p,k]=ss2zp(A,B,C,D)
Como se observa las variables de salida se sitúan en el lado izquierdo de la línea de comando, y los
argumentos de entrada se incluyen con la función en el lado derecho.
8
EJEMPLO 1:
Dada la siguiente función de transferencia, ingrésela en MATLAB y encuentre la representación en variables
de estados.
( )
(
(
)(
)
)(
)
Ingresando como razón de polinomios:
>>num=[0 0 40 800];
>>den=[1 22 180 800];
>>Htf=tf(num,den)
Transfer function:
40s+800
------------------s^3+22s^2+180s+800
Ingresando en la forma polos-ceros:
>>zero=[-20];
>>poles=[-12.8 -4.6-j6.4 -4.6+j6.4];
>>k=40;
>>Hzp=zpk(zero,poles,k)
Zero/pole/gain:
40(s+20)
-----------------------(s+12.8)(s^2+9.2s+62.12)
A partir de estas representaciones, se calculará las matrices de la representación en variables de estados,
utilizando las funciones ss, tf2ss y zp2ss:
>>Hss1=ss(Htf)
a =
x1
x2
x3
x1
-22 -11.25
-6.25
x2
16
0
0
x3
0
8
0
b =
u1
x1
4
x2
0
x3
0
c =
x1
x2
x3
y1
0 0.625 1.563
d =
u1
y1
0
Continuous-time model.
9
>>Hss2=ss(Hzp)
a =
x1
x2
x1
-4.6
6.4
x2
-6.4
-4.6
x3
0
0
b =
u1
x1
0
x2
0
x3
8
c =
x1
x2
y1 7.453 3.097
d =
u1
y1
0
x3
0
1.614
-12.8
x3
0
Continuous-time model.
>>[A,B,C,D]=tf2ss(num,den)
A =
-22 -180 -800
1
0
0
0
1
0
B =
1
0
0
C =
0
40
800
D =
0
>>[A1,B1,C1,D1]=zp2ss(zero,poles,k)
A1 =
-12.8000
0
0
7.2000
-9.2000
-7.8816
0
7.8816
0
B1 =
1
1
0
C1 =
0
0
5.0751
D1 =
0
10
Como se observa las representaciones en variables de estados difieren de acuerdo a qué forma se utiliza para
el cálculo, esto es debido a que al tratarse de una transformación lineal dependerá del espacio de estados que
se tome, MATLAB toma distintos espacios de estados para ss, tf2ss y zp2ss. Pero es importante recalcar que
las representaciones son correctas.
ÁLGEBRA DE BLOQUES - DETERMINACIÓN DE LA FT
La función de transferencia de un grupo interconectado de bloques se puede determinar con las siguientes
instrucciones:

series Calcula la función de transferencia de dos bloques que se encuentran en cascada. Las sintaxis
posibles son:
>>sys=series(sys1,sys2)
>>[num,den]=series(num1,den1,num2,den2)

parallel Calcula la función de transferencia de dos bloques en paralelo. Las sintaxis posibles son:
>>sys=parallel(sys1,sys2)
>>[num,den]=parallel(num1,den1,num2,den2)

cloop Calcula numerador y denominador de la función de transferencia del arreglo canónico con
realimentación unitaria. La sintaxis es la siguiente:
>>[num,den]=cloop(numg,deng,-1)
Lazo negativo
>>[num,den]=cloop(numg,deng,1)
Lazo positivo

feedback Calcula la función de transferencia del arreglo canonico con realimentación no unitaria.
Las sintaxis son:
>>sys=feedback(sysg,sysh,-1)
Lazo negativo
>>sys=feedback(sysg,sysh,1)
Lazo positivo
>>[num,den]=feedback(numg,deng,numh,denh,-1)
Lazo negativo
>>[num,den]=feedback(numg,deng,numh,denh,1)
Lazo positivo
EJEMPLO 2:
Dado el siguiente diagrama de bloques, encuentre la función de transferencia ( ).
r(t)
+
0.4
-
+
-
. 100 .
s(s+2)
. s .
s(s+2)
1º Paso: Ingreso de las funciones de transferencia de los bloques
>>G=tf([0 0 100],[1 2 0]);
11
y(t)
>>H=tf([0 1 0],[1 2 0]);
>>K=0,4;
2º Paso: Resolucion del primer arreglo canonico
>>AC1=feedback(G,H,-1)
Transfer function:
100 s^2 + 200 s
--------------------------s^4 + 4 s^3 + 4 s^2 + 100 s
3º Paso: Resolución de la cascada de bloques en el camino directo
>>BS=series(K,AC1)
Transfer function:
40 s^2 + 80 s
--------------------------s^4 + 4 s^3 + 4 s^2 + 100 s
4º Paso: Calculo de la funncion de transferencia
>>TF=feedback(BS,1,-1)
Transfer function:
40 s^2 + 80 s
---------------------------s^4 + 4 s^3 + 44 s^2 + 180 s
Otra manera de calcular la funcion de transferencia habría sido:
>>[numtf,dentf]=cloop(BS.num{1},BS.den{1})
numtf =
0
0
40
80
0
dentf =
1
4
44
180
0
DESARROLLO EN FRACCIONES PARCIALES
El comando para el desarrollo de una función, en la variable de Laplace, en fracciones parciales es residue y
la sintaxis es la siguiente:
>>[r,p]=residue(num,den)
La salida p contiene los polos de la función y la salida r contiene los residuos a los polos correspondientes.
12
EJEMPLO 3:
Dada la siguiente función, encuentre los residuos para realizar la expansión en fracciones parciales:
( )
>>[r,p]=residue([0 0 0 40 800],[1 22 180 800 0])
r =
-0.2044
-0.3978 + 0.4877i
-0.3978 - 0.4877i
1.0000
p =
-12.8306
-4.5847 + 6.4290i
-4.5847 - 6.4290i
0
REPRESENTACIÓN DE POLOS Y CEROS
Para graficar los polos y ceros de una función de transferencia, MATLAB utiliza la función pzmap. Las
posibles sintaxis son las siguientes:
>>pzmap(sys1,sys2,…..,sysn)
>>pzmap(num1,den1,num2,den2,….,numn,denn)
EJEMPLO 4:
Para la función del ejemplo 3 realice la grafica de polos y ceros.
>>pzmap([0 0 0 40 800],[1 22 180 800 0])
Pole-Zero Map
8
6
4
Imaginary Axis
2
0
-2
-4
-6
-8
-20
-18
-16
-14
-12
-10
Real Axis
13
-8
-6
-4
-2
0
RESPUESTA TRANSITORI A DE UN SISTEMA
Respuestas transitorias (tales como respuesta a un salto o entrada escalón y respuesta impulsional) se utilizan
frecuentemente para investigar las características en el dominio temporal de los sistemas.
MATLAB permite calcular y visualizar dichas respuestas mediante el uso de funciones preestablecidas.
RESPUESTA AL ESCALÓN UNIT ARIO
La respuesta al escalón unitario se obtiene medianta la función step, dicha función posee distintas sintaxis de
acuerdo a los datos que se deseen obtener y los datos ingresados.
Si lo que se desea obtener es unicamente la grafica de la respuesta la sintaxis es:
>>step(sys)
En el caso de que se desee obtener los puntos que conforman la grafica para realizar una tabla de analisis, la
sintaxis será:
>>[y,t]=step(sys)
RESPUESTA AL IMPULSO UNIT ARIO
La respuesta al impulso unitario se obtiene mediante la función impulse, al igual que la función step esta
posee diferentes sintaxis:
Cuando solo se desea obtener la grafica de la respuesta:
>>impulse(sys)
Cuando se desean los valores para confeccionar una tabla:
>>[y,t]=impulse(sys)
EJEMPLO 5:
Dada la siguiente función de transferencia calcule y grafique las respuestas al escalón y al impulso unitario:
( )
( )
>>sys=tf([0 0 40 800],[1 22 180 800]);
>>[yi,ti]=impulse(sys); %Calcula los puntos para la tabla
>>[ye,te]=step(sys);
%Calcula los puntos para la tabla
>>impulse(sys)
%Grafica la respuesta
14
>>figure %Abre una nueva ventana gráfica
>>step(sys) %Grafica la respuesta
RESPUESTA EN FRECUENCIA DE UN SISTEMA
Con el termino respuesta en frecuencia, se quiere decir la respuesta en estado estacionario de un sistema a
una entrada senoidal. En los metodos de respuesta en frecuencia, variamos la frecuencia de la señal de
entrada en un cierto rango y estudimos la respuesta resultante.
Una ventaja del metodo de la respuesta en frecuencia es que los test son en general simples y pueden hacerse
de forma precsa mediante el empleo de generadores de ondas senoidales y buenos equipos de medida.
15
La función de transferencia senoidal, una función compleja dependiente de la frecuencia w, se caracteriza por
su magnitud y angulo de fase, con la frecuencia como parametro. Hay dos representaciones comunmente
utilizadas para las funciones de transferencia senoidales:


Representación Logaritmica
Representación Polar
REPRESENTACIÓN LOGARITMICA
Una función de transferencia senoidal se puede representar en dos diagramas separados, uno que da la
magnitud respecto de la frecuencia y otro que da el angulo de fase tambien respecto a la frecuencia.
Para el calculo y visualización de la respuesta en frecuencia en forma logaritmica MATLAB utiliza la
función bode la cual proporciona las graficas correspondientes a la representación logaritmica o en caso de
desear solo los valores de magnitud y angulo de fase tambien lo hace posible.
Si lo que se desea es obtener la grafica de respuesta en frecuencia, la sintaxis es:
>>bode(sys)
Si se desea obtener las tablas de valores, la sintaxis es:
>>[mag,fase,w]=bode(sys)
Las matrices mag y fase contienen las magnitudes y los angulos de fase de la respuesta en frecuencia del
sistema evaluados en los puntos de frecuencia utilizados por MATLAB (estos puntos tambien pueden ser
especificados por el usuario). El angulo de fase se devuelve en grados.
REPRESENTACIÓN POLAR
Mientras que las representación logaritmica es una representación rectangular con dos diagramas separados,
la representacion polar agrupa toda la información en un unico diagrama. Para la construccion de este
diagrama es posible obrar de dos maneras diferentes:

Realizar el diagrama polar a partir de los datos obtenidos de la función bode, para esto se debe
convertir la información de fase a radianes y se utilizará la función grafica polar. Para esto la
sintaxis será:
>>frad=(fase(1,:).*pi)./180;
>>polar(frad,mag(1,:))

Utilizar la función nyquist, a partir de cualquier función de transferencia la función nyquist permite
al usuario calcular o vizualizar la respuesta en frecuencia.
Si solo se desea obtener el diagrama polar, la sintaxis será:
>>nyquist(sys)
Si ademas se desea obtener la tabla de valores correspondientes:
>>[real,imag,w]=nyquist(sys);
16
EJEMPLO 6:
Dada la siguiente función de transferencia calcule y grafique, en forma logarítmica y en forma polar, la
respuesta en frecuencia:
( )
( )
>>sys=tf([0 0 40 800],[1 22 180 800]);
>>[mag,fase,w]=bode(sys);
>>frad=(fase(1,:).*pi)./180;
>>bode(sys)
>>figure
>>polar(frad,mag(1,:))
>>figure
>>nyquist(sys)
17
SIMULINK
SIMULINK es un programa de simulación tanto continua como discreta que se encuentra en el entorno
MATLAB. Por tanto para acceder a él basta con invocarlo desde la ventana de comandos de MATLAB, por
supuesto asegurándose antes de encontrarse en el directorio de trabajo. La sintaxis será:
>>simulink
Una vez hecho esto aparece la ventana libreria de SIMULINK que tiene el siguiente aspecto:
18
Lo primero que se debe hacer es abrir una ventana de trabajo que puede ser nueva o existir previamente. Para
el caso de que se desee crear un nuevo archivo de trabajo se procede como se indica en la figura.
Con lo que obtendremos una ventana vacía como se observa en la siguiente figura:
19
Lo primero que podemos necesitar es una fuente de señal, entonces seleccionamos las fuentes (Sources) en la
libreria de SIMULINK.
Con esto aparecerá otra ventana con todas las fuentes de señal disponibles. En este ejemplo se selecciona con
el ratón el generador de señales genérico (signal generator) y se arrastra hasta situarlo sobre la ventana de
trabajo.
Para poder ver la señal recurriremos a un sumidero de señal (Sinks) que seleccionaremos en la libreria de
SIMULINK. Igual que antes aparecerá una ventana con todos los sumideros disponibles, de la que
seleccionaremos el visor (Scope) y lo arrastraremos con el ratón hasta la ventana de trabajo.
20
Ya únicamente falta unir la fuente con el sumidero, lo que se hace pulsando con el ratón sobre la pequeña
flecha de salida del bloque inicial y arrastrando hasta la flecha de llegada del bloque destino.
Para ejecutar la simulación desplegar Simulation y Start. Ver el resultado de la simulación en el scope.
Notar que existe una barra de opciones para realizar zoom en ambos ejes o hacer un autoajuste de escala
(seleccionar el botón de prismáticos).
21
El scope está mostrando la onda de señal producida por el generador de señales. Pero es posible cambiar la
señal. Basta con seleccionar con el ratón el bloque del generador de señales. A1 hacer esto aparece la pantalla
del generador en la que se puede especificar el tipo de señal que se desea generar.
De forma que si se modifica la frecuencia de la onda senoidal a 0.1 Hz y su amplitud a 2, por ejemplo, y se
vuelve a lanzar la simulación se obtendrá la siguiente salida:
22
Pero SIMULINK ofrece además otras posibilidades, una de ellas es la de interaccionar con MATLAB. Por
ejemplo, para pasar los resultados de la simulación a MATLAB basta con seleccionar otro sumidero (Sinks)
del tipo correspondiente tal como se muestra en la figura (To Workspace). Para realizar una bifurcación
situarse en la línea y pulsar <ctrl> junto con el botón izquierdo de ratón.
Luego se abre las propiedades del bloque To Workspace y se especifica el nombre del vector en el que se
quieren almacenar los resultados (senial), su dimensión máxima (inf) y el formato (Array).
23
Para poder representar los datos en MATLAB también será necesario otro vector con los tiempos en los que
se ha tomado cada dato (Clock en Sources). Esto se puede realizar de dos maneras:

24
Utilizar la fuente Clock y un nuevo bloque To Workspace como lo muestra la siguiente figura.

Configurar SIMULINK para que siempre envie al Workspace un arreglo con los valores del tiempo
de medición. Esto se realiza ingresando a el menú Simulation->Configuration Parameters como lo
muestra la figura:
Donde se desplegará una nueva ventana y se deberá configurar en la sección Data Import/Export
que se envie el tiempo hacia el Workspace, como se observa en la figura:
25
Una vez finalizada la simulación se podrán representar los datos utilizando comandos de MATLAB. Con lo
que se obtendrán gráficas de MATLAB.
En SIMULINK se pueden realizar simulaciones más complejas. Por ejemplo la de un sistema mecánico
representado por su función de transferencia continua. En este caso existen varios bloques nuevos:
a.
b.
c.
d.
e.
Entradas escalón, rampa, generador de pulsos, senoidales (en Sources)
Sumadores (Sum en Commonly used blocks): que suman o restan varias señales
Constantes (Constant o Gain en Commonly used blocs): multiplican la señal por una constante.
Funciones de transferencia (Transfer Fcn en Continuous): definen la señal de salida en función de la
señal de entrada. Están expresadas como el cociente de la transformada de Laplace de la salida y la
entrada, en la variable compleja s. Entre corchetes se introducen los coeficientes de numerador y del
denominador.
Multiplexor (Mux en Signal Routing): acepta varias señales de entrada y selecciona un salida
multiplexada. Se suele utilizar para superponer en el scope varias señales a la vez.
Seleccionando un bloque con el botón derecho del ratón se puede acceder a un menú con diversas opciones,
entre ellas propiedades format, foreground color y background color para cambiar la orientación (Flip Block,
Rotate Block,…) y edición del bloque.
26
EJEMPLO 7:
Realiza el siguiente esquema de bloques y simular, obteniendo función de transferencia, diagrama polosceros, grafica de respuesta al escalón y graficas de respuesta en frecuencia.
1
In1
1
10
s2 +10s+50
s+10
Transfer Fcn
Transfer Fcn1
100
1
Out1
Gain1
0.5
Gain
Una vez montado el sistema, establecidos los parámetros de simulación y guardado (en nuestro caso como
ejemplo7.mdl) se puede comenzar la resolución. Para obtener la función de transferencia, graficar polos y
ceros y obtener las graficas de respuesta en frecuencia; deberemos trabajar en MATLAB a partir de
SIMULINK. Esto se logra mediante la función linmod cuya sintaxis es la siguiente:
>>[num,den]=linmod(‘ejemplo7’);
Los vectores num y den corresponden a los coeficientes de los polinomios numerador y denominador
respectivamente. Por lo tanto a partir de estos vectores se podrá graficar los diagramas solicitados:
>>pzmap(num,den)
>>figure
>>step(num,den)
27
>>figure
>>bode(num,den)
>>figure
>>nyquist(num,den)
28
Podemos corroborar la respuesta al escalón realizando la simulación en SIMULINK. Tal como se ha definido
el sistema se obtiene la siguiente salida por el scope:
SIMULINK permite también la realización de simulaciones en sistemas discretos. Estas simulaciones se
hacen de forma muy similar a lo visto anteriormente. En el caso de simulaciones discretas habrá que poner
especial atención en la especificación de los tiempos de muestreo y en su consistencia con los pasos de
integración definidos.
29
Descargar