Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ManualMatlab Simulink
ManualMatlab Simulink
Manual de referencia de
Febrero 2000 Adolfo Anta Martnez Juan Luis Zamora Macho Ramn Rodrguez Pecharromn
Tabla de Contenidos
1. 2. 3.
INTRODUCCIN................................................................................................................... 3 FUNCIONES MATEMTICAS COMUNES .......................................................................... 4 CARACTERSTICAS DE LA VENTANA DE COMANDOS ................................................. 6 3.1. 3.2. 3.3. CMO UTILIZAR EL WORKSPACE ....................................................................................... 6 FORMATOS DE NMEROS ................................................................................................. 6 GESTIN DE DIRECTORIOS ............................................................................................... 6
4. 5. 6.
M-FILES ................................................................................................................................ 7 OPERACIONES CON VECTORES ...................................................................................... 9 REPRESENTACIONES GRFICAS .................................................................................. 11 6.1 LA FUNCIN PLOT .............................................................................................................. 11 6.2 ESTILOS DE LNEA, MARCAS Y COLORES .............................................................................. 12 6.3 FIJAR REJILLAS, EJES, Y ETIQUETAS.................................................................................... 13
7.
TOOLBOX DE CONTROL ................................................................................................. 16 7.1 REPRESENTACIN DE UN SISTEMA ...................................................................................... 16 7.2 FUNCIONES ESPECFICAS ................................................................................................... 17 7.3 LTIVIEW .......................................................................................................................... 20
8.
9.
SIMULINK ........................................................................................................................... 23 9.1 INTRODUCCIN .................................................................................................................. 23 9.2 CONSTRUCCIN DEL MODELO............................................................................................. 24 9.3 SIMULACIN ...................................................................................................................... 27 9.4 MODELADO DE UN SISTEMA FSICO ...................................................................................... 28
1. Introduccin
MATLAB es una aplicacin destinada a clculos matemticos, si bien dispone de ciertas funciones destinadas a temas ms especficos, como por ejemplo la ToolBox de control, que facilita el estudio de sistemas dinmicos y su regulacin. Adems, existe un complemento de MATLAB llamado SIMULINK, que nos permite un enfoque ms grfico de los sistemas de control. Al ejecutar MATLAB, aparecer una ventana en blanco, llamada ventana de comandos. La forma de trabajar con MATLAB es como con cualquier calculadora: 4*2 [ pulsamos enter] ans = 8 A su vez, podemos usar variables para realizar nuestros clculos: precio = 17; iva =0.16; precio_total =17 * (1+iva) precio_total = 19.7200 Acabamos de crear tres variables, cuyo valor se guardar en memoria. En las dos primeras sentencias se incluye un punto y coma al final, con lo que el resultado no aparecer por pantalla. El nombre que elijamos para nuestras variables tiene algunas restricciones: no pueden tener un espacio intermedio, se distinguen maysculas de minsculas, y deben empezar por una letra. Si queremos ver las variables que tenemos definidas, teclearemos el comando who: who Your variables are: iva precio precio_total
Por supuesto, se puede sobreescribir el nombre de una variable: iva =0.13; (el programa no nos avisar de que esa variable ya existe) . Para borrar todas las variables, existe el comando clear: tecleando clear iva borrara esta variable , pero si escribimos slo clear, borrar todo lo que hay en memoria; por desgracia, una vez eliminadas, las variables no se pueden recuperar. Podemos recuperar cualquier instruccin escrita previamente pulsando la tecla del cursor . Para detener la ejecucin de cualquier instruccin, hay que pulsar la combinacin de teclas Ctrl+C. 3
FUNCIONES HABITUALES abs(x) acos(x)1 asin (x) atan (x) atan2(x,y) cos (x) sin (x) tan (x) exp (x) log(x) log10 (x) rem(x,y) unwrap(x) roots(x) fzero('f(x)',n) (ej.- f(x)= 'x^2+x+3' ) sqrt(x) angle (x) real(x) imag(x) Valor absoluto de x. Si x es un nmero complejo, abs(x) nos da su mdulo arco coseno de x arco seno de x arco tangente de x. Devuelve un ngulo entre -90 y 90 arco tangente de x entre y. Devuelve un ngulo entre 0 y 360 coseno de x seno de x tangente de x exponencial ex logaritmo neperiano de x logaritmo en base 10 de x resto de la divisin x / y sita el ngulo x entre pi y -pi halla las races del polinomio x encuentra la solucin de la ecuacin f(x)=0; n es el valor por donde empieza a iterar para hallar la solucin. raz cuadrada de x ngulo de x parte real de x parte imaginaria de x
Es recomendable trabajar con atan2 en vez de atan, pues si la parte real del nmero complejo es negativa, el ngulo quedar en el segundo o tercer cuadrante. Por ejemplo: 180/pi*atan(-2/3) ans = -33.6901 180/pi*atan(2/-3) ans = -33.6901 180/pi*atan2(-2,3) ans = -33.6901 180/pi*atan2(2,-3) ans = 146.3099 Para la funcin atan los nmeros complejos -2+3j y 2-3j tienen la misma fase; atan2, sin embargo, nos da el ngulo correcto. Se ha multiplicado por 180/pi para obtener el resultado en grados2. Para definir un nmero complejo, se puede usar i o j indistintamente: c1=-1+2j c1 = -1.0000 + 2.0000i c1=-1+2i c1 = -1.0000 + 2.0000i como unidad imaginaria
4. M-files
Cuando realizamos clculos simples, es habitual escribir las instrucciones en la ventana de comandos. Sin embargo, cuando se van a realizar una serie de operaciones ms complicadas y de forma repetitiva, se utilizan los llamados M-Files; son ficheros de texto donde tecleamos las instrucciones de MATLAB. Para crear un nuevo archivo M, hacemos clic en File\New\M-File; nos aparecer una ventana en blanco para editar el archivo. Por ejemplo: % Mi primer programa en MATLAB3 comp1=-2+3i; comp2=-10+5i; comp=comp1+comp2; modulo=abs(comp) fase=unwrap(180/pi*phase(comp)) Una vez guardado el archivo (con el nombre trabajo.m, por ejemplo), nos bastar teclear su nombre en MATLAB, y se ejecutar directamente:
trabajo modulo = 14.4222 fase = 140.0267
Supongamos que queremos que este programa sirva no slo para los complejos comp1 y comp2. Para ello, bastar con borrar las dos primeras lneas del programa anterior. Ahora tendremos que definir antes el valor de comp1 y comp2 (si no, MATLAB nos dar un error diciendo que las variables comp1 y comp2 no estn definidas): comp1=-3+2i; comp2=-10+j; trabajo modulo = 13.3417 fase = 160.7222
Tambin podamos hacer que el programa pidiese los nmeros complejos al usuario (pues ste no tiene por qu saber qu es comp1 y comp2): comp1=input('Introduzca el primer nmero complejo -> '); comp2=input('Introduzca el segundo nmero complejo -> '); comp=comp1+comp2; modulo=abs(comp) fase=unwrap(180/pi*phase(comp))
Tal como hemos visto, para crear un vector fila es necesario escribir entre corchetes los elementos, separados por un espacio o una coma Si ahora escribimos sin (x), hallaremos el seno de todos los valores de x: y=sin(x) y= Columns 1 through 7 0 0.8090 0.3090 0.5878 0.3090 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.5878 0.0000
Para manejar un nico elemento del vector, por ejemplo seno(0.5*pi), nos referiremos a l como el elemento 6 del vector y: y(6) ans = 1 Si queremos utilizar los 5 primeros elementos, escribiremos y(1:5), y para tomar del elemento 7 al ltimo teclearemos y(7:end) En caso de querer representar la funcin seno(x), necesitaramos bastantes ms de 11 elementos para obtener una grfica aceptable. Escribir 1000 elementos resultara bastante tedioso. Como era de suponer, existe una forma automtica de crear un vector. La instruccin es: x= (valor_inicial:incremento:valor_final). Por ejemplo: X=(0:0.01:pi); %Esta instruccin nos crea un vector x con valor inicial x, valor %final pi, y la diferencia entre elementos consecutivos es 0.01*pi
Es muy recomendable escribir el "; " al final de la sentencia, pues si no aparecern cada uno de los elementos del vector por pantalla: 0, 0.01pi, 0.02pi , y as hasta pi. Las diferentes formas de crear un vector aparecen resumidas en la siguiente tabla: Construcciones bsicas de vectores X = [2 2*pi sqrt(2) 2-3j] X = primero : ultimo X=primero:incremento:ultimo X=linspace(primero, ultimo,n) X=logspace(primero, ultimo,n) Crea un vector con los elementos espeficados Crea un vector empezando en primero, incrementando una unidad en cada elemento, acabando en el elemento ultimo En este caso, el incremento no es 1 sino que es fijado por nosotros Crea un vector empezando en primero, acabando en ultimo, con n elementos Crea un vector logartmico
De igual manera, se pueden crear matrices, escribiendo un "; " para indicar que es una fila distinta: x= [ 2 3 ; 2 5 ] x= 2 3 2 5
10
6. Representaciones grficas
6.1 La funcin plot
Para representar grficos en dos dimensiones, es habitual utilizar el comando plot(eje x, eje y). Por ejemplo, si quisisemos representar la funcin seno: x = (0:0.01:2*pi); y = sin(x); plot (x,y) Debera aparecernos una ventana del tipo Figure:
Fig 1. Representacion grfica de funciones con el comando plot Esta grfica se puede ampliar, reducir , cambiar su color y copiar para utilizarla en otro documento. Si ya tenamos abierta una ventana Figure, al usar plot, desaparecer la grfica anterior sin previo aviso. Para evitarlo, aadiremos una nueva ventana tecleando figure en MATLAB. Es posible dibujar ms de una grfica en una ventana, escribiendo plot(eje x1, eje y1, eje x2, eje y2,...); por ejemplo:
11
z = cos(x); plot(x,y,x,z) Tambin podemos dividir la ventana en varias partes con el comando subplot (m,n,i). La ventana Figure se dividir en una matriz de m por n pequeas ventanas, y se seleccionar la ventana i-sima. Por ejemplo: subplot(2,1,1); plot(x,y) subplot(2,1,2); plot(x,z) %La ventana Figure se dividir en dos; selecionamos la primera %Representamos y=sin(x) %Ahora selecionamos la segunda %Representamos z=cos(x)
12
13
14
1.5
1 s e t n e i d n e p e d s e l b a i r a v 0.5 sen(x)
cos(x)
-0.5 -1
-1.5
15
7. Toolbox de control 4
7.1 Representacin de un sistema
El primer problema que se nos plantea es la definicin de un sistema. Los sistemas se suelen expresar en forma de funcin de transferencia. sta se puede expresar como cociente de polinomios, con la instruccin tf : escribiremos entre corchetes los coeficientes de numerador y denominador (en sentido descendente de las potencias de la variable s). planta = tf ( [ 1 1] , [3 2 5] ); nos definira
F ( s) =
1+ S 3 S + 2 S + 5
2
De esta representacin, podemos quedarnos nicamente con el numerador y/o denominador: [num,den] = tfdata (planta , ' v ' )5 num = den = 3 2 5 0 1 1
u obtener los polos y ceros del sistema: [z,p,k] = tf2zp (num,den); z= -1 p= -0.3333 + 1.2472i -0.3333 - 1.2472i k= 0.3333 , donde k no es la ganancia esttica, sino la que se obtiene al expresar la funcin de transferencia en forma de polos y ceros. Tambin podemos obtener la descomposicin en fracciones simples: [r, p, k] = residue (num,den) r= 0.1667 - 0.0891i 0.1667 + 0.0891i
4 5
Teclear ctrldemo para ver una demostracin de las posibilidades que ofrece esta Toolbox El argumento 'v' se incluye para obtener numerador y denominador en forma de vectores
16
p= -0.3333 + 1.2472i -0.3333 - 1.2472i k= [] El coeficiente k representa el trmino independiente, que valdr 0 siempre que el orden del numerador sea inferior al del denominador. Es decir, F(s) tambin se puede expresar como:
F ( s) =
Si no incluyesemos la instruccin pause, nos aparecer nicamente la ltima grfica (el diagrama de nyquist en nuestro ejemplo); de esta manera, nos mostrar el primer diagrama, y no pasar al siguiente hasta pulsar cualquier tecla. Si queremos dibujar un diagrama para unas pulsaciones determinadas, es necesario definirse previamente el vector de pulsaciones w: w = logspace (-2, 3, 1001); % Creamos vector w, con valor inicial en 10-2, valor % final = 103, con 1001 puntos bode (planta,w) Podemos hallar tambin los mrgenes de ganancia y/o fase y pulsaciones asociadas: [ganancia, fase] =bode (planta); [Mg,Mf,wu,wo]=margin (ganancia,fase,w) Mg = 7.3343
17
Mf = Inf wu = 1.8258 wo = NaN En este caso, no tenemos margen de fase, y por tanto no existe la pulsacin de cruce (el trmino NaN significa Not-A-Number). Existen tambin funciones para dibujar el lugar de las races: rlocus(planta)
1.5
1 0.5 s i x A g a m I
-0.5 -1
-1.5 -4
-3
-2 Real Axis
-1
Fig 5. Lugar de las races de la funcin de transferencia "planta" Con este grfico, es posible disear para obtener unos polos determinados. Para obtener mayor precisin, es conveniente dibujar una rejilla radial: zeta=0:0.1:1; wn=1:10; sgrid(zeta,wn) % Nos muestra rectas de pendiente zeta y % circunferencias de radio wn zoom % Definimos x y wn
18
Y ahora hallamos la ganancia necesaria para obtener los polos [gan,polos]=rlocfind(planta) Select a point in the graphics window selected_point = -1.0554 + 1.4078i gan = 4.3339 polos = -1.0557 + 1.4131i -1.0557 - 1.4131i Otras funciones tiles de esta Toolbox son: dcgain(sistema) [num,den]=pade(T, n) minreal(sistema) Halla la ganancia esttica del sistema Devuelve el numerador y denominador de una aproximacin de Pade de e-TS, de orden n Simplifica la funcin de transferencia de sistema % Aparece un cursor en la ventana del % lugar de las races
Para empezar a simular con nuestra funcin de transferencia, existen numerosas funciones en MATLAB(step, impulse), si bien lo ms sencillo es utilizar SIMULINK o LTIVIEW.
19
7.3 LTIVIEW
Todo lo que hemos visto hasta ahora se puede hacer con un nico comando de forma ms intuitiva. Para ello, tecleamos ltiview. Nos aparecer la siguiente pantalla:
Funciones de transferencia
En el recuadro Workspace nos aparecen todas las funciones de transferencia que hemos definido. Para seleccionar una de ellas, hacemos doble clic. En Plot Type, podemos elegir el tipo de grfica: ante un escaln, diagrama de Bode, Nyquist, lugar de las races, etc; adems, al seleccionar uno de ellos, nos aparecer en Plot Options varias posibilidades; por ejemplo, para un escaln, nos muestra el tiempo de establecimiento, pico ,etc.; y para cualquier diagrama de respuesta en frecuencia, podemos ver el margen de fase y ganancia de nuestra planta.
20
Al seleccionar una de estas opciones, nos aparecer un punto en la grfica; para ver cul es el valor en concreto, es necesario mantener pulsado el ratn en ese punto.
21
8. Ayuda
Existen demasiados comandos en MATLAB para poder recordarlos. Para facilitarnos la labor, se ha creado un archivo de ayuda al cual podemos recurrir en todo momento.
22
9. Simulink
9.1 Introduccin
Simulink es una extensin de MATLAB para la simulacin de sistemas dinmicos. Al ser un entorno grfico, resulta bastante sencillo de emplear. Para ejecutar Simulink, podemos teclear simulink desde MATLAB, o bien hacer clic en el icono de herramientas de MATLAB. Nos aparecern dos ventanas: una con las libreras de Simulink, y otra en blanco donde construiremos nuestro nuevo modelo. , en la barra
Fig 8. Libreras de Simulink En cada uno de los grupos que aparecen en la fig. 3, estarn los bloques necesarios para simular nuestro sistema de control. Por ejemplo, haciendo doble clic en Linear aparecer la siguiente ventana:
23
S +1 S + 3S + 5
Salida
24
Para construirlo en Simulink, seguiremos los siguientes pasos: En el grupo Linear, elegimos el bloque Sum, y lo arrastramos hasta nuestra ventana vaca. Del mismo grupo, elegimos Transfer Fcn y Gain. Para introducir los valores que tendrn los bloques, hacemos doble clic en cada uno de ellos. Nos aparecer el cuadro de dilogo correspondiente:
Fig 11. Introduccin de valores para cada bloque Se har de igual manera para la constante (Gain) y el punto de suma (Sum), en el que pondremos +Cada bloque tiene en sus extremos una o varias flechas. Al situarnos con el ratn en esas flechas, el puntero pasa a ser una cruz. Para conectar los bloques, arrastramos hasta la flecha del siguiente bloque. Ahora necesitamos poner la referencia. Para ello, hacemos doble clic en el grupo Sources, y elegimos Step. Lo arrastramos hasta la ventana donde tenemos el modelo. Para cambiar los valores del escaln, y el tiempo en que ste se produce, hacemos doble clic en el bloque. Por defecto, el escaln es unitario y se da en t=1. Por ltimo, para ver la salida (o cualquier otra seal) hay varias posibilidades. Las dos ms utilizadas son los bloques Scope y To Workspace (en el grupo Sinks). El bloque Scope nos permite ver el comportamiento de una seal mientras se simula. Por el contrario, To Workspace guarda la seal en memoria, para poder dibujarla despus de la simulacin (con el comando plot) o guardarla en un fichero de datos .mat.
25
Fig 12. Modelo de Simulink del sistema de control La orientacin por defecto de los bloques es "a derechas" (la entrada est en la izquierda, la salida en la derecha). Esto se puede cambiar seleccionando el bloque y pulsando Ctrl+R o en el men Format/Rotate Block. Despus de construir el modelo, resulta conveniente guardarlo antes de empezar a simular (Men File/Save as..). Los modelos de Simulink se guardan con extensin .mdl
26
9.3. Simulacin
Para simular el sistema ya construido, elegimos Start del men Simulation. En este men tambin hay otras opciones; la nica que usaremos es Parameters:
Fig 13. Introduccin de los parmetros de la simulacin En este recuadro elegimos las caractersticas de la simulacin. Las ms importantes es Start time (que suele ser 0.0) y Stop time. sta ltima se tendr que ajustar a nuestro sistema, pues por ejemplo un sistema mecnico es mucho ms rpido que uno trmico, y necesitar menos tiempo para llegar al rgimen permanente. Una vez empezada la simulacin, sta se puede parar o hacer una pausa (en el mismo men Simulation/Stop y Simulation/Pause) Si queremos ver la salida, hacemos doble clic en el bloque Scope. Nos aparecer la siguiente pantalla:
27
Fig 14. Visualizacin de la respuesta mediante el bloque Scope En la barra de herramientas existen varios iconos: los tres primeros fijan el tipo de zoom (ampliar eje x y eje y, slo eje x o solo eje y ). El cuarto icono (con el smbolo de los prismticos) har que aparezca en pantalla la grfica completa. El quinto nos guarda la configuracin de los ejes para posteriores simulaciones, y el ltimo nos permite fijar los ejes, y la cantidad de datos que queremos guardar.
Y ( s) salida . = U ( s ) entrada
Guardamos el modelo, y despus, desde MATLAB, escribimos las siguientes instrucciones: >> [A,B,C,D]=linmod ('mi_planta'); %Donde 'mi_planta' es el nombre del archivo 28
1 3 2
Datos: Potencia inyectada en bloque 3 Temperatura controlada en bloque 3 C1= 2 min kW / C R13 = 7.5 C / kW C2= 2.5 min kW / C R23 = 10 C / kW
6
Pg ( s ) = C3 T3 ( s )s +
No se ha considerado el efecto de una posible perturbacin, pues hemos de definir una nica entrada y salida
29
1/60
[T3]
Fig 15. Modelo de Simulink que representa el sistema trmico Para construir el modelo de una forma ms clara, se han utilizado Tags o etiquetas (que se encuentran en Connections) El trmino 1/60 corresponde al cambio de unidades de minutos a segundos Ahora escribimos en MATLAB: >> [A,B,C,D]=linmod ('mi_planta'); >> [num,den]=ss2tf (A,B,C,D); >> planta =tf(num,den) La funcin de transferencia entre la potencia aportada al sistema y la temperatura a controlar queda:
nuestro sistema real. Para ello, seleccionamos todos los bloques, pulsando en una esquina y arrastrando hasta englobar a todos los elementos (no con la opcin Edit/Select all). Despus hacemos clic en Edit/Create subsystem, que debera aparecer habilitada. Debera quedarnos una ventana as:
31