Manual de inicio rápido en Octave/MatLAB, con aplicacionesen control continuo Ing. Julián Alfonso Tristancho Ortiz Msc., PhD. Manual de inicio rápido en Octave/MatLAB orientado al curso de Automatización (171) del proyecto curricular de Ingeniería Industrial Universidad Distrital Francisco José de Caldas. Facultad de Ingeniería Plan curricular Ingeniería Industrial Bogotá 2014 Tabla de Contenido Tabla de Contenido ........................................................................................................................ 3 Lista de Figuras .............................................................................................................................. 4 Lista de Tablas ............................................................................................................................... 4 INTRODUCCIÓN MATLAB / OCTAVE ........................................................................................... 6 INSTALACIÓN OCTAVE ................................................................................................................ 7 INTERFAZ DE USUARIO OCTAVE ............................................................................................... 9 Ayuda del sistema .................................................................................................................... 10 MANEJO DE VARIABLES Y MATRICES ..................................................................................... 11 Cálculos y funciones matemáticas básicas .............................................................................. 13 Generación de matrices ........................................................................................................... 13 Manipulación de matrices ......................................................................................................... 14 Ejemplo 1. Uso de comandos básicos ................................................................................. 17 Ejemplo 2. Solución de un sistema lineal de ecuaciones ..................................................... 18 Manipulación de polinomios ..................................................................................................... 18 PROCESOS BÁSICOS PARA GRÁFICOS .................................................................................. 20 Ejemplo 3. Ajuste de datos a una línea recta (Regresión lineal) .......................................... 24 Ejemplo 4. Uso de gráficas múltiples (Funciones paramétricas) .......................................... 25 PROGRAMACIÓN EN OCTAVE .................................................................................................. 27 Ejemplo 5. Dibujo de funciones con parámetros variables ................................................... 30 PACKAGE DE CONTROL ............................................................................................................ 32 Ejemplo 6. Modelamiento matemático de un sistema masa resorte .................................... 34 Ejemplo 7. Uso package de control en Octave .................................................................... 37 Lista de Figuras Figura 1 Ventanas de instalación Octave. Izq. Ventana inicial y Der. Selección de packages adicionales (toolbox) ................................................................................................................... 7 Figura 2 Ventana de comandos Octave. Izq. Inicio normal y Der. Inicio anormal en Win8 .................. 7 Figura 3 Configuración de la ventana de propiedades de acceso de directo en escritorio para Octave .................................................................................................................................................... 8 Figura 4 Ventana de comandos en Octave .......................................................................................... 9 Figura 5 Funciones de edición en la ventana de comandos. ............................................................. 10 Figura 6 Ejecución comando “help plot” (arriba) y despliegue de ayuda resultante (abajo). .............. 11 Figura 7 Diferentes resultados del mismo comando ante el mismo comando. .................................. 12 Figura 8 Creación de variables del tipo matriz. .................................................................................. 13 Figura 9 Ejemplo de edición matriz .................................................................................................... 14 Figura 10 Ejemplo por vectores de una matriz................................................................................... 15 Figura 11 Ejemplos de algunos tipos de gráficas que se pueden obtener con Octave ...................... 21 Figura 12 Resultado de dibujar función seno, con fltk (izq) y gnuplot (der)........................................ 22 Figura 13 Gráfica de salida Ejemplo 3 ............................................................................................... 25 Figura 14 Gráfica de salida Ejemplo 4 ............................................................................................... 26 Figura 15 Resultado uso comando path ............................................................................................ 27 Figura 16 Llamado a ejecución de scripts almacenados en un directorio de trabajo ......................... 28 Figura 17 Edición de scripts en Notepad++ ....................................................................................... 29 Figura 18 Gráfica de salida Ejemplo 5 ............................................................................................... 31 Figura 19 Sistema masa amortiguador resorte .................................................................................. 34 Figura 20 Gráfica resultado Ejemplo 6 ............................................................................................... 36 Figura 21 Marts rover. a) vista exterior, b) compensador en lazo abierto y c) control en lazo cerrador .................................................................................................................................................. 37 Figura 22 Figuras de resultado control Marts Rover .......................................................................... 40 Figura 23 Linea de comandos código Ejemplo7.m ............................................................................ 41 Lista de Tablas Tabla 1 Comandos para manejo de memoria .................................................................................... 11 Tabla 2 Comandos de funciones matemáticas básicas ..................................................................... 13 Tabla 3 Comandos de creación de matrices ...................................................................................... 14 Tabla 4 Comandos y funciones asociadas con matrices ................................................................... 16 Tabla 5 Comandos y funciones asociadas con matrices ................................................................... 19 Tabla 6 Comandos y funciones asociadas el dibujo de funciones en 2D .......................................... 23 Tabla 7 Comandos y funciones asociadas a la escritura de scripts ................................................... 29 Tabla 8 Comandos y funciones asociadas el dibujo de funciones en 2D .......................................... 33 A continuación se hace una muy breve introducción al proceso de instalación de Octave. Al igual que MatLAB posee librerías especializadas que se conocen como Packages. INTRODUCCIÓN MATLAB / OCTAVE MatLAB es una herramienta desarrollada por la empresa MathWorks y es el nombre abreviado de “MATrix LABoratory”. Entre varias características que comparten se puede destacar que ambos ofrecen un intérprete permitiendo ejecutar órdenes en modo interactivo. computación y matemática entre otras. Plan curricular Ingeniería Industrial . MatLAB dispone de un código básico y de varias librerías especializadas (toolboxes).Msc. Como caso particular puede también trabajar con números escalares −tanto reales como complejos−. MatLAB es un gran programa de cálculo técnico y científico. Una de las capacidades más atractivas es la de realizar una amplia variedad de gráficos en dos y tres dimensiones. archivo de procesamiento por lotes o guion es un programa usualmente simple. Es considerado el equivalente libre de MatLAB. orientadas a diferentes ramas de la ingeniería. AUTOMATIZACIÓN INDUSTRIAL. MatLAB tiene también un lenguaje de programación propio basado en la generación scripts (archivo de órdenes. con cadenas de caracteres y con otras estructuras de información más complejas. Octave o GNU Octave es un programa libre para realizar cálculos numéricos. Julián Alfonso Tristancho Ortiz PhD. MatLAB es un programa para realizar cálculos numéricos con vectores y matrices. economía. que por lo regular se almacena en un archivo de texto plano). Todo el contenido está orientado a Octave pero es fácilmente extensible a MatLAB. los principales comandos y funciones de cálculo y comandos del toolbox de control. Ing. 6. Julián Alfonso Tristancho Ortiz PhD. ni el resultado del proceso. Esto origina que cada vez que se ingresa un comando o parámetro y se oprime Enter.4. Ventana inicial y Der.net/.sourceforge. este documento usa la versión 3. Izq. bajo licencia GNU y se encuentra disponible para su instalación en la dirección de internet: http://octave. Figura 1 Ventanas de instalación Octave. INSTALACIÓN OCTAVE Octave es un programa de uso libre. Selección de packages adicionales (toolbox) Si la instalación se realiza sobre un sistema operativo Windows 8 al iniciar la aplicación se va a presentar un problema el cual consiste en la desaparición de la línea de información de comandos. por ello se debe asegurar que este activa el checkbox activado como aparece en Figura 1 derecha. no se va a mostrar si el proceso ya término. Figura 2 Ventana de comandos Octave. El instalador de manera predeterminada no instala todos los Forges disponibles (lo que corresponde a los toolbox en MatLAB). Izq. Inicio anormal en Win8 AUTOMATIZACIÓN INDUSTRIAL. Una vez descargada la última versión se debe proceder con la instalación. Ing.Msc.net/projects/octave/files/Octave%20Windows%20binaries/ La versión es actualizada continuamente. la cual está disponible en: http://sourceforge. Es recomendable descargar la versión compatible con Microsoft Studio. como se puede ver la Figura 2. Inicio normal y Der. Plan curricular Ingeniería Industrial . Plan curricular Ingeniería Industrial . La forma más fácil de incluir este parámetro es ir al escritorio de Windows. para finalmente hacer click sobre Aceptar o Aplicar. seleccionar el icono de Octave ( ). En el campo Destino se debe incluir el parámetro “-i” como se muestra en la misma figura. Para corregir el problema mostrado Figura 2 en la se debe incluir un parámetro adicional a la línea de comandos. con lo cual se fuerza un comportamiento interactivo. con lo cual se despliega la ventana mostrada en la Figura 3. Este parámetro consiste en agregar el texto “-i”. Cada vez que se desee usar Octave se debe iniciar Octave desde este acceso directo. Ing.Msc. hacer click con el botón derecho del mouse y seleccionar la opción Propiedades. Julián Alfonso Tristancho Ortiz PhD. Figura 3 Configuración de la ventana de propiedades de acceso de directo en escritorio para Octave AUTOMATIZACIÓN INDUSTRIAL. ↓ Comando Siguiente). Para activar el menú de ventana se debe hacer click con el botón derecho del mouse sobre el icono de Octave ( ).Msc. pues los comandos Crtl+V (Pegar). El proceso de selección también no se usa de manera directa con el mouse como en las aplicaciones Windows normales. están deshabilitados. La interfaz del tipo línea de comandos presenta algunas dificultades para usar las herramientas básicas de edición como copiar y pegar. Para usar todos los procesos de selección y copiar/pegar. Ing. Información de versión y origen Información de sistema instalado y graficador Línea de comandos Resultado de la operación Identificador de línea Figura 4 Ventana de comandos en Octave Una vez se escribe y se ejecuta un comando es posible repetir un comando anterior si se usan las flechas de navegación del teclado (↑ Comando Anterior. Una vez se inicia la aplicación se muestra una ventana como la mostrada en la Figura 4. Julián Alfonso Tristancho Ortiz PhD. Las funciones y comandos que Octave dispone para realizar los procesos de cálculo deben ser escritos a continuación del carácter “>”. Crtl+X (Cortar) y Crtl+C (Copiar). Cada vez que se ingresa un comando o se llama una función se incrementa un contador el cual aparece al lado del nombre y versión del ejecutable de Octave antes del carácter “>”. configuración y motor de gráficas instalado. como se ve en la Figura 5. AUTOMATIZACIÓN INDUSTRIAL. se debe seleccionar la herramienta desde el menú de la ventana de comandos. en cambio usa una línea de comandos al estilo DOS. INTERFAZ DE USUARIO OCTAVE Octave no cuenta con una interfaz de usuario como tal. una vez se llama el comando anterior es posible ejecutarlo si se hace oprime Enter. Al iniciarse la aplicación Octave muestra algunos datos sobre la versión. Plan curricular Ingeniería Industrial . AUTOMATIZACIÓN INDUSTRIAL. Para obtener en pantalla este texto asociado para cada función se debe usar el comando “help” y luego escribir el nombre del comando y dar “Enter” (como se puede ver en la Figura 6). Ayuda del sistema Cada función o comando de Octave posee una ayuda que muestra la definición de parámetros o resultados obtenidos. con lo cual para ver la siguiente línea de información aparece cada vez oprime “Enter”. Si se desea salir del texto de ayuda en cualquier momento (incluyendo el final de la ayuda) se debe oprimir la letra “q”. esto se ve reflejado en que el cursor del sistema queda antecedido por “:”. Ing. pero esto generalmente produce un error. Generalmente la información es extensa y se muestra en pantallazos en la línea de comandos. La mejor forma de finalizar la aplicación es usando el comando exit.Msc. Figura 5 Funciones de edición en la ventana de comandos. con lo cual se despliega toda la información asociada. Para finalizar la aplicación se puede hacer click sobre el icono de Cerrar. Plan curricular Ingeniería Industrial . Julián Alfonso Tristancho Ortiz PhD. con lo cual se retorna a la línea de comandos. resaltado con sombreado. Cuando se finaliza por completo la presentación de la ayuda se muestra el mensaje “END”. después de un carácter alfabético se pueden usar caracteres numéricos. Tabla 1 Comandos para manejo de memoria Comando Descripción Ejemplo de uso clc Borra la línea de comandos sin eliminar o cambiar ninguna variable del sistema clc clear Borrar variable name de la memoria. mientras que a = “1” almacena el carácter “1”. -. Ing. con este ejemplo se generan dos variables Fuerza y fuerza No pude tener un nombre igual a una función o comando interno del sistema. sin. Octave es sensible a las mayúsculas y minúsculas en el nombre de las variables. ans. /. es así como el programa Fuerza = 1. mediante el uso del operador “=”. Por ejemplo no puede llamarse: who. Por ejemplo a = 1. almacena el número 1.0 en a. por los cual no es necesario hacer conversión entre ellos. ?. MANEJO DE VARIABLES Y MATRICES Octave almacena en memoria del sistema valores calculados o escritos. es así como si se quiere almacenar en disco el valor de 1 en la variable a.Msc. Figura 6 Ejecución comando “help plot” (arriba) y despliegue de ayuda resultante (abajo). etc o espacios. Se puede usar all en lugar de name para indicar que se debe borrar completamente las variables clear name clear all AUTOMATIZACIÓN INDUSTRIAL. se debe escribir a = 1 y dar Enter. Entre las condiciones que deben cumplir el nombre de las variables están: Debe iniciar siempre por un carácter alfabético. clear. No debe contener caracteres especiales como *. Plan curricular Ingeniería Industrial . Si se desea usar una variable del tipo string o cadena de texto se debe iniciar con el carácter comillas dobles y finalizar con el carácter comillas dobles. etc. +. Julián Alfonso Tristancho Ortiz PhD. es diferente a fuerza = 1. ñ. cos. Octave maneja de manera indiferente los números entreros y decimales. ”). Surfer. Octave maneja todos los valores numéricos en formato de matrices. como se ve en el siguiente ejemplo: Figura 7 Diferentes resultados del mismo comando ante el mismo comando.”). Para definir las matrices de orden superior se debe usar los caracteres de corchete cuadrado ([ ]). Es común por ejemplo usar el poder cálculo de Octave para realizar tareas de number-crunching (calculo numérico de alta complejidad).”. Grapher. etc. fenómeno que se conoce como eco.Msc. Plan curricular Ingeniería Industrial . En el siguiente ejemplo se muestra como se introducen matrices en Octave: AUTOMATIZACIÓN INDUSTRIAL. para generar una nueva fila se debe usar el carácter punto y coma (“. u hojas de cálculo como Microsoft Excel. Entonces para Octave los valores escalares son matrices de 1 x 1. se almacena toda la memoria save ‘-ascii‘‘nombre_archivo‘ variable load Carga en memoria un archivo en disco en la memoria del sistema variable = load(‘-ascii‘‘nombre_archivo‘) Whos Los comandos save y load son fundamentales para realizar procesos de importación y exportación de otros programas. Si se omite el parámetro variable. Cada vez que se introduzca un comando o función que arroje como resultado un número o matriz se reproduce el resultado en pantalla mediante al variable del sistema ans o una visualización del resultado obtenido. separando cada componente de una misma fila por medio de espacio (“ “) o coma (“. mientras que el proceso de gráficación usar programas especializados del ámbito científico como: Voxler. Ing. Julián Alfonso Tristancho Ortiz PhD.. Si el usuario desea anular el eco de las operaciones se debe terminar todo función con el carácter “. whos Muestra en pantalla una lista con las variables del sistema save Guarda las variables del sistema en un archivo binario o de texto. 099 cos Coseno cos(0.100 exp Exponente en base neperiana exp(1) ans = 2. En la tabla siguiente se muestra los principales y su uso: AUTOMATIZACIÓN INDUSTRIAL.1) ans = 0. Plan curricular Ingeniería Industrial .302 Generación de matrices Octave posee varias funciones para la generación de matrices de manera automática. las cuales se muestran en la Tabla 2 Tabla 2 Comandos de funciones matemáticas básicas Operador Función matemática Ejemplo de uso pi Constante geométrica pi pi 3. pues Octave consume mucho tiempo y recursos cada vez que necesita imprimir los resultados en pantalla. Figura 8 Creación de variables del tipo matriz.1) ans = 0. Julián Alfonso Tristancho Ortiz PhD. Ing.718 log Logaritmo en base neperiana log(10) ans = 2.995 tan Tangente tan(0.1) ans = 0. Cálculos y funciones matemáticas básicas Octave tiene implementadas la mayoría de las funciones matemáticas básicas. lo que hace que la operación de la aplicación se vuelva muy complicada.1416 * Multiplicación 5*3 ans = 15 / División 15/3 ans = 3 + Suma 5+3 ans = 8 - Resta 5-3 ans = 2 Potenciación 5**3 5^3 ans = 125 **. ^ sin Seno sin(0.Msc. El eco es importante anularlo cuando se realizan operaciones con matrices de gran tamaño. donde i es el número de la fila y j el número de la columna del elemento que se desea leer o editar.m) Matriz de unos con n filas y m columnas eye(n) Matriz de identidad de n x n filas rand(n. Tabla 3 Comandos de creación de matrices Comando Descripción Ejemplo de uso zeros(n. Figura 9 Ejemplo de edición matriz AUTOMATIZACIÓN INDUSTRIAL.j).m) Matriz de números aleatorios con n filas y m columnas [i:p:f] Vector fila con valor inicial i. Para llamar o cambiar un valor se debe usar los paréntesis redondos de la forma variable(i.m) Matriz de ceros con n filas y m columnas ones(n. al igual que cualquier lenguaje de programación de alto nivel. En la Figura 9 se muestra un ejemplo de la edición de matrices. paso de incrementos p y valor final f Manipulación de matrices Las matrices en Octave pueden ser manipuladas valor por valor. Julián Alfonso Tristancho Ortiz PhD.Msc. Plan curricular Ingeniería Industrial . Es importante anotar que la numeración de las filas y columnas inicia desde 1. Ing. Un ejemplo de su uso se muestra en la figura siguiente: Figura 10 Ejemplo por vectores de una matriz En la tabla siguiente se muestran algunas de las funciones básicas usadas para el cálculo en matrices.Msc. Plan curricular Ingeniería Industrial . Julián Alfonso Tristancho Ortiz PhD. Si se desea retomar o alterar toda una fila o columna de una matriz se puede usar el carácter “:”. Ing. AUTOMATIZACIÓN INDUSTRIAL. == Igual y ~= diferente sum(matriz) Calcula la suma de cada vector columna de una matriz Inv(matriz) Calcula la inversa de la matriz pasada como parámetro matriz‘ Genera la transpuesta de la matriz Operadores matemáticos para cálculo .** (Exponencial) precedidos por el carácter “. find(matriz. Tabla 4 Comandos y funciones asociadas con matrices Comando Descripción size(matriz) Devuelve un vector que contiene el tamaño de filas./ (Dividir) Son los mismo operadores básicos .Msc. val) La función devuelve un arreglo con los índices que cumplen la condición. numerados de arriba abajo y de izquierda a derecha iniciando en 1. .” AUTOMATIZACIÓN INDUSTRIAL.* (Multiplicar) celda a celda de una matriz. oper. Ing. < Menor. columnas de la matriz Ejemplo de uso Busca en la matriz los valores que cumplan la condición dada por el operador. Los operadores pueden ser: > Mayor. Plan curricular Ingeniería Industrial . Julián Alfonso Tristancho Ortiz PhD. Ing. % Calcular el numerador de la ecuacion num = unos. Ejemplo 1. Uso de comandos básicos La serie de Leibniz es una serie infinita la cual converge hacia el valor de π/4 y por ello se puede considerar como una forma de aproximar el valor π (3. % Matriz de unos negativos con el mismo tamaño de n unos = -ones(1. Plan curricular Ingeniería Industrial . Julián Alfonso Tristancho Ortiz PhD. % Calcular el denominador de la ecuacion den = (2. La serie de Leibniz se puede escribir como: Mediante el uso de Octave calcular el valor de π si se aproxima con 20 términos. Determine el error con el valor de π usado por Octave./den.Msc.1415926535897932384626433832795). % Calcular la sumatoria de la serie y multiplicador por 4 % dejar en pantalla el valor resultante aproxpi = 4*sum(aproxpi) % Calcular el error respecto del valor aproximado y el valor % de pi almacenado en Octave % dejar en pantalla el valor resultante error = 100*(pi .21). SOLUCIÓN: % Arreglo con los valores necesarios del indice n n = [0:1:20].^n.aproxpi)/pi RESULTADO: AUTOMATIZACIÓN INDUSTRIAL.*n + 1). % Calcular cada uno de los terminos de la serie aproxpi = num. en vector columna b = b'. Ejemplo 2. Algunas de las funciones disponibles en Octave para la creación o manipulación de polinomios se encuentran descritas en la siguiente tabla AUTOMATIZACIÓN INDUSTRIAL. Plan curricular Ingeniería Industrial . % Calcular el vector resultado x = A^-1*b % dejar en pantalla los valore resultantes x = inv(A)*b RESULTADO Manipulación de polinomios Octave utiliza la representación mediante vectores filas para manipular polinomios. %Crear vector con los valores de términos independientes b = [-8 76 110].[4 8 -1]. Cada término del vector representa el coeficiente que multiplica a la variable independiente y su posición de derecha a izquierda su exponente creciente de uno en uno iniciando en cero.[8 -1 -4]]. %Convertir el vector fila de b. Julián Alfonso Tristancho Ortiz PhD. Es así que un vector [3 0 1 2] equivale a un polinomio: 3x3+x+2. Ing. Solución de un sistema lineal de ecuaciones Encontrar la solución para el siguiente sistema lineal de ecuaciones.Msc. o el polinomio 2x3-x2+5x+2 se representaría en Octave con el vector fila [2 -1 5 2]. x + 4y – 8z = -8 4x + 8y – z = 76 8x –y – 4z = 110 SOLUCIÓN: %Crear la matriz A con los coeficientes de la ecuación A = [[1 4 -8]. los valores pasados como valores) parámetros Ajusta una serie de puntos (vectorx. Tabla 5 Comandos y funciones asociadas con matrices Comando Descripción roots(vector) Calcula las raíces de un polinomio conv(vector1.Msc. Retorna el polinomio de mejor ajuste AUTOMATIZACIÓN INDUSTRIAL. vectory) al polinomio polyfit(vectorx. vector2) Multiplica dos vectores. Julián Alfonso Tristancho Ortiz PhD. vector1 y vector2 Ejemplo de uso Evalúa el polinomio con todos polyval(vector. de orden indicado por el vectory. Ing. Plan curricular Ingeniería Industrial . orden) método de los mínimos cuadrados. como las que se pueden ver en la Figura 11. dado que son las más usadas en el ámbito de ingeniería de control.Msc. Ing. Plan curricular Ingeniería Industrial . PROCESOS BÁSICOS PARA GRÁFICOS Una de las funcionalidades más importantes que posee Octave es la capacidad de dibujar datos o funciones en 2D y 3D. En esta sección solo se trataran los temas relacionados con dibujo de funciones 2D. Julián Alfonso Tristancho Ortiz PhD. AUTOMATIZACIÓN INDUSTRIAL. se permite seleccionar cual desea usar por defecto. Ing. mientras fltk tiene unos requerimientos de memoria AUTOMATIZACIÓN INDUSTRIAL. Plan curricular Ingeniería Industrial . las cuales cuando es instalada la aplicación.Msc. Figura 11 Ejemplos de algunos tipos de gráficas que se pueden obtener con Octave Octave maneja dos diferentes Graphics backend o librerías de dibujo (gnuplot y fltk). Es posible cambiar la librería si se usa la función graphics_toolkit(‘nombre_libreria‘). Julián Alfonso Tristancho Ortiz PhD. En esencia la diferencia radica en el consumo de memoria. muy bajos. con fltk (izq) y gnuplot (der) En la siguiente tabla se hace un breve resumen de los comandos básicos de dibujo y sus parámetros de configuración AUTOMATIZACIÓN INDUSTRIAL. Ing. gnuplot al poseer una interfaz de usuario más completa requiere menos recursos del sistema (ver Figura 12). Figura 12 Resultado de dibujar función seno. Plan curricular Ingeniería Industrial .Msc. Julián Alfonso Tristancho Ortiz PhD. si param es off la apaga. ‘x’ cruces. con lo cual no se borra el dibujo anterior. pasado en ‘archivo’ AUTOMATIZACIÓN INDUSTRIAL.’ Puntos. xmax. m (magenta). nombre 2 en la curva 2. …) nombre1 en la curva1. grid param Controla la visualización de la grilla de la gráfica. Julián Alfonso Tristancho Ortiz PhD. ‘s’ cuadrados. Ubica el texto nombre como título de la figura que se esta dibujando xlabel(nombre) Ubica el texto nombre bajo el eje de las x en la gráfica actual ylabel(nombre) Ubica el texto nombre al lado izquierda del eje de las y de la gráfica actual legend(‘nombre1’. Si vectory tiene varias columnas se dibujara una curva por cada una. close param Cierra la figura actual o todas si param = ‘all’ Crea una figura de filas x columnas que está conformada por varias gráficas normales independientes. La función plot devuelve un identificador único que puede ser usado para configurar individualmente sin tener que ser la figura actual (h). ‘--’ trazos. ‘+’ cruces. etc. con lo cual una gráfica anterior queda independiente de la actual hold param Mantiene como activa la gráfica actual (param = ‘on’). ‘:’ puntos. Tabla 6 Comandos y funciones asociadas el dibujo de funciones en 2D Comando h = plot(vectorx. ymax] Configura el área de dibujo que se desea obtener. Se dibuja según los parámetros param. indicar la subplot(filas. param) title(nombre) Descripción Función que crea una nueva gráfica en 2D. Ancho de línea: se debe introducir la palabra clave ‘linewidth’ y luego el ancho deseado. ‘archivo’) Guarda en disco la figura actual (si no se suministra h) o la figura identificada con h. ‘d’ diamantes.Msc. ‘o’ círculos. Tamaño de marcas: se debe introducir la palabra clave ‘markersize’ y luego el tamaño deseado. ‘*’ asteriscos. ‘-.. en el directorio y nombre. cuando se procesa a dibujar una nueva gráfica. índice) funciones de gráficación escritas a continuación de la función subplot (sin hacer Enter. axis[xmin. El termino param es un texto que configura la forma como Octave dibuja la gráfica. w(blanco) y k (negro) Carácter de punto: ‘. Para su uso se debe iniciar siempre con la función subplot. Tipo de línea: ‘-’continua. usando como datos en x vectorx y datos en y vectory. Entre los parámetros de dibujo están: Color línea: y (amarillo). g(verde). c(cian). Ing. vectory. usando ‘nombre2’. r(rojo). al limitar los valores de mínimos y máximos de cada eje de la gráfica figure Abre una nueva ventana para gráficar. ymin. Plan curricular Ingeniería Industrial . gráfica (índice) que se va a cambiar y luego usar de manera normal cada una de las columnas. solo separado por un espacio) print(h. Si param es on la enciende.’ punto. Crea un cuadro en el cual se define la leyenda de lectura para la gráfica actual. %Crear vectores de dibujo del modelo calculado x = 0:10:40.'ob'). ajus RESULTADO: AUTOMATIZACIÓN INDUSTRIAL.'r'. 'Modelo lineal'). ylabel('Clientes promedio'). legend('Datos'. %Cerrar todas las Gráficas close all.Msc.x). xlabel('Distancia en Km'). Plan curricular Ingeniería Industrial . Ing.'linewidth'. %Calcular la regresión lineal que se ajustan al modelo ajus=polyfit(D. SOLUCIÓN: %Almacenar los datos de numero de clientes C = [800 700 600 400 200 100]. Existen de igual manera funciones de dibujo que usan la misma estructura de generación que la función plot. cerca de un centro urbano. pero que generan diferentes resultados. Julián Alfonso Tristancho Ortiz PhD. grid on. %Crear vector con los valores Distancias D = [15 19 25 23 34 40].y. Ajuste de datos a una línea recta (Regresión lineal) Se desea construir un centro comercial. %Dibujar la distribucion de puntos. %Mantener la Gráfica activa hold on. Para ello se hizo un estudio de los centros ya existentes y se encontró que en promedio la asistencia de clientes diarios con respecto a la distancia de la ciudad es: Nº de clientes 800 700 600 400 200 100 Distancia (Km) 15 19 25 23 34 40 Determine un modelo lineal que pueda predecir el comportamiento de los números de clientes con respecto a la distancia. y = polyval(ajus. %Dibujar los puntos del modelo distancia clientes plot(x.C. %Configurar etiquetas title('Modelo de clientes en funcion de la distancia'). como lo son: semilogx: Dibujo con el eje en x logarítmico semilogy: Dibujo con el eje en y logarítmico loglog: Dibujo con el eje en x e y logarítmico polar: Dibujo polar bar: Dibujo de barras Ejemplo 3.C. distancia vs clientes plot(D.1).4). y1 = (a-b)*sin(t)-b*sin(t*((a/b)-1)). a = 20. b = 3. %Calcular cada una de las funciones que se van a dibujar a = 1. y3 = (a-b)*sin(t)-b*sin(t*((a/b)-1)). close all. AUTOMATIZACIÓN INDUSTRIAL. %Iniciar la variable parametrica t t = 0:0. SOLUCIÓN: %Borrar la linea de comandos y cerrar las Gráficas clc. x2 = (a-b)*cos(t)+b*cos(t*((a/b)-1)). b = 30. Uso de gráficas múltiples (Funciones paramétricas) Si se toma el conjunto de funciones paramétricas definida de la siguiente manera: Estas figuras tienen un gran conjunto de curvas diferentes dependientes de los parámetros a y b. Figura 13 Gráfica de salida Ejemplo 3 Ejemplo 4.05:10*pi. y2 = (a-b)*sin(t)-b*sin(t*((a/b)-1)).Msc. x1 = (a-b)*cos(t)+b*cos(t*((a/b)-1)). b = 1. Dibuje en una misma ventana 4 Gráficas independientes donde se muestre el resultado de cuatro pares de valores a y b. Julián Alfonso Tristancho Ortiz PhD. a = 1. Plan curricular Ingeniería Industrial . b = 20. Ing. a = 11. x4 = (a-b)*cos(t)+b*cos(t*((a/b)-1)). x3 = (a-b)*cos(t)+b*cos(t*((a/b)-1)). 2.y1). subplot(2.2. subplot(2. plot(x1.2.y2).y3).2. RESULTADO: Figura 14 Gráfica de salida Ejemplo 4 AUTOMATIZACIÓN INDUSTRIAL. subplot(2. title('a = 20 y b = 1').2. subplot(2. Ing.2.Msc. Julián Alfonso Tristancho Ortiz PhD. %Dibujar cada una de las figuras subplot(2.2).2). plot(x3. subplot(2.1).3). y4 = (a-b)*sin(t)-b*sin(t*((a/b)-1)). plot(x4.2.1). title('a = 11 y b = 30').4).2. hold on.3). %Crear la ventana con 4 figuras subplot(2. plot(x2.2. subplot(2. title('a = 1 y b = 20').4). Plan curricular Ingeniería Industrial . title('a = 1 y b = 10').y4).1). subplot(2. ni comillas y respetando las minúsculas y mayúsculas que se hayan usado en el nombre del archivo.m”. AUTOMATIZACIÓN INDUSTRIAL. Por ejemplo el archivo “C:\windows\System32\xwizard. ñ o espacios. Para evitar conflictos por el nombre del path o archivos se recomienda nunca utilizar nombres con acentuación. A continuación se muestra un ejemplo de cómo ejecutar un script de los ejemplos descritos en este documento.m”). Es necesario agregar cada vez que se inicie una nueva sesión de Octave. sin la extensión. pues cuando se finaliza la aplicación la información de directorios de trabajo se reinicia. El comando que se debe usar para Octave ejecute un script es run(“path/archivo. Ing.m”). Plan curricular Ingeniería Industrial .m”. todo los archivos *. por lo tanto se recomienda nombrar los archivos con todas las letras en minúsculas o mayúsculas. Octave también maneja el concepto de directorios de trabajo.m están almacenados en la carpeta “C:\EjmOct”.Msc. teniendo en cuenta que los paths de archivos en Octave se debe usar “/”. Para los scripts se presenta el mismo fenómeno de sensibilidad a las letras minúsculas y mayúsculas. Julián Alfonso Tristancho Ortiz PhD. se procederá a buscar en cada uno de estos directorios de trabajo. El comando path despliega la lista de directorios de trabajo como se muestra a continuación: Figura 15 Resultado uso comando path Es posible agregar un nuevo path de trabajo con el comando addpath(“directorio”). Para llamar un script se debe escribir el nombre del archivo con path incluido. en lugar de “\”. con lo cual cada vez que se llame un script sin path de búsqueda.m en la línea de comandos. solo es necesario escribir el nombre del archivo *. entonces para el ejemplo anterior se debería escribir run(“C:/Windows/System32/xwizard. Para ejecutar un script cuando se ha usado el comando addpath. Estos script deben ser almacenados en archivos de texto plano con extensión *.m. PROGRAMACIÓN EN OCTAVE Octave tiene un lenguaje de programación el cual está basado en el concepto de Script (ejecución sucesiva de comandos y funciones almacenadas en un archivo de texto). debería ser llamado escribiendo: “C:/Windows/System32/xwizard. se generara un error. si no se encuentra. Plan curricular Ingeniería Industrial . Ing. Julián Alfonso Tristancho Ortiz PhD.Msc. Figura 16 Llamado a ejecución de scripts almacenados en un directorio de trabajo Alguno de los comandos más utilizados en programación con Octave se encuentran descritos a continuación: AUTOMATIZACIÓN INDUSTRIAL. Las condiciones de verificación son: (x < y) Verdadero si x es menor que y (x <= y) Verdadero si x es menor o igual que y (x == y) Verdadero si x es igual a y (x >= y) Verdadero si x es mayor o igual que y (x != y) o (x ~= y) Verdadero si x no es igual a y !x Niega x (el valor de verdad) x|y x o y (Función lógica or) x&y x e y (Función lógica and) while (condición) Ciclo de repetición para el código escrito entre las sentencias while y end.Msc. end Para generar los scripts se puede usar cualquier editor de texto plano como el Bloc de Notas de Windows ( ). pero se recomienda el editor Notepad++. Si la condición no es verdadera se ejecuta el código puesto entre el else y end (código_sino). Plan curricular Ingeniería Industrial . El ciclo se código repite hasta que la condición sea falsa. numeración de líneas y reconocimiento de funciones básicas de Octave. Ing. es útil para mostrar avances o posiciones de cálculo dentro de un script a = input(“texto”) Detiene la ejecución de un script y espera que el usuario ingrese un valor if (condición) código_si else código_sino end Ejecuta una parte de código (código_si) cuando la condición es verdadera. Julián Alfonso Tristancho Ortiz PhD. En la figura siguiente se puede observar como es la visualización y edición de un script en Notepad++. Si una línea del script inicia con ese carácter la línea se omitirá Muestra un texto en la línea de comandos. Esta aplicación tiene como principal ventaja la tabulación automática. Tabla 7 Comandos y funciones asociadas a la escritura de scripts Comando % disp(“texto”) Descripción Comentario. Figura 17 Edición de scripts en Notepad++ AUTOMATIZACIÓN INDUSTRIAL.org/. que es un editor de uso libre disponible en http://notepad-plus-plus. y. Amax = input('Valor maximo de A: '). 'C2'. Plan curricular Ingeniería Industrial . else %Error en los parametros de etrada disp('Los valores ingresados no son validos!!') end RESULTADO: AUTOMATIZACIÓN INDUSTRIAL. while(A < Amax) %llenar los valores de la matriz de dibujo y(i. %Verificar integridad de los datos if(Amax > Amin) %Pedir datos del problema al usuario f = input('Frecuencia de la funcion (Hz): '). %Iniciar la variable A = Amin. %Crear las diferenes Gráficas disp('Calculando Gráficas'). Ejemplo 5. pero constante. A = A + paso. %Configurar la Gráfica legend('C1'.'linewidth'.01:5]. %Iniciar el vector de tiempo t = [0:0. Dibujo de funciones con parámetros variables De la función y(t) = Sin(2πft) + Cos(Aπf t) se desea obtener una gráfica en la cual se dibujen 5 curvas basadas en un rango de A determinado por el usuario y una frecuencia angular también dada por el usuario. disp('Dibujo de Gráficas terminado'). 'C4'). grid on. Ing. Genere un script en Octave que realice esta tarea. %Iniciar contador de Gráfica i = 1. %Iniciar matriz de datos y = zeros(NumGraf.Msc.Amin)/NumGraf. end %Dibujar las Gráficas resultantes plot(t.501). close all.:) = sin(2*pi*f*t) + sin(A*pi*f*t). Julián Alfonso Tristancho Ortiz PhD. SOLUCIÓN: %Borrar la linea de comandos y cerrar las Gráficas clc. %Calcular el paso de incremento paso = (Amax . %Pedir datos del problema al usuario Amin = input('Valor minimo de A: '). legend('boxon').2). i = i + 1. 'C3'. NumGraf = 3. Msc. Figura 18 Gráfica de salida Ejemplo 5 AUTOMATIZACIÓN INDUSTRIAL. Ing. Julián Alfonso Tristancho Ortiz PhD. Plan curricular Ingeniería Industrial . esto indica que el proceso se realizó de manera satisfactoria.Msc. Los sistemas de control continuo son representados mediante el uso de ecuaciones diferenciales. Para poder utilizar las funciones implementadas dentro del package. las cuales usando la transformada Laplace. se convierten en sistemas del tipo polinomial y es así como Octave maneja estos sistemas. PACKAGE DE CONTROL Los toolbox o package de Octave. Para ello se debe llamar la función pkg load “nombre”. por lo tanto para cargar las funcionalidades de la librería de control se debe escribir en la línea de comandos pkg load “control”. El manejo de polinomios se explicó en la sección Manipulación de polinomios. se debe cargar la librería antes de llamar las funciones instaladas. Los package deben ser seleccionados e instalados como se explica en la sección INSTALACIÓN OCTAVE. Plan curricular Ingeniería Industrial . son colecciones de funciones especializadas agrupadas por tema y que pueden ser llamadas desde la ventana de comandos de igual forma que las funciones básicas. Si al ejecutar el comando no se recibe ningún mensaje en la línea de comandos. Julián Alfonso Tristancho Ortiz PhD. Ing. Las funciones principales del package de control se encuentran descritas en la tabla siguiente: AUTOMATIZACIÓN INDUSTRIAL. Ing. Julián Alfonso Tristancho Ortiz PhD.±1) Ejemplo de uso Operaciones básicas entre funciones de transferencia Devuelve un vector con los polos (función pole) o ceros (función zero) de la función de transferencia tf. En una función de transferencia los polos son las raíces del denominador y los ceros son las raíces del numerador. step(tf) [y t] = step(tf) Aplica una señal de entrada tipo paso a la función de transferencia tf. minreal(tf) Realiza la simplificación de ceros y polos de una función de transferencia. se genera una gráfica donde se muestra la respuesta lsim(tf. Plan curricular Ingeniería Industrial . Si no se almacenan el vector tiempo t ni el vector de respuesta en el tiempo y. Si no se almacenan el vector tiempo t ni el vector de respuesta en el tiempo y.T) [y t] = lsim(tf.u. Tabla 8 Comandos y funciones asociadas el dibujo de funciones en 2D Comando Descripción tf(num. vector de entrada u y vector tiempo T. Calcula la función de transferencia total para un sistema realimentado con la siguiente estructura.Msc.T) Aplica una señal de entrada definida por el usuario a la función de transferencia tf. se genera una gráfica donde se muestra la respuesta AUTOMATIZACIÓN INDUSTRIAL. El termino ±1 asigna el signo de realimentación. den) Genera una función de transferencia a partir de los parámetros num (numerador) y den (denominador). Tanto num y den deben estar escritos en formato de polinomios y representan las ecuaciones diferenciales en transformada de Laplace + / * pole(tf) zero(tf) pzmap(tf) feedback(G. La función pzmap. dibuja los polos y ceros en una nueva gráfica.u.H. Modelamiento matemático de un sistema masa resorte Realizar el modelamiento matemático (función de transferencia) del sistema mostrado en la Figura 19. Se procede implementar el siguiente script %Asegurar la carga del toolbox de control. ( ) ( ) ( )( ( ) ( ) ) ( ) ( ) ( ) ( ) ( ) 3. Se hace el análisis dinámico de fuerzas del sistema ∑ () ̇( ) ̈( ) ̇( ) () ̈( ) () () 2. Plan curricular Ingeniería Industrial . k = 100 KN/m. Ing. m = 10 Kg y f(t) = 1000*cos(120*t) N Figura 19 Sistema masa amortiguador resorte SOLUCIÓN: 1. Julián Alfonso Tristancho Ortiz PhD. %Parametros del modelo AUTOMATIZACIÓN INDUSTRIAL. close all. Se aplica la transformada de Laplace asumiendo condiciones iguales a cero y se calcula la función de transferencia. Simular el sistema ante diferentes entradas sinusoidal con frecuencia variable para encontrar la frecuencia de resonancia del sistema.Msc. %Borrar la linea de comandos y cerrar las Gráficas clc. Ejemplo 6. %OJO ELIMINAR SI ESTA USANDO MATLAB pkg load control. c = 500 Ns/m. subplot(2. subplot(2.. %Calcular las amplitudes de la señales de salida while (frec <= 400) f = 1000*cos(frec*t). disp('Proceso terminado. subplot(2.') AUTOMATIZACIÓN INDUSTRIAL.3). frec = frec + 0. %Amortiguador m = 10.2. subplot(2.f. Ing.2. xlabel('tiempo (s)'). [y t] = lsim(fun. x(i) = frec/(2*pi). A = zeros(5000). title('Respuesta a la frecuencia').t). xlabel('Tiempo(s)'). % Masa %Crear la función de transferencia num = 1. plot(t. Plan curricular Ingeniería Industrial . xlabel('Frecuencia(Hz)'). Julián Alfonso Tristancho Ortiz PhD.A).2).2).den) %Simular la respuesta de la planta a paso [y t] = step(fun). den = [m c k].2. grid on. Amp = (max(y)-min(y))/2. x = x(1:i-1).2. semilogx(x. A(i) = Amp.5.2. x = A.1). plotyy(t.2.2). title('Entrada/Salida planta'). %Dibujar las diferentes Gráficas de analisis subplot(2.y).f).Msc. subplot(2.2.2. %Generar variación de frecuencia en la señal de entrada disp('Calculando la respuesta a frecuencia variable') %Variable que cambia la frecuencia de la entrada frec = 2*pi. f = 1000*cos(120*t). %Simular la respuesta ante entrada f(t) t = 0:0. title('Respuesta entrada paso').1). subplot(2. ylabel('Desplazamiento (m)').3).3).f. %Gráficar los resultados subplot(2. end %Dimensionar el arreglo de datos A = A(1:i-1). subplot(2.1).1). i = 1. subplot(2.001:1.3). %Resorte c = 500. i = i + 1. ylabel('Amplitud(m)').2.3). subplot(2.2. [y t] = lsim(fun.y. disp('Funcion de transferencia:') fun = tf(num.2.t.2. k = 100000. subplot(2.t). Msc. Plan curricular Ingeniería Industrial . Ing. RESULTADO: Figura 20 Gráfica resultado Ejemplo 6 AUTOMATIZACIÓN INDUSTRIAL. Julián Alfonso Tristancho Ortiz PhD. [1 3]). 5). clc.ones(size(t))). %OJO ELIMINAR SI ESTA USANDO MATLAB pkg load control. AUTOMATIZACIÓN INDUSTRIAL. Equipados con equipos de telecomunicación.[1 3]). Para el control del Rover se han planteado dos soluciones. cámaras y computadores. con el compensador en lazo abierto y cree un lazo cerrado con un controlador PID. Plan curricular Ingeniería Industrial . Julián Alfonso Tristancho Ortiz PhD. Uso package de control en Octave Los exploradores de energía solar enviados a Marte son vehículos autónomos semi-guiados de manera remota. una con un compensador en lazo abierto y otro con un sistema en lazo cerrado. den = conv([1 1].yo.Msc. Ejemplo 7. %Borrar las variables. sintonizándolo según el criterio de Ziegler y Nichols. b) a) Figura 21 Marts rover.y. den) num = conv([1 1]. conopen = tf(num. b) compensador en lazo abierto y c) control en lazo cerrador c) Determine el comportamiento del rover en lazo abierto. Ing. gráficas y pantalla anteriores clear all. %Calculo el producto de las dos raices independientes rover = tf(num. %Crear la grafica de respuesta de la planta con control de lazo abierto y sin control figure(). close all. 5). SOLUCIÓN: %Asegurar la carga del toolbox de control. plot(to. %Crear la funcion de transferencia del rover y controlador en lazo abierto %Funciones de transferencias num = [1].t. den) [yo to] = step(conopen*rover. [y t] = step(rover. a) vista exterior. En la siguiente figura se muestra las dos estrategias de control y una fotografía del Marts Rover.t. %Calculo el producto de las dos raices independientes den = [1 4 5]. . Ing. input('Respuesta del rover en lazo abierto y sin control (PRESS ENTER)'). disp(''). '{\fontsize{8} Kp=500}'. %Solo valido en Octave y con la funcion rlocus2. esto solo funciona en Octave legend('{\fontsize{8} Lazo Abierto}'. grid on.1). L = input('Introduzca el retraso de respuesta (L): '). [y2 t2] = step(feedback(200*rover). disp(''). '{\fontsize{8} Entrada}'). 5). xlabel('Tiempo(s)'). K = yo(size(yo.1. %Calcular la funcion de transferencia en lazo cerrado GscontKp = tf(Kp.y2. disp('*************************************************'). %Ganancia de un contrador tipo PI AUTOMATIZACIÓN INDUSTRIAL. grid on.yo. %Visualizar el comportamiento ante diferentes Ks subplot(2. disp('').1). axis([0 5 0 1. Julián Alfonso Tristancho Ortiz PhD.m en la carpeta de trabajo [Rdata Ks] = rlocus2(rover). %Guardar los valores de ubicación de los polos y las Ks rlocus(rover). title('Respuesta de la planta'). 8). ylabel('Posicion'). xlabel('Tiempo(s)').ones(size(t))). legend('boxon'). legend('boxon'). 5). subplot(2. Plan curricular Ingeniería Industrial . disp(''). '{\fontsize{8} Sin Control}'.t. title('Respuesta de la planta controlador P').1)). ylabel('Posicion'). disp('Proceso de sintonizacion de controlador PID Ziegler & Nichols'). ylabel('Posicion'). '{\fontsize{8} Entrada}'). %Sintonizar el control PID %Calcular la respuesta en para diferentes Ks step(rover. 5). plot(to. grid on. %Configurar los ejes de la grafica %Establecer las leyendas de la grafica.Msc. legend('{\fontsize{8} Kp=1}'. %Establecer comportamiento de la planta con control Proporcional figure(). [y3 t3] = step(feedback(500*rover).t3. '{\fontsize{8} Kp=200}'.2).1. input('Respuesta del rover en lazo cerrado con control P (PRESS ENTER)').y1. title('Respuesta de la planta sin controlador paso unitario'). '{\fontsize{8} Kp=50}'.t2. T = input('Introduzca la constante de tiempo (T): '). xlabel('Tiempo(s)'). 5).1]). %Calcular la respuesta en para diferentes Ks [yo to] = step(feedback(1*rover). %Ganancia de un contrador tipo P Kp = T/(K*L). [y1 t1] = step(feedback(50*rover).t1.y3. 0. legend('boxon'). 10.01).ones(size(t))). %Ganancia de un contrador tipo PID Kpid_p = 1. Plan curricular Ingeniería Industrial .t3.y3. Kpid_i = Kpid_p / (2*L). [y2 t2] = lsim(GscontKpi. legend('boxon').y3). %Calcular la funcion de transferencia en lazo cerrado GscontKpid = tf(Kpid_p.t1. Julián Alfonso Tristancho Ortiz PhD. [1 0]). e3 = ones(size(t3)) .t2.y1.2*T/(K*L). 0. grid on. Kpi_i = Kpi_p / (L/0. %Calcular la funcion de transferencia del contraldor I GscontKpi = tf(Kpi_p. t2). t3).y3. Kpid_d = Kpid_p * (0. '{\fontsize{8} Control PI}'. title('Magnitud de actuación de la planta controladores P. '{\fontsize{8} Control P}'.01).y2. '{\fontsize{8} Entrada}').3).1)+tf([Kpi_i]. %Dibujar las respuestas de la planta ante los diferentes controladores figure(). PI y PID'). legend('{\fontsize{8} Control P}'./ t3(2). e1 = ones(size(t1)) .yo. '{\fontsize{8} Control PID}'). plot(to. %Es necesario hacer un truco. AUTOMATIZACIÓN INDUSTRIAL.Msc.y2. 10. t1).t3. title('Respuesta de la planta controladores P. %Calcular [yo to] = [y1 t1] = [y2 t2] = [y3 t3] = la respuesta en para diferentes controladores step(rover. Ing. y3 = y3 . '{\fontsize{8} Control PID}'. pues el numerador es de mayor orden que el denominador %se le aplica un integrador [y3 t3] = lsim(GscontKpid*tf(1.y1. ylabel('Posicion'). 0. %ahora se deriva para obtener la señal original y3 = diff(y3). Kpi_p = 0. e1. e3. %Calcular las señales de control para cada controlador figure(). y3(size(y3)+1) = 0. plot(t1. xlabel('Tiempo(s)'). %Calcular la funcion de transferencia del contraldor D GscontKpid_d = tf([Kpid_d 0]. e2.01). step(feedback(GscontKpid*rover).t2.1) + GscontKpid_i + GscontKpid_d. ylabel('Posicion'). %Calcular la funcion de transferencia del contraldor I GscontKpid_i = tf([Kpid_i].t. %Escribir un pequeño resumen de las ganancias calculadas disp('').5*L). [y1 t1] = lsim(GscontKp.01). PI y PID'). legend('{\fontsize{8} Sin control}'. '{\fontsize{8} Control PI}'. 10. xlabel('Tiempo(s)'). [0 1]). [1 0]). grid on.[1 0]).y1.9*T/(K*L). step(feedback(GscontKpi*rover). 0.y2. e2 = ones(size(t2)) . step(feedback(GscontKp*rover). 10. disp('Controlador PI'). Kpi_p Kpi_i disp(''). RESULTADO: Figura 22 Figuras de resultado control Marts Rover AUTOMATIZACIÓN INDUSTRIAL. disp('Proceso de calculo terminado'). Kp disp(''). Kpid_p Kpid_i Kpid_d disp(''). Plan curricular Ingeniería Industrial . disp(''). Julián Alfonso Tristancho Ortiz PhD. disp('Resumen de ganancias del controlador'). disp('Controlador P').Msc. Ing. disp('Controlador PID'). Ing. Julián Alfonso Tristancho Ortiz PhD. Plan curricular Ingeniería Industrial . Figura 23 Linea de comandos código Ejemplo7.Msc.m AUTOMATIZACIÓN INDUSTRIAL.