0% encontró este documento útil (0 votos)
38 vistas19 páginas

Matlab 1

El documento introduce conceptos básicos de MATLAB y Simulink relacionados con funciones de transferencia, incluyendo conversión entre representaciones, cálculo de raíces, desarrollo en fracciones simples y uso de comandos.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
38 vistas19 páginas

Matlab 1

El documento introduce conceptos básicos de MATLAB y Simulink relacionados con funciones de transferencia, incluyendo conversión entre representaciones, cálculo de raíces, desarrollo en fracciones simples y uso de comandos.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introduccion a M ATLAB y S IMULINK para Control

Virginia Mazzone

Y C ONTROL I NDUSTRIAL I NGENIER I A EN A UTOMATIZACI ON [Link] Av. Calchaqui 5800, Fcio. Varela Buenos Aires, Argentina

Indice

a M ATLAB y S IMULINK - 1 Introduccion

Indice
1. Introduccion a M ATLAB de una funcion transferencia 1.1. Conversion 1.2. Ra ces de un polinomio . . . . . . . . . . . 1.3. Desarrollo en fracciones simples . . . . . transferencia a lazo cerrado . . . 1.4. Funcion 1.5. Respuesta al impulso . . . . . . . . . . . . 1.6. Respuesta al escalon . . . . . . . . . . . . 1.7. Gr acos . . . . . . . . . . . . . . . . . . . . 2. Introduccion a S IMULINK . . . . . . . . . . . 2.1. Acceso y descripcion transferencia a lazo cerrado . . 2.2. Funcion . . . . . . . . . . . 2.3. Respuesta al Escalon de par 2.4. Utilizacion ametros ya denidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 3 4 6 7 8 9 14 14 15 17 18

1.

a M ATLAB Introduccion

elemental a M ATLAB, destinado a conocer y practicar algunas Este apunte es una introduccion de las operaciones b asicas con funciones de transferencia. Los comandos que utilizaremos son los sobre un comando en particular puede ejecuque guran en la Tabla 1. Para mayor informacion tarse help topic o simplemente help comando, desde la ventana de comando de M ATLAB.

1.1.

de una funcion transferencia Conversion

transferencia puede describirse en M ATLAB utilizando dos vectores las: uno Una funcion para los coecientes del numerador y otro para los coecientes del denominador. A menudo se un sistema conocer la ubicacion de sus polos y ceros; dicha inforrequiere para analizar o disenar est transferencia del sistema. Cuando la funcion de transferencia macion a contenida en la funcion de polinomios, podemos conocer sus polos, ceros y ganancia, o viest a especicada como razon sto son: tf2zp, que de un cociente de polinomios nos ceversa. Los comandos que nos permiten e devuelve los ceros, polos y una ganancia, y zp2tf, que de conocer los polos, ceros y la ganancia de transferencia. de un sistema nos da el numerador y denominador de su funcion transferencia Ejemplo 1. Supongamos la funcion G (s) = 5s + 20 , s2 + 4s + 20

del numerador y factorizamos el denominador utilizando sus ra si sacamos el 5 factor comun ces, nos queda de la forma G (s) = 5(s + 4) . (s + 2 4 j)(s + 2 + 4 j)

Para llevar a cabo lo mismo con M ATLAB, debemos ingresar los polinomios numerador y denominador, en forma de vectores de la siguiente manera: num=[5 20]; den=[1 4 20];

Indice

a M ATLAB y S IMULINK - 2 Introduccion

Comando exp sin cos sinh cosh clf plot subplot hold title xlabel ylabel text print figure impulse step tf zpk ss2tf tf2zp ss2zp zp2tf tf2ss zp2ss

Breve explicacion Exponencial. Seno. Coseno. Seno Hiperbolico. Coseno Hiperbolico. Elimina la gura actual. Crea gr acas. Crea multiples gr acos en la misma gura. Mantiene la gr aca anterior. Agrega t tulo del gr aco. Agrega nombre del eje-X. Agrega nombre del eje-Y. Agrega texto al gr aco. Imprime el gr aco o lo guarda en un archivo Crea guras (ventana para gr acos). Respuesta al Impulso. unitario. Respuesta al escalon de transferencia. Crea un modelo en funcion Crea un modelo de cero-polo-ganancia. de modelo en espacio de estados a funcion de transferencia. Conversion de modelo en funcion de transferencia a polos y ceros. Conversion de modelo en espacio de estados a polos y ceros. Conversion de modelo en polos y ceros a funcion de transferencia. Conversion de modelo en funcion de transferencia a espacio de estados. Conversion de modelo en polos y ceros a espacio de estados. Conversion Cuadro 1: Comandos que utilizaremos

Indice

a M ATLAB y S IMULINK - 3 Introduccion

Observemos que para denir el vector lo hacemos colocando entre corchetes los coecientes de cada t ermino, ordenados de mayor orden al menor. Para separar las columnas del vector lo hacemos con un espacio, o tambi en podr amos utilizar coma. El punto y coma nal es para que el resultado de lo ejecutado por M ATLAB no salga por pantalla. Si ahora ingresamos: [z,p,k]=tf2zp(num,den) Obtenemos: z=-4 p=[-2+4j -2-4j] k=5 transferencia dada por un cociente de polinomios se puede escribir de la Dado que toda funcion forma m i =1 ( s zi ) con m n, G (s) = k n i =1 ( s pi ) transferencia, haciendo podemos armar f acilmente nuestra funcion G (s) = 5(s + 4) . (s + 2 + 4 j)(s + 2 4 j)

Si queremos realizar el procedimiento inverso, necesitamos ingresar las variables k, z y p. Con la instruccion: [num,den]=zp2tf(z,p,k); transferencia: obtenemos el numerador y denominador de la funcion num=[5 20] den=[1 4 20] de transferencia en dos vaEl hecho de tener el numerador y el denominador de la funcion riables, no signica que M ATLAB la identique como tal. Para ello se utiliza el comando tf, que describe en una sola variable la transferencia dada por su numerador y al denominador. Lo utilizamos de la siguiente forma: G=tf(num,den); transferencia como cociente de productos de los Si queremos que M ATLAB arme la funcion ceros y los polos, para ello utilizamos zpk, de la siguiente forma: G=zpk(z,p,k);

1.2.

Ra ces de un polinomio

transferencia ven En el Ejemplo 1 vimos que el polinomio denominador de la funcion a dado de segundo orden. por: s2 + 4s + 20, y pudimos hallar sus ra ces dado que se trata de una ecuacion En polinomios de orden superior, la tarea de encontrar sus ra ces no siempre es tan f acil. Con de M ATLAB roots podemos calcular las ra la funcion ces de cualquier polinomio. Para ejecutar tenemos que ingresar el polinomio, como vector, recordando que los polinomios dicha funcion se ingresan en la primer componente el t ermino de mayor orden y luego en forma descendente separados por coma o un espacio.

Indice

a M ATLAB y S IMULINK - 4 Introduccion

Ejemplo 2. Consideremos el siguiente polinomio: P = s4 + 4s3 + 4s2 + s + 20 Ingresamos el polinomio p=[1 4 4 1 20] y luego: r=roots(p); en dos pasos, podemos hacerlo solo en uno; si tipeamos r=roots([1 En lugar de hacer la operacion 4 4 1 20]) obtenemos el mismo resultado Las cuatro ra ces del polinomio anterior que surgen de M ATLAB son: 2,6445 1,2595 j y 0,6545 1,3742 j. Si el caso es al rev es, es decir, tengo las ra ces y quiero conocer el polinomio, el comando poly es el que se utilizaremos. Siguiendo con el mismo ejemplo, supongamos que lo que tenemos son las ra ces p1,2 = 2,6445 1,2595 j y p3,4 = 0,6545 1,3742 j. Entonces el polinomio al que le corresponden esas ra ces es: P=poly([p1,p2,p3,p4]); Notemos que el polinomio P que obtuvimos es m onico; si quisi eramos cualquier otro, deber amos multiplicar a P por el coeciente principal. Otra cosa a tener en cuenta es que siempre que pongamos una ra z compleja debemos poner su conjugada.

1.3.

Desarrollo en fracciones simples

transfeCuando analizamos un sistema de control, por lo general disponemos de su funcion Y (s) rencia a lazo cerrado G (s), donde G (s) = R(s) . Con lo que podemos escribir la salida en funcion de la transferencia y la entrada: Y (s) = G (s) R(s). Si dese aramos conocer la respuesta temporal g(t) del sistema cuando lo excitamos con una de entrada r(t), debemos calcular la transformada inversa de Laplace, es decir g(t) = senal L1 {Y (s)} = L1 { G (s) R(s)}. Como sabemos, es m as sencillo de antitransformar cuando se trata de un cociente de polinomios, dado que si lo expresamos en fracciones simples podemos utilizar una tabla de transformadas de Laplace. transferencia: Ejemplo 3. Supongamos que tenemos la siguiente funcion G (s) = 16s + 16 (s + 2)(s + 4) y que R(s) = 1 s

Como las ra ces del denominador sor reales y distintas, el m etodo de desarrollo en fracciones simples nos permite escribir a G (s) R(s) de la siguiente manera: 16s + 16 A B C = + + s(s + 2)(s + 4) s s+2 s+4 Ahora podemos calcular c(t) se la siguiente forma: c ( t ) = L1 A B C + + s s+2 s+4 A B + L1 s s+2

= L1

+ L1

C s+4

= A + Be2t + Ce4t

Indice

a M ATLAB y S IMULINK - 5 Introduccion

Para calcular los valores de A, B y C lo hacemos mediante la formula de residuos, dado que en este ejemplo los polos son de primer orden, resulta que Res{ p} = l m(s p) F (s)
s p

donde p es el polo para el cual se est a calculado el residuo. Veamos como ser a en este ejemplo: 16(0) + 16 16s + 16 = =2 s(s + 2)(s + 4) (0 + 2)(0 + 4) s0 16s + 16 16(2) + 16 B = l m (s + 2) = =4 s(s + 2)(s + 4) (2)(2 + 4) s2 16s + 16 16(4) + 16 C = l m (s + 4) = = 6 s(s + 2)(s + 4) (4)(4 + 2) s4 A = l m(s)

Con estos residuos, queda determinada la salida como: c(t) = 2 + 4e2t 6e4t En general, estos c alculos pueden tornarse muy complicados de realizar a mano. Veamos M ATLAB residue. Ingresemos nuevamente los policomo se simplican utilizando la funcion nomios numerador y denominador de la misma forma como lo venimos haciendo hasta ahora. Ingresemos ahora la sentencia: [res,p]=residue(num,den); nos devuelve dos par Esta funcion ametros vectoriales: en la variable res aparecen los residuos correspondientes a los polos que guran en la variable p, es decir, el primer residuo corresponde al primer polo y as sucesivamente. transferencia resulta ser propia, es decir que el grado del numerador es igual al Si la funcion del denominador, podemos anadir una par ametro m as al argumento del lado izquierdo, que lo podemos llamar k. Veamos como ser a esto mediante otro ejemplo: Ejemplo 4. Supongamos que queremos hallar f (t) siendo: F (s) = 2s3 + 5s2 + 3s + 6 s3 + 6s2 + 11s + 6

f ( t ) = L1 { F ( s ) }

Si aplicamos el comando: [res,p,k]=residue(num,den); desarrollada en fracciones simples, el y si armamos, como lo hicimos anteriormente, la funcion 6 4 3 t ermino independiente es el que aparece el la variable k. Por lo tanto F (s) = s +3 + s+2 + s+1 + 2, de donde ahora calcular la f (t) resulta muy sencillo. escrita en fraccioSi ahora nuestro inter es es el inverso, es decir que tenemos una funcion como cociente de polinomios, anal nes simples y quisi eramos obtener la funcion ticamente de denominador y hacer todas las cuentas correspondientes. Esto resulta inber amos sacar comun mediato con el comando de M ATLAB: [num,den]=residue(res,p,k);

Indice

a M ATLAB y S IMULINK - 6 Introduccion

R(s) l E(s) V (s) - G1 (s) - l - G2 (s) 6 6 H2 (s)  H1 (s)  Figura 1: Diagrama de bloques

Y (s)-

transferencia a lazo cerrado 1.4. Funcion


Ejemplo 5. Supongamos que disponemos del sistema de la Figura 1 donde G1 (s) = 0,4; G2 (s) = s 100 transferencia a lazo cerrado ; H2 (s) = s+ 20 y H1 ( s ) = 1; y pretendemos hallar la funcion s(s+2) de bloques, o resolviendo el diagrama de ujo y aplicando G (s) = R(s) . Si aplicamos reduccion Mason, obtenemos: 40s + 800 G (s) = 3 s + 22s2 + 180s + 800 transferencia a lazo cerrado se puede calcular de dos formas: En M ATLAB la funcion Utilizando S IMULINK (lo veremos m as adelante). Utilizando las funciones de M ATLAB series, parallel, feedback y cloop. transferencia a lazo cerrado G (s) sigamos los siguientes pasos: Para calcular la funcion 1. Denimos los numeradores y denominadores de las funciones transferencia de cada bloque de la siguiente forma: numg1=0.4; numg2=100; numh2=[1 0]; deng1=1; deng2=[1 2 0]; denh2=[1 20];
Y (s)

transferencia de V (s) a Y (s): 2. Calculamos la funcion [numvc,denvc]=feedback(numg2,deng2,numh2,denh2,-1);

transferencia de E(s) a Y (s) con: 3. Ahora calculamos la funcion [numec,denec]=series(numg1,deng1,numvc,denvc);

4. Por ultimo calculamos el lazo cerrado: [num, den]=cloop(numec,denec,-1);

transferencia por Lo que obtuvimos son los vectores numerador y denominador de la funcion de transferencia a M ATLAB, debemos separado. Recordemos que para ingresarla como funcion utilizar tf.

Indice

a M ATLAB y S IMULINK - 7 Introduccion

1.5.

Respuesta al impulso

Ahora que ya sabemos como pasar de la respuesta temporal a Laplace, veriquemos que la respuesta al impulso de la transformada de Laplace coincide con la respuesta temporal. Para ello utilizaremos el comando de M ATLAB impulse. transferencia de la siguiente forma: Ejemplo 6. Supongamos que tenemos una funcion Y (s) = 1 ; (s + a)(s + b) donde a = 1, b = 2

Si calculamos ahora la antitransformada, desarrollando en fracciones simples como en la seccion t 2 t 1.3, resulta que y(t) = e e . Ingresemos los vectores numerador y denominador y luego ejecutemos el comando: impulse(num,den); Veremos que este comando devuelve el gr aco de la Figura 2 Como podemos ver, solo nos muesImpulse Response
From: U(1) 0.25

0.2

0.15

Amplitude

To: Y(1) 0.1 0.05 0 0 1 2 3 4 5 6

Time (sec.)

Figura 2: Respuesta al impulso tra los primeros 6 segundos de la respuesta. Si quisi eramos que nos mostrara 12 segundos, debemos denir un vector de tiempo. Para ello ingresemos, por ejemplo, t=0:0.1:12; El vector t tendr a como primer elemento el 0 y como ultimo al 12. Cada elemento estar a a una distancia de 0,1 de su consecutivo. Si ahora introducimos este par ametro en el comando impulse(num,den,t), el gr aco mostrar a los primeros 12 segundos de la respuesta al impulso. Notemos que este comando no fue asignado a ninguna variable; podr amos asignarle un vector, es decir y=impulse(num,den,t), y as tendr amos los valores de la salida de la respuesta al impulso en dicho vector. Podr amos tambi en gracar este vector con el comando plot(t,y), 1.7. comando que veremos en la seccion

Indice

a M ATLAB y S IMULINK - 8 Introduccion

transferencia de un sistema lineal invariante en el tiempo se dene como Dado que la funcion la transformada de Laplace de la respuesta al impulso cuando todas las condiciones iniciales son nulas, comparemos el resultado obtenido con el que resultar a si calcul aramos la respuesta tempo f=exp(-t)+exp(-2*t). ral. Para ello utilizaremos el mismo vector temporal t, y la instruccion Ahora podemos comparar los valores obtenidos desde la respuesta al impulso con los obtenidos desde la respuesta temporal (por ejemplo, rest andolos).

1.6.

Respuesta al escalon

anterior, podr De la misma forma que en la seccion amos querer gracar la respuesta al escalon unitario. M ATLAB posee un comando, llamado step, para calcular la salida temporal cuando la unitario. Lo unico entrada se trata de un escalon que necesita este comando es el numerador y el transferencia. denominador de la funcion step(num,den); y=step(num,den); Si utilizamos el comando sin asignarle la salida a ninguna variable, M ATLAB abre una ventana escalon unitario, de la misma forma que gr aca mostrando el gr aco de la salida a la excitacion ste es asignado a una antes. Sin embargo,al igual que vimos en el comando impulse, cuando e variable, los valores obtenidos se guardan en el vector y. unitario de la funcion transferencia: Ejemplo 7. Calculemos la respuesta al escalon G (s) = Y (s) 4 = 2 R(s) s + 0,8s + 4

Si ingresamos el comando step(num,den), veremos un gr aco similar al que podemos observar en la Figura 3.
Step Response
From: U(1) 1.6

1.4

1.2

Amplitude

To: Y(1)

0.8

0.6

0.4

0.2

0 0 5 10 15

Time (sec.)

unitario Figura 3: Respuesta al escalon coSi ahora queremos la respuesta a una entrada rampa unitaria, M ATLAB no posee ningun mando que lo resuelva. Por lo que veremos como con el comando step podemos obtener una

Indice

a M ATLAB y S IMULINK - 9 Introduccion

rampa. Si seguimos con el ejemplo anterior y excitamos al sistema con r(t) = t, es decir que R(s) = s12 , tenemos lo siguiente: Y (s) = s2 4 + 0,8s + 4 1 s2

Y (s) =

s3

4 + 0,8 S2 + 4s

1 s

transferencia al polinomio s3 + 0,8s2 + Por lo que utilizando como denominador de la funcion unitario con step(num,den), 4s, es decir den=[1 0.8 4 0], y calculando la respuesta al escalon obtenemos la respuesta a la rampa unitaria que se muestra en la Figura 4.
Step Response
From: U(1) 25

20

15

Amplitude

To: Y(1) 10 5 0 0 5 10 15 20 25

Time (sec.)

Figura 4: Respuesta a la rampa unitaria

1.7. Gracos
Como vimos en secciones anteriores los comandos step e impulse gracan las respuestas y al impulso respectivamente, pero ahora vamos a introducir algo m al escalon as general. Para en general utilizaremos el comando plot, que solo necesita denir el gracar cualquier funcion vector a gracar en la forma b asica plot(vector); del elemento del vector y la ordeSe obtiene un gr aco donde el eje de abscisas ser a la posicion En el ejemplo 6, guardamos en el vector y los nada el valor que tiene el vector en dicha posicion. valores de la salida de la respuesta al impulso. Si ahora ingresamos plot(y), en lugar de tener segundos en el eje de abscisas tendremos la cantidad de elementos de ese vector. Si ingresamos plot(t,y), ahora el eje de abscisas corresponder a al vector temporal ya denido e ir a desde t = 0 a t = 12, que es como lo ten amos denido. Graquemos entonces los valores guardados en el vector f . Estos valores corresponden a la respuesta temporal, por lo que el gr aco deber a ser el mismo. Si ingresamos plot(t,f), obtendremos el gr aco de la Figura 5 Como podemos ver, no hay casi diferencias con la gura 2, excepto por el t tulo y los nombres de los ejes que el comando impulse(num,den) pone autom aticamente. Veamos que no es dif cil

Indice

a M ATLAB y S IMULINK - 10 Introduccion

0.25

0.2

0.15

0.1

0.05

10

12

Figura 5: Respuesta temporal del ejemplo 6

si se lo queremos agregar a un gr aco, para ello utilizaremos las sentencias title, xlabel y ylabel. Estos comandos se utilizan luego de ingresar el comando plot, ya que tanto el t tulo, como los nombres de los ejes, se escribir an el la gura que se encuentre abierta: title(Respuesta al Impulso); xlabel(Tiempo(seg.)); ylabel(Salida c(t));

Notemos que el texto que queremos que aparezca est a escrito entre comillas simples. Los comandos anteriores, pueden ser tambi en utilizados con step y impulse, aunque cuando son por defecto tamutilizados en estos comandos, el t tulo y el nombre de los ejes que trae la funcion bi en aparecen. Otros comandos que pueden ser utiles a la hora de trabajar con gr acos son grid y text, que se utilizan para agregar una grilla y agregar texto respectivamente. El comando text se utiliza de la misma forma que que title, es decir, el texto que aparecer a ser a el que se encuentra escrito entre las comillas simples , pero antes debemos ingresar las coordenadas ( x, y) donde queremos que aparezca el texto. El comando grid, se usa sin par ametros. Veamos el siguiente ejemplo: transferencia de la Figura 1, que ya la calculamos Ejemplo 8. Supongamos que tenemos la funcion con M ATLAB en el Ejemplo 2.2. Abramos un archivo nuevo e ingresemos lo siguiente: num=[40 800]; den[1 22 180 800]; t=0:0.01:2; y=step(num,den,t); plot(t,y); title(Respuesta al escalon unitario); xlabel(Tiempo (seg.)); ylabel(Salida del sistema); text(0.5,1.1,maximo valor);

Indice

a M ATLAB y S IMULINK - 11 Introduccion

grid; Si ejecutamos el programa vamos a obtener el gr aco de la Figura 6.


Respuesta al escaln 1.4

1.2 maximo valor 1

Salida del sistema

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1 1.2 Tiempo (seg.)

1.4

1.6

1.8

del ejemplo Figura 6: Respuesta al escalon

Supongamos ahora que queremos gracar en la misma gura dos o m as gr acos para poder compararlas. Esto es posible utilizando el comando hold on - hold off, que mantiene la gura y superpone el siguiente gr aco sobre la misma gura, como veremos en el siguiente ejemplo. Ejemplo 9. Supongamos que queremos gracar tres sinusoides con frecuencias diferentes, ingresemos en un archivo nuevo: t=0:pi/20:2*pi; y1=sin(t); y2=sin(t-pi/2); y3=sin(t-pi); plot(t,y1); hold on; plot(t,y2); plot(t,y3); hold off; Luego de ejecutar estas l neas veremos que en la gura que resulta, aparecen 3 gr acas en el mismo color, e imposible de identicar cual corresponde a cada una porque ambas se encuentran gracadas con el mismo tipo de linea y el mismo color. Para ello veamos un par ametro del tipo string que podemos agregar al comando plot para especicaciones del estilo del gr aco. Los par ametros que guran en la Tabla 2 son para elegir el color de la l nea, los que se encuentran en la Tabla 3 son para elegir el estilo de la l nea y los que se encuentran el la Tabla 4 son para elegir el tipo de marca que aparecer a sobre los puntos del vector gracado. Ahora especiquemos cada uno de los plot con un estilo diferente, por ejemplo, en lugar del comando plot(t,y) escribamos:

Indice

a M ATLAB y S IMULINK - 12 Introduccion

Espec. r b w g c m y k

Color rojo azul (por defecto) blanco verde cian magneto amarillos negro

Cuadro 2: Especicadores de color

Espec. : -.

Estilo de linea linea solida (por defecto) linea rayada linea punteada linea punto-raya

Cuadro 3: Especicadores de linea

Espec. + o s d x p h

Estilo de marca signo m` as c rculo punto asterisco cuadrado diamante cruz estrella de 5 puntas estrella de 6 puntas

Cuadro 4: Especicadores de marca

Indice

a M ATLAB y S IMULINK - 13 Introduccion

plot(t,y1,-.rx); plot(t,y2,--mo); plot(t,y3,:bs); y la otra, Si corremos nuevamente el archivo veremos que hay diferencia entre una funcion Para ello utilicemos el comando legend, pero seguimos sin saber cu al corresponde a qu e funcion. que pone la leyenda que queramos a cada gr aco. Es decir, escribamos como ultima linea: legend(sin(t), sin(t-pi/2),sin(t-pi)); Ahora si observamos el gr aco deber a ser como el de la Figura 7.
1 sin(t) sin(tpi/2) sin(tpi)

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

Figura 7: Tres gr acos en una misma gura Tambi en podr amos querer cada gr aco en una gura diferente. Para ello debemos ejecutar el comando figure(2) antes de gracar por segunda vez y figure(3) antes del ultimo gr aco. Estas sentencias se usan sin el comando de hold on - hold off y lo que hacen es abrir una v nueva gura para cada gr aco. Otra opcion alida para M ATLAB, por ejemplo, es que las tres funciones aparezcan en una sola gura pero las tres gracadas en forma independiente. Para ello utilicemos subplot(m,n,p), que dividir a a la gura en m las y n columnas, pero crea una p. Ingresemos lo siguiente para ver como funciona: gura en la posicion clf; %borra el grafico actual subplot(3,1,1); plot(t,y1,.-r); title(sin(t)); subplot(3,1,2); plot(t,y2,--m); title(sin(t-pi/2)); subplot(3,1,3); plot(t,y3,:b); title(sin(t-pi));

Indice

a M ATLAB y S IMULINK - 14 Introduccion

sin(t) 1 0.5 0 0.5 1 1 0.5 0 0.5 1 1 0.5 0 0.5 1 0 1 2 3 4 5 6 7 0 1 2 3 sin(tpi) 4 5 6 7 0 1 2 3 sin(tpi/2) 4 5 6 7

Figura 8: Tres gr acos diferentes en la misma gura

Notemos que con el s mbolo %, comentamos texto dentro del archivo. Si ejecutamos nuevamente el programa, obtenemos lo que se observa en la Figura 8 Con respecto a gr acos, M ATLAB posee muchas otras opciones, como gracar en escala logar tmica, con loglog, semilogx y semilogy, gr acos en tres dimensiones, plot3, gr acos de barras, bar, etc. Tambi en permite con el comando print, guardar el gr aco en un archivo por ejemplopostscript o .jpg, o tambi de extension, en lo podemos imprimir con el mismo comando indicando el nombre de la impresora. No nos olvidemos que M ATLAB cuenta con una ayuda a la cual podemos recurrir en caso de no recordar como se utiliza un comando. Si investigamos un poco el help, podemos encontrar funciones que resuelven muchas otras cosas interesantes. Invito a que se metan a conocerlas, como as tambi en a que conozcan las distintas demostraciones que pueden encontrar si tipean: demo.

2.

a S IMULINK Introduccion

con l Hasta ahora vimos que M ATLAB dispone de un entorno de programacion neas de ordenes, ahora veremos como se puede suplementar utilizando un interfaz de usuario gr aca llamada S IMULINK. Este entorno nos permite describir gr acamente un sistema dibujando su diagrama en y an bloques, que resulta muy conveniente para la simulacion alisis de sistemas din amicos.

2.1.

Acceso y descripcion

Para acceder a S IMULINK, desde la ventana de comandos de M ATLAB, tenemos varias opciones: una es escribiendo el comando simulink, de esta forma se abrir a solo una ventana con las File elegir la opcion New Model, de esta forma librer as disponibles; otra es desde la barra de menu las librer se abren no solo as sino tambi en el entorno donde vamos a trabajar; por ultimo, existe de acceso directo a las librer un boton as tanto en el entorno de trabajo de M ATLAB como en el de S IMULINK.

Indice

a M ATLAB y S IMULINK - 15 Introduccion

de MATLAB que Una vez abiertas las librer as, lo que encontraremos depende de la version 5.3. Dentro de la librer se encuentre instalada. Nos vamos a referir a la version a Simulink se encuentran los elementos que vamos a utilizar organizados en sublibrer as de acuerdo con su comportamiento. Las sublibrer as que aparecen son: Continous (Bloques para sistemas en tiempo continuo) Discrete: (Bloques para sistemas en tiempo discretos) Functions & Tables Math (Sumadores, Ganancias matriciales o constantes, etc.) Nonlinear Signals & Sistems(multeplexores, demultexores, etc.) Sinks (Gracadores, etc.) Sources (Varias fuentes de entradas) Con un doble click sobre la librer a podemos visualizar los elementos que posee. Por ejemplo si ingresamos a Continous, entre los elementos disponibles utilizaremos los siguientes: Derivative: bloque derivador, es decir
du dt

transferencia 1 Integrator: bloque integrador, funcion s. State-Space: bloque para expresar al sistema en modelo de estados. Transfer Fnc: bloque para expresar al sistema como cociente de polinomios. Zero-pole: bloque para expresar al sistema con ceros, polos y una ganancia.

2.2.

transferencia a lazo cerrado Funcion

2.2 vimos como podemos calcular la funcion transferencia a lazo cerrado desde En la Seccion la ventana de comandos. Tomemos el mismo ejemplo para ver como lo hacemos con S IMULINK, ingresemos el diagrama en bloques como se puede ver en la Figura 9.
1 In1 .4 Gain 100 s2+2s Transfer Fcn s s+20 Transfer Fcn1 1 Out1

Figura 9: Diagrama en bloques con S IMULINK de la siguiente forma: Para poder implementar dicho gr aco se procedio

Indice

a M ATLAB y S IMULINK - 16 Introduccion

transferencia, ya sabemos que se encuentra en Continous, 1. Para insertar un bloque de funcion lo tomamos y lo arrastramos hasta la ventana de trabajo de SIMULINK. Si hacemos doble click sobre el bloque se despliega una ventana de propiedades del bloque, donde tenemos que ingresar el numerador y el denominador de la misma forma que lo hacemos desde el entorno de trabajo de MATLAB, es decir entre corchetes y separado por espacios. Si en lugar transferencia elegimos el bloque de polos y ceros, los de seleccionar el bloque de funcion par ametros a denir ser an los polos, los ceros y la ganancia. 2. Para insertar otro bloque igual no es necesario realizar el tem anterior nuevamente, pode derecho del mouse, copiar mos seleccionar el bloque anterior, haciendo un click con el boton el bloque y pegarlo donde queramos. Esto mismo se puede hacer simplemente arrastrando derecho del mouse. De la misma forma que antes, ingreel objeto seleccionado con el boton de transferencia. Para girar el bloque, para que quede samos los par ametros de esta funcion tenemos que seleccionar el objeto, ir a Format mejor orientado para hacer la realimentacion, y seleccionar Flip Block o simplemente con las teclas ctr-f. de la barra de menu, 3. El bloque de ganancia lo encontramos en Math, lo mismo que los sumadores. Para ingresarlos a la gura procedemos de la misma manera, arrastrando el objeto hasta donde queremos ubicarlo. El sumador, por defecto, viene con dos entradas sumadas, si hacemos doble click l, podemos no solo cambiar el signo que queramos sino tambi sobre e en agregarle las entradas que queramos, en este caso solo modicamos ++ por +. Otra propiedad que podemos modicar es la forma del icono. Notemos que cuando hacemos un doble click en cualquier ayuda en la parte superior de la ventana, e sto nos es util objeto, encontramos una pequena para saber con que datos hay que completar cada campo. Para el bloque de la ganancia, solo ingresamos el valor que corresponde 0,4. 4. Para unir los bloques solo tenemos que hacer un click en la salida de un bloque y arrastra est el mouse hasta la entrada de otro, cuando soltamos, si la coneccion a bien hecha, marcar a una echa negra, en caso de estar uniendo con un nodo, deberemos ver un cuadradito negro. Para borrar cualquier elemento, simplemente lo seleccionamos y con la tecla DEL se elimina. 5. Por ultimo nos falta solo indicar cu al es la entrada y cual es la salida, esto lo hacemos para poder sacar la transferencia a lazo cerrado, de otra forma no lo pondr amos. La necesidad de marcar la entrada y la salida es para que MATLAB sepa desde donde hasta donde vamos a querer la transferencia. Estos bloques los encontramos en Signals & Systems, se llaman In1 e Out1. 6. Salvemos el archivo, por ejemplo con el nombre FuncTrans, si ingresamos desde la ventana de comando de MATLAB las sentencias [A,B,C,D]=linmod(Functtrans); [num,den]=ss2tf(A,B,C,D); transferencia. La primer orden produce un modelo de estado del sisobtenemos la funcion tema de bloques, tomando la entrada y la salida que seleccionamos; y la segunda sentencia transfeconvierte ese modelo de estados en el numerador y el denominador de la funcion rencia. En este caso el resultado es num=[40 800] den=[1 22 180 800] que si los comparamos con los obtenidos antes son id enticos.

Indice

a M ATLAB y S IMULINK - 17 Introduccion

2.3.

Respuesta al Escalon

Siguiendo con el sistema de la Figura 9, nos interesa saber ahora como responde a una entrada unitario. Como tenemos la funcion transferencia a lazo cerrado, podr escalon amos utilizar el comando step(num,den) desde la ventana de comandos para obtener la salida. Pero veamos como lo podemos hacer desde SIMULINK. Para ello cambiemos el bloque de entrada por un bloque que lo encontramos el la librer de entrada escalon, a Sources bajo el nombre Step. A dicho bloque el valor podemos modicarle algunos par ametros como el tiempo en que se realizar a el escalon, y en caso de que lo necesitemos discreto, el tiempo de muestreo. Para inicial y nal de escalon del escalon nuestro ejemplo, elegimos como valor inicial 0, valor nal 1 y tiempo de realizacion 0seg.. Para poder visualizar la salida, debemos conectar a la salida un osciloscopio. Este bloque lo encontramos en Sinks bajo el nombre Scope. Luego de agregados estos bloques, el sistema resultante es el que observamos en la Figura 10.
.4 Step Gain 100 s2+2s Transfer Fcn s s+20 Transfer Fcn1 Scope

Figura 10: Sistema excitado con un escalon

1.4

1.2

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

que muestra el osciloscopio Figura 11: Senal Si hacemos doble click sobre el bloque Scope, veremos la salida del sistema como en la Figura 11. Este bloque tambi en posee algunas propiedades que podemos modicar, entre ellas est an los valores de los ejes, el t tulo y la escala. Cuenta tambi en con Zoom para visualizar alguna zona en detalle. Otra propiedad es la posibilidad de asignarle los datos que posee a una variable. Luego

Indice

a M ATLAB y S IMULINK - 18 Introduccion

desde la ventana de comandos podemos visualizar los valores o gracarlos dado que SIMULINK dicha variable se guarda tambi en en una variable el vector temporal que utiliza en la simulacion, llama tout. unitario queremos la respuesta al impulso, dado que Si en lugar de la respuesta al escalon SIMULINK no posee un bloque generador de impulsos, debemos generarlo nosotros como resta de dos escalones.

2.4.

de parametros Utilizacion ya denidos

SIMULINK nos permite utilizar variables denidas ya sea en la ventana de comando de MATLAB ,

y como tambi en en archivos del editor. Para ello debemos denir las variables con anticipacion luego utilizarlas dentro de los bloques con el mismo nombre. De esta forma, SIMULINK identica el valor de dicho par ametro y es el que utiliza en los c alculos. Esto resulta apropiado cuando para distintos valores de par queremos utilizar un mismo diseno ametros, o nos permitir a utilizar el mismo sistema cada vez que nos encontremos con problemas similares.

También podría gustarte