Introducci´on a M ATLAB y S IMULINK para Control Virginia Mazzone
Regula dor cent r´ıfugo ıfugo de Watt
Control Autom´atico atico 1 http://iaci.unq.edu.ar/caut1
Automatizaci´on y Control Industrial Universidad Nacional de Quilmes Marzo 2002
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 1
´Indice Indice General 1 Intr Introd oduc ucci´ ci´on on a M ATLAB 1.1 1.1 Co Conv nver ersi´ si´on on de una funci´on transferencia 1.2 Ra´ıces de un polinomio . . . . . . . . . . . 1.3 Desarrollo en fracciones simples . . . . . 1.4 1.4 Funci´on transferencia a lazo cerrado . . . 1.5 Respuesta al impulso . . . . . . . . . . . . 1.6 1.6 Resp Respue uest staa al escal´ escal´on . . . . . . . . . . . . 1.7 Gr´aficos . . . . . . . . . . . . . . . . . . . . 2 Intr Introd oduc ucci´ ci´on on a S IMULINK 2.1 2.1 Acce Acceso so y descr descrip ipci´ ci´on . . . . . . . . . . . 2.2 2.2 Funci´ cio´ n transferencia a lazo cerrado . . 2.3 2.3 Resp Respue uest staa al Escal´ Escal´on . . . . . . . . . . . ´ de para´ metros ya definidos . 2.4 2.4 Util Utiliz izac aciion
1
. . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . .
1 1 4 4 6 7 8 9
. . . .
14 14 16 17 19
´ a M ATLAB Intr Introd oduc ucc cion
Este apunte es una introduccion ´ elemental a M ATLAB, destinado a conocer y practicar algunas de las operaciones b´asicas asicas con funciones funciones de transfere transferencia. ncia. Los comandos comandos que utilizaremos lizaremos son los que figuran en la Tabla Tabla 1. Para mayor informaci´ informaci´on sobre un comando en particular particular puede puede ejecutarse ejecutarse help help to topic pic o simplemente help ’comando ’comando’ ’ , desde la ventana de comando de M ATLAB.
1.1 1.1
´ de una funcion ´ transferencia Con Convers versiion
Una funci´on on transferencia puede describirse en M ATLAB utilizando dos vectores filas: uno para para los los coefi coefici cien ente tess del del nume numera rado dorr y otro otro para para los los coefi coeficie cient ntes es del del deno denomi mina nado dorr. A menu menudo do se requiere para analizar o dise˜nar un sistema conocer la ubicaci´on on de sus polos y ceros; ´ est´ ´ transferencia del sistema. Cuando la fundicha informaci´ informacion esta´ contenida en la funci on cion ´ de transferencia est´a especificada como raz´on de polinomios, podemos conocer sus polos, ceros y ganancia, o viceversa. Los comandos que nos permiten esto e´ sto son: tf2zp, que de un cociente de polinomios nos devuelve los ceros, polos y una ganancia, y zp2tf, que de cono conoce cerr los los polo polos, s, cer ceros y la gana gananc ncia ia de un sist sistem emaa no noss da el nume numera rado dorr y deno denomi mina nado dorr de su funci´on on de transferencia. Supongamos la funci´ funcion ´ transferencia Ejemplo 1. Supongamos G(s) =
5s + 20 , s2 + 4s + 20
´ del numerador y factorizamos el denominador utilizando sus si sacamos el 5 factor comun ra´ıces, ıces, nos queda q ueda de la forma G(s) =
5( s + 4 ) . (s + 2 − 4 j)( s + 2 + 4 j)
I´ndice General
Coma Co mand ndo o 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
Introduccion o´ n a M ATLAB y S IMULINK - 2
Brev Brevee expl explic icaci´ aci´on on Exponencial. Seno. Coseno. Seno Hiperb Hiperb´olico. o´ lico. Coseno Coseno Hiperb´ Hiperbolico. o´ lico. Elimina la figura actual. Crea gr´aficas. aficas. ´ Crea multiples gr´ graficos a´ ficos en la misma figura. Mantiene la gr´afica afica anterior. Agrega t´ t´ıtulo ıtulo del grafico. a´ fico. Agrega nombre del eje-X. Agrega nombre del eje-Y. Agrega Agrega texto al gr afico. a´ fico. Imprime el gr´afico afico o lo guarda en un archivo Crea Crea figuras (ventana para graficos). ´ Respuesta al Impulso. ´ unitario. Respuesta al escalon Crea Crea un modelo modelo en funcion o´ n de transferencia. Crea un modelo de cero-polo-ganancia. Conversi´on on de modelo en espacio de estados estados a funci´on on de transferencia. Conversi´on on de modelo en funci´on on de transferencia a polos y ceros. Conversi´on on de modelo en espacio de estados a polos y ceros. Conversi´on on de modelo en polos y ceros a funci´on on de transferencia. Conversi´on on de modelo en funci´on on de transferencia a espacio de estados. Conversi´on on de modelo en polos y ceros a espacio de estados. Tabla 1: Comandos que utilizaremos
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 3
Para llevar a cabo lo mismo con MATLAB, debemos ingresar los polinomios numerador y denominador, en forma de vectores de la siguiente manera: num=[5 num=[5 20]; den= de n=[1 [1 4 20 20]; ];
Observemos que para definir el vector lo hacemos colocando entre corchetes los coeficientes de cada t´ermino, ermino, ordenados ordenados de mayor orden orden al menor menor. Para separar las columnas columnas del vector lo hacemos con un espacio, o tambi´en en podr´ıamos ıamos utilizar uti lizar coma. c oma. El punto y coma com a final 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 p=[-2+4j -2-4j] -2-4j] k=5
´ transferencia dada por un cociente de polinomios se puede escribir Dado que toda funci on de la forma m ∏i = 1 ( s − z i ) con m ≤ n, G ( s) = k n ∏i=1 (s − pi ) podemos armar f´acilmente acilmente nuestra funcion ´ transferencia, haciendo 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. p. Con la instrucci´on: [num,den]=zp2tf(z,p,k);
obtenemos el numerador y denominador de la funci´on on transferencia: num=[5 num=[5 20 20] ] den= de n=[1 [1 4 20 20] ]
El hecho de tener el numerador y el denominador de la funci on ´ de transferencia en dos variables, no significa que M ATLAB la identifique 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);
Si queremos que M ATLAB arme la funci´on transferencia como cociente de productos de los ceros y los polos, para ello utilizamos zpk, de la siguiente forma: G=zpk(z,p,k);
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 4
1.2 Ra´ Ra´ıces ıces de un polinomio polinomio En el Ejemplo 1 vimos que el polinomio denominador de la funci´on on transferencia transf erencia ven´ıa ıa 2 dado por: s + 4s + 20, y pudimos pudimos hallar sus ra´ıces ıces dado que se trata de una ecuaci ecuacion ´ de segundo orden. En poli polino nomi mios os de orde orden n super superio iorr, la tare tareaa de enco encont ntra rarr sus sus ra´ ra´ıces ı ces no siemp siempre re es tan tan f´acil. acil. Con la funci´on o n de M ATLAB roots podemos calcular las ra´ıces ıces de cualquier polinomio. Para ejecutar dicha funcion o´ n tenemos que ingresar el polinomio, como vector, recordando que que los los poli polino nomi mios os se ingr ingres esan an en la prim primer er comp compon onen ente te el t´ermi e rmino no de ma mayo yorr orde orden n y lueg luego o en forma descendente separados por coma o un espacio. 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 En lugar de hacer la operacion obtenemos mos el mismo mismo result resultado ado Las cuatr cuatro o ra´ ra´ıces ıces del del polino polinomio mio r=ro r= root ots( s([1 [1 4 4 1 20 20]) ]) obtene anterior que surgen de M ATLAB son: −2.6445 ± 1.2595 j 1.2595 j y 0.6545 ± 1.3742 j 1.3742 j.. Si el caso caso es al rev rev´es, e´ s, es decir, tengo las ra´ ra´ıces ıces y quiero conocer el polinomio, polinomio, el comando utilizaremos. Siguiendo Siguiendo con el mismo ejemplo, ejemplo, supongamos supongamos que lo que poly es el que se utilizaremos. tenemos son las ra´ ra´ıces ıces p1,2 = −2.6445 ± 1.2595 j 1.2595 j y p3,4 = 0.6545 ± 1.3742 j 1.3742 j.. Entonc Entonces es el el polinomio polinom io al que le l e corresponden esas ra´ıces ıces es: P=poly([p1,p2,p3,p4]);
Notemos que el polinomio P que obtuvimos es m´ eramos cualquier otro, onico; onico; si quisi´eramos deber´ deber´ıamos ıamos multiplicar a P por el coeficiente coeficiente principal. principal. Otra cosa a tener tener en cuenta cuenta es que siempre que pongamos una ra´ız ız compleja debemos poner su conjugada.
1.3 Desarr Desarrollo ollo en fraccione fracciones s simples simples Cuando analizamos un sistema de control, por lo general disponemos de su funci´on on transY (s ) ferencia a lazo cerrado G (s), donde G(s) = R(s) . Con lo que podemos escribir la salida en funci´on on de la transferencia y la entrada: Y (s) = G (s) × R(s). Si dese´aramos aramos conocer la respuesta temporal g(t) del sistema cuando lo excitamos excitamos con una se˜nal de entrada r(t), debemos calcular la transformada inversa de Laplace, es decir Como sabe sabemo mos, s, es m´as as sencill sencillo o de antitr antitrans ansfor formar mar g(t) = L−1 {Y (s)} = L−1 {G (s) × R(s)}. Como cuando se trata de un cociente de polinomios, dado que si lo expresamos en fracciones simples podemos utilizar una tabla de transformadas de Laplace. on transferencia: Ejemplo 3. Supongamos que tenemos la siguiente funci´on G (s ) =
16s 16 s + 16 (s + 2)( s + 4)
y que
R ( s) =
1 s
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 5
Como las ra´ıces ıces del denominador sor reales y distintas, el m´ metodo ´ de desarrollo en fracciones simples nos permite escribir a G (s) × R(s) de la siguiente manera: 16s 16 s + 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 ) = L −1
= L −1
A B C + + s s+2 s+4 A B + L −1
s s+2 = A + Be −2t + Ce −4t
+ L− 1
C s+4
Para calcular los valores de A, B y C lo hacemos mediante mediante la formula ´ de residuos, dado que en este ejemplo los polos son de primer orden, resulta que Res { p} = lim (s − p) F (s) s→ p
donde p es el polo para el cual se est´a calculado el residuo. Veamos como ser´ıa ıa en este ejemplo: 16s 16 s + 16 16 (0) + 16 = =2 s →0 (0 + 2)( 0 + 4) s(s + 2)( s + 4) 16s 16 s + 16 16 (−2) + 16 li m (s + 2) = =4 B = lim s→− 2 (−2)( −2 + 4) s(s + 2)( s + 4) 16s 16 s + 16 16 (−4) + 16 = = −6 C = lim (s + 4) s→−4 (−4)( −4 + 2) s(s + 2)( s + 4)
A = lim (s)
Con estos residuos, queda determinada la salida como: c(t) = 2 + 4e−2t − 6e−4t En gene genera ral, l, esto estoss c´alculo alculoss pueden pueden tornar tornarse se muy compli complicad cados os de realiz realizar ar ’a man mano’. o’. Veamos eamos como se simplifican utilizando la funci´on M ATLAB residue . Ingresemos nuevamente los polin polinom omio ioss nume numera rado dorr y deno denomi mina nado dorr de la mi mism smaa form formaa como como lo veni venimo moss ha hacie ciend ndo o ha hast staa ahora. Ingresemos ahora la sentencia: [res,p]=residue(num,den);
Esta funci´on on nos devuelve dos par´ametros ametros vectoriales: vectoriales: en la variable res aparecen los residuos correspondientes a los polos que figuran en la variable p, es decir, el primer residuo corresponde correspon de al primer prim er polo y as´ a s´ı sucesivamen suces ivamente. te. ´ transf Si la func funciion transfer erenc encia ia result resultaa ser propia ser propia,, es deci decirr que que el grad grado o del del nume numera rado dorr es igua iguall al del denominador, podemos a˜nadir nadir una par´ametro ametro m´as as al argumento del lado izquierdo, que lo podemos llamar k. Veamos como ser´ s er´ıa ıa esto es to mediante medi ante otro ejemplo: Ejemplo 4. Supongamos que queremos hallar f (t) siendo: 2 s3 + 5 s2 + 3 s + 6 F(s) = 3 11s + 6 s + 6s2 + 11s
⇒
f (t) = L−1 { F(s)}
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 6
Si aplicamos el comando: [res,p,k]=residue(num,den);
y si armamos, como lo hicimos anteriormente, la funci´on desarrollada en fracciones simples, el t´ termino e´ rmino independiente es el que aparece el la variable k. Por Por lo tant tanto o F ( s) = −6 −4 3 + s+2 + s+1 + 2, de donde ahora calcular la f (t) resulta muy sencillo. s+ 3 Si ahora nuestro inter´es es es el inverso, es decir que tenemos una funci´on on escrita en fraccione cioness simpl simples es y quis quisi´ i´eram e ramos os obte obtene nerr la func funciion o´ n como cociente cociente de polinomios, polinomios, anal´ anal´ıticamente ıticamente deber´ deber´ıamos ıamos sacar comun ´ deno denomin minad ador or y ha hace cerr toda todass las cuen cuenta tass corr corres espo pond ndie ient ntes es.. Esto Esto reresulta inmediato con el comando de M ATLAB: [num,den]=residue(res,p,k);
1.4
´ transferencia a lazo cerrado Funcion
Ejemplo 5. Supongamos que disponemos del sistema de la Figura 1 donde G1 (s) = 0.4; ; ( ) = s+s20 y H 1 (s) = 1; y pretendemos hallar la funci´on transferencia a G2 (s) = s(100 s+2) H 2 s lazo cerrado G (s) =
Y (s ) . R( s )
´ de bloques, o resolviendo el diagrama de Si aplicamos reduccion
R(s) lE(s) -
− 6
G1 (s)
V ( s)
- l - G2 (s) − 6
Y (s)-
H 2 (s) H 1 (s) Figura 1: Diagrama de bloques flujo y aplicando Mason, obtenemos: G(s) =
40s 40 s + 800 22 s2 + 180 180ss + 800 s3 + 22s
En M ATLAB la funci funci´on ´ transferencia a lazo cerrado se puede calcular de dos formas: as adelante). • Utilizando S IMULINK (lo veremos m´as • Utilizando las funciones de M ATLAB series series, , parall parallel, el, fe feedb edback ack y cloop cloop . Para calcular la funci´on transferencia a lazo cerrado G(s) sigamos los siguientes pasos: 1. Definimos los numeradores y denominadores denominadores de las funciones 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];
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 7
2. Calculam Calculamos os la func funciion ´ transferencia de V (s) a Y (s): [numvc,denvc]=feedback(numg2,deng2,numh2,denh2,-1);
3. Ahora calculamos calculamos la funci´on on transferencia de E(s) a Y (s) con: [numec,denec]=series(numg1,deng1,numvc,denvc);
4. Por ultimo ´ calculamos el lazo cerrado: [num, den]=cloop(numec,d den]=cloop(numec,denec,-1); enec,-1);
Lo que obtuvimos son los vectores numerador y denominador de la funci´on on transferencia por separado. Recordemos que para ingresarla como funci´on on de transferencia a M ATLAB LA B, debemos utilizar tf.
1.5 Respu Respuest esta a al impuls impulso o Ahora que ya sabemos como pasar de la respuesta temporal a Laplace, verifiquemos que la respuesta al impulso de la transformada de Laplace coincide con la respuesta temporal. Para ello utilizaremos el comando de M ATLAB impulse . o´ n transferencia de la siguiente forma: Ejemplo 6. Supongamos que tenemos una funci on Y ( s) =
1 ; (s + a)( s + b)
donde
a = 1, b = 2
Si calculamos ahora la antitransformada, desarrollando en fracciones simples como en la secci´on 1.3, resulta que y(t) = e−t − e−2t . Ingresemo Ingresemoss los vectores vectores numerador numerador y denomidenominador y luego ejecutemos el comando: impulse(num,den);
Veremos que este comando devuelve el gr´afico afico de la Figura 2 Como podemos ver, solo nos muestra los primeros primeros 6 segundos segundos de la respuesta respuesta.. Si quisi´eramos eramos que nos mostrara 12 segundos, debemos definir 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 u ´ ltimo al 12. Cada elemento estar´a a una distancia de 0.1 de su consecutivo. Si ahora introducimos este par´ametro ametro en el comando impulse(num,den,t) , el gr´afico afico mostrar´a los primeros 12 segundos de la respuesta al impulso. Notemos que este comando no fue asignado a ninguna variable; podr´ıamos ıamos asignarle un vector, es decir y=impulse(num,den,t) , y as´ as´ı tendr´ tendr´ıamos ıamos los valores de la salida de la respuesta al impulso en dicho vector. Podr´ıamos ıamos tambi en e´ n graficar este vector con el comando plot(t,y) , comando que veremos en la secci on o´ n 1.7.
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 8 Impulse Response From: U(1) 0.25
0.2
0.15 e d u t i l p m A
) 1 ( Y : o T
0.1
0.05
0
0
1
2
3
4
5
6
Time (sec.)
Figura 2: Respuesta al impulso
Dado que la funci´on transferencia de un sistema lineal invariante en el tiempo se define como 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 ıa si calcul´ cularamos a´ ramos la respuesta respuesta temporal. temporal. Para ello utilizaremo utilizaremoss el mismo vector vector temporal temporal t, y la instrucci´on f=exp(-t)+exp(-2*t) . Ahora podemos comparar los valores obtenidos desde la respuesta al impulso con los obtenidos desde la respuesta temporal (por ejemplo, rest´andolos). andolos).
1.6 1.6
´ Resp Respue uest sta a al esca escallon
´ anterior, podr´ De la misma forma que en la secci´ seccion podr´ıamos ıamos querer graficar la respuesta al escal´on unitar unitario. io. M ATLAB posee posee un comand comando, o, llam llamado ado step, para para calcu calcular lar la salid salidaa temp tempor oral al cuando la entrada se trata de un escal on ´ unitario. Lo unico ´ que necesita este comando es el numerador numerador y el denominad denominador or de la funci´on on transferencia. step(num,den); y=step(num,den);
Si utilizamos el comando sin asignarle la salida a ninguna variable, MATLAB abre una ´ escalon ´ unitario, de la ventana gr´ grafica a´ fica mostrando el gr´ grafico a´ fico de la salida a la excitacion misma forma que antes. Sin embargo,al igual que vimos en el comando impulse , cuando e´ ste es asignado a una variable, los valores obtenidos se guardan en el vector y. este ´ unitario de la funcion ´ transferencia: escalon Ejemplo 7. Calculemos la respuesta al escal´ G(s) =
4 Y (s ) = 2 0.8ss + 4 R (s ) s + 0.8
Si ingresamos el comando step(num,den) , veremos un gr´afico afico similar al que podemos observar en la Figura 3.
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 9 Step Response From: U(1) 1.6
1.4
1.2
1 e d u t i l p m A
) 1 ( Y : 0.8 o T
0.6
0.4
0.2
0
0
5
10
15
Time (sec.)
´ unitario Figura 3: Respuesta Respuesta al escal´ escalon
Si ah ahor oraa quer querem emos os la resp respue uest staa a una una entr entrad adaa ramp rampaa unit unitar aria, ia, M ATLAB no pose poseee ning´ ning´un un coma comand ndo o que que lo resu resuel elva va.. Por Por lo que que vere veremo moss c omo o´ mo con con el coma comand ndo o step podemos podemos obtener obtener una una ramp rampa. a. Si segu seguim imos os con con el ejem ejempl plo o an ante terio riorr y excit excitamo amoss al siste sistema ma con con r(t) = t, es deci decirr 1 que R(s) = s2 , tenemos lo siguiente: Y ( s) =
4 0.8ss + 4 s2 + 0.8
1
s2
⇒
Y ( s) =
4 0.8S s3 + 0.8 S2 + 4s
1 s
Por lo que utilizando utilizando como denominador denominador de la funci´on on transferencia al polinomio s3 + 0.8ss2 + 4s, es decir den 0.8 en= =[1 0. 0.8 8 4 0], y calculando la respuesta al escal´ on unitario con step(num,den) , obtenemos la respuesta a la rampa unitaria que se muestra en la Figura 4.
1.7
´ Graficos
Como vimo Como vimoss en secc seccio ione ness an ante teri rior ores es los los coma comand ndos os step e impulse grafican grafican las respu respuest estas as al escal´on y al impulso respectivamente, pero ahora vamos a introducir algo m´as as general. Para Para grafi grafica carr cualq cualqui uier er func funciion ´ en gene genera rall utili utiliza zare remo moss el coma comand ndo o plot, q u e solo ´ necesi necesita ta definir el vector a graficar en la forma b´asica asica plot(vector);
Se obtiene un gr´afico afico donde el eje de abscisas ser´a la posici´on del elemento del vector y la ordenada el valor que tiene el vector en dicha posici´on. on. En el ejemplo 6, guardamos en el vector y los 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 correspo corresponder´ nder´a al vector temporal ya definido e ir´ ira´ desde t = 0 a t = 12, que es como lo ten´ ten´ıamos ıamos definido. Grafiquemos
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 10 Step Response From: U(1) 25
20
15 e d u t i l p m A
) 1 ( Y : o T
10
5
0
0
5
10
15
20
25
Time (sec.)
Figura 4: Respuesta a la rampa unitaria
entonces los valores guardados en el vector f . Estos valores correspond corresponden en a la respuesta respuesta f . Estos temporal, por lo que el gr´afico afico deber´a ser el mismo. mismo. Si ingresa ingresamos mos plot(t,f) , obtendremos el gr´afico afico de la la Figura Figura 5 Como podemos podemos ver, ver, no hay casi diferencias diferencias con la figura 2, excepto excepto por el t´ıtulo ıtulo y los nombres de los ejes que el comando impulse(num,den) pone automaticamente. a´ ticamente. Veamos que no es dif´ıcil ıcil si se lo queremos agregar a un gr´ grafico, ´ para ello utilizaremos las sentencias title, title, xlabel xlabel y ylabel . Estos Estos comandos comandos se utiliza utilizan n luego luego de ingresa ingresarr el comando comando ıtulo, como los nombres de los ejes, se escribir´ escribiran ´ el la figura que se plot, ya que tanto el t´ıtulo, encuentre abierta: title(’R title(’Respu espuesta esta al Impulso’ Impulso’); ); xlabel(’Tiempo(seg.)’); ylabel(’Salida 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 en utilizados con step y impulse , aunque cuando son utilizados utiliza dos en estos comandos, el t´ıtulo ıtulo y el nombre de los ejes que trae la funcion ´ por defecto tambi´en en aparece aparecen. n. Otros Otros comando comandoss que puede pueden n ser utiles ´ a la hora de trabajar con gr´aficos aficos 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 decir,, el text texto o que que apar aparec ecer er´a´ sera´ el que que se encu encuen entr traa escr escrit ito o entr entree las las comi comill llas as simp simple less , per pero antes debemos ingresar las coordenadas ( x, y) donde donde queremos queremos que aparezca aparezca el texto. texto. El comando grid, se usa sin parametros. a´ metros. Veamos el siguiente ejemplo: on transferencia de la Figura 1, que ya la calEjemplo 8. Supongamos que tenemos la funci´on culamos con M ATLAB en el Ejemplo 2.2. Abramos un archivo nuevo e ingresemos lo siguiente:
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 11 0.25
0.2
0.15
0.1
0.05
0 0
2
4
6
8
10
12
Figura 5: Respuesta temporal del ejemplo 6
num=[40 num=[40 800]; 800]; den[ de n[1 1 22 18 180 0 80 800] 0]; ; t=0:0.01:2; y=step(num,den,t); plot(t,y); title(’R title(’Respu espuesta esta al escalon escalon unitario unitario’); ’); xlabel(’Tiempo xlabel(’Tiempo (seg.)’); ylabel(’ ylabel(’Sali Salida da del sistema’ sistema’); ); text(0.5,1.1,’maxi text(0.5,1.1,’maximo mo valor’); grid;
Si ejecutamos el programa vamos a obtener el gr´afico afico de la Figura 6. Supongamos ahora que queremos graficar en la misma figura dos o m´as a s gr´aficos aficos para poder poder compararlas. compararlas. Esto es posible utilizando utilizando el comando hold on - hol old d off, que mantiene la figura y superpone el siguiente grafico a´ fico sobre la misma figura, como veremos en el siguiente ejemplo. Ejemplo 9. Supongamos que queremos graficar 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 ho ld on on; ; plot(t,y2); plot(t,y3); hold hold off; off;
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 12 Respuesta al escalón 1.4
1.2 maximo valor 1
a m e0.8 t s i s l e d a d i l 0.6 a S
0.4
0.2
0
0
0.2
0. 4
0.6
0.8
1 1.2 Tiempo (seg.)
1.4
1. 6
1.8
2
Figura 6: Respuesta al escal´on del ejemplo
Luego de ejecutar estas l´ıneas ıneas veremos que en la figura que resulta, aparecen 3 gr´ graficas a´ ficas en el mismo color, e imposible de identificar cual corresponde a cada una porque ambas se encuentran encuentran graficadas graficadas con el mismo tipo de linea y el mismo color. color. Para ello veamos un par´ parametro a´ metro del tipo string que podemos agregar al comando plot para especificaciones del estilo del gr´afico. afico. Los Los par´ par´ametros ametros que figuran en la Tabla 2 son para elegir el color de la l´ınea, ınea, los que se encuentran en la Tabla 3 son para elegir el estilo de la l´ınea ı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 graficado. Espe Espec. c. r b w g c m y k
Colorr Colo rojo azul (por defecto) blanco verde c ia n magneto amarillos negro
Tabla 2: Especificadores de color Ahora especifiquemos cada uno de los plot con un estilo diferente, por ejemplo, en lugar del comando plot(t,y) escribamos: plot(t,y1,’-.rx’); plot(t,y2,’--mo’); plot(t,y3,’:bs’);
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 13
Espec. Espec. – : -.
Estilo Estilo de linea linea linea solida ´ (por defecto) linea rayada linea punteada linea punto-raya
Tabla 3: Especificadores de linea Espec. Espec. + o · ∗ s d x p h
Estilo Estilo de marca marca signo mas ` c´ırculo punto asterisco cuadrado diamante cruz estrella de 5 puntas estrella de 6 puntas
Tabla 4: Especificadores de marca
´ y Si corremos nuevamente el archivo veremos que hay diferencia entre una funci on la otra, pero seguimos sin saber cu´al al corresponde a qu´e funci´on. Para Para ello utilicem utilicemos os el comando legend , que pone la leyenda que queramos a cada grafico. a´ fico. Es decir, escribamos como ultima ´ linea: legend(’sin(t)’, legend(’sin(t)’, ’sin(t-pi/2)’,’sin ’sin(t-pi/2)’,’sin(t-pi)’); (t-pi)’);
Ahora Ahora si observamos observamos el grafico ´ deber´ıa ıa ser s er como el de la Figura F igura 7. Tambi´en podr´ıamos ıamos querer cada gr´ grafico a´ fico en una figura figura difer diferent ente. e. Para Para ello ello debemos debemos ejecutar el comando figure(2) antes de graficar por segunda vez y figure(3) antes del ultimo ´ gr´afico. afico. Estas sentencias se usan sin el comando de hold on - ho hol ld off y lo que hacen es abrir una nueva figura para cada gr´afico. afico. Otra opci´on o n v´alida alida para M ATLAB, por ejemplo, es que las tres funciones aparezcan en una sola figura pero las tres graficadas en forma independiente independiente.. Para ello utilicemos utilicemos subplot(m,n,p) , que dividir´a a la figura ´ p. Ingresemos lo siguiente para en m filas y n columnas, pero crea una figura en la posici´ posicion ver como funciona: 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’);
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 14 1 sin(t) sin(t−pi/2) sin(t−pi)
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1 0
1
2
3
4
5
6
7
Figura 7: Tres Tres gr´ graficos ´ en una misma figura
title(’sin(t-pi)’);
Notemos Notemos que con el s´ımbolo ımbolo %, comentamos comentamos texto dentro dentro del archivo. Si ejecutamos ejecutamos nuevamente el programa, obtenemos lo que se observa en la Figura 8 Con respecto a gr´aficos, aficos, M ATLAB posee muchas otras opciones, como graficar en escala logar´ logar´ıtmica, ıtmica, con lo loglo glog, g, semilo semilogx gx y semilo semilogy gy , gr´ graficos a´ ficos en tres dimensiones, aficos de barras, bar, etc. etc. Tam ambi´ bi´en en permite con el comando print, guardar plot3, gr´aficos el gr´afico afico en un archivo de extensi´on, on, por ejemplo postscript ejemplo postscript o .jpg, en lo podemos .jpg, o tambi´en 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´ as´ı tambi´ tambien e´ n a que conozcan las distintas demostraciones que pueden encontrar si tipean: demo.
2
´ a S IMULINK Intr Introd oduc ucc cion
Hasta ahora vimos que MATLAB dispone de un entorno de programaci´on on con l´ıneas ıneas de ordenes, ´ ahora veremos como se puede suplementar utilizando un interfaz de usuario gr´ grafica a´ fica llamada SIMULINK. Este Este entorno entorno nos permit permitee describir describir gr´aficamente aficamente un sistema dibujando su diagrama en bloques, que resulta muy conveniente para la simulaci´on y an´alisis an a´ lisis de sistemas din´amicos. amicos.
´ 2.1 Acces Acceso o y descri descripci pcion Para acceder a S IMULINK, desde la ventana ventana de comandos de M ATLAB, tenemos varias opciones: una es escribiendo el comando simulink , de esta forma se abrir´a solo una ventana
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 15 sin(t) 1 0.5 0 −0.5 −1 0
1
2
3
4
5
6
7
4
5
6
7
4
5
6
7
sin(t−pi/2) 1 0.5 0 −0.5 −1 0
1
2
3 sin(t−pi)
1 0.5 0 −0.5 −1 0
1
2
3
Figura 8: Tres gr´aficos aficos diferentes en la misma figura
con las librer´ıas ıas disponibles; otra es desde la barra de menu´ File elegir la opci opcion ´ New Model, Model, ´ las librer´ de esta forma se abren no s olo librer´ıas ıas sino tambi´ tambien e´ n el entorno donde vamos a trabajar; por ultimo, ´ existe un bot´on on de acceso directo a las librer´ıas ıas tanto en el entorno de trabajo de M ATLAB como en el de S IMULINK. Una vez abiertas las librer´ıas, ıas, lo que encontraremos depende de la versi on ´ de MATLAB que se encuent encuentre re instalad instalada. a. Nos vamos vamos a referir referir a la versi´on 5.3. Dentro Dentro de la librer´ıa ıa ıas de Simulink se encuentran los elementos que vamos a utilizar organizados en sublibrer´ıas acuerdo con su comportamiento. Las sublibrer´ s ublibrer´ıas ı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 (Graficadores, etc.) • Sources (Varias fuentes de entradas) Con un doble click sobre la librer´ librer´ıa ıa podemos visualizar visualizar los elementos elementos que posee. Por ejemplo si ingresamos a Continous, Continous, entre los elementos disponibles utilizaremos los siguientes: Derivative: bloque derivador, es decir
du dt
.
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 16
on transferencia 1s . Integrator: bloque integrador, funci´on 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
En la Secci´on 2.2 vimos como podemos calcular la funci´on on transferencia a lazo cerrado desde 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
1 Out1
Transfer Fcn
s s+20 Transfer Fcn1
Figura 9: Diagrama Diagrama en bloques con SIMULINK Para poder implementar dicho gr´afico afico se procedi´o de la siguiente forma: ´ transferencia, ya sabemos que se encuentra en 1. Para Para insert insertar ar un bloque bloque de funci´ funcion Continous, Continous, 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 form formaa que que lo ha hace cemo moss desd desdee el ento entorn rno o de trab trabaj ajo o de MATLAB, es decir decir entr entree corc corche hete tess y separado por espacios. Si en lugar de seleccionar el bloque de funci´on on transferencia elegimos el bloque de polos y ceros, los par´ametros ametros a definir ser´an an los polos, los ceros y la ganancia. ganancia. 2. Para insertar insertar otro bloque igual no es necesario realizar realizar el ´ıtem ıtem anterior nuevamente, podemos seleccionar el bloque anterior, haciendo un click con el bot´on on derecho del mouse, copiar el bloque y pegarlo donde queramos. Esto mismo se puede hacer simplemente arrastrando el objeto seleccionado con el bot´on on derecho derecho del del mouse. De la misma forma que antes, ingresamos los par´ametros de esta funci´on on de transferencia. Para girar el bloque, para que quede mejor orientado para hacer la realimentaci´on, on, tenemos que seleccionar el objeto, ir a Format de la barra de men´u, y seleccionar Flip Block o simplemente con las teclas ctr-f. 3. El bloque de ganancia ganancia lo encontramos encontramos en Math, sumadores. s. Para Math, lo mismo que los sumadore ingresarlos a la figura 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 sobre el, e´ l, podemos no solo cambiar el signo que queramos sino tambi´ tambien e´ n agregarle las entradas que queramos, en este caso solo modificamos ++ por
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 17
Otra propi propieda edad d que podemos podemos modific modificar ar es la forma del icono. icono. Notemo Notemoss que +−. Otra ˜ ayuda cuando hacemos un doble click en cualquier objeto, encontramos una peque na en la parte superior de la ventana, ´esto esto nos es util ´ 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 Para unir unir los bloques bloques solo tenemo tenemoss que hacer hacer un click en la salida de un bloque bloque y arrastra el mouse hasta la entrada de otro, cuando soltamos, si la conecci´on o n est´a bien hecha, marcar´ a una flecha negra, en caso de estar uniendo con un nodo, de beremos beremos ver un cuadradito cuadradito negro. negro. Para borrar cualquier cualquier elemento, elemento, simplemente simplemente lo seleccionamos y con la tecla DEL se elimina. ´ 5. Por ultimo nos falta solo indicar cu´ cual a´ l 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. ıamos. La nece necesi sida dad d de ma marrcar car la entr entrad adaa y la sali salida da es para para que que MATLAB sepa sepa desd desdee dond dondee ha hassta donde vamos a querer la transferencia. Estos bloques los encontramos en Signals & Systems, Systems, se llaman ”In1” e ”Out1”. 6. Salvemos el archivo, por ejemplo con el nombre “FuncTrans”, “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. obtenemos la funcion transferencia. La primer orden produce produce un modelo modelo de estado estado del sistema de bloques, tomando la entrada y la salida que seleccionamos; y la segunda sentencia convierte ese modelo de estados en el numerador y el denominador de la funci funci´on ´ transferencia. En este caso el resultado es num=[40 num=[40 800] den= de n=[1 [1 22 18 180 0 80 800] 0]
que si los comparamos con los obtenidos antes son id´enticos. enticos.
2.3 2.3
´ Resp Respue uest sta a al Esca Escallon
Siguiendo con el sistema de la Figura 9, nos interesa saber ahora c´omo omo responde a una entrad entradaa escal escal´on ´ unit unitar ario io.. Como tene tenemo moss la func funciion o´ n transf transfer erenc encia ia a lazo cerrad cerrado, o, podr´ podr´ıamos ıamos utiliza utilizarr el comand comando o step(num,den) desd desdee la vent ventan anaa de coma comand ndos os para para obte obtene nerr la salid salida. a. Pero veamos c´omo omo lo podemos hacer desde SIMULINK. Para Para ello cambie cambiemos mos el bloque bloque ´ que lo encontramos el la librer´ de entrada por un bloque de entrada escal on, librer´ıa ıa Sources bajo el nombre “Step”. “Step”. A dicho bloque podemos podemos modificarle modificarle algunos par´ parametros a´ metros como el ´ el valor inicial y final de escal´ tiempo en que se realizar a´ el escalon, escalon o´ n y en caso de que lo necesitemo necesitemoss discreto, discreto, el tiempo tiempo de muestreo. muestreo. Para nuestro nuestro ejemplo, elegimos como valor inicial 0, valor final 1 y tiempo de realizaci´on del escal´on 0seg Para poder visual visualizar izar la se g.. Para salida, debemos debemos conectar a la salida un osciloscopio. osciloscopio. Este bloque lo encontramos encontramos en Sinks bajo el nombre “Scope”. Luego de agregados estos bloques, el sistema resultante es el que observamos en la Figura 10.
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 18
100 2 s +2s
.4 Step
Gain
Scope
Transfer Fcn s s+20 Transfer Fcn1
Figura 10: Sistema excitado con un escal´ escalon o´ n
1.4
1.2
1
0.8
0.6
0.4
0.2
0 0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
˜ que muestra el osciloscopio Figura 11: Senal
2
I´ndice General
Introduccion o´ n a M ATLAB y S IMULINK - 19
Si hacemos doble click sobre el bloque “Scope”, veremos la salida del sistema como en la Figura 11. Este bloque tambi´ tambien e´ n posee algunas propiedades que podemos modificar, entre ellas est´an an los valor valores es de los ejes, el t´ıtulo ıtulo y la escala escala.. Cuenta Cuenta tambi´en con Zoom para visualizar visualizar alguna zona en detalle. detalle. Otra propieda propiedad d es la posibilidad posibilidad de asignarle los datos que posee a una variable. Luego desde la ventana de comandos podemos visualizar los valores o graficarlos dado que SIMULINK guarda tambi´ tambien e´ n en una variable el vector temporal temporal que utiliza en la simulaci simulacion, ´ dicha variable se llama tout. Si en lugar de la respuesta al escal´on on unitario queremos la respuesta al impulso, dado que SIMULINK no posee un bloque generador de impulsos, debemos generarlo nosotros como resta de dos escalones.
2.4 2.4
´ de parametros ´ Util Utiliz izac aciion ya definidos
SIMULINK nos permite utilizar variables definidas ya sea en la ventana de comando de MATLAB, como tambi´ en en archivos del editor. Para ello debemos definir las variables con en
anticipaci´on y luego utilizarlas dentro de los bloques con el mismo nombre. De esta forma, SIMULINK identifica el valor de dicho par ametro a´ metro y es el que utiliza en los calculos a´ lculos.. Esto Esto resulta apropiado cuando queremos utilizar un mismo dise˜no no para distintos valores de par´ parametros, a´ metros, o nos permitir´ permitira´ utilizar el mismo sistema cada vez que nos encontremos con problemas similares.