Universidad Autónoma de Baja California Facultad de ciencias químicas e ingeniería Modelado y Control Reporte práctica #0 Villegas Moraila Luis David 1267277 Aguilera Savage Franco 1269127 Viernes 26 de agosto de 2022 1 MATLAB Competencia Familiarizarse con el ambiente de programación de Matlab y ser capaz de utilizar comandos básicos. Introducción Matlab es una herramienta de cómputo numérico para operaciones con matrices y vectores. Su capacidad incluye graficado. Matlab puede ser utilizado de diversas formas: como calculador avanzado en el modo de cálculo (prompt inicial), en modo de programación de lenguaje de alto nivel para generar las propias funciones y como subrutina para ser llamada desde un programa de lenguaje C. Para obtener información sobre los comandos es posible de cualquiera de las siguientes formas: Desde la línea de comandos utilizando el comando >>help. ventana de ayuda, bajo Help Menu. Desde la Matlab cuenta también con demostraciones (demos) los cuales son accesibles escribiendo el comando >>demo. Formatos de visualización Matlab tiene varios formatos de salida de pantalla diferentes para mostrar números. Estos formatos se pueden encontrar escribiendo el comando help 2 format en la ventana de comandos. Algunos de estos formatos se muestran en la Tabla 2. Tabla 2. Tabla de formatos. Comando Descripción Ejemplo format short Punto fijo con dígitos decimales. format long Punto fijo con 14 >>351/7 dígitos decimales. ans 50.14285714285715 4 >>351/7 ans = 50.1429 format short e Notación científica >>351/7 ans = con 4 dígitos 5.0143e+001 decimales. format long e Notación científica >>351/7 con 15 dígitos ans decimales. 5.01428571428571e+001 format short g Los mejores 5 dígitos >>351/7 ans de punto fijo o = 50.143 flotante. format bank Dos dígitos decimales. = = >>351/7 ans = 50.14 Expansión de fracciones parciales Cuando se encuentra la transformada de Laplace inversa (o transformada inversa de Z) es útil segmentar los polinomios de tal manera que se pueda aplicar la tabla de transformadas de Laplace (o Z). Esto se puede hacer usando 3 el método de expansión de fracciones parciales, que es el inverso de encontrar un denominador común y combinar fracciones. Es posible hacer esto desde Matlab. Primero se presenta un caso simple cuando no hay raíces repetidas y el orden del polinomio del numerador es estrictamente menor que el orden del polinomio del denominador. ¿Cómo aplicar la expansión de fracciones parciales? Se tiene el siguiente ejemplo. Encontrar la transformada inversa de Primero se factoriza el denominador. Usando la formula cuadrática se obtienen las raíces y se escribe la forma factorizada como Después se usa la siguiente ecuación Utilizando la ecuación Cuyo valor es r1=7. De manera similar 4 Osea, r2=-4. Expansión de fracciones parciales en Matlab La función residue de Matlab se puede utilizar para calcular esto, de una relación de dos polinomios. Este entrega tres piezas de información: • Los residuos se dan en el vector de salida r. • Los polos se dan en el vector de salida p. • Los llamados términos directos se dan en el vector de salida k. Cuando el orden del polinomio del numerador: • Es menor que el orden del polinomio denominador, no habrá términos directos. 5 • Es igual al orden del denominador, habrá un término directo. • Es uno mayor que el orden del denominador, habrá dos términos directos. Etc. El comando requiere de dos vectores de entrada: • Uno con los coeficientes del numerador. • Uno con los coeficientes de denominador. Ejemplo. Sin términos directos, sin raíces repetidas, sin raíces complejas. Se tiene la siguiente función de transferencia Se podría primero ingresar el numerador y denominador, para después aplicar el comando residue, como se muestra a continuación El resultado obtenido es 6 Note que k se encuentra vacío, indicando que no hay términos directos. Los números en r son los residuos (son los números que van en el numerador de cada término de la expansión). Y los números p son los polos (son los números sustraídos de s para formar los denominadores de los términos). Se tiene un polo en s=-2 con un residuo de 7 y un polo en s=-1 con un residuo de -4. Por lo tanto Y utilizando las tablas de transformada de Laplace para cada término de la expansión se obtiene: 7 Ejercicios 1. Realizar las siguientes operaciones aritméticas, utilizando 4 dígitos decimales. a) Figura 1. Código inciso a. Procedimiento 1. En el inciso A primero se declararon las variables. 2. Con base en esas variables se creó la función tanto la parte del numerador como la del denominador. 3. Al final solo se realizó la división para dar un resultado de 9.9190e+03. 8 Resultado. Fig. 2. Resultado del inciso a. b) Fig. 2. Código del inciso b. Procedimiento 1. Se utilizó el comando format short, 2. Después se declararon las variables las cuales se le asignaron valores. 3. Al final se creó la función descrita en el inciso del primer punto. El resultado obtenido fue 9.8466e-15. Resultado. Fig. 3. Resultado del inciso b. 9 c) Fig. 4. Código inciso c. Procedimiento 1. Se comenzó definiendo las variables con los valores dados en la práctica, 2. Luego se creó la función del numerador y posteriormente la de denominador. 3. Al final solo se dividió y dio como resultado un valor de 3.1667. Resultado. Fig. 5. Resultado del inciso c. 10 d) Fig. 4. Código inciso d. Procedimiento 1. Primero se le asignaron las variables a los valores dados. 2. Al final se le adiciono ambos valores en forma de fracción dentro del seno dando así un valor de 1. Resultado. Fig. 5. Resultado del inciso d. 2. Graficar las siguientes funciones. a) 𝑦 = 𝑥 + 250 Fig. 6. Código del inciso a. Procedimiento 1. Primero creamos un vector de tiempo de -pi hasta 100. 2. Después se creó la función dada en la práctica. 3. Al final con la variable z solo la mandamos a graficar con el comando plot. 11 Resultado Fig. 7. Gráfica generada. b) 𝑦 = sin(3𝜋𝑥) Fig. 7. Código del inciso b. Procedimiento 1. Se creó el vector de tiempo de -pi hasta pi. 2. Pasamos a realizar la función del inciso utilizando el vector x. 3. Usamos el comando plot para graficar la función. 12 Resultado Fig. 8. Gráfica. c) 𝑦 = 𝑒𝑥 Fig. 9. Código del inciso c. 13 Procedimiento 1. Se definió el vector de tiempo x de 1 a 10. 2. Se creó la función correspondiente utilizando el vector x. 3. Se mandó a graficar usando un plot. Resultado Fig. 10. Gráfica. 3. Graficar las siguientes funciones en una sola ventana (hint: usar subplot). a) 𝑦 = 𝑥2 14 b) 𝑦 = 4𝑥2 c) 𝑦 = 1 𝑥2 2 Procedimiento Fig. 11. Código. 1. Se creó el vector de tiempo que será común para las tres funciones por realizar. 2. Se crean las tres funciones correspondientes y, y2 y y3. 3. Se utilizó un subplot para posicionar cada una de las gráficas en un lugar específico del marco de las gráficas y además se crea cada gráfica con plot. 15 Resultado Fig. 12. Gráficas. 4. Expandir en fracciones parciales las siguientes funciones: a) Procedimiento Fig. 13. Código inciso a. 1. Se creó un vector para el numerador y otro para el denominador. 2. Se utiliza el comando residue para obtener los residuos, polos y el indicador de términos directos k. 16 3. Los residuos obtenidos fueron 0.2500 + 0.2500i y 0.2500 - 0.2500i. Los polos obtenidos fueron -0.5000 + 0.5000i, -0.5000 - 0.5000i y k sin valor asignado, lo cual indica que no hay términos directos. Resultados Fig. 14. Resultados del inciso a. Fig. 15. Procedimiento 1. Creamos el vector n para el numerador y el vector d para el denominador. 17 2. Utilizamos el comando residue para obtener los residuos, polos y el indicador de términos directos k. 3. Se obtuvieron los siguientes residuos 1.0000 - 2.5000i y 1.0000 + 2.5000i, se obtuvieron los siguientes polos -1.0000 + 2.0000i y -1.0000 - 2.0000i y se obtuvo una k sin valor asignado lo cual indica que no hay términos directos. Resultados Fig. 16. Resultados del inciso b. Fig. 17. Código del inciso c. 18 Procedimiento 1. Creamos el vector n para el denominador fijándonos en los coeficientes del numerador y creamos el vector d para el denominador fijándonos en los coeficientes del denominador una vez desarrollada la expresión (s + 1)^3 2. Los residuos obtenidos fueron los siguientes 1.0000, 0.0000 y 2.0000, los polos obtenidos fueron los siguientes -1, -1, -1 y una k sin valor asignado lo cual indica que no hay términos directos. Resultados Fig. 18. Resultados inciso c. 19 SIMULINK Competencia Familiarizarse con el entorno gráfico de Simulink. Introducción Simulink es una herramienta que ofrece un editor gráfico, bibliotecas de bloques personalizables y un conjunto de solvers, para modelar y simular sistemas dinámicos. Está basado en un entorno de diagramas de bloque multi-dominio bajo un diseño basado en modelos. Simulink permite el diseño y la simulación a nivel de sistema, la generación automática de código, así como la prueba y verificación continua de los sistemas embebidos. La capacidad de integración de Simulink con MATLAB, le permite incorporar algoritmos de este lenguaje dentro de los modelos Simulink, exportar los resultados de la simulación a MATLAB para así poder llevar a cabo más análisis. Los sistemas dinámicos pueden ser simulados utilizando Simulink. En la mayoría de casos, estos implican procesos lineales o no lineales dependientes del tiempo, que pueden ser descritos usando ecuaciones diferenciales (tiempo continuo) o ecuaciones en diferencia (tiempo discreto). Otra forma común de describir los sistemas dinámicos es mediante el diagrama de bloque. Los diagramas de bloques es un intento de entender el comportamiento del sistema por medio de una representación gráfica, que esencialmente consiste 20 de representaciones de los componentes individuales del sistema (bloques) junto con un flujo de señales entre estos componentes. Simulink se basa en esta forma de representación, para ello usa una interfaz gráfica para convertir un diagrama de bloques de esta clase (casi) directamente en un modelo Simulink y luego simular el funcionamiento del sistema. Las características principales de Simulink son: • Editor gráfico para crear y gestionar diagramas de bloques jerárquicos. • Bibliotecas de bloques predefinidos para modelar sistemas continuos y discretos. • Motor de simulación con solvers de ecuaciones diferenciales ordinarias de paso fijo y variable. • Scopes y data displays para ver los resultados de la simulación. • Herramientas de gestión de proyectos y datos para administrar los archivos y los datos del modelo. • Herramientas de análisis de modelos para perfeccionar la arquitectura del modelo y aumentar la velocidad de simulación. • Bloque MATLAB Function para importar algoritmos de MATLAB en modelos. • Legacy Code Tool para importar código C y C++ a los modelos. Principios de operación y gestión de Simulink El programa se inicia desde la ventana de comandos de MATLAB. Existen varias formas: 21 1. Con el comando >>simulink. Inmediatamente abrirá una ventana emergente, donde se puede seleccionar la opción Blank Model. Ya dentro del modelo nuevo se recomienda abrir Simulink Library Browser. Fig. 1. Ventana Library Browser. Simulink Library Browser (SLB) visualiza las bibliotecas de bloques disponibles (según la instalación) organizadas en grupos funcionales, los cuales a su vez pueden contener subgrupos. Por defecto SLB se posiciona en la biblioteca de Simulink, la cual contiene: • La biblioteca Sources, conteniendo bloques para la producción de señales (funciones). 22 Fig. 2. Bloques de Sources. • La biblioteca Continuous, conteniendo bloques básicos para el tratamiento de Señales en tiempo continúo. 23 Fig. 3. Bloques de Continuous. • Y muchas más. 2. Seleccionar el icono de Simulink. Fig. 4. Icono de Simulink. 3. Abrir un archivo .mdl desde la computadora o desde la ventana de comandos. 24 Construcción de un diagrama de bloques en Simulink EJEMPLO Crear un modelo con los bloques que permitan graficar una señal senoidal y obtenga su integral. Para cumplir con esto, se siguen los siguientes pasos: 1. Iniciar Simulink. 2. Crear un Nuevo Modelo (Blank Model). 3. Guardar el nuevo modelo con el nombre de sim_test1.mdl. 4. Arrastrar con el mouse el bloque Simulink|Sources|Sine Wave fuera del SLB hacia la ventana de trabajo. Si no se desea usar el nombre de Sine Wave, entonces puede hacer clic con el mouse en la línea de texto Sine Wave y editar el nombre con el teclado. Renombrar. Fig. 5. Bloque de Sine Wave. 5. Añadir bloque Integrator que permite integrar la señal de salida del bloque FUENTE. Para esto, abrir biblioteca de funciones Continuous. Arrastrar el bloque de Integrator a partir de esta biblioteca al espacio de trabajo. Conectar la salida del bloque FUENTE con la entrada del bloque Integrator. 25 Fig. 6. Bloque fuente conectado al integrador. 6. Extender el sistema de prueba de tal manera que la señal senoidal y su integral puedan ser vistas en una única ventana. Para hacer esto: a) Elegir el bloque Simulink|Signal Routing|Mux y añadir al área de trabajo. b) Elegir el bloque Simulink|Sinks|Scope y añadir al área de trabajo. c) Realizar las siguientes interconexiones: Fig. 7. Diagrama básico en Simulink. ¿Qué señales se obtienen a la salida? Anexe al reporte de esta práctica y explique el por qué se obtiene esto. 26 Procedimiento 1. Se siguieron los pasos indicados para generar el siguiente diagrama de bloques. Fig. 19. Diagrama de bloques. Resultados La señal de entrada es un seno y la integral de un sin u es igual a -cos u + c, el coseno tiene su valor pico en 0, pero la señal está invertida debido al signo negativo, y tienen un offset de 1 que corresponde al valor de c. 27 Fig. 20. Scope. Parametrización de los bloques Simulink y de la simulación Para asignar valores a los parámetros de cada bloque, se debe abrir la lista de parámetros del bloque haciendo doble clic en el símbolo correspondiente. EJEMPLO Continuando con el ejemplo anterior, realizar los siguientes pasos: 1. Abrir la lista de parámetros del bloque FUENTE (Sine Wave) e identificar sus valores por defecto. 28 Fig. 8. Ventana de parámetros. 29 Modificar solo los valores de los siguientes parámetros: • Sine type: Time based. • Amplitude: 2 • Frequency (rad/sec): 2*pi • Phase (rad): pi/4 2. Abrir la lista de parámetros del bloque Scope e identificar sus valores por defecto. Para acceder a los parámetros del bloque primero debe abrir dicho bloque (haciendo doble clic) y después dar clic en el botón Configuration Properties. Fig. 9. Icono de configuración. Existen 4 pestañas: Main, Time, Display y Logging. Dentro de estas se puede especificar el número de entradas que tendrá el bloque (1 por defecto), el rango de tiempo, la cantidad de puntos que se han de graficar en el bloque (5000 por defecto), etc. 30 Fig. 10. Ventana de configuración. En la pestaña de Logging hacer las siguientes modificaciones: • Limit data points to last: Desactivado. Log data to workspace: Activado. Variable name: sim_test1_signals • Save format: Array Hacer clic en aplicar y cerrar ventana. ¿Qué señales se obtienen a la salida? Anexe al reporte de esta práctica y explique el por qué se obtiene esto. Procedimiento 1. Se modificaron los parámetros como se indicó en las instrucciones. 31 Resultados Se aumentó el valor de la frecuencia por lo que cada ciclo es más estrecho. Se aumentó la amplitud a dos como se observa en la gráfica. Se desfasó en pi/4 la señal de entrada y esto se aprecia en la gráfica en la señal de entrada, pues ahora la señal no tiene un valor de cero en el instante cero. Por otro lado, los cambios realizados en “scope “ generaron un cambio en el formato de las señales dándoles un aspecto menos detallado. Fig. 21. Parametrización de simulación (parámetros generales) Nos permitirá establecer valores para la duración de la simulación. Para ello ir a Modeling|Model Settings|Configuration Parameters. 32 EJEMPLO Establecer los siguientes parámetros de simulación al sistema creado anteriormente. • Tiempo de simulación: ✔ Inicio de simulación: 0 ✔ Finalización de simulación: 20 • Opciones de solver: ✔ Tipo (Type): Paso Fijo (Fixed-step) ✔ Solver (Método de ode3(BogackiShampine) ✔ Tamaño del paso fijo: 0.01 33 integración numérica): Fig. 11. Configuración de parámetros de simulación. Iniciar la simulación y visualizar las señales de salida resultantes de la simulación. ¿Qué señales se obtienen a la salida? Anexe al reporte de esta práctica y explique el por qué se obtiene esto. 34 Procedimiento: 1. Se modificaron los valores de la duración de la simulación como se indicó en las instrucciones. Fig. 22. 35 Resultados Fig. 23. Scope. Como se observa en el gráfico ahora la simulación llega al 20, esto debido a los cambios que realizamos. Conclusión. Esta práctica nos sirvió para reforzar y recordar herramientas útiles como Matlab y simulink que son ampliamente utilizados en el campo de la ingeniería y en específico en esta materia para modelar y controlar, y así optimizar el trabajo a la hora de realizar procesos y pruebas con diferentes sistemas. Tener presente las diferentes herramientas que Matlab y Simulink ofrecen nos ayudará a tener un mejor desempeño en el estudio de la materia. Enviar el reporte de la práctica de laboratorio al apartado Reporte práctica 0 y 0.5 en Blackboard. 36 DURACIÓN: 1 SESIÓN DE LABORATORIO 37