Tutorial Simulink 1
Tutorial Simulink 1
Tutorial Simulink 1
SIMULINK
10.1 INTRODUCCION
Simulink es un software que funciona bajo la plataforma de Matlab y es una herramienta muy til para modelar, simular y analizar sistemas, tanto lineales como no lineales. Permite al usuario realizar sus estudios tanto en el dominio del tiempo como el de Laplace, expresar las funciones de transferencia en las diferentes formas incluyendo la del espacio de los estados y otras opciones. En una interfaz grfica (GUI) como la que se observa en la Figura 10.1, el usuario construye un diagrama de bloques que desarrollan procedimientos que realizan las operaciones matemticas requeridas para la solucin de un modelo.
178
en la barra estndar o desplegando el men File y seleccionando sucesivamente New y Model (Ctrl + N)
Mach
179
(a)
(b)
Figura 10.2. Librera (a) Continuous y (b) Bloques operacionales Los bloques de la librera Continuous representan unidades que se alimentan de una informacin de entrada y que al desarrollar sobre esta un proceso matemtico transmite el resultado como una informacin de salida. En la librera Continuous se incluyen los bloques para realizar operaciones matemticas continuas en el tiempo.
Mach
180
(a)
(b)
Mach
181
(a)
(b)
Figura 10.5 Especificaciones de bloques (a) Transfer Fcn y (b) Zero-Pole En la Figura 10.5a, se observan los cuadros donde se especifican en forma matricial el numerador y el denominador de la funcin de transferencia mientras que en la Figura 10.5b los cuadros donde se incluyen en forma matricial los zeros, los polos y las ganancias de la funcin de transferencia Es comn a todas las ventanas de especificaciones de bloques operacionales, la inclusin de la barra de ttulo seguido de un pequeo cuadro con el nombre del bloque y una breve descripcin de la funcin de ste. De igual manera, en la parte inferior se incluyen los botones OK, Cancel, Help y Apply
Mach
182
(a)
(b)
Mach
183
Figura 10.8 Bloques de la librera Math Operations Los bloques de la librera Math Operations se utilizan en la simulacin de la dinmica de un sistema para aplicar operadores matemticos sobre su informacin de entrada. A continuacin se describe la especificacin de algunos de ellos
184
El bloque Sum se especifica introduciendo en el cuadro List of signs los signos de cada uno de las informaciones de entrada o el nmero de ellas. En el primer caso los signos de suma o resta se despliegan a un lado de los topes de entrada del icono que representa al bloque
(a)
(b)
Figura 10.10 Especificaciones de los bloques (a) Gain y (b) Slider Gain
Mach
185
Figura 10.11 Especificaciones del bloque Product Al especificar los signos, estos se despliegan con los smbolos de producto o divisin a un lado de los topes de entrada del icono que representa al bloque
(a)
(b)
Figura 10.12 Especificaciones del bloque (a) Math Function, (b) Trigonometric Function
Mach
186
Mach
187
Figura 10.14 Bloques de la librera Sources La librera Sources contiene un conjunto de bloques de donde emergen seales que representan los cambios en las variables de entrada. Estos bloques solo tienen puertos de salida, es decir, no tienen puertos de entrada. A continuacin se describen los bloques Step, Ramp, Sine Wave, Constant, Clock, Digital Clock, Signal Generator
(a)
(b)
188
La Figura 1.15b muestra la ventana de especificaciones del bloque Ramp. En el cuadro Slope se introduce la pendiente de la rampa y en el cuadro Start time se introduce el tiempo de iniciacin del cambio rampa. Los cuadros de especificaciones se dejan con sus valores por defecto
(a)
(b)
Figura 10.16 Especificaciones del bloque (a) Sine Wave y (b) Signal Generator La Figura 10.16b muestra la ventana de especificaciones del bloque Signal Generator. En el cuadro Wave from se especifica si la onda peridica de entrada es sinusoidal, cuadrada, diente de sierra o al azar. La amplitud y la frecuencia se introducen en los cuadros de nombres Amplitude y Frequency, respectivamente.
Mach
189
time se despliega el tiempo sobre el icono. El bloque Display Clock se puede utilizar como otra opcin.
(a)
(b)
Figura 10.17 Especificaciones del bloque (a) Clock (b) Constante La Figura 10.17b muestra la ventana de especificaciones para el bloque Constante que se utiliza para entrar un valor constante en el diagrama de bloques que simula la dinmica de un sistema.
Mach
190
(b)
(a)
(b)
Figura 10.19 Especificaciones del bloque (a) XY Graph y (b) Floating Scope Los botones Display y To Workspace despliegan la informacin de salida en forma numrica. El primero lo muestra en forma digital sobre el mismo icono mientras que el segundo lo hace sobre el espacio de trabajo de Matlab asignndole
Mach
191
un smbolo a las variables que se quieren desplegar. El botn Display permite la seleccin del formato numrico para el despliegue de la informacin de salida. La Figura 10.20 muestra las ventanas de especificaciones de estos botones
(a)
(b)
Mach
192
(a)
(b)
Figura 10.22. Librera (a) Signal Routing (a) y (b) Ports & Subsystems La librera Signal Routing contiene un conjunto de bloques de enrutamiento de seales como interruptores, mezcladores, divisores, etc. Estos bloques tienen puertos de entrada y de salida La librera Ports & Subsystems contiene un conjunto de bloques que definen puertos de entradas y de salidas o subsistemas con los que desarrollan lazos de control de flujo como if, switch, while, for, etc.
10.9 SIMULACION DE UN SISTEMA CON SIMULINK 10.9.1 Sistema de Primer Orden Lineal Dominio Tiempo
En la Figura 10.23 se muestra un diagrama de bloques para la simulacin del sistema de primer orden lineal en el dominio del tiempo, planteado en la Prctica No. 1.
Mach
193
194
Los parmetros fsicos incluidos son los correspondientes al volumen en el tanque, el flujo volumtrico a travs del mismo y la constante de velocidad de reaccin. El botn Multiport Switch es un interruptor mltiple que se encuentra en la librera Signal Routing. Su funcionamiento est acoplado con el botn constante denominado Entrada cuya funcin es indicar al interruptor la funcin que debe dejar pasar a travs de l. Esto se hace asignando los nmeros 1, 2 y 3 a los cambios Step, Ramp y Sine Wave, respectivamente. El botn Mux de la librera Routing Signal simula la circulacin de la seal rampa de entrada separada de la seal de salida del sistema pero conjuntas de tal manera que el Scope que se alimenta con la descarga del botn Mux muestra en una misma ventana ambos perfiles. El botn Manual Switch se incluye para interrumpir el flujo de la informacin de salida a travs de l cuando se haga la simulacin de la respuesta rampa. Su operacin es manual Al hacer la simulacin con la ecuacin diferencial estndar de un sistema de primer orden lineal en trminos de sus variables desviacin, la condicin inicial en el integrador es cero. Para la fijacin de los parmetros de la simulacin en cuanto a la fijacin del tiempo y a la seleccin del mtodo para la solucin de la ecuacin diferencial despliegue el men Simulation y llnela como se observa en la Figura 10.24.
Figura 10.24 Especificacin de los Parmetros de la Simulacin En el cuadro Simulation Time se ha fijado como tiempo de simulacin 50 unidades de tiempo y en el cuadro Solver options se ha seleccionado el mtodo
Mach
195
ode23s (stiff/Mod. Rosenbrock). Estos mtodos rigurosos se seleccionan, especialmente, cuando se observa que las respuestas se ven a trazos lineales muy notorios, lo que puede deberse a la aplicacin de un mtodo menos riguroso
Mach
196
Mach
197
198
Las leyendas que aparecen sobre algunas corrientes se digitan haciendo un clic sobre el lugar sobre el cual se quiere introducir. Las letras griegas se colocan con el estilo Symbol
Mach
199
Mach
200
Mach
201
En la Figura 10.28 se incluye el botn Transport Delay de la librera Continuous para especificar el tiempo muerto y se simplifica el diagrama definiendo dos subsistemas, el Subsystem1 incluye los elementos que seleccionan el sistema de primer o de segundo orden que se quiere simular y el denominado Subsystem incluye los elementos con los cuales se desarrolla la respuesta que se quiere desarrollar o simular. Las Figuras 10.29 y 10.30 muestran los diagramas correspondientes para cada uno de los subsistemas observados
Mach
202
El botn Subsystem se selecciona en la librera Ports&Subsystems y el subsistema se puede construir dentro del bloque seleccionado pero tambin se pueden escoger los elementos previamente y seleccionar la opcin Create Subsystem del men Edit del espacio de trabajo de Simulink, En la Figura 10.29 se emplea el botn Switch Case de la librera Ports&Subsystems y que desarrolla la operacin switch-case sobre el valor de la variable de entrada que en el programa codificado en Matlab corresponde a la asignacin para seleccionar el sistema de primero o segundo orden. El caso 1 (Primer Orden) se conecta con un botn Switch Case Action Subsystem, de la misma librera, denominado Primer Orden que requiere de la alimentacin de la accin (1), para lo cual se instala la funcin de transferencia para un sistema de primer orden (En el esquema se coloc afuera para ilustracin del lector) entre su puerto de entrada y salida. La entrada a este bloque es el cambio en la variable de entrada (Paso, Rampa o Seno). Para el caso 2 (Segundo Orden) se construye un esquema similar. El interruptor multipuerto utiliza como indicador de salida el que se asigna para el orden del sistema. En la Figura 10.30, un botn Switch Case desarrolla la operacin switch-case sobre el valor que se asigna para seleccionar el tipo de cambio en la variable de entrada. Se incluyen un caso para la respuesta rampa y otro caso (2, 3), que desarrolla los cambios paso y seno. Los botones Switch Case Action Subsystem se alimentan de las acciones y entradas correspondientes a rampa y paso y seno, respectivamente. El botn Merge de la librera Ports&Subsystems emerge las seales de entrada en una sola seal de salida. En este caso, solo emerge la informacin alimentada
Mach
203
un bloque donde se selecciona el tipo de respuesta a simular, es decir, paso, rampa o seno.
Figura 10.32 Seleccin del dominio de Solucin La Figura 10.33 muestra el diagrama de bloques que representa la solucin del modelo en el dominio del tiempo. Al observar este diagrama, se deduce que los
Mach
204
parmetros dinmicos correspondientes a cada uno de los tanques se introducen al correr el programa codificado en Matlab, es decir, las constantes de tiempo y las ganancias estacionarias. La Figura 10.34 es el diagrama de bloques que representa la solucin del modelo en el dominio de Laplace
Figura 10.34 Solucin del modelo en el dominio de Laplace La Figura 10.35 es el diagrama de bloques correspondiente al subsistema denominado Salida incluido en la Figura 10.32. Se observa, que mediante un lazo
Mach
205
de control SwitchCase se selecciona la salida de acuerdo al dominio, tiempo o Laplace, en que se hace la simulacin.
Figura 10.35 Seleccin del dominio de Salida La Figura 10.36 es el diagrama de bloques en donde se selecciona si la respuesta a simular es paso, rampa o seno para los respectivos grficos de salida
206
Figura 10.37 Tanques en serie interactuantes Las Figuras 10.38 a 10.42 muestran los diagramas de bloques de cada uno de los sucesivos subsistemas introducidos en el diagrama de bloque de la Figura 10.37. La estructura de los subsistemas es similar a la construida para el modelo de tres tanques de flujo en serie no interactuantes.
Mach
207
Mach
208
Mach
209
210
Y la Figura 10.44 muestra el diagrama de bloques para el sistema de dos tanques de flujo interactuantes simulado en la misma prctica. Las matrices son introducidas en el archivo ordenmayorsimulink
Figura 10.45 Bloque For Iterator Subsystem Al hacer doble clic sobre el bloque se despliega el subsistema que muestra el bloque For Iterator, y un puerto de entrada unido a un puerto de salida como se observa en la Figura 10.46 El bloque For Iterator se especific para que la entrada del nmero de clculos se alimente externamente seleccionando la opcin External en el cuadro Source of number of iterations
Mach
211
Figura 10.46 El diagrama de bloques para el clculo de las concentraciones de A y B en estado estacionario se muestra en la Figura 10.48. Para la asignacin de los sucesivos valores de la velocidad espacio se emplea el bloque Memory de la librera Discrete cuya funcin y especificaciones se observan en la Figura 10.47. Se asigna como valor inicial el valor de -0.1 para que los clculos se inicien para un valor de cero ya que esta salida se ha de sumar con el valor constante de 0.1 alimentado. La salida de este botn es el valor de entrada anterior. Con este lazo, el valor de la velocidad espacio cambia de 0.1 en 0.1 desde cero y un nmero de veces dado por el nmero de iteraciones especificado. Se requiere la verificacin del cuadro de nombre Inherit sample time.
Figura 10.47 Especificaciones del botn Memory Tratndose de una solucin en estado estacionario se fijan tanto el tiempo inicial como el final con un valor de cero. Al fijar un tiempo final diferente, los clculos se repiten tantas veces como el tiempo permita repetir el nmero de clculos.
Mach
212
Figura 10.48 Subsistema para calcular el perfil de las concentraciones de A y B El nmero de iteraciones se multiplica por el valor de 0.1 para fijar la escala en el eje de las abscisa de 0 a 10 en las representaciones grficas. Para la observacin de los perfiles se sugiere el intervalo de 0 a 10 en el eje de las abscisas y los intervalos de 0 a 9 para la concentracin de A y de 0 a 1.5 para la concentracin de B.
Comando msgbox
Al ejecutar este comando se despliega un cuadro de mensaje escrito por el usuario. La sintaxis es:
Mach
213
msgbox(Mensaje, Ttulo,Icono) Los argumentos Mensaje y Titulo se escriben entre comillas simples y son el mensaje y el nombre o titulo, que aparecen en el cuadro. El argumento Icono es el dibujo que aparece en el lado izquierdo y que puede ser none, error, help o warn. El icono por defecto es el primero y los otros representan dibujos de error, ayuda o intejeccion, respectivamente. Estos cuadros incluyen un botn OK para aceptar el mensaje. La minimizacin o cancelacin se consigue presionado los correspondientes en el extremo superior derecho de la barra de titulo. Algunas alternativas para el despliegue de cuadros de mensajes son los comandos errordlg, helpdlg y warndlg. Con ellos se tiene especificado, por defecto, el icono de error, ayuda o interjeccin y solo requieren de la especificacin del mensaje y el titulo. Es decir, que su sintaxis es por ejemplo para el comando errordlg: errordlg(Mensaje, Ttulo) El comando questdlg despliega un cuadro de mensaje con un icono de interrogacin e incluye tres botones para presionar que, por defecto, aparecen con los nombres de Yes, No y Cancel. La sintaxis para el comando questdlg es: questdlg(Mensaje, Ttulo,Botn1,Boton2,Boton3,BotonPorDefecto) A los botones pueden asignrseles nombres diferentes a los que muestran por defecto. La presin de uno de ellos acepta como respuesta el nombre correspondiente
Comando sim
Este comando ejecuta la simulacin de un modelo representado mediante un diagrama de bloques en Simulink. Su sintaxis es una de las siguientes: sim(Model) [t,x,y] = sim(Model, Intervalo de Tiempo)
Mach
214
Model es el nombre del archivo que contiene el diagrama de bloques construido en Simulink y debe escribirse entre comillas simples. La primera sintaxis despliega la respuesta del sistema de acuerdo a los receptores instalados en el diagrama. Por ejemplo, si se trata de observar la respuesta grfica es necesario abrir el diagrama de bloques y desplegar los botones correspondientes. En el caso de respuestas numricas receptadas en un botn To Workspace, estas se observan sobre el espacio de trabajo en Matlab. La segunda sintaxis despliega los valores de tiempo, variables de entrada y variables de salida en el espacio de trabajo de Matlab. Los argumentos incluyen, adems del nombre del modelo, el intervalo del tiempo de simulacin [to t tf]
Comando beep
Este comando, simplemente, produce un sonido al ejecutarse
215
disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::') disp(' ') disp(' ') disp('1. PASO') disp('2. RAMPA') disp('3. SENO') disp(' ') R = input('Escriba La Respuesta a Simular: '); if (R < 1)|(R > 3) errordlg('Selecione 1, 2 o 3') beep R = input('Escriba La Respuesta a Simular: '); end clc disp(' ') disp(' ') switch R case 1 clc disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' CAMBIO PASO EN LA VARIABLE DE ENTRADA') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') X = input('Introduzca El Valor Del Cambio Paso En La Variable De Entrada = '); disp(' ') r=0; A=0; w=0; case 2 clc disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' CAMBIO RAMPA EN LA VARIABLE DE ENTRADA') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') r = input('Introduzca El Valor De La Pendiente De La Rampa De Entrada = ');
Mach
216
disp(' ') X=0; A=0; w=0; case 3 clc disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' CAMBIO SENO EN LA VARIABLE DE ENTRADA') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') A = input('Amplitud De La Entrada Seno = '); w = input('Frecuencia De La Entrada Seno = '); disp(' ') X=0; r=0; end disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::') disp(' ') disp(' PARAMETROS DE LA SIMULACION DINAMICA') disp(' ') disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::') disp(' ') helpdlg('Si Desea Ver La Respuesta Sin Tiempo Muerto Digite "Cero" De Lo Contrario Otro Valor','Tiempo Muerto') beep To = input('* Escriba El Valor Del Tiempo Muerto, s = '); Rango = input('* Tiempo de simulacin, s = '); disp(' ') clc disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' SISTEMAS') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' ') disp('1. SISTEMA LINEAL DE PRIMER ORDEN: TANQUE CALENTADOR') disp('2. SISTEMA LINEAL DE SEGUNDO ORDEN: VALVULA DE CONTROL') disp(' ')
Mach
217
S = input(' Que Sistema Desea Simular ?: '); if (S < 1)|(S > 2) errordlg('Selecione 1 o 2') beep S = input(' Que Sistema Desea Simular ?: '); end disp(' ') disp(' ') switch S case 1 clc disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::') disp(' ') disp('USTED ESCOGIO SIMULAR EL SISTEMA LINEAL DE PRIMER ORDEN: TANQUE CALENTADOR!') disp(' ') disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::') disp(' ') disp(' ') clc disp(' ') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' PARAMETROS FISICOS DEL SISTEMA') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') F = input('* Flujo Volumetrico, m^3/s = '); V = input('* Volumen Del Liquido En El Tanque, m^3 = '); A = input('* Area De Transferencia De Calor, m^2 = '); U = input('* Coeficiente Global De Transferencia De Calor, KW/m^2-C = '); T = input('* Temperatura De Entrada Del Agua En Estado Estacionario, C = '); C = input('* Calor Especfico, KJ/Kg-C = '); RHO = input('* Densidad Del Agua, Kg/m^3 = '); disp(' ') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ')
Mach
218
disp(' PARAMETROS DINAMICOS DEL SISTEMA') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') tau = RHO*V*C/(F*RHO*C + U*A) K = F*RHO*C/(F*RHO*C + U*A) disp(' ') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' RESULTADOS') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') switch R case 2 disp('Atraso De La Respuesta Lineal') tau case 3 disp('Amplitud Del Perfil Sinusoidal De La Respuesta'); K*A/sqrt(1+(w*tau)^2) disp('Fase de la respuesta con respecto a la entrada'); atan(-w*tau) end STOP=input('Presione ENTER para ver la simulacion en Simulink'); clc
case 2 clc disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp('!USTED ESCOGIO SIMULAR EL SISTEMA LINEAL DE SEGUNDO ORDEN: VALVULA DE CONTROL!') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' ')
Mach
219
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' PARAMETROS FISICOS DEL SISTEMA') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') M = input('* Masa Del Bloque, lbm = '); C = input('* Coeficiente De Amortiguamiento Viscoso, lbf/pie/s = '); K = input('* Constante De Hooke Del Resorte, lbf/pie = '); A = input('* Area Del Diafragma, pie^2 = '); disp(' ') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' PARAMETROS DINAMICOS DEL SISTEMA') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') tau = sqrt(M/(32.2*K)) K = A/K sigma = sqrt((32.2*C^2)/(4*M*K)) disp(' ') disp(' ') disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::') disp(' ') disp(' RAICES DE LA ECUACION CARACTERISTICA') disp(' ') disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::') disp(' ') p = [tau^2 2*sigma*tau 1]; z = roots(p) disp(' ') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') disp(' RESULTADOS') disp(' ') disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ') disp(' ') switch R case 1 if sigma > 1
Mach
220
disp('Respuesta Sobreamortiguada Estable') disp('Atrasos Dinmicos') atraso = -1./z elseif sigma == 1 disp('Respuesta Amortiguada Crtica') disp('Atrasos Dinmicos') atraso = -1./z elseif (sigma < 1)&(sigma > 0) disp('Respuesta Subamortiguada Estable') Frecuencia = sqrt(1-sigma^2)/tau Fase = atan(sqrt(1-sigma^2)/sigma) Sobrepaso = 100*exp(-pi*sigma/sqrt(1-sigma^2)) Decaimiento = (Sobrepaso/100)^2 elseif sigma == 0 disp('Respuesta Oscilatoria Sostenida') else disp('Respuesta Inestable') end case 2 if sigma > 1 disp('Respuesta Sobreamortiguada') disp('Atrasos dinmicos') atraso = -1./z elseif sigma == 1 disp('Respuesta Amortiguada Crtica') disp('Atrasos dinmicos') atraso = -1./z elseif (sigma < 1)&(sigma > 0) disp('Respuesta Subamortiguada') Frecuencia = (sqrt(1-sigma^2))/tau Fase = atan(2*sigma*(sqrt(1-sigma^2))/(2*sigma^2-1)) elseif sigma == 0 disp('Respuesta Oscilatoria Sostenida') else disp('Respuesta Inestable') end case 3 if sigma > 1 disp('Respuesta Sobreamortiguada') disp('Atrasos dinmicos') atraso = -1./z
Mach
221
Fase = atan(-w*atraso(1)) + atan(-w*atraso(2)) Amplitud = K*A/((sqrt(1+(w*atraso(1))^2))*(sqrt(1+(w*atraso(2))^2))) elseif sigma == 1 disp('Respuesta Amortiguada Crtica') disp('Atrasos dinmicos') atraso = -1./z elseif (sigma < 1)&(sigma > 0) disp('Respuesta Subamortiguada') elseif sigma == 0 disp('Respuesta Oscilatoria Sostenida') else disp('Respuesta Inestable') end end STOP=input('Presione ENTER para ver la simulacion en Simulink'); clc end sim('Primer_Segundo_Orden') Primer_Segundo_Orden
Archivo ordenmayorsimulink
clc close all global Ti Inicio K1 K2 K3 rho V Cv Cp w t0 tau1 tau2 tau3 h n m g11 g12 g13 g21 g22 g23 g31 g32 g33 G h11 h21 h31 H GH a11 a12 a13 a21 a22 a23 a31 a32 a33 A b11 b21 b31 B C D f1 f2 T10 T20 K10 K20 V1 V2 r r2 P P2 Am wf Am2 wf2 NT disp(' |******************************************************************|' ) disp(' RESPUESTAS: PAS0, RAMPA Y SENO PARA SISTEMAS DE ORDEN MAYOR') disp(' |******************************************************************* ********|') disp(' ') disp(' |*********|') disp(' SISTEMAS') disp(' |*********|') disp(' ')
Mach
222
disp('1. SISTEMA NO INTERACTUANTE') disp('2. SISTEMA INTERACTUANTE') disp(' '); % CAPTURA DEL MODELO S = [1 2]; S = input('Digite el numero del sistema que desee SIMULAR = '); if S>2 | S<1 errordlg('El numero del sistema tiene que ser 1 o 2') disp(' ') S = input('Digite el numero del sistema que desee SIMULAR = '); end disp(' '); disp(' |*************************************************|') disp(' TIPO DE RESPUESTA DEL SISTEMA') disp(' |*************************************************|') disp(' ') disp(' ') disp('1. PASO') disp('2. RAMPA') disp('3. SENO') disp(' ') % CAPTURA DE LA RESPUESTA R = [1 2 3]; R = input('Digite el numero de la respuesta a simular = '); if R>3 | R<1 errordlg('El numero de la respuesta tiene que ser 1,2 o 3') disp(' ') R = input('Digite el numero de la respuesta que desee simular = '); end disp(' ') disp(' |**********|') disp(' DOMINIOS') disp(' |**********|') disp(' ') disp('1. TIEMPO') disp('2. LAPLACE') disp('3. TIEMPO - ESPACIO DE LOS ESTADOS') disp(' ') % CAPTURA DEL DOMINIO D = [1 2 3];
Mach
223
D = input('Digite el numero del dominio con que se va a hacer la simulacion = '); if D>3 | D<1 errordlg('El numero del Dominio tiene que ser 1, 2 o 3') disp(' ') D = input('Digite el numero del dominio con que se va a hacer la simulacion = '); end disp(' ') switch S case 1 disp(' ') disp(' |******************************************************************* **************|') disp(' PARMETROS FSICOS DEL SISTEMA NO INTERACTUANTE') disp(' |******************************************************************* **************|') disp(' ') % ENTRADAS rho = input('Valor de la densidad, lb/pie3 = '); V = input('Volumen de los tanques, pie3 = '); Cv = input('Calor especifico a volumen constante, Btu/lb-F = '); Cp = Cv; w = input('Flujo masico, lb/min = '); Ti = input('Valor de Ti, F = '); t0 = input('Tiempo de simulacin, min = '); Inicio = input('Condiciones iniciales = '); % PROCESO tau1 = rho*V*Cv/(w*Cp); tau2 = tau1; tau3 = tau2; K1 = w*Cp/(w*Cv); K2 = K1; K3 = K2; switch R case 1 disp(' ') disp(' |******************************************************************* **************|')
Mach
224
disp(' CAMBIO PASO DE UN SISTEMA NO INTERACTUANTE') disp(' |******************************************************************* **************|') disp(' ') % ENTRADAS P = input('Cambio paso = '); r=0;Am=0;wf=0; switch D case 1 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA PASO DE UN SISTEMA NO INTERACTUANTE EN EL DOMINIO DEL TIEMPO') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') sim('nointerordenmayor') nointerordenmayor case 2 disp(' ')
Mach
225
disp(' |******************************************************************* **************|') disp(' RESPUESTA PASO DE UN SISTEMA NO INTERACTUANTE EN EL DOMINIO DE LAPLACE ') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') sim('nointerordenmayor') nointerordenmayor case 3 disp(' ') disp(' |******************************************************************* *****************************|') disp(' RESPUESTA PASO DE UN SISTEMA NO INTERACTUANTE EN EL DOMINIO DEL TIEMPO - ESPACIO DE LOS ESTADOS') disp(' |******************************************************************* *****************************|') disp(' ') % PROCESO a11 = -1/tau1; a12 = 0; a13 = 0;
Mach
226
a21 = K1/tau2; a22 = -1/tau2; a23 = 0; a31 = 0; a32 = K2/tau3; a33 = -1/tau3; A = [a11 a12 a13; a21 a22 a23; a31 a32 a33] b11 = K1/tau1; b21 = 0; b31 = 0; B = [b11; b21; b31] C = [1 0 0; 0 1 0; 0 0 1] D = [0;0;0]; % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') sim('nointerss') nointerss end case 2 disp(' |******************************************************************* **************|') disp(' CAMBIO RAMPA DE UN SISTEMA NO INTERACTUANTE') disp(' |******************************************************************* **************|') disp(' ') % ENTRADAS r = input('Pendiente = ');
Mach
227
P=0;Am=0;wf=0; switch D case 1 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA RAMPA DE UN SISTEMA NO INTERACTUANTE EN EL DOMINIO DEL TIEMPO') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') case 2 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA RAMPA DE UN SISTEMA NO INTERACTUANTE EN EL DOMINIO DE LAPLACE ') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ')
Mach
228
disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') case 3 msgbox('En el espacio de los estados solo se puede simular la respuesta paso') disp(' ') input(' Pulse ENTER para terminar y realizar una nueva Simulacion') clc close all ordenmayorsimulink end sim('nointerordenmayor') nointerordenmayor case 3 disp(' |******************************************************************* **************|') disp(' CAMBIO SENO DE UN SISTEMA NO INTERACTUANTE') disp(' |******************************************************************* **************|') disp(' ') % ENTRADAS Am = input('Amplitud = '); wf = input('Frecuencia (rad/seg) = '); P=0;r=0; switch D case 1 disp(' ') disp(' |******************************************************************* **************|')
Mach
229
disp(' RESPUESTA SENO DE UN SISTEMA NO INTERACTUANTE EN EL DOMINIO DEL TIEMPO') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') case 2 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA SENO DE UN SISTEMA NO INTERACTUANTE EN EL DOMINIO DE LAPLACE ') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :')
Mach
230
disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') case 3 msgbox('En el espacio de los estados solo se puede simular la respuesta paso') disp(' ') input(' Pulse ENTER para terminar y realizar una nueva Simulacion') clc close all ordenmayorsimulink end sim('nointerordenmayor') nointerordenmayor end case 2 disp(' ') disp(' |******************************************************************* **************|') disp(' PARMETROS FSICOS DEL SISTEMA INTERACTUANTE') disp(' |******************************************************************* **************|') disp(' ') % ENTRADAS rho = input('Valor de la densidad, lb/pie3 = '); V1 = input('Volumen del primer tanque, pie3 = '); V2 = input('Volumen del segundo tanque, pie3 = '); f1 = input('Flujo volumetrico de entrada al primer tanque, pie3/min= '); f2 = input('Flujo volumetrico de entrada al segundo tanque, pie3/min= '); Cv = input('Calor especifico a volumen constante, Btu/lb-F = '); Cp = Cv; T10 = input('Temperatura Inicial del Tanque 1, F = '); T10 = T20; t0 = input('Tiempo de simulacin, min = '); Inicio = input('Condiciones iniciales = '); % PROCESO Cp = Cv;
Mach
231
tau1 = rho*V1*Cv/(rho*Cp*(f1 + 0.2*(f1 + f2))) tau2 = rho*V2*Cv/(1.2*rho*Cp*(f1 + f2)) K10 = f1/(f1 + 0.2*(f1 + f2)) K20 = f2/(1.2*(f1 + f2)) K1 = 0.2*(f1 + f2)/(f1 + 0.2*(f1 + f2)) K2 = (f1 + 0.2*(f1 + f2))/(1.2*(f1 + f2)) switch R case 1 disp(' |******************************************************************* **************|') disp(' CAMBIO PASO DE UN SISTEMA INTERACTUANTE') disp(' |******************************************************************* **************|') disp(' ') % ENTRADAS NT = [1 2]; NT = input('Nmero del tanque a cambiar = '); switch NT case 1 P = input('Cambio paso en el Primer Tanque = '); P2 =0; case 2 P =0; P2 = input('Cambio paso en el Segundo Tanque = '); end r=0;Am=0;wf=0;r2=0;Am2=0;wf2=0; switch D case 1 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA PASO DE UN SISTEMA INTERACTUANTE EN EL DOMINIO DEL TIEMPO') disp(' |******************************************************************* **************|') disp(' ')
Mach
232
% RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') sim('interordenmayor') interordenmayor case 2 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA PASO DE UN SISTEMA INTERACTUANTE EN EL DOMINIO DE LAPLACE ') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') sim('interordenmayor') interordenmayor
Mach
233
case 3 disp(' ') disp(' |******************************************************************* *****************************|') disp(' RESPUESTA PASO DE UN SISTEMA INTERACTUANTE EN EL DOMINIO DEL TIEMPO - ESPACIO DE LOS ESTADOS') disp(' |******************************************************************* *****************************|') disp(' ') % PROCESO a11 = -1/tau1; a12 = K1/tau1; a21 = K2/tau2; a22 = -1/tau2; A = [a11 a12; a21 a22] b11 = K10/tau1; b12 = 0; b21 = 0; b22 = K20/tau2; B = [b11 b12; b21 b22] C = [1 0; 0 1] D = [0 0;0 0] % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') sim('interss') interss end
Mach
234
case 2 disp(' |******************************************************************* **************|') disp(' CAMBIO RAMPA DE UN SISTEMA INTERACTUANTE') disp(' |******************************************************************* **************|') disp(' ') NT = [1 2]; NT = input('Nmero del tanque a cambiar = '); switch NT case 1 r = input('Pendiente en el Primer Tanque = '); r2 =0; case 2 r =0; r2 = input('Pendiente en el Segundo Tanque = '); end P=0;Am=0;wf=0;P2=0;Am2=0;wf2=0; switch D case 1 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA RAMPA DE UN SISTEMA INTERACTUANTE EN EL DOMINIO DEL TIEMPO') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ')
Mach
235
disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') case 2 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA RAMPA DE UN SISTEMA INTERACTUANTE EN EL DOMINIO DE LAPLACE ') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') case 3 msgbox('En el espacio de los estados solo se puede simular la respuesta paso') disp(' ') input(' Pulse ENTER para terminar y realizar una nueva Simulacion') clc close all ordenmayorsimulink end sim('interordenmayor') interordenmayor case 3
Mach
236
disp(' |******************************************************************* **************|') disp(' CAMBIO SENO DE UN SISTEMA INTERACTUANTE') disp(' |******************************************************************* **************|') disp(' ') NT = [1 2]; NT = input('Nmero del tanque a cambiar = '); switch NT case 1 Am = input('Amplitud, Am = '); wf = input('Frecuencia, wf (rad/seg) = '); Am2 = 0; wf2 = 0; case 2 Am = 0; wf = 0; Am2 = input('Amplitud, Am2 = '); wf2 = input('Frecuencia, wf2 (rad/seg) = '); end P=0;r=0;P2=0;r2=0; switch D case 1 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA SENO DE UN SISTEMA INTERACTUANTE EN EL DOMINIO DEL TIEMPO') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ')
Mach
237
disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') case 2 disp(' ') disp(' |******************************************************************* **************|') disp(' RESPUESTA SENO DE UN SISTEMA INTERACTUANTE EN EL DOMINIO DE LAPLACE ') disp(' |******************************************************************* **************|') disp(' ') % RESULTADOS disp(' ') disp(' |***********|') disp(' RESULTADOS') disp(' |***********|') disp('LAS CONSTANTES DE TIEMPO SON :') disp(' ') disp('tau1 = tau2 = tau3 = '), disp(tau1) disp(' ') disp('LAS GANANCIAS SON :') disp(' ') disp('K1 = K2 = K3 ='), disp(K1) disp(' ') case 3 msgbox('En el espacio de los estados solo se puede simular la respuesta paso') disp(' ') input(' Pulse ENTER para terminar y realizar una nueva Simulacion') clc close all ordenmayorsimulink end sim('interordenmayor') interordenmayor
Mach
238
end end disp(' ') disp('=============================================== ========================================= ') disp(' ') disp('1. NUEVA SIMULACION') disp('2. TERMINAR LA SIMULACION') disp(' ') Sim=input('Escoger la opcion a realizar = '); if Sim == 1 clc close all ordenmayorsimulink else if Sim ==2 clc close all end end
Mach
En este ejemplo se realizar a el modelado de un sistema din amico muy sencillo. Se modelar a el movimiento de una masa sobre una supercie rugosa, sobre la que se le aplica una fuerza. El sistema a modelar posee una entrada u, que se corresponde con la fuerza aplicada, y una salida x que ser a la posici on de la masa. El modelo del sistema din amico se puede expresar mediante las ecuaciones de Newton: mx + cx =F m c F : : : Masa del cuerpo (Kg) Coeciente de fricci on del cuerpo sobre la supercie Fuerza aplicada (N) (1.1)
Queremos hacer un modelo en con la herramienta Simulinkpara el sistema propuesto. Primero ejecutamos la herramienta Simulinkdesde la ventana de comandos de Matlab haciendo click en el icono correspondiente
Saldr a por pantalla una ventana gr aca, como la de la Fig. 1.1, que contiene todas las librer as que el entorno de Simulinkbajo Matlab soporta.
Para este sencillo ejemplo s olo necesitaremos la librer a b asica de Simulink, por tanto expandimos el menu simulink en la ventana anterior, quedando como aparece en la Fig. 1.2
Figura 1.2: Librer a base de Simulink Esta ventana est a dividida en dos partes. La de la derecha es la correspondiente a las librer as y la de la derecha es el contenido de la librer a seleccionada.
Elegimos un nuevo chero donde guardaremos el modelo: seleccionamos en el menu File New Model. Tendremos la situaci on de la Fig. 1.3
Se abrir a una ventana en blanco donde crearemos el modelo. La situaci on debe ser ahora la de la Fig. 1.4
Figura 1.4: Apertura de un nuevo chero modelo En esta nueva ventana que a un no hemos dado nombre (untitled) desarrollaremos el ejemplo. Lo primero que hacemos es darle un nombre adecuado. Para ello, en el menu File de la nueva ventana elegimos File Save. Nos situamos en el directorio adecuado a trav es del menu desplegable, ponemos un nombre al archivo, por ejemplo masa guardamos el modelo. Ya tenemos un archivo donde crear el modelo. La extensi on por defecto de los archivos de modelo es *.mdl. Empezamos a crear el modelo dado por la ecuaci on (1.2). Para ello es necesario hacer alguna modicaci on en la ecuaci on (1.2). Despejando de la ecuaci on (1.2) la aceleraci on del cuerpo se obtiene:
x =
c F x + m m
Como puede verse necesitaremos varios tipos de bloques. Elegimos estos bloques de la ventana de la derecha de la librer a (Fig. 1.2). El primero que seleccionamos el que denir a la fuerza aplicada a la masa, lo haremos mediante una constante. Seleccionamos Sources y en la derecha seleccionamos
(1.2)
el bloque de Constant. Ahora lo arrastramos hacia la ventana de nuestro modelo con el bot on izquierdo del rat on pulsado. Hacemos click en el la etiqueta del nombre del bloque de constante y le damos su nombre, por ejemplo F. La situaci on debe ser la de la Fig. 1.5
Figura 1.5: Construyendo el modelo Observando la ecuaci on (1.2), puede verse que se necesita hacer las operaciones de sumar y dividir. Para ello seleccionamos Math Operations en la ventana de la librer a y escogemos del mismo modo que antes los bloques de Sum y Gain. Para describir la ecuaci on diferencial se necesitar a adem as el bloque integrador Integrator en la librer a Continuous. Ya se est a en disposici on de describir la ecuaci on (1.2) utilizando bloques. Debemos unir los bloques de forma adecuada para describir dicha ecuaci on (1.2). Haremos el esquema como describe la Fig. 1.6. Para unir los bloques debemos pinchar con el bot on izquierdo del rat on en el bloque de origen y soltar en el bloque de destino. Como puede verse en la Fig. 1.6, se han editado los nombres de los bloques poni endoles nombres distintos a los originales. Tambi en se ha editado el valor de algunos de los bloques. Daremos valores concretos a las constantes. Supongamos que la masa es de un kg m = 1, que la constante de fricci on por ejemplo el vale c = 0,8 y que la fuerza aplicada es 0.1 N (F = 0,1). As bloque Gain denominado c/m posee en su interior el valor correspondiente c = 0,8, y el denominado 1/m tendr a valor 1. Estos valores se introducen am haciendo doble click en los bloques y editando el campo correspondiente. Por otro lado se ha escrito texto para hacer m as f acil la lectura del modelo. Estas cajas de texto se crean simplemente haciendo doble click en el lugar que se desee y editando el recuadro que aparece.
F/m
1 F 1 1/m
. x
1 s Integrador
. c*x /m
0.8 c/m
Figura 1.6: Modelo Para poder ver los resultados ponemos un bloque que nos muestre la posici on de la masa frente al tiempo. Seleccionamos dentro de la librer a Sinks el bloque Scope. Lo a nadimos al modelo de la forma habitual. Ya tenemos el modelo completo. Los bloques deben estar como se muestra en la Fig. 1.7.
F/m
1 F 1 1/m Integrador Integrador Scope
.. x
1 s
. x
1 s
. c*x /m
0.8 c/m
Figura 1.7: Modelo con Scope En la Fig. 1.7 debe notarse que las variables de estado est an perfectamente denidas y accesibles en el diagrama de bloques. Ahora se est a en disposici on de hacer una simulaci on del proceso. Para ello debemos denir algunos par ametros esenciales. Los m as importantes son las condiciones iniciales de las variables de estado y el tiempo de simulaci on. Las condiciones iniciales deben ponerse en los bloques integradores. Se hace doble click en ellos y se denen las mismas en la zona de edici on correspondiente. Por ejemplo ponemos el valor inicial de la velocidad a -1. En la Fig. 1.8 puede verse d onde se dene el par ametro despu es de haber hecho doble click en el integrador que nos da la velocidad.
Figura 1.8: Condici on inicial en velocidad Para denir el tiempo de simulaci on accedemos al menu de la ventana del modelo Simulation Simulation parameters. Se abre una ventana d onde es posible denir entre otros par ametros el tiempo de simulaci on, el m etodo de resoluci on y el paso jo o variable. Dejamos los dos u ltimos como est an y ponemos el tiempo de simulaci on a 10 segundos. La situaci on ser a como la mostrada en la Fig. 1.9 Por u ltimo denimos la fuerza aplicada que deseamos. Hacemos doble click en el bloque donde est a denida la fuerza y ponemos el valor deseado que era 0.1. Para ver el resultado en el Scope debemos hacer doble click sobre el mismo y se abrir a la ventana gr aca que nos dar a la posici on del cuerpo. . Una vez acabada la Ahora pulsamos el bot on de inicio de simulaci on simulaci on tendremos el resultado que puede verse en la Fig. 1.10. Si deseamos ver tambi en la velocidad tenemos acceso a la variable en el diagrama. Podemos poner otro Scope para la velocidad. El resultado puede verse en la Fig. 1.11 Se podr an ver las dos variables de estado en una sola ventana gr aca Scope. Se necesita para ello el bloque Mux dentro de la librer a Signal routing. Este bloque hace las veces de un multiplexor y anida vectores. Se
10
11
modica el diagrama como se ve en la Fig. 1.12 y ya se tienen las dos variables en una s ola ventana gr aca.
Figura 1.12: Simulaci on. Utilizaci on del bloque Mux Supongamos que no s olo queremos ver el resultado sino que tambi en queremos guardar las variables en memoria para poder acceder a ellas. Buscamos dentro de la librer a Sinks el bloque To Workspace. Lo a nadimos al diagrama anterior y le damos un nombre a la matriz donde queremos guardar el valor de las variables, por ejemplo X. El resultado es el de la Fig. 1.13
F/m
0.1 F 1 1/m Integrador Integrador
.. x
1 s
. x
1 s
. c*x /m
0.8 c/m X To Workspace
Posicin y velocidad
Figura 1.13: Simulaci on. Utilizaci on del bloque To Workspace Si ahora queremos ver el valor de las variable desde la linea de comandos de Matlab, hacemos plot(tout, X). En la matriz X se encuentran la posici on
12
y la velocidad por columnas en el orden que se han puesto en el diagrama de bloques Fig. 1.13. El tiempo de simulaci on se guarda por defecto en la variable tout dada en el menu Simulation Simulation parameters Workspace I/O. El resultado se muestra en la Fig. 1.14.
0.4
0.2
0.2
0.4
0.6
0.8
10
Figura 1.14: Resultado de ejecutar el comando plot(tout,X) Todo este modelo se ha creado a trav es de las variables temporales y sus derivadas. Simulink permite hacer los modelos untilizando la transformada de Laplace. Para ello necesitamos transformar la ecuaci on del modelo (1.2) en el dominio de Laplace. Suponemos las condiciones iniciales iguales a cero. Por tanto, la ecuaci on (1.2) quedar a en el dominio de Laplace ms2 X (s) + csX (s) = F (1.3)
Podemos transformarla en una funci on de transferencia si tomamos como salida la posici on (X (s)) y como entrada la fuerza aplicada (F (s)) del modo siguiente
1 X (s) c = m F (s) s( c s + 1) K = , s( s + 1)
(1.4)
donde K =
1 c
y=
m . c
13
Ahora ya podemos construir el modelo utilizando Laplace. De la librer a Continuous elegimos los bloques Integrator y Transfer Fcn. Editamos este u ltimo bloque con los valores de K y anteriores haciendo doble click. El modelo quedar a como se muestra en la Fig. 1.15
F
0.1 F Transfer Fcn 1.25 1.25s+1
. x
1 s Integrador
Figura 1.15: Modelo en el dominio de Laplace Debe notarse que en este u ltimo esquema Fig. 1.15, la condici on inicial de la velocidad no est a accesible. Si se desea tener en cuenta hay que hacerlo a la hora de pasar las ecuaciones al dominio de Laplace. Ya sabemos hacer un modelo de un sistema din amico, tanto en el dominio del tiempo como en el de la frecuencia (Laplace). Ahora se describe como hacer subsistemas. La idea de estos subsistemas es agrupar bloques con alg un criterio predenido. Como ejemplo agruparemos los bloques del primer ejemplo como un s olo bloque que sea el modelo del sistema. Tendr a como entrada la fuerza aplicada y como salidas la posici on y la velocidad del sistema. Para conseguir esto debemos seleccionar todo aquello que queremos que pertenezca al subsistema. La selecci on se hace con el bot on izquierdo del rat on, como en Windows, haciendo un recuadro con todo aquello que queremos seleccionar. Todo esto con el bot on pulsado. Despu es se suelta y nos vamos al menu Edit Create subsystem, como en la Fig. 1.16 Una vez hecho esto tendremos la situaci on de la Fig. 1.17, donde todo lo seleccionado anteriormente se ha metido dentro de un bloque. Haciendo doble click en el bloque se puede ver su contenido en otra ventana como se muestra en la Fig. 1.17.
14
Universidad de Chile Facultad de Ciencias F sicas y Matem aticas Departamento de Ingenier a El ectrica
Introducci on
Matlab es un poderoso sistema el cual permite el tratamiento num erico de una gran cantidad de aplicaciones en ingenier a, tales como: procesamiento de se nales, an alisis estad sticos, interpolaci on de curvas, series de tiempo, simulaci on y control de sistemas, l ogica difusa, redes neuronales, identicaci on de par ametros, etc. El nombre Matlab se debe a que en realidad consiste en un laboratorio de matrices (Matrix laboratory), raz on por la cual es excelente para el c alculo num erico de vectores y valores propios, descomposiciones de matrices y cualquier aplicaci on que involucre matrices. Adem as de lo mencionado anteriormente, Matlab tambi en incluye un subprograma llamado Simulink, el cual permite la simulaci on de todo sistema din amico lineal y casi cualquier sistema no lineal. A pesar de la gran cantidad de aplicaciones mencionadas anteriormente, este apunte est a enfocado hacia las aplicaciones orientadas hacia el control de sistemas. Si el lector desea ahondar m as sobre los aspectos generales de Matlab entonces deber a referirse a [1]
II
Indice general
1. Lo b asico 1.1. Matrices . . . . . . . . . . . . . . . . . . . . . . . 1.1.1. Denici on y asignaci on de variables . . . . 1.1.2. Operando con matrices . . . . . . . . . . . 1.1.3. Matrices especiales . . . . . . . . . . . . . 1.1.4. Manipulaci on de matrices . . . . . . . . . 1.1.5. Arreglos . . . . . . . . . . . . . . . . . . . 1.2. Variables y Funciones . . . . . . . . . . . . . . . . 1.2.1. Variables . . . . . . . . . . . . . . . . . . . 1.2.2. Funciones . . . . . . . . . . . . . . . . . . 1.2.3. Algunas Variables y Funciones de utilidad 1.3. Gr acos . . . . . . . . . . . . . . . . . . . . . . . 1.3.1. Figuras . . . . . . . . . . . . . . . . . . . 1.3.2. Gr acos en 2D . . . . . . . . . . . . . . . 2. Simulink 2.1. Diagramas de Bloques . . . 2.2. Usando Simulink . . . . . . 2.2.1. Librer a Continuos 2.2.2. Librer a Discrete . 2.2.3. Librer as Sources y 2.2.4. Otras Librer as . . . A. Funciones Comunes . . . . . . . . . . . . . . . . . . . . Sinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 2 3 5 7 8 8 9 9 12 12 12 17 17 18 19 19 20 21 25
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
iii
IV
INDICE GENERAL
1.1.
1.1.1.
Matrices
Denici on y asignaci on de variables
Para introducir una matriz en Matlab s olo se debe introducir los n umeros de la matriz entre par entesis cuadrados ([ ]), las columnas se separan por espacios y las las por punto y coma (;)1 . Por ejemplo: >> A=[3 4 5 ; 3 2 7] A = 3 3 4 2 5 7
Como se puede ver en el ejemplo anterior las variables se asignan mediante un signo igual (=) de la misma manera que en lenguajes como JAVA o C.
1
Matrices
1.1.2.
Para transponer2 matrices s olo hay que poner despu es de la matriz o de la variable un ap ostrofe (), siguiendo con el ejemplo anterior quedar a: >> A ans = 3 4 5 3 2 7
En la variable ans mostrada en el ejemplo anterior, Matlab guarda el resultado de la u ltima operaci on ejecutada. Las operaciones aritm eticas son igual que ne la mayor a de los lenguajes, as para sumar (o restar) s olo hay utilizar el signo + (o -), para multiplicar se utiliza el asterisco (*) y para dividir por la derecha (izquierda) se utiliza (/ (\)). 3 Por ejemplo: >> B=[1 2 3; 4 5 6]; >> C=A+B C = 4 7 >> D=C*A D = 76 114 80 126 6 7 8 13
Para potenciar una matriz se utiliza el s mbolo (), seguido del exponente que se desea. Si se desea invertir una matriz se puede hacer de dos maneras: elevando la matriz a -1 o utilizando la funci on inv:
En el caso de que se utilicen n umeros complejos se obtiene la conjugada transpuesta Obviamente para poder realizar estas operaciones es necesario que las dimensiones de las matrices sean consistentes.
3 2
1.1.3 Matrices especiales >> A=[2 2 ; 0 1] A = 2 0 >> inv(A) ans = 0.5000 0 -1.0000 1.0000 2 1
En el cuadro 1.1 se muestra un resumen de los operadores matriciales. Operaci on Multiplicaci on Divisi on por la derecha Divisi on por la izquierda Potenciaci on Transposici on conjugada S mbolo * / \
1.1.3.
Matrices especiales
Dado que existen matrices que son muy utilizadas en la pr actica Matlab incluye funciones espec cas para crearlas: ones crea una matriz de unos zeros crea una matriz de ceros eye crea la matriz identidad La utilizaci on de las tres es muy similar, se introduce primero el n umero de las y posteriormente el n umero de columnas; como muestra el siguiente ejemplo:
4 >> A=ones(3,2) A = 1 1 1 1 1 1
Matrices
>> C=eye(3,4) C = 1 0 0 0 1 0 0 0 1 0 0 0
N otese que si se desea la matriz identidad de orden n s olo hay que introducir n, pero si se desea una rectangular se utiliza igual que las funciones anteriores. Otro tipo de matrices com unmente utilizadas son los vectores, los cuales se pueden denir como cualquier matriz. La importancia radica en que muchas veces se utilizan para indexar alguna serie de elementos, para denirlos de esta manera se utiliza (:), de la siguiente manera:
1.1.4 Manipulaci on de matrices n umero inicial:paso:cota superior Por ejemplo: >> 1:4:19 ans = 1 5 9 13 17
1.1.4.
Manipulaci on de matrices
Una aplicaci on de uso frecuente consiste en seleccionar algunas columnas, las o simplemente elementos de alguna matriz; esto se logra con la utilizaci on de par entesis despu es del nombre del nombre de la variable y de dos puntos (:). A continuaci on se muestran algunos ejemplos para la matriz denida anteriormente: >> A(1,1) ans = 2 >> A(:,1) ans = 2 0 >> A(2,:) ans = 0 >> A(4) 1
6 ans = 1
Matrices
En el primer ejemplo se obtiene el elemento a11 de la matriz, en el segundo ejemplo la primera columna, el tercer ejemplo se obtiene la segunda la, y para el u ltimo ejemplo se obtiene el cuarto elemento de la matriz. La numeraci on del u ltimo ejemplo es por columnas (as a11 es 1 , a21 es 2 , a12 es 3 , a22 es 4 ). Adem as de seleccionar elementos, muchas veces es u til eliminar alg un(os) elemento(s) de la matriz4 , para lograr lo anterior se utilizan un par de par entesis cuadrados. As , por ejemplo, si se desea borrar la segunda columna de una matriz dada: >> A=[1 2 6; 3 4 8; 5 7 9; 3 4 9]; >> A(:,2)=[ ] A = 1 3 5 3 6 8 9 9
Es importante notar que tanto la selecci on como la eliminaci on de elementos de una matriz se puede realizar utilizando un vector como conjunto ndices a utilizar. Por ejemplo: >> A=0:1:10 A = 0 1 2 3 4 5 6 7 8 9 10
Sin embargo, s olo se puede hacer si la estructura resultante sigue siendo una matriz
1.1.5 Arreglos 1 3 5 7 9 11
>> B=A(indice) B = 0 2 4 6 8 10
obtiene los n umeros que est an en las posiciones impares del vector A. Muchas veces es u til concatenar matrices, lo cual se puede utilizar utilizando los par entesis cuadrados ([ ]). Por ejemplo para concatenar horizontalmente: >> B=[1 2 3; 4 5 6]; >> C=[1 ; 2]; >> [B C] ans = 1 4 2 5 3 6 1 2
Obviamente las dimensiones de las matrices deben ser consistentes con la concatenaci on.
1.1.5.
Arreglos
Los arreglos son matrices, pero poseen una aritm etica distinta en cuanto a la multiplicaci on y divisi on. Estas operaciones se ejecutan elemento a
Variables y Funciones
elemento, y para que sean consistentes los arreglos deben ser de las mismas dimensiones. Para diferenciar las operaciones matriciales de las operaciones de arreglos los operadores van precedidos por un punto (.), como se muestra en el cuadro 1.2. Operaci on Multiplicaci on Divisi on por la derecha Divisi on por la izquierda Potenciaci on Transposici on no conjugada S mbolo .* ./ .\ . .
Cuadro 1.2: Operadores para a lgebra de arreglos Por ejemplo: >> A=[1 3 4; 4 2 6]; >> B=[3 4 8; 7 8 0]; >> A.\B ans = 3.0000 1.7500 1.3333 4.0000 2.0000 0
bij aij
i, j .
1.2.
1.2.1.
Variables y Funciones
Variables
Existen varios tipos de variables en Matlab, las m as comunes son: double corresponden a las matrices y arreglos num ericos. char son los arreglos de caracteres, se denen entre ap ostrofes ():
1.2.2.
Funciones
Las funciones son, al igual que en la mayor a de los lenguajes, subrutinas que facilitan el trabajo, por ejemplo la funci on mean calcula el promedio o media de un set de datos: >> A=1:1:4; >> mean(A) ans = 2.5000 Lo importante con respecto a las funciones en Matlab es que vienen algunas incluidas en el programa (built-in functions) y otras viene dentro de los distintos toolboxes que trae Matlab (por ejemplo mean). Generalmente las funciones vienen con alguna ayuda de su utilizaci on, la cual se puede visualizar a trav es de la funci on help.
1.2.3.
Matlab trae muchas variables y funciones predenidas, algunas de estas variables se muestran en el cuadro 1.3, mientras que algunas funciones m as utilizadas aparecen en el cuadro 1.4. Si se aplica alguna de las funciones matem aticas a alguna matriz se obtiene una matriz en la que los elementos han sido evaluados por la funci on. Por ejemplo: >> X=0:0.1:1; >> exp(-X) ans =
Variables y Funciones Descripci on El n umero m as famoso del mundo Unidad imaginaria Lo mismo que i, pero para los el ectricos Innito No es un n umero Precisi on relativa de punto otante, 252 Cuadro 1.3: Variables Predenidas
Descripci on Funci on seno de X Funci on coseno de X Funci on tangente de X Funci on exponencial de X Funci on logaritmo natural de X Gr aca Y versus X Borra la variable A Calcula el determinante de la matriz A Calcula los valores y vectores propios de la matriz A poly(A) Calcula los coecientes del polinomio caracter stico de la matriz A roots(coef) Calcula los ra ces del polinomio cuyos coecientes vienen en coef sum(X) Suma los elementos del vector X length(X) Retorna el largo del vector X size(A) Retorna las dimensiones de la matriz A help funcion Entrega ayuda sobre la funci on funcion lookfor palabra Retorna las funciones en las que aparece el string palabra Cuadro 1.4: Funciones B asicas m as comunes Columns 1 through 7 1.0000 0.9048 0.8187 0.7408 0.6703 0.6065 0.5488
Nombre sin(X) cos(X) tan(X) exp(X) log(X) plot(X,Y) clear(A) det(A) eig(A)
1.2.3 Algunas Variables y Funciones de utilidad Columns 8 through 11 0.4966 0.4493 0.4066 0.3679
11
12
Gr acos
1.3.
Gr acos
Para gracar en Matlab fundamentalmente se utiliza la funci on plot mencionada anteriormente, sin embargo tambi en es posible gracar en forma escalonada, utilizando s olo l neas verticales, utilzando n umeros complejos o en 3D, entre muchas maneras de gracar. A continuaci on se detallan las m as utilizadas y los comandos m as u tiles relacionados.
1.3.1.
Figuras
Una gura es una ventana en la cual se desplegan los gr acos obtenidos mediante Matlab. Esto presenta varias ventajas las cuales se mostrar an m as adelante. Aunque, generalmente, las guras se generan por defecto al crear un gr aco, a veces es necesario pedir otra gura a Matlab, para esto se utiliza el comando figure, el cual genera otra gura en la pantalla. El modo de utilizarlo es: >> figure Si se desea cerrar alguna gura se utiliza la funci on close, seguida del n umero de la gura. Si se quiere cerrar todas las guras entonces se ejecuta: >> close all lo cual cierra todas las guras existentes5 .
1.3.2.
Gr acos en 2D
Como se menciona anteriormente se utiliza la funci on plot, tal como se muestra en el siguiente ejemplo: >> t=0:0.1:5; >> plot(t,exp(-t)) lo cual produce como resultado la g. 1.1. Para que plot funcione ambos vectores deben tener el mismo largo. Si X o Y es una matriz entonces el vector es gracado versus las las o columnas de la matriz, dependiendo de con cual se alinee.
5
1.3.2 Gr acos en 2D
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0
13
0.5
1.5
2.5
3.5
4.5
Figura 1.1: Ejemplo de plot Adem as plot tiene m as opciones las cuales se pueden ver en la ayuda de la funci on. Una forma de gracar com unmente usada es aquella en la cual se encuentran dos gr acas en la misma gura . Lo anterior se puede lograr de varias maneras, dos de ellas son: >> plot(t,exp(-t),t,sin(t)) >> plot(t,[exp(-t); sin(t)]) las cuales producen el mismo resultado (g. 1.2). Sin embargo, hay otra opci on la cual consiste en utilizar la funci on hold que retiene el gr aco actual y agrega el gr aco deseado a la gura actual. Para el ejemplo anterior: >> >> >> >> plot(t,exp(-t)) hold on plot(t,sin(t)) hold off
cuyo resultado se muestra en la g. 1.3. La utilizaci on de hold off es para soltar la gura.
14
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
Gr acos
0.5
1.5
2.5
3.5
4.5
Figura 1.2: Dos gr acas en la misma gura Para crear una leyenda de las gr acas se utiliza la funci onlegend(string1, string2, ...), donde los string i son los textos de cada gr aco para la leyenda, as para el ejemplo anterior, la instrucci on: >> legend(exponencial, seno) produce la g. 1.4. Tambi en es posible gracar en escalonada utilizando la funci on stairs(X,Y) de manera an aloga al uso de la funci on plot, con la diferencia que los elementos del vector X deben ser equiespaciados. Si se quiere gracar se nales de tiempo discreto se puede utilizar la funci on stem(X,Y), cuyo uso es an alogo a las funciones anteriores. Muchas veces es muy u til agrupar varios gr acos en una misma gura, lo cual se consigue f acilmente con la funci on subplot(m,n,i), la cual divide la gura en una matriz de mn y el gr aco se agrega en el elemento i- esimo. Adem as, tiene la ventaja de agregar gr acas que ocupen distinto tama no en la gura resultante. Por ejemplo, las siguientes instrucciones: >> X=-pi:0.1:pi; >> subplot(3,2,1)
1.3.2 Gr acos en 2D
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
15
0.5
1.5
2.5
3.5
4.5
Figura 1.3: Ejemplo de hold >> >> >> >> >> >> >> plot(X,sin(X)); subplot(3,2,2) plot(X,cos(X)); subplot(3,1,2) plot(X,cos(X)+sin(X)); subplot(3,1,3) plot(X,[cos(X);sin(X)]);
generan como resultado la g. 1.5. Tambi en hay funciones para poner t tulos, formatear los ejes, poner textos en cualquier parte de la gura, nombrar el eje x y el eje y, utilizar grilla, etc. La mayor a de las funciones anteriores aparece en la ayuda de la funci on plot. No hay que olvidar que todas las instrucciones anteriores pueden combinarse, para producir las guras que uno desea.
16
Gr acos
exponencial seno
0.5
1.5
2.5
3.5
4.5
2.1.
Diagramas de Bloques
En pocas palabras para utilizar Simulink s olo hay que saber c omo traducir una ecuaci on diferencial o de diferencias a un diagrama de bloques. Por ejemplo si se desea simular la respuesta de la siguiente ecuaci on diferencial y ( t ) + 3y ( t ) = 1 y (0) = 0 (2.1)
primero hay que generar el diagrama de bloques del modelo, el cual se observa en la g. 2.1. La implementaci on en Simulink se muestra la g. 2.2, y a
17
18
Usando Simulink
Figura 2.2: Implementaci on en Simulink trav es de esta se obtiene la respuesta del sistema descrito por (2.1), la cual se aprecia en la g. 2.3.
0.35
0.3
0.25
0.2
0.15
0.1
0.05
10
2.2.
Usando Simulink
Para utilizar Simulink s olo es necesario construir el diagrama de bloques mediante los bloques predenidos que vienen en la librer a. El uso de los bloques es bastante sencillo, s olo hay que arrastrar el icono del bloque al modelo que se est a construyendo. Si se desean cambiar los par ametros de los bloques s olo hay que hacer un doble click sobre su icono.
19
Para conectar los bloques hay que situar el puntero del mouse sobre el puerto de salida del primer bloque, con lo que el puntero deber a cambiar a una cruz, y arrastrar el mouse hacia el puerto de entrada del siguiente bloque. A continuaci on se detallan los bloques m as utilizados.
2.2.1.
Librer a Continuos
En esta librer a se encuentran todos los bloques de tiempo continuo para sistemas lineales, los cuales son: Derivative: Derivada num erica de la se nal de entrada. Integrator: Integra la se nal de entrada. Memory: Retrasa la se nal en un tiempo de integraci on. State-Space: Representaci on en variables de estado. Transfer-Fcn: Representaci on en funci on de transferencia. Expresi on matricial para el numerador, expresi on vectorial para el denominador. El ancho de la salida debe ser igual al n umero de las del numerador. Los coecientes son potencias descendentes de s. Transport Delay: Aplica el retraso especicado a la se nal de entrada. Variable Transport Delay: Aplica un retraso a la primera se nal de entrada. La segunda entrada especica el retardo. Zero-Pole: Representaci on en polos y ceros. Expresi on matricial para los ceros. Expresi on vectorial para los polos y la ganancia. El ancho de la salida debe igualar el n umero de columnas de la matriz de ceros, o uno si los ceros son un vector.
2.2.2.
Librer a Discrete
Esencialmente es id entica a la anterior, pero para sistemas lineales de tiempo discreto, i.e. para ecuaciones de diferencias. Los bloques son: Discrete Transfer-Fcn: Funci on de transferencia discreta, an alogo al caso continuo.
20
Usando Simulink
Discrete Zero-Pole: Representaci on discreta en polos y ceros. Idem al caso continuo. Discrete Filter: Filtro discreto. Expresi on vectorial para el numerador y el denominador. Los coecientes son para potencias ascendentes de z1 . Discrete State-Space: Representaci on en variables de estado de tiempo discreto. Discrete-Time Integrator: Integraci on en tiempo discreto de la se nal de entrada. First-Order Hold: Retenedor de primer orden. Unit Delay: Muestrea y retiene con un per odo de muestreo de retraso. Zero-Order Hold: Retenedor de orden cero.
2.2.3.
Estas librer as son aquellas que proveen las fuentes y los sumideros de los diagramas de bloques. Algunos de estos son: Clock: Librer a Sources. Genera el tiempo de simulaci on actual. Constant: Librer a Sources. Genera una constante especicada en el par ametro Constant value . Si Constant value es un vector y Interpret vector parameters as 1-D est a arriba (on), el valor constante es tratado como un arreglo 1-D. Sino, la salida es una matriz con las mismas dimensiones que el valor constante. Signal Generator: Librer a Sources. Genera varias formas de onda. Sine Wave: Librer a Sources. Genera una onda sinusoidal. Step: Librer a Sources. Genera un escal on. Display: Librer a Sinks. Representaci on num erica de los valores de entrada. Scope: Librer a Sinks. Representaci on gr aca de los valores de entrada versus el tiempo de simulaci on.
21
Stop Simulation: Librer a Sinks. Detiene la simulaci on cuando la entrada es distinta de cero. To File: Librer a Sinks. Escribe el tiempo y la entrada al archivo MAT especicado en formato la. El tiempo est a en la primera la. To Workspace: Librer a Sinks. Escribe la salida al arreglo o estructura especicado en el workspace principal de Matlab. Los datos no est an disponibles hasta que la simulaci on se detiene. XY Graph : Librer a Sinks. XY scope usando la ventana gr aca de Matlab. la primera entrada es usada como base temporal. Se ingresan los rangos del gr aco.
2.2.4.
Otras Librer as
Adem as de las librer as anteriormente detalladas, existen otras que proveen los siguientes bloques que son extremadamente u tiles: Fcn: Librer a Functions & Tables. Bloque para una expresi on general. Usa u como el nombre de la variable de entrada. Ejemplo: sin(u[1] * exp(2.3 * -u[2])) MATLAB Fcn: Librer a Functions & Tables. Pasa los valores de entrada a una funci on de Matlab para evaluarla. La funci on debe retornar un s olo argumento vectorial del largo de Output width. Ejemplos: sin, sin(u), foo(u(1), u(2)) Polynomial: Librer a Functions & Tables. Evaluaci on polinomial. Calcula P(u) dado por el arreglo de coecientes polinomiales P. P est a ordenado del mayor al menor orden, la forma aceptada por la funci on polyval de Matlab. S-Function: Librer a Functions & Tables. Bloque denible por el usuario. Los bloques pueden estar escritos en M, C, Fortran o Ada y deben cumplir los est andares de S-function. t,x,u y flag son autom aticamente entregados a la S-function por Simulink. Par ametros Extra pueden ser especicados en el campo S-function parameters. Abs: Librer a Math. Valor absoluto, i.e. y = |u|.
22
Usando Simulink
Dot Product: Librer a Math. Producto interno (punto). y = sum(conj( u1).*u2) Gain: Librer a Math. Ganancia elemento a elemento (y = K.*u) o ganancia matricial (y = K*u o y = u*K). Math Function: Librer a Math. Funciones matem aticas incluyendo funciones logar tmicas, exponencial, potenciaci on, y m odulo. Matrix Gain: Librer a Math. Ganancia elemento a elemento (y = K.*u) o ganancia matricial (y = K*u o y = u*K). MinMax: Librer a Math. La salida es el m nimo o m aximo de la entrada. Para una sola entrada, los operadores se aplican a trav es del vector de entrada. Para m ultiples entradas, los operadores se aplican a trav es de las entradas. Product: Librer a Math. Multiplica o divide las entradas. Especicar una de las dos opciones siguientes: 1. * o / para cada puerto de entrada (ej., **/*) 2. Un escalar especicando el n umero de puertos de entrada a ser multiplicados. El valor escalar 1 para producto elemento a elemento causa que todos los elementos de un solo vector de entrada sean multiplicados. Sum: Librer a Math. Suma o substrae las entradas. Especicar una de las dos opciones siguientes: 1. Un string conteniendo + o - para cada puerto de entrada, | para espacio entre los puertos (ej. ++|-|++) 2. Un escalar 1. Un valor 1 suma todas las entradas; 1 suma los elementos de una solo vector de entrada. Trigonometric Function: Librer a Math. Funciones trigonom etricas e hiperb olicas. Demux: Librer a Signals & Systems. Divide:
23
2. se nales tipo bus producidas por el bloques Mux en sus valores escalares, vectoriales o matriciales constituyentes. Chequear Bus Selection Mode para dividir se nales tipo bus. Mux: Librer a Signals & Systems. Multiplexa se nales escalares, vectoriales, o matriciales a un bus. Terminator: Librer a Signals & Systems. Usado para terminarse nales de salida. (Previene advertencias acerca puertos de salida no conectados.)
24
Usando Simulink
26
help: Funci on. Sintaxis help function. Entrega ayuda sobre la funci on function. i: Variable. Unidad imaginaria. inv: Funci on. Sintaxis inv(A). Retorna la matriz inversa de A. Inf: Variable. Innito. j: Variable. Lo mismo que i, pero para los el ectricos. length: Funci on. Sintaxis length(X). Retorna el largo del vector X. log: Funci on. Sintaxis log(X). Funci on logaritmo natural de X. logm: Funci on. Sintaxis logm(A). Logaritmo natural matricial de A. Es la funci on inversa de expm(A). log10: Funci on. Sintaxis log10(X). Funci on logaritmo ordinario (en base 10) de X. log2: Funci on. Sintaxis log2(X). Funci on logaritmo en base 2 de X. lookfor: Funci on. Sintaxis lookfor(string). Retorna las funciones en las que aparece la palabra string en la ayuda de dicha funci on. max: Funci on. Sintaxis [Y,I]=max(X). Retorna el elemento m as grande de X en Y, y el ndice en que se encuentra en I. mean: Funci on. Sintaxis mean(X). Retorna el valor medio o promedio de los elementos de X. min: Funci on. Sintaxis [Y,I]=max(X). Retorna el elemento m as peque no de X en Y, y el ndice en que se encuentra en I. NaN: Variable. No es un n umero, usualmente aparece cuando hay una divisi on del tipo 0/0. obsv: Funci on. Sintaxis obsv(A,C). Retorna la matriz de observabilidad del sistema formado por A y C. pi: Variable. El n umero m as famoso del mundo.
27 plot: Funci on. Sintaxis plot(X,Y). Gr aca Y versus X. poly: Funci on. Sintaxis poly(A). Calcula los coecientes del polinomio caracter stico de la matriz A. roots: Funci on. Sintaxis roots(coef). Calcula los ra ces del polinomio cuyos coecientes vienen en coef. sin: Funci on. Sintaxis sin(X). Funci on seno de X. size: Funci on. Sintaxis size(A). Retorna las dimensiones de la matriz A. sum: Funci on. Sintaxis sum(X). Suma los elementos del vector X. subplot: Funci on. Sintaxis subplot(m,n,i). Genera una separaci on en una gura, dada por un arreglo de m las y n columnas, y graca en la posici on i- esima del arreglo. ss: Funci on. Sintaxis ss(A,B,C,D). Genera un modelo formulado en variables de estado. ss2tf: Funci on. Sintaxis [num,den]=tf2ss(A,B,C,D). Convierte una representaci on en variables de estado a un modelo dado por la funci on de transferencia. ss2zp: Funci on. Sintaxis [Z,P,K]=zp2ss(A,B,C,D). Convierte una representaci on en variables de estado a un modelo en formato zpk. std: Funci on. Sintaxis std(X). Retorna la desviaci on est andar de los elementos de X. tan: Funci on. Sintaxis tan(X). Funci on tangente de X. tf: Funci on. Sintaxis tf(num,den). Crea una funci on de transferencia. num son los coecientes del numerador, que van listados en potencias decrecientes de s o z, den es an alogo. tf2ss: Funci on. Sintaxis [A,B,C,D]=tf2ss(num,den). Convierte una funci on de transferencia a una representaci on en variables de estado. num son los coecientes del numerador, que van listados en potencias decrecientes de s o z, den es an alogo.
28
tf2zp: Funci on. Sintaxis [Z,P,K]=tf2zp(num,den). Convierte una funci on de transferencia a una representaci on zpk. num son los coecientes del numerador, que van listados en potencias decrecientes de s o z, den es an alogo. var: Funci on. Sintaxis var(X). Retorna la varianza de los elementos de X. zpk: Funci on. Sintaxis zpk(Z,P,K). Genera un modelo en el formato cerospolos-ganancia (zpk). zp2ss: Funci on. Sintaxis [A,B,C,D]=zp2ss(Z,P,K). Convierte un modelo en formato zpk a una representaci on en variables de estado. zp2tf: Funci on. Sintaxis [num,den]=zp2tf(Z,P,K). Convierte una representaci on zpk a una funci on de transferencia.
Bibliograf a
[1] The Mathworks, Getting Started with Matlab
29
30
BIBLIOGRAF IA
32 Variable Transport Delay, 19 Zero-Pole, 19 discrete, 19 Discrete Filter, 20 Discrete State-Space, 20 Discrete Transfer-Fcn, 19 Discrete Zero-Pole, 20 Discrete-Time Integrator, 20 First-Order Hold, 20 Unit Delay, 20 Zero-Order Hold, 20 functions & tables, 21 Fcn, 21 MATLAB Fcn, 21 Polynomial, 21 S-Function, 21 math, 21 Abs, 21 Dot Product, 22 Gain, 22 Math Function, 22 Matrix Gain, 22 MinMax, 22 Product, 22 Sum, 22 Trigonometric Function, 22 signals & systems, 22 Demux, 22 Mux, 23 Terminator, 23 sinks, 20 Display, 20 Scope, 20 Stop Simulation, 21 To File, 21 To Workspace, 21
INDICE ALFABETICO XY Graph, 21 sources, 20 Clock, 20 Constant, 20 Signal Generator, 20 Sine Wave, 20 Step, 20 log, 10, 26 log10, 26 log2, 26 logm, 26 lookfor, 10, 26 matrices, 1, 8 max, 26 mean, 9, 26 min, 26 NaN, 10, 26 ones, 3 pi, 10, 26 plot, 10, 12, 27 poly, 10, 27 roots, 10, 27 seleccionar elementos, 5 sin, 10, 27 size, 10, 27 ss, 27 ss2tf, 27 ss2zp, 27 stairs, 14 std, 27 stem, 14 subplot, 14, 27 sum, 10, 27
INDICE ALFABETICO tan, 10, 27 tf, 27 tf2ss, 27 tf2zp, 28 var, 28 variables, 1 variables, 1 vectores, 4 zeros, 3 zp2ss, 28 zp2tf, 28 zpk, 28
33