Práctica 1 - Grupos de investigación: Arm-tep197...

44
43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE DATOS UTILIZANDO MATLAB Justificación En el modelado y control de sistemas, una de las principales tareas a realizar consiste en el análisis y validación de los datos que se toman del sistema, ya que si no se lleva a cabo esta labor, todas las pruebas que se realizan para construir el modelo y controlar el sistema pueden no servir cuando se realicen los ensayos en las instalaciones reales. Como es la primera fase en el diseño del modelo y de los sistemas de control, se ha considerado conveniente tratarlo en la primera práctica. Además, como no es necesario haber impartido ninguno de los contenidos de teoría para poder llevarla a cabo, se plantea comenzar a la vez que el primer tema de teoría, lo que ayuda a coordinar los programas de práctica y teoría de la asignatura. Por otra parte, como la herramienta que se va a utilizar a lo largo de las prácticas es Matlab, en esta primera se hará una introducción a la misma y al manejo de sus funciones fundamentales. Además, como en la mayoría de las prácticas es necesario diseñar e implementar programas bajo este entorno, se han incluido en esta práctica unos ejercicios donde se desarrollan distintos algoritmos útiles para la asignatura y que deberán ser implementados en el lenguaje que incorpora Matlab. Objetivos Mostrar la necesidad del análisis de datos y la validación de los mismos en el proceso de diseño y construcción del modelado de sistemas dinámicos, así como en el desarrollo de sistemas de control. Exponer las ventajas de la utilización de herramientas informáticas para la realización de análisis de datos, utilizando Matlab como entorno de computación y desarrollo de aplicaciones totalmente integrado y orientado para llevar a cabo proyectos en donde se encuentren implicados cálculos matemáticos y la visualización gráfica de los mismos. Realizar distintos análisis de datos y representaciones gráficas de los mismos tomando como referente un sistema agrícola real, para poder tomar decisiones a partir de estos estudios.

Transcript of Práctica 1 - Grupos de investigación: Arm-tep197...

Page 1: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

43

Práctica 1

ANÁLISIS DE DATOS UTILIZANDO MATLAB

PRÁCTICA 1. ANÁLISIS DE DATOS UTILIZANDO MATLAB

Justificación

En el modelado y control de sistemas, una de las principales tareas a realizar consiste en el análisis y validación de los datos que se toman del sistema, ya que si no se lleva a cabo esta labor, todas las pruebas que se realizan para construir el modelo y controlar el sistema pueden no servir cuando se realicen los ensayos en las instalaciones reales.

Como es la primera fase en el diseño del modelo y de los sistemas de control, se ha considerado conveniente tratarlo en la primera práctica. Además, como no es necesario haber impartido ninguno de los contenidos de teoría para poder llevarla a cabo, se plantea comenzar a la vez que el primer tema de teoría, lo que ayuda a coordinar los programas de práctica y teoría de la asignatura.

Por otra parte, como la herramienta que se va a utilizar a lo largo de las prácticas es Matlab, en esta primera se hará una introducción a la misma y al manejo de sus funciones fundamentales. Además, como en la mayoría de las prácticas es necesario diseñar e implementar programas bajo este entorno, se han incluido en esta práctica unos ejercicios donde se desarrollan distintos algoritmos útiles para la asignatura y que deberán ser implementados en el lenguaje que incorpora Matlab.

Objetivos

• Mostrar la necesidad del análisis de datos y la validación de los mismos en el proceso de diseño y construcción del modelado de sistemas dinámicos, así como en el desarrollo de sistemas de control.

• Exponer las ventajas de la utilización de herramientas informáticas para la realización de análisis de datos, utilizando Matlab como entorno de computación y desarrollo de aplicaciones totalmente integrado y orientado para llevar a cabo proyectos en donde se encuentren implicados cálculos matemáticos y la visualización gráfica de los mismos.

• Realizar distintos análisis de datos y representaciones gráficas de los mismos tomando como referente un sistema agrícola real, para poder tomar decisiones a partir de estos estudios.

Page 2: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

44

• Mostrar las características de la implementación de programas utilizando lenguajes de programación de alto nivel, concretamente el lenguaje que incorpora Matlab. Se trata de alumnos de informática de segundo curso, que poseen los conocimientos básicos en metodología de programación, por lo que sólo se pretende en esta práctica que aprendan la sintaxis y las funciones que incorpora el lenguaje de Matlab.

• Al finalizar la práctica, el alumno deberá estar familiarizado con la herramienta y ser capaz de trabajar sin problemas con Matlab para realizar análisis básicos de datos, así como representaciones gráficas de los mismos. Además deberá saber implementar un programa y funciones en Matlab que resuelvan problemas relacionados con la ingeniería de control.

Material necesario

Para realizar esta práctica es necesario disponer del siguiente material:

• Computador personal. • Sistema operativo Windows 2000. • Programa Matlab 6.5. • Archivos de datos.

Contenidos y temporización

La duración de esta práctica será de 6 horas (3 sesiones de 2 horas cada una) en las que se va a exponer la utilidad de Matlab a la hora de analizar y tratar datos procedentes de sensores. Concretamente se van a analizar datos de sensores instalados en invernaderos automatizados. Aparte de realizar una serie de cálculos estadísticos y representaciones gráficas de los datos, se plantean una serie de problemas, para que se diseñe e implemente su solución, sobre aspectos que pueden ser de interés como filtros software de señal. Por otra parte, y aunque aún no se poseen los conocimientos apropiados, se muestra el diseño de un controlador con el que se empiezan a presentar conceptos de forma intuitiva y se sugieren los primeros problemas en su desarrollo. En base a este planteamiento, los pasos que se deben realizar en la presente práctica para asimilar la forma de trabajo de Matlab con matrices, utilizar las distintas funciones estadísticas, representar gráficamente los datos, así como el diseño e implementación de programas y funciones, son los siguientes:

1.1. Breve introducción del manejo, las funciones básicas de Matlab, así como su programación. 1.2. Utilización de la ayuda de Matlab. 1.3. Gestión de archivos de datos con Matlab. 1.4. Análisis, obtención de estadísticos y representación gráfica de los datos correspondientes a la velocidad

y dirección de viento en el exterior. 1.5. Análisis, obtención de estadísticos y representación gráfica de los datos correspondientes a la radiación y

temperatura de cada uno de los invernaderos y del exterior para comparar comportamientos. 1.6. Diseño e implementación de un programa que detecta la hora a la que amanece y anochece, de forma que

se analicen las variables climáticas de radiación en periodos diurnos y la temperatura y humedad relativa durante el día y la noche, obteniendo estadísticos típicos como medias, máximo, mínimos, desviación estándar, etc.

1.7. Análisis de correlación de todas las variables medidas en un invernadero y las exteriores, interpretando físicamente los resultados que se obtienen.

1.8. Representación gráfica de todos las variables medidas en un invernadero individualmente en una misma figura.

1.9. Diseño e implementación de una función que realice el filtro de la media para eliminar ruidos de alta frecuencia. Además, se compararán los resultados con distinta longitud del filtro para observar el efecto sobre la señal real.

1.10. Diseño e implementación de un programa que controle la temperatura de un invernadero mediante la apertura y cierre de la ventilación utilizando un computador.

Tabla 1.1. Contenidos, ejercicios y temporización de la práctica 1

Page 3: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

45

1.1. Herramienta Matlab

En esta práctica se pretende realizar una introducción muy básica a Matlab. En líneas generales, Matlab es un entorno de computación y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados complejos cálculos matemáticos y la visualización gráfica de los mismos. Matlab integra análisis numérico, cálculo matricial, procesamiento de señal y visualización gráfica en un entorno completo donde los problemas y sus soluciones son expresados del mismo modo en que se escribirían tradicionalmente, sin necesidad de hacer uso de la programación tradicional. Matlab constituye un entorno abierto, para el cual numerosos paquetes específicos adicionales (toolboxes) han sido desarrollados. Estos paquetes específicos adicionales están constituidos por un conjunto de funciones que pueden ser llamadas desde el programa y mediante las cuales se pueden realizar multitud de análisis. Entre otras librerías de herramientas existen unas específicas de adquisición de datos, sistemas de control, procesamiento de imágenes, robótica, estadísticos, financieros, de interpolación, identificación de sistemas, redes neuronales, lógica borrosa, optimización, control robusto, control predictivo, etc.

En el campo de la Ingeniería, Matlab es una herramienta de gran utilidad para el análisis y representación de datos, realización de cálculos, simulación, etc. Matlab cuenta con dos tipos básicos de funciones que se tratarán con posterioridad:

• Las llamadas built-in functions. Son funciones que Matlab tiene incorporadas internamente y por tanto sus códigos no son accesibles al usuario.

• Funciones m functions. Son funciones cuyo código es accesible y que están escritas a base de órdenes de Matlab con objeto de realizar una función determinada.

En el caso de las versiones para Windows, la ejecución del programa se realiza pulsando con el ratón sobre el icono correspondiente disponible en el escritorio, o bien, accediendo desde

Menú Inicio → Programas → Matlab 6.5 → Matlab 6.5.

1.2. Primeros pasos en Matlab

Una vez ejecutado Matlab, aparece la ventana principal que se muestra en la figura 1.1 y que está constituida por las siguientes partes:

• Una línea de menús desplegables con el fondo gris que contiene funciones típicas de cualquier editor de textos (File, Edit, View, Window, Help, etc.). Aunque se hará referencia a esta línea de menús desplegables con posterioridad, se comentarán brevemente sus funcionalidades:

o File. Al desplegar la ventana aparecen opciones que permiten editar un nuevo archivo (.m, de texto, figura, etc.), cargar uno existente, grabar uno sobre el que se esté trabajando, imprimir, salir de Matlab, etc. Otras opciones particulares de Matlab disponibles desde este menú son Save Workspace, que permite grabar en archivo todas las variables almacenadas en la memoria particular de Matlab denominada espacio de trabajo, Set Path que permite añadir, eliminar y/o modificar las rutas de trabajo de Matlab, y Preferences donde es posible cambiar el aspecto del entorno, seleccionar el editor de texto que se desea utilizar, etc.

Page 4: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

46

Figura 1.1. Pantalla principal de Matlab

o Edit. Presenta las funciones típicas de cualquier editor de texto Cut, Copy y Paste, que permiten “cortar” un trozo de texto, copiarlo y “pegarlo” en otro lado.

o View. Contiene una serie de opciones que permiten ocultar o mostrar las distintas zonas de trabajo que componen el entorno de Matlab (ventana de órdenes, espacio de trabajo, directorio actual, historial, etc.)

o Windows. Permite seleccionar entre distintas ventanas que se tengan abiertas en una misma sesión (por ejemplo, trabajando con cinco archivos distintos, se puede cambiar de uno a otro). Además muestra la opción de cerrar todas las ventanas.

o Help. Proporciona acceso a una ventana que presenta una ayuda completa de la herramienta, como se muestra en la figura 1.2. Desde dicha ventana es posible realizar búsquedas, cargar varias demostraciones de la herramienta, obtener descripción detallada de las bibliotecas de funciones (toolboxes), etc.

Figura 1.2. Ayuda gráfica de Matlab

Zona de Accesibilidad

Ventana de Órdenes Historial de

Órdenes

Barra de Herramientas

Menú Inicio

Page 5: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

47

• Una barra de herramientas (ver figura 1.3) desde la que se encuentran disponibles distintos accesos directos sobre opciones típicas: abrir archivo, nuevo archivo, guardar archivo, etc. y otras opciones mas específicas como ejecutar Simulink (software de simulación que será utilizado en prácticas posteriores), cambiar el directorio actual de trabajo, ayuda, etc.

Figura 1.3. Barra de herramientas

• La zona restante del entorno Matlab y que se encuentra bajo la barra de herramientas es el área de trabajo. Dicha área se encuentra divida en distintas partes, cada una de ellas con una función determinada:

o Zona de accesibilidad. Se trata de la ventana que se encuentra en la parte superior izquierda de la zona de trabajo. En ella se puede observar el contenido del directorio actual de trabajo (Current directory, figura 1.4(a)), conocer el contenido del espacio de trabajo (Workspace, figura 1.4(b)) y acceder a los distintos toolboxes de Matlab acompañados de ejemplos y documentos de apoyo (Launch Pad, figura 1.4(c)). La visualización de cada una de las opciones comentadas anteriormente se realiza utilizando las etiquetas que se encuentran en la parte inferior de la ventana.

(a) Directorio actual (b) Espacio de trabajo (c) Acceso a bibliotecas de funciones

Figura 1.4. Zona de accesibilidad

o Ventana de órdenes. Corresponde a la parte derecha de la pantalla (ver figura 1.1). Sobre esta ventana aparece un prompt o línea de órdenes (>>) donde se irán introduciendo secuencialmente las ordenes que se vayan a ejecutar. La forma de ejecución de una orden es semejante a la de un sistema operativo de línea de ordenes como MS-DOS o Linux, es decir, se escribe la orden a llevar a cabo y posteriormente se pulsa la tecla Intro para obtener el resultado de la operación.

o Historial de órdenes. Se trata de un registro de las operaciones que han sido realizadas desde la ventana de órdenes. Sobre esta ventana se puede visualizar el trabajo realizado durantes varios días. Si se desea volver a realizar una operación que se llevó a cabo días atrás, basta con buscar tal operación en el historial y pulsar dos veces con el ratón sobre la misma. Esta ventana se muestra en la parte inferior izquierda de la figura 1.1.

• Menú inicio. Se trata de una opción semejante al menú de inicio del sistema operativo MS-

Windows. Una vez se pulsa en el botón Inicio (Start) que se encuentra en la parte inferior izquierda de la ventana de Matlab, se despliega el menú como se muestra en la figura 1.5, desde el que es posible acceder a todas las opciones disponibles en la barra de menús, en la barra de herramientas, en la ayuda, etc.

Page 6: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

48

Figura 1.5. Menú inicio Como se ha podido observar en la descripción de las distintas partes de la herramienta, las versiones 6.x de Matlab presentan un avance considerable con respecto a la facilidad de acceso a opciones y operaciones a través de ventanas y entornos gráficos. En sus versiones anteriores, la gran mayoría de estas opciones: ayuda, consulta del espacio de trabajo, directorio actual, etc., era necesario consultarlas desde la ventana de órdenes en modo texto. Actualmente se dispone de ambas posibilidades, consulta en modo texto o en modo gráfico. Para comenzar a utilizar Matlab, el primer orden que se debe ejecutar es la orden de ayuda. El acceso a la ayuda de Matlab se puede realizar de dos modos distintos, en modo texto o en modo gráfico. Para el acceso en modo texto se hace uso de la orden help y para el modo gráfico se utiliza la orden doc. Ambas órdenes tienen dos formas de ejecución, escribiendo en la línea de órdenes cualquiera de ellos de manera individual y pulsar Intro, o escribirlos seguidos de la orden sobre el cual se desea obtener ayuda y pulsar igualmente Intro:

>> help >> help nombre_orden >> doc >> doc nombre_orden

En el caso de utilizar help de forma individual aparecerán todas las citadas built-in functions que incorpora Matlab agrupadas en bibliotecas de funciones o toolboxes. Una breve descripción de los toolboxes más importantes de Matlab se muestra en la tabla 1.2.

(a) Ejemplo de help (b) Ejemplo de doc

Figura 1.6. Modos de ayuda en Matlab

En caso de utilizar la función help seguida de una orden se mostrará la ayuda de dicha orden en formato de texto, como se puede observar en al figura 1.6(a). Si por el contrario se utiliza la orden doc, si se usa de manera individual se obtiene una ventana donde se describe cómo

Page 7: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

49

comenzar a utilizar Matlab, y si se ejecuta con el nombre de una orden aparece una ventana donde se muestra una descripción de dicha orden, como se observa en la figura 1.6(b).

NOTA IMPORTANTE

Una cuestión importante a tener en cuenta es que Matlab distingue entre mayúsculas y minúsculas y por tanto, los nombres de función se introducirán en minúsculas.

Funciones Descripción c:\Matlab Establece los parámetros de la sesión Matlab Matlab\general Órdenes de propósito general Matlab\ops Operadores y caracteres especiales Matlab\lang Construcción del lenguaje y chequeo de errores Matlab\elmat Matrices elementales y manipulación de matrices Matlab\specmat Matrices especiales Matlab\elfun Funciones matemáticas elementales Matlab\specfun Funciones matemáticas especiales Matlab\matfun Funciones matriciales y álgebra lineal numérica Matlab\datafun Análisis de datos y funciones de transformada de Fourier Matlab\polyfun Funciones polinomiales y de interpolación Matlab\funfun Funciones de funciones de métodos numéricos no lineales Matlab\sparfun Funciones para matrices dispersas Matlab\plotxy Gráficos en dos dimensiones Matlab\plotxyz Gráficos en tres dimensiones Matlab\graphics Funciones gráficas de propósito general Matlab\color Funciones para control de color, brillo y contraste Matlab\sounds Funciones para procesamiento de sonido Matlab\strfun Funciones de cadenas de caracteres Matlab\iofun Funciones de entrada y salida de bajo nivel Matlab\demos La Expo de Matlab y otras demostraciones simulink\simulink Análisis de modelos en Simulink y funciones de construcción simulink\blocks Librería de Bloques de Simulink simulink\simdemos Demostraciones y ejemplos de Simulink toolbox\control Control System Toolbox toolbox\local Librería de funciones locales

Tabla 1.2. Breve descripción de las principales bibliotecas de funciones 1.3. Funciones especiales y símbolos relacionados con el entorno

• Si se desea guardar toda la sesión en un archivo (órdenes introducidas y resultados), basta usar la orden diary <nombre archivo> y se guardará la sesión en un archivo llamado <nombre archivo> (si no se introduce el nombre del archivo, se guarda en uno denominado diary). Cuando no se quiera seguir almacenando la información se introducirá diary off. Esta operación puede ser llevada a cabo sobre la ventana de Historial de órdenes. Para ello se selecciona el conjunto de órdenes que se desea guardar, se hace clic con el botón derecho del ratón y se elige la opción Create M-file.

• El símbolo % sirve para poner comentarios en los programas (todo lo escrito desde ese símbolo hasta el final de la línea no se ejecutará).

• Si lo que se desea es almacenar todas las variables de memoria (y sus valores actuales) en un archivo, se usa la orden save <nombre archivo>. Esto crea un archivo con el nombre introducido y con extensión .MAT. Si no se pone nombre del archivo crea uno llamado \MATLAB.MAT. En caso que se desee guardar en un archivo con formato ASCII, se

Page 8: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

50

introducirá en la orden un modificador <nombre archivo> -ascii. Si sólo se quieren guardar una serie de variables se introducirá save <nombre archivo> <nombre variables> separadas por espacios (y opcionalmente -ascii).

• Para recuperar los archivos generados con la orden save se utilizará load <nombre archivo>. • La orden what muestra los archivos .m que se encuentran en el disco duro en el subdirectorio

desde el cual se haya invocado a Matlab. • dir o ls muestra todos los archivos contenidos en el subdirectorio actual. • Con la orden delete se puede borrar cualquier archivo del disco duro. • chdir o cd permite cambiar de directorio. • La orden type permite ver el contenido de cualquier archivo en formato ASCII. • Para borrar alguna variable de memoria se utiliza clear <nombrevariables> separadas por

espacios. • El símbolo ! permite acceder al sistema operativo y ejecutar cualquier programa (siempre que

exista memoria suficiente). Es una de las formas de llamar al editor en la versión DOS. • Para parar la ejecución de una orden se usa Ctrl C. • La salida del sistema se efectúa al introducir quit o exit. El conjunto de órdenes más genéricos de Matlab pueden ser consultados desde:

>> help (o doc) general 1.4. Estructuras de datos 1.4.1. La matriz como estructura de datos básica El elemento básico en Matlab es una matriz compleja de doble precisión, de forma que abarca realmente todo tipo de datos (desde números reales hasta complejos) y de estructuras de datos (escalares, vectores y matrices). Implícitamente se usa la notación matricial para introducir polinomios. Así por ejemplo, el polinomio P = x3 + 5 x2 + 2 x + 7 se representará de la forma: P=[1 5 2 7] y la matriz:

=

4321

A

se representa por A=[1 2; 3 4]. A partir de esta representación se pueden comentar varias cosas: • Si al final de la introducción de la orden no se pone punto y coma “;”, aparece el resultado

explícitamente en pantalla. En caso contrario se ejecuta pero no muestra el resultado, almacenándolo en la variable a la que se asigna o, si no se asigna, se guarda en una variable de entorno llamada ans.

• Los elementos de cada fila se pueden introducir separados por espacios o por comas. • Para separar filas se usa “;” (punto y coma) o bien al introducirlas se pulsa Intro. • Para trasponer matrices se usa el apóstrofe ′. • Los elementos de vectores y matrices pueden ser reales, complejos e incluso expresiones. • Si se está introduciendo una orden o conjunto de ellas cuya sintaxis es muy larga, se puede

continuar en la siguiente línea introduciendo al final de la actual tres puntos seguidos “...”. • Las variables a las que se asignan resultados, así como las variables de entorno, se almacenan

en el "espacio de trabajo" (workspace). • Otras formas de introducir matrices:

o Lista explícita de elementos.

Page 9: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

51

o Generándola mediante funciones y declaraciones. o Creándola en un archivo .m (matrices .m). o Cargándola de un archivo de datos externo (archivos de datos ASCII y archivos con

formato .mat). 1.4.2. Elementos de las matrices Los elementos de una matriz se referencian de la forma A(i,j), donde i y j son los índices del elemento correspondiente. En este punto es importante comentar uno de los operadores más potentes de Matlab, que es el símbolo : (dos puntos), que permite referenciar varios elementos de una matriz, así por ejemplo: A(1,2:3) se refiere a los elementos de las columnas 2 y 3 pertenecientes a la primera fila. De igual forma, A(:,2) se refiere a todos los elementos pertenecientes a la segunda columna. 1.4.3. Operaciones con matrices y otras Las operaciones comunes con matrices son las que se muestran en la tabla 1.3.

Operación Descripción Símbolo Suma Suma + Resta Resta - Multiplicación Multiplicación * División derecha x=b/A es la solución de x*A=b / División izquierda x=A\b es la solución de A*x=b \ Potenciación Potenciación ^ Conjugada traspuesta Conjugada traspuesta ′

Tabla 1.3. Operaciones básicas con matrices Las mismas operaciones se pueden realizar elemento por elemento anteponiendo un “.” (punto) a cualquiera de los operandos anteriores (p.e., en vez del producto matricial normal, al anteponer un punto al símbolo de producto (.*) el elemento (i,j) de la matriz resultante se obtendría como resultado de multiplicar los elementos (i,j) de los operandos). El listado de las posibles operaciones a realizar con matrices se puede obtener desde: >> help (o doc) elmat. Además de las operaciones anteriores existen entre otras: • Funciones normales de manipulación matricial: tabla 1.4.

Operación Función Determinante det Inversa inv Autovalores eig Rango rank Norma norm Parte real real Parte imaginaria imag Valor absoluto abs Conjugada conj

Tabla 1.4. Funciones de manipulación matricial • Funciones trigonométricas estándar e hiperbólicas: tabla 1.5.

Page 10: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

52

Operación Función

Seno sin Coseno cos Tangente tan Arcoseno asin Arcocoseno acos Arcotangente atan Arcotangente de x/y atan2 Seno hiperbólico sinh Coseno hiperbólico cosh Tangente hiperbólica tanh Arcoseno hiperbólico asinh Arcocoseno hiperbólico acosh Arcotangente hiperbólica atahn

Tabla 1.5. Funciones trigonométricas e hiperbólicas • Funciones trascendentales: tabla 1.6.

Operación Función Módulo complejo abs Argumento complejo angle Raíz cuadrada sqrt Parte real real Parte imaginaria imag Conjugado complejo conj Redondeo al entero más cercano round Redondeo hacia cero fix Función signo sign Resto rem Exponencial base e exp Logaritmo natural log Logaritmo en base 10 log10

Tabla 1.6. Funciones transcendentales 1.4.4. Operaciones comunes de análisis de datos

Existen funciones que operan con vectores. Si se aplican a matrices operan columna a columna. Para consultar sobre este tipo de órdenes: >> help (o doc) datafun. Un breve listado con las funciones más comunes se muestran en la tabla 1.7.

Operación Función Valor máximo max Valor mínimo min Valor medio mean Mediana median Desviación típica std Suma de elementos sum Producto de elementos prod Suma acumulativa de elementos cumsum Producto acumulativo de elementos cumprod Matriz de covarianza cov Coeficientes de correlación corrcoef

Tabla 1.7. Operaciones comunes de análisis de datos

Page 11: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

53

1.5. Variables de entorno y variables especiales Matlab posee internamente un conjunto de variables predefinidas asociadas a valores constantes (el número pi, valor infinito, número no definido, variable compleja, etc.), relacionadas con la máquina (fecha y hora de la máquina, precisión de la máquina, etc.) y otras como es el caso de la variable ans, que almacena el valor de la última operación realizada. Un listado de algunas de estas variables se muestran en la tabla 1.8.

Variables Descripción

ans respuesta cuando no se asigna expresión eps precisión mínima de la máquina pi π

“ i”, “ j” −1 (variable compleja) inf ∞

NaN Not a number clock Reloj date Fecha flops Número de operaciones

Tabla 1.8. Variables de entorno y variable especiales • La orden who muestra las variables existentes en el entorno generadas por el usuario (pero no

las variables especiales). La orden whos muestra igualmente las variables generadas por el usuario junto con información adicional sobre el tamaño de las variables y el tipo de datos de las mismas. Toda esta información puede ser consultada en todo momento desde la ventana Workspace como se comentó en el apartado 2 (ver figura 1.4(b)).

• La orden size devuelve el número de filas y columnas de una matriz y length la mayor dimensión.

• El formato de salida puede modificarse usando format (short, long, etc.).

1.6. Polinomios

Los polinomios se representan por vectores, conteniendo los coeficientes del polinomio en orden descendente. Por ejemplo, el polinomio s3+2 s2+3 s +4 se escribe como p=[1 2 3 4]. Un polinomio puede ser evaluado en un punto determinado usando polyval. Por ejemplo, ps=polyval(p,s), donde p es el polinomio y s es el punto donde va a ser evaluado. En el ejemplo: p2=[1 3 2]; a=[1 2; 3 4]; polyval(p2,a) se ha introducido en lugar de un valor, un vector o una matriz, de modo que la evaluación se hace elemento a elemento.

Los polinomios se pueden multiplicar y dividir usando las funciones conv y deconv respectivamente. Mediante la función roots se pueden encontrar las raíces de esa ecuación, p.e. roots(p). Del mismo modo, se puede calcular un polinomio a partir de sus raíces usando la función poly, p.e. p2=poly([1 2]);. Si el argumento de entrada a poly es una matriz, devuelve el polinomio característico de la matriz (det|λI- A|) como un vector fila.

1.7. Gráficos

Matlab es muy potente a la hora de generar gráficos (sobre todo en sus últimas versiones). En las demostraciones aparecen varios tipos de gráficos. A continuación, se exponen las órdenes relacionadas con el dibujo de gráficos, estando contenidos los ejemplos en los listados de las

Page 12: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

54

demostraciones que se mostrarán en los siguientes apartados. Las órdenes fundamentales son las que se muestran en la tabla 1.9.

Operación Función Gráfico lineal en el plano XY plot Gráfico logarítmico en el plano XY loglog Gráfico semilogarítmico semilogx Gráfico semilogarítmico semilogy Gráfico polar polar Superficie de malla tridimensional mesh Plano de contornos contour Título title Anotación en eje x xlabel Anotación en eje y ylabel Dibuja cuadriculado grid Posiciona un texto arbitrariamente text Posiciona un texto con el ratón gtext Escalado manual de ejes axis Mantiene gráfico en pantalla hold Permite representar distintas figuras simultáneamente figure Divide la pantalla gráfica subplot

Tabla 1.9. Funciones gráficas Gracias a este conjunto de órdenes, es posible obtener los resultados de los trabajos realizados de forma gráfica, tanto en 2D (>> help (o doc) graph2d) como en 3D (>> help (o doc) graph3d). 1.8. Programación en Matlab Matlab, además de ser un entorno que permite ejecutar órdenes de manera individual sobre la ventana de órdenes, es en sí un lenguaje de programación formado por un conjunto de instrucciones típicas de control de flujo. La sintaxis es muy parecida a la de cualquier lenguaje de programación y todas las palabras reservadas pueden ser usadas directamente sobre la línea de órdenes, en forma de script o en forma de funciones (la forma de crear un fichero script o una función en Matlab será comentada posteriormente). En los siguientes apartados se tratará la sintaxis de los elementos típicos de programación que posee Matlab.

1.8.1. Operadores lógicos y relacionales Permiten la comparación de escalares (o de matrices elemento a elemento). Si el resultado de la comparación es verdadero, devuelven un 1, en caso contrario devuelven un 0. Los operadores elementales son:

< Menor que <= Menor o igual == Igual > Mayor que >= Mayor o igual ∼= No igual

Una consideración que hay que tener en cuenta es que es importante no dejar espacios entre los operadores formados por dos símbolos. Para datos complejos se compara (== y ~=) tanto la parte real como la imaginaria.

1.8.2. Bucles y estructuras condicionales

En esta sección se explican las estructuras de control típicas de cualquier lenguaje de programación estructurado: secuenciales, condicionales y repetitivas.

Page 13: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

55

• Bucle for. Permite bucles de n iteraciones conocidas. A diferencia de otros lenguajes de programación, la expresión a iterar puede ser un entero o un vector. En caso de ser un vector, el iterador tomará el valor de las distintas posiciones del mismo en cada paso del bucle. Su sintaxis es:

for variable=expresión hacer algo; end;

Ejemplo con iterador entero, donde la variable i pasa por los valores 10, 9, ..., 1: for i=10:-1:1 kk(i)=i; end

Ejemplo con iterador vector, donde la variable i tomas los valores desde un vector:

t=0:2:10; for i=t aux=i+3; end

• Bucle while. Permite bucles condicionales. Su sintaxis es: while expresión, hacer algo end;

La expresión es de la forma X operador Y, donde X e Y son escalares o expresiones que devuelven escalares y los operadores suelen ser operadores relacionales. El siguiente ejemplo busca una matriz aleatoria estable (parte real de autovalores negativa):

rand('normal'); a=rand(2); while max(real(eig(a))) >= 0, a=rand(2); end; eig(a);

• Estructura condicional if, else, elseif. La sintaxis es la siguiente:

if expresión 1, hace algo,..., hace otras cosas,... elseif expresión 2, hace algo,...,hace otras cosas,... else hace algo,..., end

else y elseif son opcionales, no así end que es obligatorio para acabar la instrucción.

• Estructura de selección de casos switch. Permite realizar distintas operaciones en función de los diferentes valores que pueda tomar una posible variable. Sus sintaxis es la siguiente:

switch variable case valor1 operaciones; case valor2 operaciones; ... case valorn operaciones; end

Page 14: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

56

• Interrupción de estructuras de control break. Las distintas órdenes de control flujo pueden ser interrumpidas en cualquier momento haciendo uso de la orden break. Ejemplo:

t=0:2:10; for i=t if i==6 break; end aux=i+3; end

En el ejemplo anterior, el bucle for será interrumpido cuando el valor de la variable i sea igual a 6.

1.8.3. Archivos .m

Matlab puede ejecutar programas almacenados en archivos ASCII que se encuentren en alguno de los subdirectorios indicados en el PATH o bien en el subdirectorio de trabajo actual y tengan además extensión .m. Hay dos tipos de archivos: • Scripts o módulos. Son archivos .m en los que se ponen secuencialmente órdenes de Matlab

que se ejecutan en ese orden al introducir el nombre del archivo .m (sin extensión). Operan globalmente con los datos que se encuentran en el espacio de trabajo. Las demostraciones que acompañan a estas notas son en sí scriptfiles, pues llevan un conjunto de órdenes Matlab y comentarios.

• Funciones. Son también archivos .m, pero a diferencia de los anteriores, se le pueden pasar argumentos y pueden devolver resultados. Por tanto, utilizan variables que se pasan por valor. La mayoría de los archivos contenidos en los toolboxes son funciones. La sintaxis de todas las funciones almacenadas en archivos .m es la siguiente:

function [out1,out2,...]=nombre_archivo(in1,in2,...) % Comentarios adicionales para el help

Matlab posee un editor de texto propio sobre el cual es posible desarrollar los script o las funciones en código Matlab. Es un editor de textos típico pero que resalta las palabras reservadas escritas en código Matlab. Dicho editor es accesible desde el menú File y eligiendo la opción M-file. El aspecto del editor se puede observar en la figura 1.7.

Figura 1.7. Editor de programación de Matlab

Page 15: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

57

Para finalizar, cabe comentar que existen una serie de utilidades a la hora de programar en Matlab. Las más comunes son: • pause: Para la ejecución hasta que se pulsa una tecla. • echo on, echo off: Permite la salida de órdenes y comentarios por pantalla, o la anula. • input: Muestra una cadena por pantalla y espera a que el usuario introduzca la cadena, que

generalmente se asigna a una variable. 1.8.4. Ejemplo de implementación de un sistema de medida de temperatura y cálculos

estadísticos

En este apartado se describe en su totalidad la implementación de un sistema de medida por computador de temperatura y el cálculo de los siguientes estadísticos: medias, máximo y mínimo. Se va a simular la salida eléctrica de un sensor de temperatura a partir de un valor que se introduzca por teclado. Para no realizar el programa completo de una sola vez, se empezará diseñando un programa con pequeñas prestaciones al que se le irán añadiendo nuevas funciones.

1.8.4.1. Programa que realiza la conversión de unidades eléctricas en unidades de temperatura Se utiliza un sensor de temperatura basado en un resistencia metálica (Pt-100), con un amplificador de señal, cuya salida varía entre 0 y 10 voltios. La relación entre la salida eléctrica (voltios) y la temperatura (ºC) es lineal y determinada por los valores que se indican en la tabla 1.10.

Señal eléctrica (Voltios) Temperatura (ºC) 0 -10 10 60

Tabla 1.10. Relación entre unidades eléctricas y de temperatura dadas por el fabricante

Por tanto, la fórmula que relaciona las dos variables es:

Temperatura (ºC) = 7× Señal eléctrica (Voltios)-10 El algoritmo sería:

1.8.4.2. Programa que realiza la conversión de unidades eléctricas en unidades de temperatura de manera continuada

En un sistema de medida y control por computador no se adquieren medidas aisladas, sino que se toman periódicamente (cada cierto intervalo de tiempo). El siguiente paso será simular el bucle de medida: el programa anterior se introduce en un bucle, de tal forma que se sigue ejecutando hasta que la señal eléctrica sea menor de 0 voltios o mayor de 10 voltios, lo que indicaría que el sensor presenta un mal funcionamiento. Habrá que modificar el programa anterior, incluyendo las instrucciones que sean necesarias. El algoritmo y el programa correspondiente son:

Datos de entrada: voltios=real Datos de salida: temperatura=real Algoritmo: Inicio

Leer(voltios) temperatura←7*voltios-10 Escribir(temperatura)

Fin

%Limpiar ventana de órdenes clc; %Cabecera del programa disp('Programa Temperatura'); disp('--------------------'); %Lectura del sensor voltios=input('Medida del sensor: '); %Conversión voltios a temperatura temp=voltios*7-10; disp('La temperatura es (ºC) : ') disp(temp);

Page 16: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

58

Datos de entrada: voltios=real Datos de salida: temperatura=real Algoritmo Inicio

Leer(voltios) Mientras(voltios>=0)y(voltios<=10)

temperatura←7*voltios-10 Escribir(temperatura)

Leer(voltios) Fin_mientras Escribir(‘Error: sensor averiado’)

Fin

%Limpiar pantalla clc; %Cabecera del programa disp('Programa Temperatura'); disp('--------------------'); %Lectura del sensor la primera vez voltios=input('Medida del sensor: '); %bucle while ((voltios>=0)&(voltios<=10)) %Conversión voltios a temperatura temp=voltios*7-10; disp('La temperatura es (ºC) : '); disp(temp); %Lectura del sensor voltios=input('Medida del sensor: '); end; %While disp(' ');

disp(' ¡¡ERROR EN EL SENSOR!!');

1.8.4.3. Programa que convierte unidades eléctricas en unidades de temperatura de manera continuada y tenga en cuenta alarmas

En un sistema de medida y control por computador es necesario realizar tareas de supervisión, por ejemplo activar alarmas en el caso de que controle un proceso cuya temperatura debe estar siempre en un margen definido. En este ejemplo, se indica que si la temperatura es menor de un mínimo o mayor que un máximo definidos por el usuario se debe activar una alarma, presentando en la pantalla del computador un mensaje de alarma.

El algoritmo y su implementación correspondiente se muestran a continuación:

Datos de entrada: voltios=real Alarma_min=real Alarma_max=real Datos de salida: temperatura=real Algoritmo: Inicio Leer(alarma_min) Leer(alarma_max) Leer(voltios) Mientras (voltios>=0)y (voltios<=10)

temperatura←7*voltios-10 Escribir(temperatura) Si (temperatura<alarma_min) Entonces escribir(‘¡Alarma: Temp. Mínima!’) sino si (temperatura>alarma_max) Entonces escribir(‘¡Alarma: Temp. Máxima!’) Leer(voltios)

Fin_mientras Escribir (‘Error: sensor averiado’)

Fin

%Limpiar pantalla clc; %Cabecera del programa disp('Programa Temperatura'); disp('--------------------'); %Lectura de alarmas alarma_min=input('Introduzca alarma mínima de

temperatura (ºC)= '); alarma_max=input('Introduzca alarma máxima de

temperatura (ºC)= '); %Lectura del sensor la primera vez voltios=input('Medida del sensor: '); %Bucle while ((voltios>=0)&(voltios<=10)) %Conversión voltios a temperatura temp=voltios*7-10; disp('La temperatura es (ºC) : '); disp(temp); %Comprobación de alarmas if (temp>alarma_max) disp('!!!!Alarma: La temperatura es mayor que la

temperatura máxima permitida!!!!'); elseif (temp<alarma_min) disp('!!!!Alarma: La temperatura es menor que la

temperatura mínima permitida!!!!'); end; %If %Lectura del sensor voltios=input('Medida del sensor: '); end; %While disp('¡¡¡¡ERROR DEL SENSOR!!!!');

Page 17: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

59

1.8.4.4. Programa que convierte unidades eléctricas en unidades de temperatura de manera continuada, almacenando esta variable y mostrándola cada vez que se ejecuta un bucle

En un sistema de medida y control por computador es necesario realizar tareas de supervisión, por ejemplo, mostrar una gráfica de la variable a medir o controlar. Para hacerlo, se utiliza un vector o matriz de una fila y se representa en cada iteración del bucle. Evidentemente, cada gráfica tendrá un valor más en cada pasada. Hace falta un contador para saber cuántos valores de temperatura se calculan. El programa que implementa este algoritmo es: Datos de entrada: voltios=real Datos de salida: temperatura=vector de reales Datos auxiliares: Contador=entero Algoritmo Inicio contador←1

Leer(voltios) Mientras (voltios>=0) y (voltios<=10) temperatura←7*voltios-10 Escribir(temperatura)

Dibujar(temperatura) Leer(voltios)

contador←contador+1 Fin_mientras Escribir (‘Error: sensor averiado’) Fin

%Limpiar pantalla clc; %Cabecera del programa disp('Programa Temperatura'); disp('--------------------'); %Inicializar contador contador=1; %Lectura del sensor la primera vez voltios=input('Medida del sensor: '); %bucle while ((voltios>=0)&(voltios<=10)) %Conversión voltios a temperatura temp(contador)=voltios*7-10; disp('La temperatura es (ºC) : '); disp(temp(contador)); %gráfico de temperatura plot(temp); %Actualizar contador contador=contador+1; %Lectura del sensor voltios=input('Medida del sensor: '); end; %While disp(' '); disp('¡¡¡¡ERROR DEL SENSOR!!!!');

1.9. Resumen de los órdenes de Matlab más útiles en la asignatura

Caracteres especiales Valores especiales = Instrucción de asignación ans Respuesta cuando no se asigna expresión [ Usado para formar vectores y matrices eps Precisión ] Ver [ pi π ( Precedencia aritmética i,j −1 ) Ver ( inf ∞ . Punto decimal NaN No es numérico , Separa índices y argumentos de función cloc

k Reloj

; Acaba filas; suprime la impresión date Fecha % Comentarios flops Número de operaciones : Indexación; generación de vectores ! Ejecuta instrucción del sistema operativo

Page 18: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

60

Archivos de disco Análisis de datos por columnas chdir Cambiar de directorio max Valor máximo delete Borrar archivo min Valor mínimo diary Diario de sesión mean Valor medio dir Directorio de archivos en disco median Mediana load Cargar variables de un archivo std Desviación típica save Guardar variables en un archivo sum Suma de elementos type Mostrar función o archivo prod Producto de elementos what Mostrar archivos .m en disco cumsum Suma acumulativa de elementos fprintf Escribir en un archivo con formato cumprod Producto acumulativo de elementos fopen Abrir un archivo con formato cov Matriz de covarianza fclose Cerrar un archivo con formato corrcoef Coeficientes de correlación

Funciones elementales Funciones trigonométricas abs Módulo complejo sin Seno angle Argumento complejo cos Coseno sqrt Raíz cuadrada tan Tangente real Parte real asin Arcoseno imag Parte imaginaria acos Arcocoseno conj Conjugado complejo atan Arcotangente round Redondeo al entero más cercano atan2 Arcotangente de x/y fix Redondeo hacia cero sinh Seno hiperbólico sign Función signo cosh Coseno hiperbólico rem Resto tanh Tangente hiperbólica exp Exponencial base e asinh Arcoseno hiperbólico log Logaritmo natural acosh Arcocoseno hiperbólico log10 Logaritmo en base 10 atahn Arcotangente hiperbólica

Polinomios Solución de ecuaciones poly Polinomio característico ode23 Solución de ecuaciones

diferenciales. Método Runge-Kutta de orden 2/3

roots Raíces de polinomios ode45 Idem. Runge-Kutta 4/5 polyval Evaluación de polinomios fmin Mínimo de una función de una

variable polyvalm Evaluación de polinomio matricial fsolve Solución sistema de ecuaciones no

lineales conv Multiplicación de polinomios fzero Cero de una función de una variable deconv División de polinomios quad Función de integración numérica polyfit Ajuste por un polinomio

Control de flujo y programación archivos .m Gráficos if Ejecuta órdenes condicionalmente plot Gráfico lineal en el plano XY elseif Usado con if loglog Gráfico logarítmico en el plano XY else Usado con if semilogx Gráfico semilogarítmico end Termina if, for, while semilogy Gráfico semilogarítmico for Repite instrucciones un número de

veces polar Gráfico polar

while Repite instrucciones mientras que una secuencia lógica sea verdadera

mesh Superficie de malla tridimensional

break Sale de los bucles for y while contour Plano de contornos return Salida desde funciones title Título pause Pausa hasta que se pulsa una tecla xlabel Anotación en eje x input Obtiene datos desde teclado ylabel Anotación en eje y function Define función grid Dibuja cuadriculado eval Evalúa texto en variables text Posiciona un texto arbitrariamente echo Para mostrar órdenes por pantalla gtext Posiciona un texto con el ratón clc Limpia pantalla axis Escalado manual de ejes disp Muestra matriz o texto hold Mantiene gráfico en pantalla figure Permite representar figuras subplot Divide la pantalla gráfica

Page 19: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

61

1.10. Ejemplos de aplicación. Análisis de datos para el modelado y control climático de invernaderos

Se va a exponer a continuación un ejemplo completo de la utilidad de Matlab para análisis y tratamiento de datos procedentes de sensores instalados en invernaderos automatizados. Se cuenta con un archivo de datos (m070498.txt)2 medidos en dos invernadero automatizados el día 7 de abril de 1998. El invernadero 1 corresponde a uno de tipo Inamed con cultivo de pepino, mientras que el invernadero 2 corresponde a uno tipo Araba con cultivo de tomate.

Para medir las variables climáticas de interés, se han utilizado sensores típicos (Pt-100 para temperatura, higrómetros para humedad, potenciómetros para posición de ventilaciones y mallas de sombreo, etc.). Una vez introducidos en el computador, se han hecho los cambios de escala adecuados de modo que los valores del archivo de datos corresponden a unidades físicas.

(a) Invernadero INAMED (b) Invernadero ARABA Figura 1.8. Tipos de invernaderos

En el archivo los datos aparecen ordenados por columnas, donde cada columna corresponde a una variable de interés (nótese que los datos han sido muestreados cada minuto):

COLUMNA DESCRIPCIÓN 1 Hora solar en decimal 2 Salida invernadero 1: temperatura interior del invernadero 1 (ºC) 3 Salida invernadero 1: humedad relativa interior en invernadero 1 (%) 4 Salida invernadero 2: temperatura interior del invernadero 2 (ºC) 5 Salida invernadero 2: humedad relativa interior en invernadero 2 (%) 6 Entrada invernadero 1: % apertura ventilación invernadero 1 (%) 7 Entrada invernadero 2: % apertura ventilación invernadero 2 (%) 8 Entrada invernadero 1: temperatura de los tubos de calefacción (ºC) 9 Entrada invernadero 1: indica si la bomba de calefacción está activada (0/100) 10 Entrada invernadero 2: temperatura de los tubos de calefacción (ºC) 11 Entrada invernadero 2: indica si la bomba de calefacción está activada (0/100) 12 Perturbación: temperatura exterior (ºC) 13 Perturbación: dirección del viento exterior (0-360º) 14 Perturbación: velocidad del viento exterior (m/s) 15 Perturbación: radiación global exterior (W/m2) 16 Perturbación: indicador de presencia de lluvia 17 Salida invernadero 1: radiación PAR3 invernadero 1 (W/m2) 18 Salida invernadero 2: radiación PAR invernadero 2 (W/m2) 19 Perturbación: radiación PAR exterior (W/m2) 20 Entrada invernadero 1: malla de sombreo invernadero 1 (0/400 cm) 21 Entrada invernadero 2: malla de sombreo invernadero 2 (0/400 cm)

Tabla 1.11. Correspondencia entre variables y columnas del archivo donde se almacenan

2 Este archivo se puede descargar desde http://aer.ual.es, en la sección de Docencia. 3 Photosynthetically Active Radiation: es la radiación cuya longitud de onda está comprendida entre los 0.4 y los 0.7 µm que es la que utiliza el cultivo para realizar la fotosíntesis.

Page 20: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

62

Como se puede observar, aparecen tres grupos generales de datos en este archivo:

• Los correspondientes a variables ambientales exteriores, que van indicados como perturbaciones y que se refieren a la temperatura exterior, dirección y velocidad del viento, radiación global exterior, radiación PAR exterior, lluvia, etc.

• Los correspondientes a entradas y salidas del invernadero 1. Como variables de entrada (variables manipulables que permiten actuar sobre el clima interior del invernadero) se tienen las correspondientes a la apertura de la ventilación, activación/desactivación de bomba de calefacción y temperatura de los tubos de calefacción y apertura de la malla de sombreo. Como salidas (variables cuya evolución en el tiempo se desea controlar) se tienen la temperatura interior y humedad relativa interior (que se controlan haciendo uso de ventilaciones y calefacción) y la radiación PAR interior (utilizando la malla de sombreo).

• Similar para el invernadero 2. Como variables de entrada (variables manipulables que permiten actuar sobre el clima interior del invernadero) se tienen las correspondientes a la apertura de la ventilación, activación/desactivación de bomba de calefacción y temperatura de los tubos de calefacción y apertura de la malla de sombreo. Como salidas (variables cuya evolución en el tiempo se desea controlar) se tienen la temperatura interior y humedad relativa interior (que se controlan haciendo uso de ventilaciones y calefacción) y la radiación PAR interior (utilizando la malla de sombreo).

Una etapa muy importante a la hora de llevar a cabo el control climático de invernaderos es realizar un análisis de los datos que se van obteniendo de los sensores. El programa Matlab permite realizar de una forma cómoda este análisis. A continuación, se muestra un script o módulo denominado datos.m en el que se realiza un estudio de la correlación de los datos contenidos en el archivo, se representan gráficamente las variables de interés, etc. Los resultados comentarán a lo largo de la clase de prácticas. echo off % Ejemplo de tratamiento de datos del día 07/04/98 load m070498.txt % se carga el archivo de datos muestra el tamaño de la variable v que debe ser size(m070498) % 1440 21, correspondiendo a 21 columnas (variables) y 1440 filas (1440 muestras) % Se almacena cada variable de interés en una variable de memoria t=m070498(:,1); % tiempo t1=m070498(:,2); % temperatura interior 1 h1=m070498(:,3); % humedad 1 t2=m070498(:,4); % temperatura interior 2 h2=m070498(:,5); % humedad 2 v1=m070498(:,6); % ventila 1 v2=m070498(:,7); % ventila 2 c1=m070498(:,8).*m070498(:,9)/100; % calefacción 1 c2=m070498(:,10).*m070498(:,11)/100; % calefacción 2 te=m070498(:,12); % temperatura exterior dv=m070498(:,13); % dirección viento vv=m070498(:,14); % velocidad viento rad=m070498(:,15); % radiación global exterior m1=m070498(:,20); % malla de sombreo 1 m2=m070498(:,21); % malla de sombreo 2 ll=m070498(:,16); % lluvia % Se visualizan los valores de las variables de interés de cada invernadero % INVERNADERO ARABA % representamos por ejemplo la evolución de la temperatura durante un día

Page 21: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

63

plot(t,t2) ylabel('temperatura (ºC)') xlabel('hora solar (h)') echo on pause % pulsa una tecla para continuar echo off % para hacerlo más cómodo, podemos utilizar la función % subplot y ver las variables de interés simultáneamente figure; h=subplot(5,2,1); plot(t,rad,'b') % radiación

title('variables externas') % título axis([t(1) t(length(t)) min(rad) max(rad)]) % escalado de ejes ylabel('rad. ext. (W/m2)') % eje y h=subplot(5,2,3); plot(t,te,'b') axis([t(1) t(length(t)) min(te) max(te)]) ylabel('temp') h=subplot(5,2,5); plot(t,vv,'b') axis([t(1) t(length(t)) min(vv) max(vv)]) ylabel('v-vien') h=subplot(5,2,7); plot(t,dv,'b') axis([t(1) t(length(t)) min(dv) max(dv)]) ylabel('d-vien') h=subplot(5,2,9); plot(t,ll,'b') axis([t(1) t(length(t)) min(ll)-.1 max(ll)+.1]) ylabel('lluv') xlabel('hora solar (h)') h=subplot(5,2,2); plot(t,t2,'b') title('Invernadero ARABA') axis([t(1) t(length(t)) min(t2) max(t2)]) ylabel('temp') h=subplot(5,2,4); plot(t,h2,'b') axis([t(1) t(length(t)) min(h2) max(h2)]) ylabel('hum') h=subplot(5,2,6); plot(t,v2,'b') axis([t(1) t(length(t)) min(v2) max(v2)]) ylabel('vent') h=subplot(5,2,8); plot(t,c2,'b') axis([t(1) t(length(t)) min(c2) max(c2)]) ylabel('calef') h=subplot(5,2,10); plot(t,m2,'b') axis([t(1) t(length(t)) min(m2)-.1 max(m2)+.1]) ylabel('malla') xlabel('hora solar (h)') % si se quieren guardar las variables en un archivo .mat save m070498 % en el caso de los datos correspondientes al invernadero INAMED se procedería de forma similar

Page 22: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 1. Análisis de datos utilizando Matlab

64

1.11. Bibliografía • Moreno, A.; Trabajando con Matlab y la Control System Toolbox; Ed, Ra-ma; Madrid;

España; 1999; 216 pp.

Este libro proporciona una introducción clara y concisa a Matlab y explora su utilización en la resolución de problemas científicos y de ingeniería. Está orientado a alumnos que tomen su primer contacto con esta herramienta para resolver problemas de control con el Control System Toolbox. En esta asignatura no se va a utilizar esta aplicación, pero los capítulos del 1 al 7 de este libro están dedicados al manejo de Matlab, por lo que pueden servir de referencia a los alumnos. En el capítulo 5 de este libro, se exponen muy brevemente los conceptos básicos de programación de Matlab, proporcionando una guía de referencia muy visual para que los alumnos la consulten. Si alguno desea continuar en la línea de control, puede profundizar estudiando los siguientes capítulos.

• García, J.; Rodríguez, J.I.; Brazales, A.; 2001; Aprenda Matlab 6.1 como si estuviera en primero; E.T.S.I. Industriales; Universidad Politécnica de Madrid; Madrid; España; 113 pp.

Se trata de un manual introductorio de una aplicación como Matlab que, para muchos alumnos, va a constituir su primer contacto profesional con los computadores y/o con su programación, por lo que está orientado desde este punto de vista. Comienza con una introducción al entorno de trabajo, continuando con las operaciones con matrices y vectores, y la descripción del concepto de funciones de librería y ejemplos de las más utilizadas. El capítulo 6 de este libro se dedica completamente a la programación en Matlab, describiendo de forma muy profunda las sintaxis de las órdenes básicas de este lenguaje de programación, así como las estructuras de control resolviendo numerosos ejemplos y ejercicios. Por otra parte, incluye la entrada y salida de datos, la gestión de archivos, así como las llamadas a funciones externas y órdenes del sistema operativo. Posteriormente dedica un apartado a la implementación y utilización de funciones. Finaliza con unas recomendaciones básicas generales de programación que pueden ayudar a los alumnos. La última sección del libro se dedica a la representación con gráficos bidimensionales. Constituye una completa referencia para trabajar con Matlab, y además como es de carácter gratuito, se recomienda a los alumnos que la descarguen desde la página web correspondiente y la consulten cuando tengan alguna duda. Existen otras publicaciones similares como Aprenda Matlab 5.2 como si estuviera en primero, dedicada a la versión previa de la aplicación y Aprenda Matlab 6.1 como si estuviera en segundo de carácter más avanzado.

• Pérez, C.; Matlab y sus aplicaciones en las ciencias y la ingeniería; Ed. Prentice Hall; Madrid; España; 2002; 609 pp.

Este libro presenta una profunda revisión acerca de Matlab y sus posibles aplicaciones en el campo científico y de la ingeniería. Comienza tratando el núcleo fundamental de Matlab y sus aplicaciones en materias como el análisis numérico, el análisis matemático y el álgebra. A continuación se analizan algunos de los toolboxes más utilizados en matemáticas (como los dedicados a la optimización, estadística, etc.) y en ingeniería, haciendo hincapié en los de control. En el capítulo 8 de este libro se encuentra la descripción de Matlab como un lenguaje de programación de alto nivel que incluye estructuras de datos, instrucciones de control de flujo, gestión de entradas/salidas e incluso programación orientada a objetos. Describe el editor de texto que incluye Matlab y resuelve una amplia serie de problemas para introducir la sintaxis de las principales órdenes del lenguaje de programación. Al final de cada capítulo se presentan ejemplos prácticos totalmente resueltos que aclaran los conceptos y amplían el campo de aplicación de Matlab. Se trata de un libro muy completo de consulta.

• The MathWorks Inc.; 2002; Using Matlab. The Language of Technical Computing; USA; 1188 pp

Este libro es el manual de la herramienta Matlab que suministra la propia empresa que la ha creado MathWorks. Es un manual de referencia donde se describe profundamente cómo hay que trabajar con Matlab, así como el funcionamiento y la sintaxis de cada una de las funciones elementales que incorpora

Page 23: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

65

la herramienta. Es una guía muy completa en la que se incluyen todos los aspectos relacionados, incluso consejos para optimizar el código generado. Toda esta información se incluye en un archivo formato pdf que el alumno puede descargarse en la página web dedicada a esta asignatura.

Page 24: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

73

Práctica 2

DISEÑO E IMPLEMENTACIÓN DE MODELOS DE SISTEMAS

DINÁMICOS Y SIMULACIÓN DE PROCESOS UTILIZANDO SIMULINK

PRÁCTICA 2. DISEÑO E IMPLEMENTACIÓN DE MODELOS DE SISTEMAS DINÁMICOS Y SIMULACIÓN DE PROCESOS UTILIZANDO SIMULINK

Justificación

A la hora de diseñar un sistema de control para un determinado proceso es necesario conocer el comportamiento dinámico del mismo. Para ello hay que obtener un modelo del mismo que relacione las dinámicas existentes entre las variables a controlar y las variables de entrada (tanto perturbaciones como variables de control).

Con los términos modelado y simulación se designa al conjunto de actividades asociadas con la construcción de modelos de sistemas del mundo real y su ejecución en un computador. La simulación digital relaciona modelos y computadores, refiriéndose al proceso de imitación de aspectos importantes del comportamiento del sistema mediante el diseño, construcción y experimentación con el modelo del sistema. Este proceso es similar al de experimentación que llevan a cabo los científicos en un laboratorio con el que pretenden aumentar la comprensión de alguna teoría para su validación y empleo posterior, y esto es precisamente lo que van a realizar los alumnos en esta práctica (cuando comienza ya se ha impartido parte del tema 2 dedicado al modelado y análisis de sistemas dinámicos, por lo que el alumno ya ha adquirido los conceptos básicos y necesarios).

El objetivo principal de la misma es que el alumno sea capaz de diseñar e implementar modelos de determinados procesos o sistemas, realizando distintas experiencias con ellos para analizarlos y obtener sus propias conclusiones.

Objetivos

• Mostrar las ventajas de utilizar herramientas informáticas para la simulación de sistemas dinámicos, concretamente Simulink basada en la representación en el dominio de Laplace que

Page 25: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

74

es una herramienta que se utiliza para modelar, analizar y simular sistemas dinámicos bajo el entorno Matlab.

• Mostrar las dos fases fundamentales del proceso de simulación: la definición y construcción del modelo y, una segunda, correspondiente a su análisis y a la simulación del modelo.

• Estudiar las repuestas ante entradas en escalón de sistemas físicos que se pueden representar por modelos de primer y segundo orden, así como observar el efecto de cada uno de los parámetros que caracterizan a estos tipos de sistemas.

• Obtener los parámetros característicos de sistemas de primer y segundo orden a partir de su respuesta ante una entrada en escalón.

• Modelar sistemas dinámicos reales mediante ecuaciones diferenciales de primer y segundo orden basándose en principios físicos, obteniendo las ecuaciones diferenciales en el dominio del tiempo y su representación en el dominio de Laplace. Además se deben implementar en Simulink y realizar distintas simulaciones para analizar su respuesta en distintas situaciones.

• Obtener modelos empíricos de sistemas dinámicos con respuesta similar a la de uno de primer orden con retardo a partir de datos de entrada/salida obtenidos con el método de la curva de reacción.

• Analizar la estabilidad absoluta y relativa de sistemas dinámicos. • Analizar los efectos sobre la respuesta transitoria de la adición de polos y ceros a la función

de transferencia del sistema dinámico que se estudia. • Analizar el efecto de incluir no linealidades como la saturación y la zona muerta al sistema a

estudiar. • Al finalizar la práctica, el alumno deberá ser capaz de diseñar e implementar en Simulink un

modelo (basándose en principios físicos o en métodos empíricos) de un sistema dinámico y realizar simulaciones para analizar e interpretar su respuesta ante diversas situaciones como distintas señales de prueba o modificación de la función de transferencia.

Material necesario

Para realizar esta práctica es necesario disponer del siguiente material:

• Computador personal. • Sistema operativo Windows 2000. • Programa Matlab 6.5. • Herramienta de simulación de sistemas dinámicos Simulink.

Contenidos y temporización La duración de esta práctica será de 4 horas (2 sesiones de 2 horas cada una).

Esta práctica se ha planteado para que los alumnos aprendan a diseñar e implementar modelos de sistemas dinámicos, obteniendo los parámetros característicos de cada uno de ellos y sometiéndolos a distintas situaciones. Para cumplir este objetivo se proponen una serie de ejercicios independientes unos de otros de forma que se analice la respuesta de diferentes sistemas de primer y segundo orden a partir de funciones de transferencia teóricas dadas y, a continuación, se propone un ejemplo real de sistema agrícola a modelar de forma que se obtengan funciones de transferencia similares, tanto para modelos diseñados basándose en principios físicos como en métodos empíricos. Evidentemente, la práctica hay que comenzarla describiendo las principales características de la herramienta Simulink tanto para la implementación de modelos como la realización de simulaciones con ellos, mostrando la versatilidad y utilidad que presenta para el modelado, simulación y análisis de sistemas

Page 26: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

75

dinámicos, así como su facilidad para implementar modelos mediante su entorno gráfico ya que sólo hay que seleccionar iconos con el ratón e interconectarlos convenientemente. De esta forma, los contenidos de la práctica 2 y los ejercicios que deben resolver los alumnos serán los siguientes:

2.1. Tutorial sobre Simulink . 2.2. Utilización de la ayuda de Simulink . 2.3. Análisis de la respuesta de sistemas de primer orden ante una entrada en escalón.

2.3.1. Análisis del parámetro característico ganancia estática. 2.3.2. Análisis del parámetro característico constante de tiempo. 2.3.3. Normalización de la representación de la función de transferencia del sistema. 2.3.4. Modelado y simulación de la altura de un tanque de riego en función del estado de la válvula de salida.

2.4. Análisis de la respuesta de sistemas de sistemas de segundo orden ante una entrada en escalón. 2.4.1. Análisis de la respuesta ante una entrada en escalón y obtención de los tres parámetros característicos. 2.4.2. Análisis de la estabilidad absoluta y relativa de forma gráfica y utilizando criterios analíticos. 2.4.3. Obtención de las especificaciones de la respuesta transitoria de un sistema de segundo orden

subamortiguado gráfica y analíticamente. 2.4.4. Modelado y simulación del caudal de salida de una asociación en serie de dos tanques en función del

estado del caudal de entrada. 2.5. Análisis de la adición de ceros y polos en la función de transferencia de un sistema dinámico. 2.6. Análisis de los efectos de no linealidades sobre la respuesta temporal de un sistema. 2.7. Obtención de un modelo empírico que relacione la temperatura interior de un invernadero con el cambio en la

apertura de la ventilación natural a partir de datos obtenidos en un ensayo de curva de reacción.

Tabla 2.1. Contenidos, ejercicios y temporización de la práctica 2 2.1. Sistema, modelo y simulación El diseño de un sistema de control para un determinado proceso requiere conocer el comportamiento dinámico del mismo. Para ello hay que diseñar e implementar un modelo del sistema que consiste en la descripción matemática de las relaciones dinámicas existentes entre las variables a controlar y las variables de entrada, tanto perturbaciones como variables de control. La principal ventaja de la utilización de un modelo radica en que permite la evaluación del resultado de una decisión del mundo real sin llegar a tomar efectivamente la misma. Disponiendo de un modelo dinámico se pueden analizar y evaluar varias cuestiones claves en el diseño de un sistema de control: emparejamiento de variables para formar lazos de control, límites de la acción de control y evaluación de la dificultad de control (signo y sensibilidad de la respuesta, velocidad de respuesta, forma de la respuesta y sensibilidad a cambio en el proceso). Con los términos modelización y simulación se designa al conjunto de actividades asociadas con la construcción de modelos de sistemas del mundo real y su simulación en un computador: • Un sistema es la parte del mundo real por la que se muestra interés, compuesta por partes

interrelacionadas. • Un modelo es una representación matemática de un sistema que contiene un conjunto de

instrucciones para generar datos del comportamiento del sistema a estudiar. • La simulación relaciona modelos y computadores. Se refiere al proceso de imitación de

aspectos importantes del comportamiento del sistema mediante el diseño, construcción y experimentación con el modelo del sistema. Este proceso es similar al de experimentación que llevan a cabo los científicos en un laboratorio con el que pretenden aumentar la comprensión de alguna teoría para su validación y empleo posterior.

Page 27: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

76

Las relaciones entre los tres elementos se resumen en la figura 2.1.

Figura 2.1. Sistemas, modelos y simulación 2.2. Función de transferencia de un sistema dinámico Si las condiciones iniciales de un sistema representado por una ecuación diferencial son nulas, cuando se le aplica la transformada de Laplace existe una relación entre la entrada y la salida del sistema que se conoce como función de transferencia. La función de transferencia de un sistema es la relación que existe entre la transformada de Laplace de la salida con respecto a la transformada de Laplace de la entrada. Generalmente se denota por G(s) .

Por ejemplo, sea un sistema modelado por la siguiente ecuación diferencial:

)()(8)(

6)(

2

2tuty

dttdy

dt

tyd=++ con condiciones iniciales nulas (2.2)

Utilizando la transformada de Laplace, resulta que:

)()(8)0(6)(6)0(')0()(2 sUsYysYsyyssYs =+−+−− (2.3)

Como las condiciones iniciales son nulas:

861

)()(

)(

)()()86(

2

2

++==

=++

sssUsY

sG

sUsYss

(2.4)

Al denominador de la función de transferencia de un sistema de le denomina polinomio característico, siendo el orden del sistema el grado de este polinomio. A las raíces del polinomio característico se les conoce como polos, y a las del numerador de la función de transferencia como ceros.

)()(

)()()()(sUsY

sGsGsUsY =⇒⋅=

(2.1)

SISTEMA COMPUTADOR

MODELOMODELIZACIÓN• Relaciona• Valida

SIMULACIÓN• Construir modelo• Experimenta

SISTEMA COMPUTADOR

MODELOMODELIZACIÓN• Relaciona• Valida

SIMULACIÓN• Construir modelo• Experimenta

G(s)

U(s) Y(s)

Page 28: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

77

2.3. Comportamiento de sistemas dinámicos

2.3.1. Señales de prueba

Para determinar la respuesta de un sistema, se utilizan una serie de señales de prueba y en función de la respuesta a estas señales de prueba, se pueden deducir las principales propiedades del sistema. Las señales de prueba más comunes son las que se muestran en la tabla 2.2.

Impulso Escalón Rampa

)t(Plim0t,00t,

)t(h ∞→

=

≠=∞

≥<

=0t,U0t,0

)t(uo

≥<

=0t,t0t,0

)t(ro

Tabla 2.2. Principales señales de prueba La más típica de las entradas es el escalón, que se puede implementar por ejemplo, mediante la apertura instantánea de válvulas de un sistema de calefacción que se mantiene durante un periodo de tiempo, por lo que es muy habitual estudiar la respuesta de sistemas a un escalón de amplitud, siendo su transformada de Laplace la siguiente:

sU

sULaplacetUt

tu =⇒⇒

≥<

= )(0,0,0

)(

(2.5)

2.3.2. Sistemas de primer orden En función de la ecuación diferencial que modela el sistema o del orden del polinomio característico de la función de transferencia se pueden clasificar a los sistemas. Si la ecuación diferencial es de primer orden (tiene una sola derivada primera) o el orden del polinomio característico es 1, se dice que el sistema es de primer orden cuya forma general es:

sk

sUsY

sGsUksYsYsLaplacetuktydt

tdyτ

ττ+

==⇒=+⇒⇒=+1)(

)()()()()()()(

)(

(2.6)

Como se puede observar, el orden del polinomio característico es uno. Utilizando la función de transferencia de un sistema de primer orden, se puede observar que la respuesta es una función exponencial, tal y como se demuestra a continuación:

P(t)

1/h

P(t)

1/h

uo(t)

U

t

uo(t)

U

t

ro(t)

x

tx

ro(t)

x

tx

Sistema

de orden 1

u(t) y(t) Sistema

de orden 1

Page 29: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

78

−=⇒⇒

+−=

+−=

++=

+=

+=

−τ

τττ

τττ

t

rp

rp

ekUtyinversaLaplace

sskU

skU

skU

sB

sA

sU

sk

sUs

ksY

1)(

111

111)(

1)(

(2.7)

Gráficamente:

Figura 2.2. Respuesta de un sistema de primer orden a un escalón Como se puede observar en la figura 2.2, esta respuesta viene determinada por dos parámetros, k y τ, que poseen un significado físico: • k se denomina ganancia estática del sistema, que proporciona una medida de la amplitud de

la respuesta del sistema en función de la amplitud de la entrada al mismo. Es el cociente entre el cambio experimentado por la salida una vez alcanzado el régimen permanente final (kU) y el cambio efectuado en la variable de entrada (magnitud del escalón, U).

• τ se denomina constante de tiempo, que es el tiempo que tarda el sistema en alcanzar el 63% del valor final de la señal de salida desde que comienza a variar el sistema frente a la entrada en escalón. Es una medida de la rapidez de respuesta del sistema a una señal escalón.

Por otra parte, la respuesta de un sistema a una determinada señal puede considerarse como la suma de dos componentes: • Régimen permanente. Respuesta del sistema cuando alcanza un comportamiento constante o

periódico. • Régimen transitorio. Respuesta inicial del sistema hasta que alcanza el régimen permanente. En la figura 2.3 se muestran distintas respuestas temporales típicas de un sistema de primer orden a un escalón de amplitud unidad con distintas ganancias y constantes de tiempo.

0 5 10 150

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

yrp

Yrp=kU

U

tiempo (s)

0.63yrp

τ

entrada u(t)

salida y(t)

0 5 10 150

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

yrp

Yrp=kU

U

tiempo (s)

0.63yrp

τ

entrada u(t)

salida y(t)

Page 30: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

79

Figura 2.3. Respuesta de distintos sistemas de primer orden a un escalón

2.3.3. Sistemas de segundo orden

Cuando la ecuación diferencial que describe al sistema tiene una derivada doble o el polinomio característico de la función de transferencia es de orden 2, se dice que el sistema es de segundo orden. Existen dos tipos de sistemas de segundo orden:

• Sistemas de segundo orden constituidos por dos sistemas de primer orden en serie, como por ejemplo dos depósitos de acumulación de líquido en serie.

• Sistemas de segundo orden intrínsecos, que son aquellos en los que su dinámica inherente es de segundo orden, como por ejemplo una válvula neumática.

La función de transferencia general de un sistema de este tipo viene dada por:

212

212

212

2

)()(

)(

)()()()()()()()(

asas

bsUsY

sG

sUbsYasYsasYsLaplacetubtyadt

tdya

dttyd

++==

=++⇒⇒=++

(2.8)

Como se puede observar, el orden del polinomio característico es dos.

La respuesta de un sistema de segundo orden a un escalón puede ser de dos tipos:

• No acotada. Cuando el sistema no alcanza un punto de equilibrio después de aplicarle una señal de entrada. Los sistemas que exhiben este tipo de comportamiento aún cuando la entrada aplicada no es divergente se llaman inestables. En la figura 2.4(a) se puede observar la respuesta de un sistema inestable cuando se le aplica un escalón unidad como señal de entrada.

• Acotada. El sistema llega a un equilibrio cuando se le aplica una señal de entrada. En función de las características del transitorio del sistema existen tres tipos: o Sobreamortiguado. Respuesta sin oscilaciones (figura 2.4(c)). o Críticamente amortiguado. Máxima velocidad sin oscilaciones (figura 2.4(d)). o Subamortiguado. Respuesta con oscilaciones (figura 2.4(b)).

Page 31: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

80

0 10 2 0 30 4 0 50 60 7 00

0.5

1

1.5

(a) Inestable (b) Subamortiguado

0 10 2 0 30 4 0 50 60 7 00

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0 10 2 0 30 4 0 50 60 7 0

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

(c) Sobreamortiguado (d) Críticamente amortiguado

Figura 2.4. Tipos de respuestas a un escalón de un sistema de segundo orden

Al igual que ocurre con los modelos de primer orden, existen unos parámetros que definen los modelos de segundo orden: • Ganancia estática, k. El significado es similar que en un sistema de primer orden. • Frecuencia natural no amortiguada, ωn. Corresponde a la frecuencia con la que oscilaría el

sistema si no existiera amortiguamiento. • Coeficiente de amortiguamiento, δ. En función de su valor se puede deducir si el sistema es

inestable, críticamente amortiguado, sobreamortiguado o subamortiguado (en este caso además su valor determina la amplitud de las sobreoscilaciones). o Si δ≤0 entonces el sistema es inestable. o Si 0<δ<1 entonces el sistema es subamortiguado y presenta sobreoscilaciones. o Si δ=1 entonces el sistema es críticamente amortiguado. o Si δ>1 entonces el sistema es sobreamortiguado.

Para identificar estos parámetros en base a la función de transferencia o la ecuación diferencial que describe al sistema hay que utilizar las siguientes ecuaciones:

==

=⇒

++=

++==

=++

22

1

2

22

2

212

212

2

22)(

)()(

)()()()(

n

n

n

nn

n

aa

kb

ss

k

asas

bsUsY

sG

tubtyadt

tdya

dttyd

ωδω

ω

ωδω

ω

(2.9)

0 5 10 15-20

-15

-10

-5

0

5

10

Page 32: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

81

2.3.4. Análisis dinámico de respuestas subamortiguadas

El régimen transitorio de un sistema de control práctico presenta con frecuencia una respuesta subamortiguada con oscilaciones previas a alcanzar el estado estacionario. El análisis de este tipo de respuestas es común realizarlo en base a un conjunto de características (ver figura 2.5):

• Tiempo de subida: es el tiempo requerido para que la respuesta del sistema pase del 10% al 90% de su valor final en régimen permanente (o bien desde el 0 al 100%).

• Sobreoscilación máxima (sobreoscilación primera): máximo valor de pico de la respuesta del sistema. Su cálculo se realiza en % como:

%100(%) max ×=

∞∞−

yyySO (2.10)

donde y∞= yrp representa el valor alcanzado en régimen permanente e ymax la máxima amplitud de la respuesta.

• Tiempo de pico: tiempo que transcurre hasta alcanzar la máxima sobreoscilación. • Tiempo de establecimiento: tiempo necesario para que la salida del sistema se encuentre en

un rango ([-x,x]) típicamente del 3% ó 5% alrededor del valor final.

Las características presentadas anteriormente poseen una relación directa con los parámetros que caracterizan a un sistema de segundo orden de la siguiente forma:

21/100(%) δδπ −−= eSO net δω

3= dpt ω

π=

dst ωϕπ −= ϕδ cos= )1( 2δωω −= nd

(2.11)

Figura 2.5. Parámetros temporales característicos de respuesta subamortiguada

0 5 10 150

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

tiempo (s)

resp

uest

a a

esca

lón

yrp+x

yrp-x

sobreoscilación primera SO (S1)

sobreoscilación segunda S2

Evaluación dinámica

ts tiempo de subidatp tiempo de picote tiempo de establecimiento

0 5 10 150

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

tiempo (s)

resp

uest

a a

esca

lón

yrp+x

yrp-x

sobreoscilación primera SO (S1)

sobreoscilación segunda S2

Evaluación dinámica

ts tiempo de subidatp tiempo de picote tiempo de establecimiento

Page 33: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

82

2.3.5. Estabilidad absoluta y relativa Haciendo uso de lo estudiado en los apartados anteriores, es posible conocer a priori una serie de características que definen el comportamiento dinámico de un determinado sistema. Sin embargo, al trabajar con sistemas dinámicos la principal característica que se debe conocer es, si el sistema es estable o inestable. Se entiende como estabilidad absoluta a la medida que permite conocer si un sistema es estable o inestable, y estabilidad relativa, a aquélla que da una indicación sobre cómo de estable o inestable es el sistema. A partir de la función de transferencia de un sistema, la estabilidad absoluta del mismo se conoce calculando las raíces del polinomio característico. Si todas las raíces poseen parte real negativa el sistema es estable, y si alguna de ellas tiene parte real positiva el sistema es inestable. Dentro de la estabilidad, un sistema será menos estable (relativamente hablando) cuanto más se acerquen sus raíces al eje imaginario (0±xj). La figura 2.6 muestra un conjunto de ejemplos donde se puede ver mediante la observación de la respuesta a un escalón la variación de la estabilidad del sistema en función de la localización de los polos del mismo.

Figura 2.6. Análisis de estabilidad en función de la localización de los polos

2.4. Obtención de modelos a partir de datos experimentales. Método de la

curva de reacción

Existen varias razones para obtener un modelo de un sistema dinámico a partir de datos experimentales obtenidos con experiencias realizadas en el propio sistema:

Page 34: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

83

• El mejor de los modelos teóricos es sólo una aproximación de la realidad. Generalmente, no se pueden tener en cuenta todos los parámetros que afectan a los sistemas y se realizan una serie de aproximaciones.

• En algunas ocasiones el modelo teórico es muy complicado; en otras puede que no se conozca muy bien la naturaleza del sistema y en otras, el sistema puede trabajar de distintas formas por lo que habría que disponer de un modelo teórico para cada una de ellas y es preferible trabajar con datos medidos.

Para obtener un modelo empírico que caracterice adecuadamente el comportamiento dinámico de un proceso, es necesario seguir un procedimiento sistemático que consta básicamente de los siguientes pasos: 1. Diseñar las experiencias a realizar con el sistema. 2. Ejecutar las experiencias programadas en las condiciones adecuadas. 3. Determinar el tipo de modelo adecuado a la vista de lo observado en las experiencias. 4. Estimar los parámetros característicos del sistema. 5. Evaluar el modelo. 6. Verificar el modelo. Por lo que se ha expuesto, el diseño experimental requiere un conocimiento previo, aunque sea aproximado, de la respuesta dinámica del sistema. Existen varias metodologías para obtener modelos empíricos. En este apartado se va a estudiar la generación de modelos a partir de datos transitorios resultantes de introducir al sistema señales de prueba tipo impulso o escalón, ya que estos datos son rápidos y fáciles de obtener. Además, son representativos de las señales naturales a las cuales está expuesto un sistema, por lo que son fiables para su posterior utilización, por ejemplo, en sistemas de control.

Para sistemas en los que se observa una respuesta de tipo sigmoidal (en “s” tendida) a una entrada escalón, es decir, se observa un comportamiento sobreamortiguado, se puede utilizar el método denominado curva de reacción. Consiste en introducir un escalón de amplitud U en bucle abierto al sistema que se desea modelizar y asimilar la salida a la de un sistema de primer orden con retardo.

Sistema con retardo

Un sistema con retardo es aquél cuya respuesta a una entrada no es inmediata, es decir, empieza a modificar la salida un determinado tiempo (tiempo de retardo) después de que se haya producido la entrada al mismo. Según las propiedades de la transformada de Laplace, un desplazamiento en el tiempo (tiempo de retardo, tr) equivale a una exponencial en Laplace:

[ ] )()()( sFettuttfL rstror

−=−− (2.12)

La de un sistema de un sistema de primer orden con un tiempo de retardo tr sería:

sek

sUsY

sGrst

τ+==

1)()(

)(

(2.13)

Page 35: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

84

La respuesta de este sistema a un escalón u(t) de amplitud U se muestra en la siguiente figura 2.7.

Figura 2.7. Respuesta a un escalón de un sistema de primer orden con retardo La aplicación de este método requiere llevar a cabo las siguientes acciones: 1. Llevar al proceso a las condiciones nominales de operación en régimen permanente. 2. Ejecutar un cambio en escalón de la señal que activa el elemento que influye en el sistema. 3. Medir la evolución de la variable de salida de interés hasta que alcance un nuevo

permanente. 4. Realizar los cálculos apropiados para obtener los parámetros del modelo, es decir, determinar

el valor de los siguientes parámetros: • Ganancia estática, k. Es el cociente entre la variación que se ha producido en la salida del

sistema desde que se ejecuta el cambio en la entrada hasta que alcanza el régimen permanente y el incremento en la señal de entrada.

U

yk rp∆

=

(2.14)

• Tiempo de retardo, tr. Es el tiempo transcurrido desde que se introduce el cambio en la

entrada y el momento que la salida del sistema empieza a evolucionar (modificar su valor). • Constante de tiempo, τ. Es el tiempo transcurrido desde que la salida comienza a

evolucionar (no se incluye el retardo) hasta que alcanza el 63.2 % del valor final, es decir, del régimen permanente.

2.5. Implementación de modelos utilizando Simulink

2.5.1. ¿Qué es Simulink? Simulink es un programa orientado a la simulación de sistemas dinámicos. Como extensión del paquete Matlab, Simulink posee toda la funcionalidad de propósito general de Matlab, incorporando además muchas utilidades específicas para los sistemas dinámicos. La elaboración de modelos de sistemas es muy cómoda y fácil mediante la selección de iconos con el ratón y su

0 5 10 150

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

yrp

Yrp=kU

U

tiempo (s)

0.63yrp

τ

entrada u(t)

salida y(t)

tr0 5 10 150

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

yrp

Yrp=kU

U

tiempo (s)

0.63yrp

τ

entrada u(t)

salida y(t)

tr

Page 36: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

85

conveniente conexionado. Estos iconos se encuentran en ventanas desplegables. En su uso se pueden distinguir dos fases fundamentales:

• Definición del modelo y construcción del modelo. • Análisis del modelo y simulación del modelo.

En esta documentación sólo se hará referencia a los aspectos básicos de interés para la asignatura control por computador.

2.5.2. Comenzando a utilizar Simulink. Crear un nuevo modelo

Para ejecutar Simulink, existen dos posibilidades: una vez ejecutado Matlab escribir la orden simulink en la línea de órdenes y pulsar Intro, o pulsar desde la barra de herramientas de Matlab el siguiente icono . Haciendo uso de cualquiera de las dos opciones se abrirá una ventana donde se muestran las distintas bibliotecas de bloques de Simulink, tal y como se muestra la figura 2.8. Como se puede observar en la figura la ventana consta de cinco partes:

• Navegador de bibliotecas: corresponde a la parte izquierda de la imagen y muestra las distintas biblicotecas que posee Simulink: Simulink (biblioteca estándar), Aerospace BlockSet, Control System toolbox, Simulink extras, etc.

• Selector de bloques: zona derecha de la ventana donde se muestran los distintos bloques que posee la biblioteca que ha sido seleccionada desde el navegador de bibliotecas.

• Zona de ayuda: es la parte de la ventana que se encuentra en la parte superior de las dos zonas comentadas anteriormente. Tiene como fin mostrar un conjunto de mensajes de descripción sobre los distintos bloques y bibliotecas.

• Barra de herramientas: se encuentra justamente encima de la zona de ayuda y desde ella es posible crear un nuevo archivo de trabajo, abrir uno existente o buscar un determinado bloque o biblioteca (Find).

• Menú de opciones: muestra las opciones típicas de File, Edit, View y Help. De todas ellas, las más importantes son File que permite crear/abrir/cerrar un archivo de trabajo o una biblioteca y Edit desde donde se puede añadir el bloque seleccionado al archivo de trabajo activo o buscar un determinado bloque.

Figura 2.8. Bibliotecas de bloques de Simulink

Page 37: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

86

Para crear un nuevo archivo de trabajo se puede realizar de dos formas distintas, seleccionando la opción del menú File→ New→ Model o bien pulsando el icono desde la barra de herramientas. Al realizar cualquiera de las dos acciones se abrirá una ventana vacía en la cual se procederá a la construcción del modelo de un sistema. La nueva ventana se denomina Untitled (sin título). Se puede asignar un nombre cuando se almacene el archivo. 2.5.3. Definición del modelo Una vez creado el nuevo archivo y conocido el modelo que se desea diseñar, el siguiente paso a realizar es implementar dicho modelo haciendo uso de los bloques de Simulink. El modo de trabajar con los bloques es seleccionar la biblioteca deseada desde el navegador de bibliotecas, y arrastrar con el ratón el bloque deseado desde el seleccionador de bloques hasta el nuevo archivo de trabajo. Los bloques se copian desde la ventana del subsistema correspondiente a la ventana del archivo de trabajo pulsando el botón izquierdo del ratón y manteniéndolo pulsado hasta la posición final donde se desee colocar el bloque. Las bibliotecas de bloques son objeto de una descripción más detallada en próximas secciones. Los bloques se pueden mover una vez situados en la ventana de trabajo con el mismo procedimiento arriba descrito con la diferencia de que ahora los bloques se trasladan y no se copian.

Una vez que los bloques han sido colocados, hay que trazar líneas para interconectarlos, moviendo el icono del ratón sobre el puerto de un bloque y presionando el botón izquierdo.

Cada bloque tiene una ventana asociada para modificar los distintos parámetros. Si se pulsa dos veces sobre los bloques se podrá acceder a estas ventanas. Se pueden realizar las pertinentes modificaciones en sus parámetros internos para acomodarlos al sistema objeto de estudio. Se pueden borrar los distintos componentes que aparecen en la ventana de trabajo con el menú Edit de la ventana Simulink (la ventana correspondiente al modelo) o pulsando la tecla Supr, habiendo seleccionado previamente dicho componente con el ratón.

Para guardar el sistema que se ha modelizado, seleccione la opción Save en el menú File.

2.5.4. Simulación del modelo

Una vez implementado el modelo deseado, antes de comenzar la simulación hay que ajustar unos determinados parámetros de simulación que se encuentran en el menú Simulation→ Simulation Parameters (desde la ventana del modelo) y que se muestran en la figura 2.9.

Figura 2.9. Ventana de parámetros de simulación

Page 38: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

87

De todas las etiquetas que se observan en la ventana, la de mayor interés para los objetivos de este texto es la primera de ellas, Solver. De todas las opciones interesan sobre todo las dos primeras, que permiten modificar el tiempo de inicio de simulación (Start time) y el tiempo final de simulación (Stop time). El resto de opciones que se encuentran en la parte inferior permiten modificar el algoritmo de integración numérica, la tolerancia de error y tamaños de paso máximo y mínimo de integración numérica. Tras configurar las opciones adecuadamente, para arrancar la simulación se selecciona la opción Start del menú Simulation o bien se pulsa el icono de la barra de herramientas. La simulación finaliza cuando el tiempo de parada (Stop time) fijado anteriormente ha sido alcanzado. Alternativamente, se puede detener la simulación en curso cuando se desee eligiendo Stop en el menú Simulation o pulsando el icono de la barra de herramientas. Para observar el comportamiento del sistema se puede utilizar un bloque Scope (Sinks), que muestra gráficamente la evolución de la salida de un modo básico. También cabe la alternativa de utilizar el bloque To Workspace de la misma biblioteca para enviar datos al espacio de trabajo de Matlab y representar el resultado empleando funciones gráficas de Matlab, que permiten realizar estas mismas operaciones. 2.5.5. Corrección del modelo Posiblemente el sistema no responderá como se pretendía en un primer intento. Si es así, se podrán modificar conexiones, añadir o suprimir bloques o alterar parámetros internos de bloques. Se grabará la versión corregida y se podrá simular nuevamente. Se pueden repetir iterativamente los pasos de Definición y de Simulación del modelo tantas veces como sea necesario hasta lograr un comportamiento de la salida que se adecue a lo esperado. 2.6. Bibliotecas de bloques de Simulink Simulink contiene una serie de bibliotecas con bloques predefinidos para diversas aplicaciones. Se incluyen a continuación tanto la visualización de los iconos correspondientes a algunas bibliotecas como unas tablas que resumen las funciones de cada bloque. Se muestran en negrita y se comentan con detenimiento los bloques que son de interés para la asignatura (no describiéndose los que no lo son) y que pertenecen a la biblioteca estándar denominada Simulink. La biblioteca Discrete correspondiente a elementos para simulación de sistemas en tiempo discreto se analizará en la práctica 6. 2.6.1. Señales de entrada (Sources) Constant. Introduce un valor constante como entrada (independiente del tiempo), que se introduce como parámetro.

Signal Generator. Genera varias formas de onda: senoidal, cuadrada, en sierra y ruido. Parámetros: amplitud máxima de onda y la frecuencia (en rad/s).

Ramp. Genera una señal en forma de rampa (aumenta a velocidad constante).

Sine Wave. Genera una señal senoidal. Parámetros: amplitud, frecuencia y fase de la señal generada.

Page 39: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

88

Step. Genera una función escalón entre dos valores definidos en un momento determinado. Parámetros: el tiempo en el que comienza el escalón, y los valores inicial y final de la amplitud.

Pulse Generator. Generador de pulsos de amplitud y frecuencia variable (parámetros a introducir).

Clock. Muestra la hora del sistema en una ventana. Puede servir también como bloque de entrada para otro bloque. From File. Lee datos de entrada desde un archivo (.mat) que contiene una matriz de al menos dos filas. La primera fila es el vector de tiempos y cada fila siguiente hace referencia a una variable distinta. Parámetro: nombre del archivo fuente.

From Workspace. Lee datos de entrada desde una matriz. Formato y requerimientos similares a los del bloque anterior, pero cambiando filas por columnas, es decir, en este caso el vector temporal corresponde con la primera columna. Parámetro: nombre de la matriz.

Random Number. Genera números aleatorios.

2.6.2. Señales de salida (Sinks) Scope. Muestra las señales durante la simulación (señales de salida del bloque al que esté conectado). Con este tipo de ventanas se puede ver la señal correspondiente al punto que se marque con el ratón. Permite varias señales de entrada, que se dibujarán simultáneamente. Parámetros: rangos o escalas horizontal y vertical. El rango horizontal se especifica en segundos. Se puede limitar el máximo número de puntos que se muestran.

XY Graph. Gráfico XY donde la primera entrada se toma como eje X y las siguientes como eje Y.

Display. Muestra datos de salida de un bloque en forma numérica.

To File. Escribe los datos de simulación en un archivo (.mat) que almacena los datos en una matriz con el nombre que se especifique. La primera fila de la matriz corresponde a un vector con valores del tiempo de simulación. El resto de filas contienen los datos que se han puesto como entrada al bloque. Como se observa, el formato es similar al del bloque From File, lo que garantiza la portabilidad. Parámetros: el nombre del archivo (.mat) y el nombre de la matriz donde se desea que se guarden los datos. Una vez introducido, el nombre del archivo aparecerá sobre el bloque en pantalla.

Page 40: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

89

To Workspace. Escribe los datos de simulación en una matriz. Cuando se selecione esta opción en el bloque la matriz, cuyo nombre aparecerá en la caja, tendrá el mismo número de columnas que el vector de datos de entrada al bloque (cada canal de datos se escribirá en una columna). Por tanto, cada paso de simulación escribe una fila en la matriz conteniendo el estado del vector de entradas al bloque. Parámetros: el nombre de la variable (matriz) donde se va a guardar el resultado de la simulación y el máximo número de filas (periodos de muestreo) permitidos.

Stop Simulation. Para la simulación cuando recibe una entrada distinta de cero.

2.6.3. Sistemas lineales continuos (Continuous) Integrator. Integra una señal. Parámetros: valor inicial del integrador (constante o variable). Transfer Fcn. Función de transferencia. Hay que especificar los vectores del numerador y denominador, que se tratan en potencias descendentes de s (como en MATLAB). Por ejemplo, si se introduce [1 2 3] equivale a s2+2s+3. El orden del polinomio del denominador debe ser superior o igual al del numerador.

Derivative. Bloque que tiene como salida la derivada respecto al tiempo de la señal de entrada. La precisión de los resultados depende del tamaño de los intervalos de tiempo tomados en la simulación. Por ello es importante fijar en los parámetros de simulación el maximum step size a un valor pequeño.

Transport Delay. Retarda la señal de entrada un tiempo determinado. Parámetros: el retardo puro (Time delay) y la entrada inicial (Initial input), que será la salida del bloque hasta que la simulación supere el retardo puro.

Variable Transport Delay. Su función es la misma que la del bloque anterior. Sin embargo, en lugar de tener una única entrada (señal a la que se desea a aplicar el retardo) posee otra para el valor de retardo. De esta forma es posible establecer el valor del retardo de manera variable y de forma externa al bloque.

2.6.4. No linealidades (Discontinuos)

Saturation. Saturación de la señal de entrada. Parámetros: Lower output limit , límite más bajo de la salida; Upper output limit, límite más alto de la salida. Entre dichos valores la señal de entrada no se altera. Cuando se sobrepasa el límite superior, la salida del bloque se fija a ese valor (lo mismo pasa con el límite inferior).

Dead zone. Región de salida nula (zona muerta). Parámetros: comienzo y fin de la zona muerta. Si la entrada es mayor que el valor mínimo y menor que el valor máximo, la salida es nula.

Page 41: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

90

Cualquier valor de la señal de entrada superior al máximo de la zona muerta produce una salida igual al valor de entrada menos el citado máximo de la zona muerta. Idem en caso inferior. Relay. Satura la señal de salida entre dos valores. Si el bloque está activado, se mantiene activado, al valor definido en Output when on, hasta que la entrada cae por debajo de un valor preespecificado (Input for off). Cuando el bloque no está activado, se mantiene desactivado, al valor definido en Output when off, hasta que la entrada supera el valor fijado por el parámetro (Input for on).

2.6.5. Operaciones matemáticas (Math Operations)

Abs. Bloque que tiene como salida el valor absoluto de la entrada.

Sign. Función signo. Si la entrada es positiva, la salida es igual a 1; si la entrada es 0, la salida es 0 y si la entrada es negativa, la salida es –1.

Gain. Multiplica la entrada por una constante, que se introduce como parámetro en forma de escalar o de variable. En caso que se introduzca una variable, si se quiere ver su contenido hay que introducirla entre paréntesis.

Sum. Suma o resta varias salidas de otros bloques. Parámetro: lista de signos que se aplican a las entradas. Esta lista contiene un conjunto de signos + y – seguidos (sin dejar espacio en blanco). El número de signos introducidos determina la cantidad de puertos de entrada que mostrará el bloque.

Relational Operator. Bloque que permite comparar dos señales de entrada. Se puede hacer uso de los distintos operadores de comparación (<,<=,>,>=,==,~=), los cuales se seleccionan en la lista de selección Relational Operator.

Logical Operator. Genera como salida el resultado de aplicar una operación lógica AND, OR, NAND, NOR, NOT o XOR sobre las dos entradas al bloque. La operación a realizar se selecciona en la lista de selección Operator.

Trigonometric Function. Aplica una determinada función trigonométrica a la señal de entrada. La función trigonométrica a aplicar se selecciona dentro del bloque sobre el parámetro Function.

2.6.6. Tratamiento de señales (Signal Routing)

Mux. Permite combinar una serie de señales de entrada, obteniéndose como resultado un único vector de salida. Los parámetros que posee son Number of inputs para especificar el número de entradas a combinar y Display option para modificar la forma de visualización del bloque.

Page 42: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

91

Demux. Es el bloque opuesto al anterior. Su función es separar un conjunto de señales que han sido combinadas previamente con un bloque Mux. Sus parámetros son Number of outputs para indicar el número de salidas y Display option para modificar la forma de visualización del bloque.

Manual Switch. Selecciona la entrada que se encuentra activa y la devuelve como salida. El cambio de una entrada a otra se realiza haciendo doble clic con el ratón sobre el bloque.

Switch. Permite conmutar entre dos señales de entrada en función del valor de una tercera señal. Si la tercera señal cumple una determinada condición, el bloque devuelve como salida la primera entrada, en caso contrario se devuelve la segunda entrada. Los parámetros de este bloque son Criteria for passing first input que permite indicar la condición a satisfacer y Threshold que contiene el valor del límite de la condición seleccionada.

2.7. Ejemplos

A continuación se presentan una serie de ejemplos para sistemas de primer y segundo orden.

2.7.1. Sistema de primer orden

La figura 2.10 muestra bloques del modelo y la respuesta de un sistema de primer orden con ganancia estática 10 y constante de tiempo 2 segundos, cuando se introduce un escalón en t=1 segundo y amplitud 1.

2.7.2. Sistema de primer orden con retardo

La figura 2.11 muestra la implementación en Simulink del mismo modelo anterior de primer orden pero ahora con un retardo 5 segundos.

(a) Diagrama de bloques

(b) Respuesta del sistema

(c) Valores para el bloque Transfer Fcn

(d) Valores para el bloque Step

Figura 2.10. Ejemplo de simulación para un sistema de primer orden

Page 43: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink

92

(a) Diagrama de bloques

(b) Respuesta del sistema

(c) Valores para el bloque Transport Delay

Figura 2.11. Ejemplo de simulación para un sistema de primer orden con retardo 2.7.3. Sistema de segundo orden

Por último en la figura 2.12 se presenta un ejemplo donde se muestra un sistema de segundo orden con un factor de amortiguamiento de 0.4, una frecuencia natural no amortiguada de 1 rad/s y una ganancia de 2. La entrada que se le aplica al sistema es un escalón de amplitud 1 en el instante de tiempo 1.

(a) Diagrama de bloques

(b) Respuesta del sistema

(c) Valores para el bloque Transfer Fcn

Figura 2.12. Ejemplo de simulación para un sistema de segundo orden

Page 44: Práctica 1 - Grupos de investigación: Arm-tep197 ...aer.ual.es/docencia_es/ciesol/docencia/matlab4.pdf43 Práctica 1 ANÁLISIS DE DATOS UTILIZANDO MATLAB PRÁCTICA 1. ANÁLISIS DE

Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal

93

2.8. Bibliografía • The MathWorks Inc.; 1998; La edición de estudiante de Simulink; Ed. Prentice Hall; España;

225 pp.

Este libro proporciona a los estudiantes un medio asequible para utilizar este poderoso entorno de modelado y simulación de sistemas dinámicos en sus estudios y puede que en su vida profesional. Se abordan todos los aspectos de la herramienta, desde la creación de un modelo hasta la simulación y análisis de resultados, así como una descripción muy completa de cada uno de los bloques de Simulink.

• The MathWorks Inc.; 2002; Using Simulink. Dynamic system simulation for Matlab; EEUU; 476 pp.

Esta referencia es el manual de la herramienta Simulink que suministra la propia empresa que la ha creado, MathWorks. Es un manual de referencia donde se describe profundamente cómo hay que trabajar con Simulink, desde la creación de un modelo hasta el análisis de resultados, pasando por los distintos modos de ejecución de los modelos. Además, se describen detalladamente cada uno de los bloques que se pueden utilizar. Toda esta información se incluye en un archivo formato pdf que el alumno puede descargarse en la página web dedicada a esta asignatura.