11.07.2015 Views

MATLAB & SIMULINK - Universidad Pontificia Comillas

MATLAB & SIMULINK - Universidad Pontificia Comillas

MATLAB & SIMULINK - Universidad Pontificia Comillas

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Universidad</strong> <strong>Pontificia</strong> <strong>Comillas</strong>E.T.S.I – I.C.A.IDepartamento de Electrónica y AutomáticaManual de referencia de<strong>MATLAB</strong> & <strong>SIMULINK</strong>Febrero 2000Adolfo Anta MartínezJuan Luis Zamora MachoRamón Rodríguez Pecharromán


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaTabla de Contenidos1. INTRODUCCIÓN................................................................................................................... 32. FUNCIONES MATEMÁTICAS COMUNES .......................................................................... 43. CARACTERÍSTICAS DE LA VENTANA DE COMANDOS ................................................. 63.1. CÓMO UTILIZAR EL WORKSPACE....................................................................................... 63.2. FORMATOS DE NÚMEROS ................................................................................................. 63.3. GESTIÓN DE DIRECTORIOS ............................................................................................... 64. M-FILES ................................................................................................................................ 75. OPERACIONES CON VECTORES...................................................................................... 96. REPRESENTACIONES GRÁFICAS .................................................................................. 116.1 LA FUNCIÓN PLOT .............................................................................................................. 116.2 ESTILOS DE LÍNEA, MARCAS Y COLORES.............................................................................. 126.3 FIJAR REJILLAS, EJES, Y ETIQUETAS.................................................................................... 137. TOOLBOX DE CONTROL ................................................................................................. 167.1 REPRESENTACIÓN DE UN SISTEMA ...................................................................................... 167.2 FUNCIONES ESPECÍFICAS ................................................................................................... 177.3 LTIVIEW .......................................................................................................................... 208. AYUDA................................................................................................................................ 228.1. EL COMANDO HELP ........................................................................................................ 228.2. LA VENTANA DE AYUDA................................................................................................... 229. <strong>SIMULINK</strong> ........................................................................................................................... 239.1 INTRODUCCIÓN .................................................................................................................. 239.2 CONSTRUCCIÓN DEL MODELO............................................................................................. 249.3 SIMULACIÓN ...................................................................................................................... 279.4 MODELADO DE UN SISTEMA FÍSICO...................................................................................... 282


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia1. Introducción<strong>MATLAB</strong> es una aplicación destinada a cálculos matemáticos, si bien dispone deciertas funciones destinadas a temas más específicos, como por ejemplo la ToolBoxde control, que facilita el estudio de sistemas dinámicos y su regulación.Además, existe un complemento de <strong>MATLAB</strong> llamado <strong>SIMULINK</strong>, que nos permite unenfoque más gráfico de los sistemas de control.Al ejecutar <strong>MATLAB</strong>, aparecerá una ventana en blanco, llamada ventana decomandos. La forma de trabajar con <strong>MATLAB</strong> es como con cualquier calculadora:» 4*2 [ pulsamos enter]ans =8A su vez, podemos usar variables para realizar nuestros cálculos:» precio = 17;» iva =0.16;» precio_total =17 * (1+iva)precio_total =19.7200Acabamos de crear tres variables, cuyo valor se guardará en memoria. En las dosprimeras sentencias se incluye un punto y coma al final, con lo que el resultado noaparecerá por pantalla. El nombre que elijamos para nuestras variables tiene algunasrestricciones: no pueden tener un espacio intermedio, se distinguen mayúsculas deminúsculas, y deben empezar por una letra.Si queremos ver las variables que tenemos definidas, teclearemos el comando who:» whoYour variables are:iva precio precio_totalPor 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 borraríaesta variable , pero si escribimos sólo clear, borrará todo lo que hay en memoria; pordesgracia, una vez eliminadas, las variables no se pueden recuperar.Podemos recuperar cualquier instrucción escrita previamente pulsando la tecla delcursor . Para detener la ejecución de cualquier instrucción, hay que pulsar lacombinación de teclas Ctrl+C.3


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia2. Funciones matemáticas comunes<strong>MATLAB</strong> incluye ciertas funciones que nos permiten realizar cálculos máscomplejos que sumar y restar. Para usar estas funciones, se procede de igual maneraque en una calculadora programable; por ejemplo, para realizar una operación queincluya una raíz cuadrada escribimos:» x = 3 - sqrt (5/6) * 2x =1.1743Una lista breve de las funciones de <strong>MATLAB</strong> sería:abs(x)acos(x) 1asin (x)FUNCIONES HABITUALESValor absoluto de x. Si x es un número complejo, abs(x) nos dasu móduloarco coseno de xarco seno de xatan (x) arco tangente de x. Devuelve un ángulo entre -90º y 90ºatan2(x,y) arco tangente de x entre y. Devuelve un ángulo entre 0º y 360º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)coseno de xseno de xtangente de xexponencial e xlogaritmo neperiano de xlogaritmo en base 10 de xresto de la división x / ysitúa el ángulo x entre pi y -pihalla las raíces del polinomio xencuentra la solución de la ecuación f(x)=0; n es el valor pordonde empieza a iterar para hallar la solución.raíz cuadrada de xángulo de xparte real de xparte imaginaria de x1 <strong>MATLAB</strong> trabaja únicamente en radianes.4


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaEs recomendable trabajar con atan2 en vez de atan, pues si la parte real del númerocomplejo es negativa, el ángulo quedará en el segundo o tercer cuadrante. Porejemplo:» 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.3099Para la función atan los números 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 elresultado en grados 2 .Para definir un número complejo, se puede usar i o j como unidad imaginariaindistintamente:» c1=-1+2jc1 =-1.0000 + 2.0000i» c1=-1+2ic1 =-1.0000 + 2.0000i2 La constante pi viene definida por defecto en <strong>MATLAB</strong>5


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia3. Características de la ventana de comandos3.1. Cómo utilizar el WorkspaceTodas las variables que hemos definido se guardan en el Workspace, que no esmás que el espacio de memoria que utiliza <strong>MATLAB</strong>.Aparte de crear y borrar variables, resulta útil guardar sesiones de trabajo, es decir,todas las instrucciones que hemos tecleado en la ventana de instrucciones. Para ello,al inicio de la sesión tecleamos diary . Podemos elegir el tipo dearchivo, si bien es recomendable que éste sea de texto (por ejemplo, diaryc:\regulación\resumen.txt). Para que deje de grabar la sesión teclearíamos diary off.También podemos guardar únicamente el valor de algunas variables:» save c:\regulación\datos x yAquí no es necesario añadir la extensión, y <strong>MATLAB</strong> creará el fichero con extensión.mat. Las variables x e y han de estar previamente definidas.Para recuperar las variables guardadas teclearemos:» load datos3.2. Formatos de númerosSe habrá observado que por defecto todos los números nos aparecen con cuatrodecimales. Se puede cambiar el formato de salida seleccionando el menúFile\Preferences. Cabe destacar que, con el formato que aparece por defecto, algunosnúmeros pueden aparecer por pantalla como 0.0000, aunque realmente no son 0 (sino3.5·10 -7 , por ejemplo).3.3. Gestión de directoriosPor defecto, al arrancar <strong>MATLAB</strong> empezamos en el directorio matlab\bin,mientras que nuestros ficheros (M-files o modelos de <strong>SIMULINK</strong>) suelen estar en otrascarpetas.Para "movernos" en <strong>MATLAB</strong>, usaremos los comandos típicos de MS-DOS: cdpara acceder a un directorio, dir para ver el contenido de un directorio, cd.. para salirde una directorio.6


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia4. M-filesCuando realizamos cálculos simples, es habitual escribir las instrucciones en laventana de comandos. Sin embargo, cuando se van a realizar una serie deoperaciones más complicadas y de forma repetitiva, se utilizan los llamados M-Files;son ficheros de texto donde tecleamos las instrucciones de <strong>MATLAB</strong>. Para crear unnuevo archivo M, hacemos clic en File\New\M-File; nos aparecerá una ventana enblanco para editar el archivo. Por ejemplo:% Mi primer programa en <strong>MATLAB</strong> 3comp1=-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 <strong>MATLAB</strong>, y se ejecutará directamente:» trabajomodulo =14.4222fase =140.0267Supongamos que queremos que este programa sirva no sólo para los complejoscomp1 y comp2. Para ello, bastará con borrar las dos primeras líneas del programaanterior. Ahora tendremos que definir antes el valor de comp1 y comp2 (si no,<strong>MATLAB</strong> nos dará un error diciendo que las variables comp1 y comp2 no estándefinidas):» comp1=-3+2i;» comp2=-10+j;» trabajomodulo =13.3417fase =160.72223 El símbolo % indica que esa línea es comentario.7


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaTambién podíamos hacer que el programa pidiese los números complejos al usuario(pues éste no tiene por qué saber qué es comp1 y comp2):comp1=input('Introduzca el primer número complejo -> ');comp2=input('Introduzca el segundo número complejo -> ');comp=comp1+comp2;modulo=abs(comp)fase=unwrap(180/pi*phase(comp))8


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia5. Operaciones con vectoresHasta ahora, todas las variables utilizadas eran escalares. Por supuesto, también sepueden definir vectores. Por ejemplo, queremos hallar el valor de seno (x) para0 < x < . Como es imposible hallar todos los valores (hay infinitos puntos), debemosdefinir una serie de valores de x. Si tomamos 11 puntos, definiremos x de la forma:» x=[0 0.1*pi 0.2*pi 0.3*pi 0.4*pi 0.5*pi 0.6*pi 0.7*pi 0.8*pi 0.9*pi pi]x =Columns 1 through 70 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850Columns 8 through 112.1991 2.5133 2.8274 3.1416Tal como hemos visto, para crear un vector fila es necesario escribir entre corcheteslos elementos, separados por un espacio o una comaSi ahora escribimos sin (x), hallaremos el seno de todos los valores de x:» y=sin(x)y =Columns 1 through 70 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511Columns 8 through 110.8090 0.5878 0.3090 0.0000Para manejar un único elemento del vector, por ejemplo seno(0.5*pi), nos referiremosa él como el elemento 6 del vector y:» y(6)ans =1Si queremos utilizar los 5 primeros elementos, escribiremos y(1:5), y para tomar delelemento 7 al último teclearemos y(7:end)En caso de querer representar la función seno(x), necesitaríamos bastantes más de 11elementos para obtener una gráfica aceptable. Escribir 1000 elementos resultaríabastante tedioso. Como era de suponer, existe una forma “automática” de crear unvector. La instrucción es: x= (valor_inicial:incremento:valor_final). Por ejemplo:X=(0:0.01:pi);%Esta instrucción nos crea un vector x con valor inicial x, valor%final pi, y la diferencia entre elementos consecutivos es 0.01*pi9


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaEs muy recomendable escribir el "; " al final de la sentencia, pues si no apareceráncada 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:X = [2 2*pi sqrt(2) 2-3j]Construcciones básicas de vectoresCrea un vector con los elementos espeficadosX = primero : ultimo Crea un vector empezando en primero,incrementando una unidad en cada elemento,acabando en el elemento ultimoX=primero:incremento:ultimo En este caso, el incremento no es 1 sino que esfijado por nosotrosX=linspace(primero, ultimo,n) Crea un vector empezando en primero, acabandoen ultimo, con n elementosX=logspace(primero, ultimo,n) Crea un vector logarítmicoDe igual manera, se pueden crear matrices, escribiendo un "; " para indicar que es unafila distinta:» x= [ 2 3 ; 2 5 ]x =2 32 510


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia6. Representaciones gráficas6.1 La función plotPara representar gráficos en dos dimensiones, es habitual utilizar el comandoplot(eje x, eje y). Por ejemplo, si quisiésemos representar la función seno:» x = (0:0.01:2*pi);» y = sin(x);» plot (x,y)Debería aparecernos una ventana del tipo Figure:Fig 1. Representacion gráfica de funciones con el comando plotEsta gráfica se puede ampliar, reducir , cambiar su color y copiar para utilizarla en otrodocumento.Si ya teníamos abierta una ventana Figure, al usar plot, desaparecerá la gráficaanterior sin previo aviso. Para evitarlo, añadiremos una nueva ventana tecleandofigure en <strong>MATLAB</strong>. Es posible dibujar más de una gráfica en una ventana, escribiendoplot(eje x1, eje y1, eje x2, eje y2,...); por ejemplo:11


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia» z = cos(x);» plot(x,y,x,z)También 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 pequeñas ventanas, y seseleccionará 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)10.50-0.5-10 1 2 3 4 5 6 710.50-0.5-10 1 2 3 4 5 6 7Fig 2. Representación de varias gráficas con subplot12


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia6.2 Estilos de línea, marcas y coloresEs posible modificar el color y estilo de las gráficas. Para ello, existen ciertosparámetros que admite la función plot, y han de introducirse como un tercerargumento, después de cada par de variables.Símbolo Color Símbolo Marca Símbolo Estilo de líneab Azul . Puntos - línea continuag Verde O Círculos : línea punteadar Rojo x cruces -. puntos y rayasc Cyan + más -- discontinuam Magenta * estrellasy Amarillo s cuadradosk Negro d diamantesw Blanco p pentagramasPor ejemplo:» plot( x, y, 'rx', x, z, 'o--')Fig 3. Estilos de línea y colores con la función plot13


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia6.3 Fijar rejillas, ejes, y etiquetas– Para fijar una cuadrícula en la ventana Figure, basta con teclear grid on. Paraquitarla, escribimos grid off.– Podemos escribir los nombres de los ejes y de la gráfica:» title('Representación de las funciones seno y coseno’'), xlabel ('variableindependiente'), ylabel ('variables dependientes')– Podemos escribir en el gráfico con la función gtext:» gtext('cos(x)')Al pulsar enter nos aparecerá la ventana Figure; con el ratón podemos decidirdónde situar el texto– Existe también el comando legend, cuya función es similar a la de gtext:» legend (‘variable Y’, ‘variable Z’)El cuadro de la leyenda se puede situar donde queramos, arrastrandolo con elratón.– También se puede cambiar los ejes, con el comando axis:La estructura a escribir es: axis ([xmin xmax ymin ymax])» axis([0 2*pi -1.5 1.5])Para volver al autoescalado, teclearemos axis auto. Otra forma de ampliar oreducir las gráficas es usando la función zoom. Los comandos zoom y legend nopueden estar activos a la vez, pues los dos responden al clic del ratón.– Se puede tomar valores de una gráfica con la instrucción ginput. Una veztecleado ginput, nos aparecerá la ventana Figure, y con el ratón haremos clic enel punto que queramos conocer. Después pulsaremos enter y el valor de lascoordenadas del punto aparecerán en la ventana de comandos de <strong>MATLAB</strong>.Después de todas estas operaciones, la gráfica resultante es:14


UPCoICAI - DEA1.5Representación de las funciones seno y coseno<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia1b l e sdependi e ntesaa ri v0.50-0.5-1cos(x)sen(x)variable Zvariable Y-1.50 1 2 3 4 5 6variable independienteFig 4. Edición de figuras en <strong>MATLAB</strong>15


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia7. Toolbox de control 47.1 Representación de un sistemaEl primer problema que se nos plantea es la definición de un sistema. Lossistemas se suelen expresar en forma de función de transferencia. Ésta se puedeexpresar como cociente de polinomios, con la instrucción tf : escribiremos entrecorchetes los coeficientes de numerador y denominador (en sentido descendente delas potencias de la variable s).» planta = tf ( [ 1 1] , [3 2 5] );nos definiríaF s)3S(21S 2 S 5De esta representación, podemos quedarnos únicamente con el numerador y/odenominador:» [num,den] = tfdata (planta , ' v ' ) 5num = 0 1 1den =3 2 5u obtener los polos y ceros del sistema:» [z,p,k] = tf2zp (num,den);z =-1p =-0.3333 + 1.2472i-0.3333 - 1.2472ik =0.3333, donde k no es la ganancia estática, sino la que se obtiene al expresar la función detransferencia en forma de polos y ceros.También podemos obtener la descomposición en fracciones simples:» [r, p, k] = residue (num,den)r =0.1667 - 0.0891i0.1667 + 0.0891i4 Teclear ctrldemo para ver una demostración de las posibilidades que ofrece esta Toolbox5 El argumento 'v' se incluye para obtener numerador y denominador en forma de vectores16


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciap =-0.3333 + 1.2472i-0.3333 - 1.2472ik =[]El coeficiente k representa el término independiente, que valdrá 0 siempre que elorden del numerador sea inferior al del denominador.Es decir, F(s) también se puede expresar como:0.1667 - j 0.0891 0.1667 j 0.0891F ( s)S 0.3333 - j1.2472 S 0.3333 j1.24727.2 Funciones específicasExisten diversos comandos en <strong>MATLAB</strong> para dibujar gráficos de respuesta enfrecuencia:» bode (planta) % Diagrama de Bode» pause» nichols (planta) % Diagrama de Black» pause» nyquist (planta) % Diagrama de Nyquist desde w = - hasta w = +Si no incluyesemos la instrucción pause, nos aparecerá únicamente la última gráfica(el diagrama de nyquist en nuestro ejemplo); de esta manera, nos mostrará el primerdiagrama, y no pasará al siguiente hasta pulsar cualquier tecla.Si queremos dibujar un diagrama para unas pulsaciones determinadas, es necesariodefinirse previamente el vector de pulsaciones w:» w = logspace (-2, 3, 1001); % Creamos vector w, con valor inicial en 10 -2 , valor% final = 10 3 , con 1001 puntos» bode (planta,w)Podemos hallar también los márgenes de ganancia y/o fase y pulsaciones asociadas:» [ganancia, fase] =bode (planta);» [Mg,Mf,wu,wo]=margin (ganancia,fase,w)Mg =7.334317


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaMf =Infwu =1.8258wo =NaNEn este caso, no tenemos margen de fase, y por tanto no existe la pulsación de cruce(el término NaN significa Not-A-Number).Existen también funciones para dibujar el lugar de las raíces:» rlocus(planta)1.510.5A xi sgaIm0-0.5-1-1.5-4 -3 -2 -1 0 1Real AxisFig 5. Lugar de las raíces de la función de transferencia "planta"Con este gráfico, es posible diseñar para obtener unos polos determinados. Paraobtener mayor precisión, es conveniente dibujar una rejilla radial:» zeta=0:0.1:1; % Definimos y wn» wn=1:10;» sgrid(zeta,wn) % Nos muestra rectas de pendiente zeta y% circunferencias de radio wn» zoom18


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaY ahora hallamos la ganancia necesaria para obtener los polos» [gan,polos]=rlocfind(planta) % Aparece un cursor en la ventana del% lugar de las raícesSelect a point in the graphics windowselected_point =-1.0554 + 1.4078igan =4.3339polos =-1.0557 + 1.4131i-1.0557 - 1.4131iOtras funciones útiles de esta Toolbox son:dcgain(sistema)[num,den]=pade(T, n)minreal(sistema)Halla la ganancia estática del sistemaDevuelve el numerador y denominador de unaaproximación de Pade de e -TS , de orden nSimplifica la función de transferencia de sistemaPara empezar a simular con nuestra función de transferencia, existen numerosasfunciones en <strong>MATLAB</strong>(step, impulse), si bien lo más sencillo es utilizar <strong>SIMULINK</strong> oLTIVIEW.19


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia7.3 LTIVIEWTodo lo que hemos visto hasta ahora se puede hacer con un único comando deforma más intuitiva. Para ello, tecleamos ltiview. Nos aparecerá la siguiente pantalla:Funciones detransferenciaFig 6. Pantalla del LTIVIEWTipo de gráficaEn el recuadro Workspace nos aparecen todas las funciones de transferenciaque hemos definido. Para seleccionar una de ellas, hacemos doble clic. En Plot Type,podemos elegir el tipo de gráfica: ante un escalón, diagrama de Bode, Nyquist, lugarde las raíces, etc; además, al seleccionar uno de ellos, nos aparecerá en Plot Optionsvarias posibilidades; por ejemplo, para un escalón, nos muestra el tiempo deestablecimiento, pico ,etc.; y para cualquier diagrama de respuesta en frecuencia,podemos ver el margen de fase y ganancia de nuestra planta.20


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaAl seleccionar una de estas opciones, nos aparecerá un punto en la gráfica; para vercuál es el valor en concreto, es necesario mantener pulsado el ratón en ese punto.Fig 7. Análisis de sistemas con LTIVIEW21


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia8. AyudaExisten demasiados comandos en <strong>MATLAB</strong> para poder recordarlos. Parafacilitarnos la labor, se ha creado un archivo de ayuda al cual podemos recurrir en todomomento.8.1. El comando helpPara recurrir a la ayuda, basta con teclear help nombre_de_función. Si escribimos helpa secas, nos aparecerá una lista de categorías de las funciones disponibles. Porejemplo:» help sqrtSQRT Square root.SQRT(X) is the square root of the elements of X. Complexresults are produced if X is not positive.See also SQRTMEl comando help nos muestra una pequeña descripción de la función, y también unaserie de comandos relacionados (en este caso sqrtm, que nos permite hacer raícescuadradas de matrices).Aunque en la ayuda aparezca la función en mayúsculas, al usarla hemos de escribirlaen minúscula (pues SQRT daría error).Si no conocemos en concreto el nombre de la función, podemos usar el comandolookfor:»lookfor complexnos mostrará todas las funciones relacionadas con números complejos.También es útil el comando demo , que nos mostrará una pantalla con demostracionesde todas las posibilidades que ofrece <strong>MATLAB</strong>.8.2. La ventana de ayudaExiste una ventana específica para la ayuda de <strong>MATLAB</strong>. Para que aparezca,escribimos helpwin o hacemos clic en el icono , en la barra de herramientas.La ventana contiene un listado de todas las categorías de <strong>MATLAB</strong>. Haciendo clic encualquiera de ellas, pasaremos a una pantalla donde aparecen todas las funciones deesa categoría. El botón Tips nos describe brevemente cómo usar la ayuda.22


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia9. Simulink9.1 IntroducciónSimulink es una extensión de <strong>MATLAB</strong> para la simulación de sistemas dinámicos.Al ser un entorno gráfico, resulta bastante sencillo de emplear. Para ejecutar Simulink,podemos teclear simulink desde <strong>MATLAB</strong>, o bien hacer clic en el icono , en la barrade herramientas de <strong>MATLAB</strong>.Nos aparecerán dos ventanas: una con las librerías de Simulink, y otra en blancodonde construiremos nuestro nuevo modelo.Fig 8. Librerías de SimulinkEn cada uno de los grupos que aparecen en la fig. 3, estarán los bloques necesariospara simular nuestro sistema de control. Por ejemplo, haciendo doble clic en Linearaparecerá la siguiente ventana:23


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaPara construirlo en Simulink, seguiremos los siguientes pasos:En el grupo Linear, elegimos el bloque Sum, y lo arrastramos hasta nuestra ventanavacía.Del mismo grupo, elegimos Transfer Fcn y Gain.Para introducir los valores que tendrán los bloques, hacemos doble clic en cada unode ellos. Nos aparecerá el cuadro de diálogo correspondiente:Fig 11. Introducción de valores para cada bloqueSe hará de igual manera para la constante (Gain) y el punto de suma (Sum), en el quepondremos +-Cada bloque tiene en sus extremos una o varias flechas. Al situarnos con el ratón enesas flechas, el puntero pasa a ser una cruz. Para conectar los bloques, arrastramoshasta la flecha del siguiente bloque.Ahora necesitamos poner la referencia. Para ello, hacemos doble clic en el grupoSources, y elegimos Step. Lo arrastramos hasta la ventana donde tenemos el modelo.Para cambiar los valores del escalón, y el tiempo en que éste se produce, hacemosdoble clic en el bloque. Por defecto, el escalón es unitario y se da en t=1.Por último, para ver la salida (o cualquier otra señal) hay varias posibilidades. Las dosmás utilizadas son los bloques Scope y To Workspace (en el grupo Sinks).El bloque Scope nos permite ver el comportamiento de una señal mientras se simula.Por el contrario, To Workspace guarda la señal en memoria, para poder dibujarladespués de la simulación (con el comando plot) o guardarla en un fichero de datos.mat.25


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaEl modelo en Simulink quedará como en la figura siguiente:Fig 12. Modelo de Simulink del sistema de controlLa orientación por defecto de los bloques es "a derechas" (la entrada está en laizquierda, la salida en la derecha). Esto se puede cambiar seleccionando el bloque ypulsando Ctrl+R o en el menú Format/Rotate Block.Después de construir el modelo, resulta conveniente guardarlo antes de empezar asimular (Menú File/Save as..). Los modelos de Simulink se guardan con extensión .mdl26


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia9.3. SimulaciónPara simular el sistema ya construido, elegimos Start del menú Simulation. Eneste menú también hay otras opciones; la única que usaremos es Parameters:Fig 13. Introducción de los parámetros de la simulaciónEn este recuadro elegimos las características de la simulación. Las más importanteses Start time (que suele ser 0.0) y Stop time. Ésta última se tendrá que ajustar anuestro sistema, pues por ejemplo un sistema mecánico es mucho más rápido queuno térmico, y necesitará menos tiempo para llegar al régimen permanente.Una vez empezada la simulación, ésta se puede parar o hacer una pausa (en elmismo menú Simulation/Stop y Simulation/Pause)Si queremos ver la salida, hacemos doble clic en el bloque Scope. Nos aparecerá lasiguiente pantalla:27


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaFig 14. Visualización de la respuesta mediante el bloque ScopeEn la barra de herramientas existen varios iconos: los tres primeros fijan el tipo dezoom (ampliar eje x y eje y, sólo eje x o solo eje y ). El cuarto icono (con el símbolo delos prismáticos) hará que aparezca en pantalla la gráfica completa. El quinto nosguarda la configuración de los ejes para posteriores simulaciones, y el último nospermite fijar los ejes, y la cantidad de datos que queremos guardar.9.4 Modelado de un sistema físicoNo siempre disponemos de una función de transferencia, sino que tenemos unconjunto de ecuaciones que nos describe el comportamiento de un sistema real.Esta función de transferencia se podría obtener resolviendo el sistema de ecuaciones,pero resulta más sencillo utilizar Simulink. Para ello, nos construimos cada una de lasecuaciones con bloques. Después hemos de definir una entrada y una salida,mediante los bloques In y Out, que aparecen en el gupo Connections, pues la funciónY(s)salidade transferencia se representa como F( s) .U ( s)entradaGuardamos el modelo, y después, desde <strong>MATLAB</strong>, escribimos las siguientesinstrucciones:>> [A,B,C,D]=linmod ('mi_planta'); %Donde 'mi_planta' es el nombre del archivo28


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia>> [num,den]=ss2tf (A,B,C,D);Ejemplo:Intentaremos modelar el siguiente sistema térmico:132Datos:Potencia inyectada en bloque 3Temperatura controlada en bloque 3C 1 = 2 min kW / ºC C 2 = 2.5 min kW / ºC C 3 = 3.5 min kW / ºCR 13 = 7.5 ºC / kW R 23 = 10 ºC / kW R 30 = 15 ºC / kWLas ecuaciones que nos describen este sistema son: 61Pg(s) C3·T3( s)·s R1R311R32·( T ( s) T ( s)) C · T ( s)·s3·( T ( s) T ( s)) C · T ( s)·s31213221·( T3( s) T2( s))R12311·( T3( s) T1( s))R30·( T ( s) T ( s))30Representando estas ecuaciones en un modelo de Simulink, nos queda:6 No se ha considerado el efecto de una posible perturbación, pues hemos de definir una única entrada y salida29


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referencia[T3][T1]1/151s1/60[T1][T3][T2]1/251s1/60[T2][T3]1/7.5[T1][T3][T2]1/101Out[T3]1/1511/3.1/601s[T3]InFig 15. Modelo de Simulink que representa el sistema térmicoPara construir el modelo de una forma más clara, se han utilizado Tags o etiquetas(que se encuentran en Connections)El término 1/60 corresponde al cambio de unidades de minutos a segundosAhora escribimos en <strong>MATLAB</strong>:>> [A,B,C,D]=linmod ('mi_planta');>> [num,den]=ss2tf (A,B,C,D);>> planta =tf(num,den)La función de transferencia entre la potencia aportada al sistema y la temperatura acontrolar queda:T3( s)Pg(s)0.004762· S3S 0.0032· S226 8.466·10 · S 3.527· 106 2.257310 · S 2.352· 10910(en segundos)30


UPCoICAI - DEA<strong>MATLAB</strong> & <strong>SIMULINK</strong>Manual de referenciaUna vez modelado el sistema, resulta conveniente crear un bloque que agrupenuestro sistema real. Para ello, seleccionamos todos los bloques, pulsando en unaesquina y arrastrando hasta englobar a todos los elementos (no con la opciónEdit/Select all). Después hacemos clic en Edit/Create subsystem, que deberíaaparecer habilitada. Debería quedarnos una ventana así:En este diagrama de bloques sí se ha incluido la perturbación.31

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!