Control adaptativo en sistemas embebidos
92
0
0
Texto completo
(2) IEL2-II-04-26. CONTENIDO INTRO DUCCIÓ N. 1. OBJETIVO S. 2. 1. 3. SISTEMAS EMB EBIDOS (SE). 1.1. INTRODUCCIÓN 1.2. S ISTEMAS O PERATIVOS EN TIEMPO REAL (RTOS) 1.2.1. I NTRODUCCIÓN 1.2.2. DEFINICIÓN 1.2.3. FUNCIONES 1.2.4. APLICACIONES 1.2.5. CRITERIOS DE SELECCIÓN DE UN RT OS 1.2.6. E COS 1.3. H ARDWARE 1.3.1. LÓGICA P ROGRAMABLE : CPLD’ S Y FPGA’ S 1.3.2. MEMORIA FLASH 1.3.3. P ROGRAMACIÓN DE DISPOSITIVOS RECONFIGURABLES I NTERFAZ DE P ROGRAMACIÓN DE LA MEMORIA FLASH 1.4. ARQ UITECTURA GBA-XPORT 2 2.1. 2.2. 2.3. 2.3.1. 2.3.2. 2.4. 2.5. 3 3.1. 3.2. 3.3. 3.3.1. 3.3.2. 3.4.. 2. CONTRO L ADAPTATIVO INTRODUCCIÓN G ANANCIA PROGRAMADA S ISTEMA ADAPTATIVO POR MODELO DE RE FERENCIA (MRAS) ESQUEMA DE ALTA GANANCIA EN SERIE ESQUEMA EN P ARALELO REGULADORES AUTO-AJUSTAB LES (STR) C ONTROL ESTOCÁSTICO IDENTIFICACIÓ N DE SISTEMAS INTRODUCCIÓN ESTIMADOR DE MÍNIMOS C UADRADOS ESTIMADOR RECURSIVO POR MÍNIMOS CUADRADOS (RLS) SIS TEMAS I NVARIANTES EN EL TIEMPO SIS TEMAS VARIANTES EN EL T IEMP O ESTIMACIÓN DE PARÁMETROS PARA SISTEMAS DINÁMICOS. 3 3 3 4 5 7 7 9 10 10 12 13 13 16 18 18 18 19 19 20 20 21 23 23 24 27 27 29 30.
(3) IEL2-II-04-26. 3.4.1. MODELOS DE FUNCIÓN DE TRANSFERENCIA 3.5. EXCITACIÓN PERSISTENTE 4 4.1. 4.2. 5. REGULADO R AUTO -AJUSTABLE (STR) DISEÑO POR POSICIONAMIENTO DE POLOS S EG UIMIENTO DEL MODELO ARQ UITEC TURA DE SO LUCIÓ N. 5.1. IDENTIFICACIÓN 5.1.1. CONVERSOR ANÁLOGO -DIGITAL 5.1.2. ALGORITMO DE IDENTIFICACIÓN 5.2. AJUSTE DE PARÁMETROS Y CONTROLADOR 5.2.1. CONVERSOR ANÁLOGO -DIGITAL 5.2.2. MDPP CON CANCELACIÓN DE CERO Y CONTROLADOR R, S, T 5.2.3. CONVERSOR DIGITAL -ANÁLOGO 5.3. INTERFAZ 5.3.1. TECLADO P S2 5.3.2. VISUALIZACIÓN. 3. 30 32 38 38 39 45 45 45 47 48 49 49 49 51 51 55. CONCLUSIO NES. 57. BIBLIO GRAFIA. 58. ANEXO S. 59. A. DISPOSITIVO. 59. B. CÓDIGO ECOS. 62. C. CÓDIGO VHDL. 70. D. TECLADO PS2. 87.
(4) IEL2-II-04-26. LISTA DE FIGURAS FIGURA 1-1. DIAGRAMA DE BLOQUES GBA-XPORT 16 FIGURA 1-2. DIAGRAMA DE COMUNICACIÓN GBA-XPORT 17 FIGURA 2-1. DIAGRAMA DE BLOQUES SISTEMA ADAPTATIVO GENERALIZADO 18 FIGURA 2-2. DIAGRAMA DE BLOQUES CONTROL DE GANANCIA PROGRAMADA 19 FIGURA 2-3. DIAGRAMA DE BLOQUES MRAS. ESQUEMA DE ALTA GANANCIA 19 FIGURA 2-4. DIAGRAMA DE BLOQUES MRAS. ESQUEMA EN PARALELO 20 FIGURA 2-5. DIAGRAMA DE BLOQUES STR 21 FIGURA 2-6. DIAGRAMA DE BLOQUES CONTROL ESTOCÁSTICO 21 FIGURA 3-1. DIAGRAMA DE BLOQUES PARA LA IDENTIFICACIÓN DE SISTEMAS 24 FIGURA 3-2. CIRCUITO ELÉCTRICO DE LA ARMADURA Y DIAGRAMA DE CUERPO LIBRE DEL ROTOR 33 FIGURA 3-3. LUGAR DE LA RAÍZ 34 FIGURA 3-4. DIAGRAMAS DE BODE 34 FIGURA 3-5. DIAGRAMA DE BLOQUES EJEMPLO 3-1 EN SIMULINK 35 FIGURA 3-6. SEÑAL DE ENTRADA 35 FIGURA 3-7. PARÁMETROS A2 Y B2 ESTIMADOS CON (A) Λ=1, (B) Λ=0.99, (C) Λ=0.95 Y (D) Λ=0.8. 36 FIGURA 3-8. PARÁMETRO A1 ESTIMADO CON (A) Λ=1, (B) Λ=0.99, (C) Λ=0.95 Y (D) Λ=0.8. 36 FIGURA 3-9. PARÁMETRO B1 ESTIMADO CON (A) Λ=1, (B) Λ=0.99, (C) Λ=0.95 Y (D) Λ=0.8. 37 FIGURA 4-1. CONTROLADOR LINEAL GENERALIZADO 38 FIGURA 4-2. DIAGRAMA DE BLOQUES EJEMPLO 4-1 EN SIMULINK 41 FIGURA 4-3. PARÁMETROS ESTIMADOS PARA STR 42 FIGURA 4-4. SEÑAL DE REFERENCIA UC(T) (EN VERDE) Y SALIDA DEL PROCESO Y(T) (EN ROJO) 42 FIGURA 4-5. SEÑAL DE CONTROL U(T) 43 FIGURA 4-6. RESPUESTA DEL SISTEMA SIN BLOQUE DE IDENTIFICACIÓN 44 FIGURA 4-7. RESPUESTA DEL SISTEMA CON BLOQUE DE IDENTIFICACIÓN 44 FIGURA 5-1. DIAGRAMA DE PIRBHAI-HATLEY BLOQUE DE IDENTIFICACIÓN 45 FIGURA 5-2. DIAGRAMA DE TIEMPOS ADC 46 FIGURA 5-3. DIAGRAMA DE CONEXIÓN ADC PARA UNA APLICACIÓN TÍPICA 47 FIGURA 5-4. MULTIPLEXOR DE LAS SEÑALES ANÁLOGAS 47 FIGURA 5-5. DIAGRAMA DE PIRBHAI-HATLEY BLOQUE DE AJUSTE DE PARÁMETROS Y CONTROLADOR 49 FIGURA 5-6. DIAGRAMA DE CONEXIÓN DAC PARA UNA APLICACIÓN TÍPICA 50 FIGURA 5-7. DIAGRAMA DE TIEMPOS DAC 50 FIGURA 5-8. TECLADO 51 FIGURA 5-9. CONECTOR MINI-DIN 52 FIGURA 5-10. PALABRA DE CONTROL, MANEJO LEDS 52 FIGURA 5-11. DIAGRAMA DE TIEMPOS COMUNICACIÓN TECLADO-HOST 54 FIGURA 5-12. DIAGRAMA DE TIEMPOS COMUNICACIÓN HOST-TECLADO 55 FIGURA 5-13. DIAGRAMA DE PIRBHAI-HATLEY BLOQUE DE VISUALIZACIÓN 55 FIGURA 5-14. EJEMPLO DE VISUALIZACIÓN 56 FIGURA A-1. FOTO GBA-XPORT 59 FIGURA A-2. FOTO TARJETA DE EXPANSIÓN (VISTA SUPERIOR) 59 FIGURA A-3. DIAGRAMA DE CONEXIÓN DE LA TARJETA DE EXPANSIÓN 60 FIGURA A-4. TARJETA DE EXPANSIÓN, VISTA SUPERIOR 60 FIGURA A-5. TARJETA DE EXPANSIÓN, VISTA INFERIOR 61 FIGURA A-6. FOTO DISPOSITIVO DE CONTROL ADAPTATIVO 61. 4.
(5) IEL2-II-04-26. INTRODUCCIÓN El desarrollo del control adaptativo ha sido necesario para enfrentar procesos cuyas dinámicas cambian continuamente y cuyas variaciones no pueden ser previstas. En esos casos donde el control tradicional no presenta soluciones acertadas. Una de las principales limitaciones del control adaptativo es la demora que este presenta al momento de ajustarse; esto se debe, principalmente, a los cálculos que se realizan para obtener los parámetros del controlador. En muchos casos, esto puede solucionarse acoplando un bloque de ganancia programada, que lleve al controlador a un estado aceptable, desde el cual, el método de adaptación, optimice la respuesta del sistema. El problema mayorse presenta al no contar con este tipo de ajuste rápido y que ocurre básicamente por el desconocimiento de las posibles condiciones de funcionamiento del proceso. De esta forma, se requiere que el controlador se auto ajuste de manera eficaz y eficiente, encontrando los parámetros que le permitan llegar a la respuesta deseada. Es posible además, que esta configuración se almacene para poder responder de forma instantánea frente a las mismas condiciones, en ocasiones posteriores. El tiempo de ajuste constituye entonces, un elemento crítico en el desarrollo de controladores óptimos. Los sistemas embebidos brindan la posibilidad de superar estos problemas de respuesta temporal; y además, abren el campo para el diseño de módulos especializados con los cuales se optimicen recursos y costos. Actualmente, se encuentran en el mercado controladores industriales con automatic tuning, gain scheduling y feedfoward, como el ECA600.[10] En el área de controladores en tiempo real, se han implementado funciones para programas como M ATLAB, y en otros casos algunas funciones en lenguaje C++. Los sistemas embebidos, por su parte, han sido ampliamente trabajados, aunque para la implementación de sistemas de control adaptativo, no se ha encontrado información relevante.. 1.
(6) IEL2-II-04-26. OBJETIVOS •. Con este proyecto se pretende desarrollar una aplicación, sobre una plataforma de un sistema embebido, enfocada principalmente al área de control de procesos de tipo industrial. El objetivo principal de este proyecto es el diseño, desarrollo y verificación de un sistema de identificación y control adaptativo implementado sobre una plataforma de un sistema embebido, que presente ventajas en cuanto a su tamaño y capacidad de manipulación, capaz de interactuar tanto con la planta como con el usuario, permitiendo a este último la posibilidad de hacer seguimiento del proceso. El sistema implementado debe ser capaz de realizar una identificación y un posterior control de una planta de forma autónoma. Los resultados generales que se obtienen de este proyecto son: o Obtención de una herramienta que, por medio de la utilización de sistemas embebidos, optimice los recursos destinados a la identificación y control de sistemas. Desarrollo de una herramienta versátil que permita un control autónomo sobre procesos cuya dinámica no es inicialmente conocida. El dispositivo debe contar con dispositivos tanto de entrada, que le permitan la recepción de los datos, ya sea para identificación o para control, directamente de la planta; como de salida, que permitan acceder a los actuadores de forma directa o a través de circuitos de acople (externos al dispositivo). Debe contar con una interfaz con el usuario que permita, si es el caso, hacer seguimiento del rendimiento del sistema controlado. o. 2. El diseño de este dispositivo debe permitirle tener un bajo costo al momento de salir al mercado, de tal forma que le de ventajas sobre software especializado que se utiliza actualmente para este tipo de aplicaciones. Esto implicaría que debe ser una herramienta de fácil acceso..
(7) IEL2-II-04-26. 1 SISTEMAS EMBEBIDOS1 (SE) 1.1. Introducción Los SEs se definen informalmente como una colección de piezas programables rodeadas por ASICs y otros componentes estándares, que interactúan continuamente con un ambiente a través de sensores y actuadores para cumplir una función dada. Se trata de la unión entre el diseño software y hardware, cuya finalidad es brindar soluciones optimas que relacionen conceptos tales como tiempo-a-mercado, costo, tamaño de código, peso, energía, y comportamiento en tiempo real, a una necesidad especifica. Un SE se refiere al equipo o dispositivos que no son pensados como computadoras, pero cuya operación depende de alguna clase de computación interna. Las aplicaciones embebidas están de alguna u otra forma presentes en la gran mayoría aplicaciones en muchos campos de la ingeniería actual, como la electrónica de consumo, equipos médicos, sistemas de comunicaciones, procesamiento de señales, automatización, etc. Dado que un SE es diseñado para una necesidad especifica, existen literalmente miles de diversos SEs distintivos; cada uno conteniendo un desarrollo altamente especializado que lo hace casi único.. 1.2. Sistemas Operativos en Tiempo Real (RTOS) 1.2.1. Introducción Sistemas de Tiempo Real (RTS) Un sistema es evaluado según la veracidad de sus respuestas. Un RTS no solamente da respuestas correctas a determinados estímulos, sino que además las da en un determinado tiempo. Por ejemplo un computador en tiempo real realiza sus funciones y responde a eventos externos asíncronos en una cantidad de tiempo específica. El tiempo requerido para que el sistema responda a un evento es llamado Latencia o estado latente. M ientras menor sea el estado latente, mejor va a responder el sistema a eventos que requieran atención inmediata. Un concepto importante en los RTS es la previsibilidad, que se relaciona con cuánto tiempo el sistema tomará para realizar una acción particular. De esta forma se define un RTS como todo sistema para el que sea vital el tiempo de respuesta a una entidad externa. En un RTS el correcto funcionamiento no solo depende de la veracidad lógica de la computación sino del tiempo en que se produce ese resultado. Si las restricciones de tiempo no se cumplen se considera que el sistema ha fallado. No todos los SEs son RTS, esto depende del campo de aplicación en el que se estén utilizando. No es lo mismo un sistema de video juegos, donde un retardo no es significativo, que los controles de turbulencia de un avión, donde una falla en el tiempo de respuesta puede traer graves consecuencias. De este ejemplo se pueden visualizar dos categorías de RTS: • Hard RTS: es un RTS donde es vital el funcionamiento a tiempo. (Ej. Los controladores del avión) 1. Se ha usado el término embebido como traducción del vocablo inglés "embedded". En otros textos en español a menudo se usa el termino empotrado.. 3.
(8) IEL2-II-04-26. Soft RTS: en un RTS donde una falla en el tiempo de respuesta no implica consecuencias graves, sino mas bien un bienestar para el consumidor. (Ej. El video juego) RTS y SE operan en ambientes cuyas restricciones son principalmente en memoria de computo y fuentes de alimentación, además de las ya mencionadas restricciones de tiempo, es por esto que se hace necesario el uso de RTOS en SE. •. Sistemas Operativos Se puede definir un sistema operativo como la capa de software más baja que administra y controla directamente los recursos hardware ( CPU, memoria principal y periféricos ) proporcionando una máquina virtual más fácil de utilizar que el hardware subyacente. El sistema operativo es el encargado, entre otros, de velar por la integración de los periféricos y la programación de tareas Tipos de Sistemas Operativos Dependiendo de la aplicación se pueden clasificar los sistemas operativos en tres grupos: ”sistemas operativos convencionales, sistemas operativos para sistemas embebidos y sistemas operativos en tiempo real. Convencionales: Son aquellos destinados a ejecutar aplicaciones de propósito general, que corren sobre sistemas no destinados a usos específicos. Estos sistemas operativos suelen tener que hacer frente a diversas aplicaciones que habitualmente tratarán de consumir todos los recursos que puedan, siempre y cuando éstos supongan una mejora en el rendimiento de su propia función. Este tipo de sistemas operativos han de centrarse en dar flexibilidad a las tareas a la par que han de asegurar que no se van a producir conflictos en la utilización de los recursos. Embebidos: Son aquellos incluidos en sistemas de propósito específico. Estos sistemas se caracterizan por tener unos recursos muy limitados dedicados única y exclusivamente a cumplir con la tarea para la que fueron diseñados. Este tipo de sistemas operativos suele centrar sus objetivos en convertirse en un software muy optimizado en cuanto a velocidad y memoria, han de ofrecer al programador funciones de alto nivel poco costosas (en tiempo y memoria) y además han de coordinar el manejo de los dispositivos. Tiempo Real: Son aquellos incluidos en sistemas de propósito específico tales como los descritos anteriormente, pero con unas restricciones temporales muy concretas. Los sistemas operativos de tiempo real han de ser predecibles (se ha de saber cuándo y cómo van a desencadenar qué acciones) y han de minimizar las latencias de atención a eventos (tanto síncronos como asíncronos).”. 1.2.2. Definición En consecuencia a las ideas expuestas con anterioridad un RTOS es un sistema operativo en el que el correcto funcionamiento depende tanto de las repuestas lógicas del sistema, como de los tiempos de latencia. De modo que si las restricciones de tiempos no se satisfacen en determinado instante se considera esto como un fallo del sistema. Los requerimientos fundamentales para un RTOS son:. 4.
(9) IEL2-II-04-26. • • • • •. •. •. Comportamiento predecible, manejo de tiempos. M anejo multitarea con derechos preferentes, schedulling. Soporte de tareas prioritarias, con herencia de la prioridad. Soporte de mecanismos predecibles de sincronización y comunicación de tareas. Se debe conocer el tiempo máximo en el que las interrupciones son enmascaradas por el RTOS. Se debe conocer el tiempo máximo que usan los drivers del dispositivo para procesar una interrupción, además de la información especifica de los IRQs de cada driver. El estado latente debe ser predecible y compatible con los requerimientos de la aplicación.. 1.2.3. Funciones Control de interrupciones y excepciones “Otra característica muy común de todos los sistemas operativos es el control de interrupciones y de las excepciones. Las interrupciones son de naturaleza asíncrona, es decir, se producen en momentos indeterminados del funcionamiento del programa, interrumpiendo el flujo normal de éste. Para atender a la interrupción es necesario un cambio de contexto y la salvaguarda del anterior para poder retomar posteriormente el flujo del programa en el punto en el que se dejó. Las excepciones, sin embargo, son de naturaleza síncrona, pero también necesitan un cambio de contexto y se suelen tratar de forma semejante a las interrupciones. Cuando se produce una excepción o interrupción se guardan automáticamente los registros del contador del programa y de la pila (PCB). De la salvaguarda del resto del contexto se ha de encargar el sistema operativo. El programador de aplicaciones sobre un sistema operativo suele contar con una serie de facilidades para crear y modificar rutinas de atención a interrupción (o excepción). El manejo de las interrupciones se trata de hacer flexible y con instrucciones de alto nivel. Además, un sistema operativo suele ofrecer al programador un sistema de interrupciones más complejo y versátil que el que el propio hardware tiene. Así, es corriente encontrar que los sistemas operativos pueden simular un controlador de interrupciones con muchas más líneas que el controlador de interrupciones real. También suelen permitir realizar un control de interrupciones por prioridades, a pesar de que el hardware no lo realice automáticamente. El sistema operativo, como todo software, también consume recursos. Puede necesitar configurar para sí la rutina de atención de alguna interrupción (como en el caso de utilizar la interrupción de un temporizador para dar paso a la rutina de programación de tareas). Así que el propio sistema operativo hará uso de sus funciones de manejo de interrupciones.” [6] Gestión de la memoria “Una de las funciones más típicas de todo sistema operativo es la gestión de memoria. Todo sistema basado en un microprocesador usa algún tipo de memoria. M ientras que la memoria ROM no se puede gestionar en tiempo de ejecución, recursos como la memoria RAM o FLASH si que se pueden administrar en tiempo de ejecución. Es habitual que los sistemas operativos doten a las aplicaciones de la capacidad de requerir (y liberar) memoria en tiempo de ejecución, lo cual tiene gran importancia en sistemas. 5.
(10) IEL2-II-04-26. multitarea, de forma que varias tareas distintas pueden pedir recursos de memoria cuando se necesitan y liberarlos después. También en sistemas monotarea es interesante que el sistema operativo provea un mecanismo de administración de memoria en tiempo real, ya que de esta forma se pueden reutilizar los mismos recursos de memoria en distintos instantes de la ejecución. Los sistemas operativos suelen realizar dos tipos de gestión de memoria distintas, las basadas en asignaciones de memoria de tamaño variable y las basadas en asignaciones de memoria de tamaño fijo. Los mecanismos de gestión de memoria basados en asignaciones de tamaño fijo suelen ser más rápidos y necesitan menos información interna que las asignaciones de tamaño variable, sin embargo, las asignaciones de tamaño variable pueden 1 permitir un mejor aprovechamiento de la memoria . Otra característica común de la gestión de memoria es la capacidad de virtualización de ésta. M uchos son los sistemas operativos que presentan al programador una memoria virtual, lo cual permite que cada tarea se enlace independientemente de la posición física de sus datos en la memoria y la de sus datos. La virtualización permite elaborar mecanismos de ejecución de nuevas tareas en tiempo real y también permite proteger el acceso a terminadas zonas de memoria. No obstante, los mecanismos de virtualización de memoria suelen ser eficientes únicamente si se posee hardware subyacente que la permita. Las implementaciones puramente basadas en software están muy limitadas y evidentemente sólo son capaces de dotar al sistema operativo de elementos de protección si se siguen estrictamente las condiciones de uso prefijadas.”[6] M anejo de dispositivos hardware Casi todos los sistemas operativos reservan para sí el privilegio de decidir el modo en el que los distintos dispositivos son controlados y la forma en la que pueden ofrecer sus servicios a la aplicación de usuario. Los dispositivos de entrada/salida suelen tener un interfaz común para producir la comunicación. Es común encontrar funciones de escritura o lectura de caracteres que se realizan igual para distintos dispositivos, con sólo usar un identificador de dispositivo distinto. Los sistemas operativos suelen ofrecer interfaces comunes para manejar dispositivos muy variopintos, sin embargo dichos interfaces comunes pueden abstraer en exceso los dispositivos, sobrecargando demasiado las labores de gestión sencillas. Librería C Es muy común que un sistema operativo incluya una serie de librerías con funciones típicas de programación. La librería C es muy corriente dado que introduce funciones tan conocidas como "main" o las de entrada salida "printf", "fopen", etc. También es muy corriente que existan librerías matemáticas que implementen funciones trigonométricas, raíces, números complejos, transformadas, etc. Cuantas más librerías incluya un sistema operativo, mejor, siempre y cuando se puedan excluir del ejecutable cuando no se utilicen.. 1. Aunque también puede ser que se produzca un peor aprovechamiento, es necesario hacer un estudio del tipo de reservas que se hacen en tiempo de ejecución y ver que tal se ajustan los mecanismos de asignación de memoria del sistema operativo concreto que se esté usando.. 6.
(11) IEL2-II-04-26. 1.2.4. Aplicaciones Al contrario de la definición fundamental de los RTOS, las aplicaciones típicas de los sistemas de tiempo real ha cambiando a lo largo de los años. En la década de los 80’s, los RTS eran utilizados en su mayoría para aplicaciones de control. De hecho, una definición de esta época lista únicamente dos tipos de RTS, uno de control y otro de monitoreo de sistemas. Con el paso de los años, en los 90’s, las aplicaciones de los RTS se abrieron campo en áreas como el tratamiento de imágenes medicas, control industrial y algunos sistemas de visualización. Los hard RTS no pueden soportar ciertos dispositivos por que no se puede garantizar el manejo de los tiempos. Dado que tienen menos restricciones, los soft RTS si pueden soportar una mayor diversidad de dispositivos, hecho que incentivo el desarrollo de los RTS en esta campo. Como consecuencia, los usos para estos sistemas se incrementaron sustancialmente. Hoy en día las aplicaciones de soft RTS están en la mayor parte de objetos electrónicos que facilitan nuestras vidas, se pueden encontrar desde teléfonos, multimedia, equipos médicos, juegos hasta proyectos científicos como exploración submarina y vehículos autómatas para exploración interplanetaria. De esta forma los RTOS tienen un amplio campo de aplicación, ya que los avances tecnológicos introducen cada día nuevas soluciones basadas en sistemas cada vez más desarrollados, que los hacen necesarios para su implementación.. 1.2.5. Criterios de selección de un RTOS Sea cual sea la elección de un sistema operativo, los elementos que habrá que tener en cuenta a la hora de elegir qué sistema operativo se va a utilizar deberán ser: • Herramientas de desarrollo que se van a necesitar para utilizarlo (compiladores, simuladores...) • Costo de las herramientas de desarrollo. • Tiempo necesario para poner el sistema en funcionamiento. • Costo del sistema operativo (royalties, licencias, etc.). • Control sobre el código fuente. • Soporte, fiabilidad del sistema y documentación. La elección final ha recaído en un sistema operativo llamado eCos 1. Los motivos de elección de este sistema operativo han sido: • El sistema operativo es gratuito. • El código fuente está disponible bajo una licencia del tipo GPL. • El kernel se puede configurar en gran medida, pudiendo ajustar el sistema operativo a las necesidades individuales. • El tamaño del kernel también es configurable en gran medida. • Se utilizan herramientas de desarrollo de libre distribución como los compiladores de GCC o los depuradores de GDB.. 1. Embedded Configurable Operating System, desarrollado por Red Hat.. 7.
(12) IEL2-II-04-26. Existe un foro de debate en Internet en el que se da soporte de eCos de manera gratuita. Este foro está atendido por los desarrolladores del sistema operativo. • Existe la posibilidad de contratar soporte específico para eCos con Red Hat. En vista de que los distintos sistemas operativos ofrecen más o menos lo miso, el motivo de más peso en la elección del sistema operativo ha sido el económico. eCos permite desarrollar de forma completamente gratuita, comenzando a evaluar el sistema operativo sin hacer un desembolso inicial y pudiendo implementar el sistema en tantos dispositivos como sea necesario sin costo adicional. Una de las características fundamentales que sorprende de eCos es la gran cantidad de opciones que existen al configurar el sistema, permitiendo una personalización del sistema operativo. La herramienta de gestión de paquetes y la facilidad con que se introducen nuevas funcionalidades en el kernel de eCos han sido decisivas a la hora de adoptar este sistema operativo, siendo eCos un sistema completamente modular en tiempo de compilación. El uso de las herramientas de desarrollo de GNU permite poner la experiencia de los programadores con dichas herramientas al servicio del proyecto. M uchos de los entornos de desarrollo comerciales están basados en dichas herramientas, pero de las cuales sólo se obtiene soporte y actualizaciones pagando altos precios por ellas. El foro de debate de eCos es un foro vivo y con un alto grado de participación en el que los creadores del sistema operativo resuelven las dudas de los usuarios, resultando un servicio de gran valor, aún siendo gratuito. El foro es tal que las preguntas quedan respondidas en un corto plazo (casi todas las preguntas tienen respuesta en menos de medio día), y se responden todo tipo de cuestiones, tanto de principiantes como de filosofía avanzada de sistemas operativos. En el foro de debate se pone de manifiesto la gran cantidad de compañías que están haciendo uso de eCos, lo que garantiza su existencia y desarrollo en un plazo razonablemente largo. Por último, eCos está mantenido por Red Hat, empresa de sobrado renombre en el mundo informático. Red Hat ofrece los servicios típicos de los sistemas operativos comerciales, por lo que siempre es posible encargar y externalizar trozos de desarrollos de eCos a dicha empresa. La funcionalidad de eCos cumple con los requisitos funcionales que se requirieron. Su funcionalidad incluye las siguientes funciones: • M anejo de interrupciones • Sistema de arranque completo (no necesita cargador o "bootloader") • Programador de tareas basado en hilos con prioridades • Elementos de sincronización (semáforos, banderas, variables de condición, y buzones de mensajes) • M anejo de excepciones • Contadores, relojes y alarmas 1 • "Pools" de memoria para la gestión de la memoria dinámicamente • M utex para el arbitraje del acceso a recursos • API µITRON • API EL/IX •. 1. Secciones de memoria que se pueden asignar y liberar en tiempo real, haciendo asignaciones de tamaño fijo o variable.. 8.
(13) IEL2-II-04-26. Interfaz con GDB para depurar el sistema • Librería C ISO 9899:1990 • Librería matemática compatible con ANSI/POSIX 1003.1, IEEE-754, XPG3, o System V Definition Edition 3. • Rutinas de trazado y depuración • Gestión integrada de fecha y hora • M anejo de dispositivos mediante interfaces estándar de entrada/salida Además es un sistema operativo para el que ya existen paquetes que incluyen pilas de protocolos TCP/IP, máquinas JAVA virtuales, gestores de ventanas (nano-X) y gran cantidad de paquetes distintos. El sistema es configurable en gran cantidad de detalles, lo que permite cumplir con la especificación de modularidad en tiempo de compilación. En tiempo de ejecución eCos es capaz de crear y destruir hilos. Lo cual permite pensar también en modularidad en tiempo real. Respecto al tamaño y al rendimiento de los ejecutables, eCos da un nivel semejante al del resto de sistemas operativos aunque queda en la gama baja-media de los sistemas operativos en tiempo real, el footprint (huella en memoria) de entre 20k y 200k. •. 1.2.6. eCos Las funcionalidades ofrecidas son: • Gratis • Sin Royalties • Código fuente C es proporcionado • M anejo de interrupciones • M anejo de excepciones • Sistema de arranque completo (no necesita "bootloader") • Programador de tareas basado en hilos con prioridades • Contadores, relojes y alarmas • Semáforos, mutex, mutex asociados a variables y buzones de correo (o mail boxes), banderas • "Pools" de memoria • API ITRON • API EL/IX • Interfaz con GDB • Librería C ISO 9899:1990 • Librería matemática compatible con ANSI/POSIX 1003.1, IEEE-754, XPG3, o System V Definition Edition 3. • Rutinas de trazado y depuración Arquitecturas Soportadas: • ARM • Hitachi H8/300 • Intel x86 • M IPS. 9.
(14) IEL2-II-04-26. •. M atsushita AM 3x M otorola 68k PowerPC SuperH SPARC. •. NEC V8xx. • • • •. Para este sistema operativo existe actualmente una gran variedad de paquetes desarrollados. Además el sistema operativo como tal, tiene un relativamente alto nivel de configurabilidad. El rendimiento temporal no es de los mejores, quedando una latencia de interrupciones del orden de 300 ciclos, pero es de los más transparentes a la hora de ofrecer datos de rendimiento. El sistema operativo, por otro lado, ocupa menos de 100k de ROM y 50k de RAM .. 1.3. Hardware No es el objetivo de este documento el describir a profundidad los componentes que por lo general se esperan en una tarjeta de desarrollo o plataforma. Con el fin de ubicar al lector dentro de un contexto, se hará una breve definición de algunos componentes típicos. El objetivo, al final de este capitulo, es formular una arquitectura ideal que permita trabajar con software y hardware, individualmente y en conjunto, para esto es necesario conocer que tipo de dispositivos se pueden implementar en una arquitectura de desarrollo, primero como ya hemos descrito en los capítulos anteriores, la parte software se desarrolla para que sea ejecutada por un microcontrolador o microprocesador, y la parte hardware por un dispositivo de lógica programable, que por lo general es una FPGA. De los microprocesadores, existen varias familias en el mercado, pero nos centraremos en aquellos que pueden soportar eCos, que fueron mencionados en el capitulo anterior.. 1.3.1. Lógica Programable: CPLD’s y FPGA’s En los inicios de la lógica discreta, los sistemas eran construidos a partir de una gran cantidad de chips individuales que eran conectados a través de muchos cables. Este tipo de dispositivos lógicos eran extremadamente difíciles de modificar después de haber sido fabricados con cierta estructura, y además era casi imposible recordar la función específica para la cual había sido diseñado cada uno de estos chips. La fabricación de estos dispositivos tomaba demasiado tiempo porque cada pequeño cambio en el diseño de estos requería un replanteamiento de todo el sistema de interconexión, lo que significaba la construcción de nuevos circuitos impresos. Este problema fue resuelto colocando un arreglo de compuertas and – or desconectadas dentro del chip, conocidas como Programmable Logic Device (PLD). El PLD contenía además un arreglo de fusibles que podían ser abiertos o dejados cerrados para generar la interconexión entre las diferentes entradas y cada una de las compuertas. Esto hizo posible programar el PLD utilizando ecuaciones de suma de productos Booleanos de tal forma que se podía desarrollar cualquier función lógica dentro del sistema. Como fue posible re-cablear de forma interna estos dispositivos, se hizo. 10.
(15) IEL2-II-04-26. menos necesario el cambio de los circuitos impresos, representando menos consumo de tiempo y dinero en el cambio de estos.. Debido a que los PLD's solo podían manejar unas pocas ecuaciones lógicas, se hacía imposible la implementación de diseños que requerían lógica más compleja en solo uno de estos dispositivos. Era necesario por lo tanto fraccionar el diseño en piezas más pequeñas y que pudiera cada una independientemente ser desarrolladas en un PLD. Esto requería mucho tiempo y significaba que, como se hacía anteriormente, se debía recurrir al cableado externo para interconectar los PLD's. Esto constituía un gran impedimento, ya que siempre se llegaba a un punto en el que la reprogramación no era posible hacerla a través de los PLD's sino que se debía cambiar toda la tarjeta que contenía el circuito lógico. Para resolver este problema, se crearon chips programables de mucha mayor capacidad, y que son los que actualmente se conocen como Complex Logic Devices (CPLD's) y las FieldProgrammable Gate Arrays (FPGA's). Con estas, se logró la posibilidad de desarrollar sistemas completos en un solo chip. Una CPLD se encuentra compuesta de bloques de PLD's cuyas entradas y salidas se encuentran conectadas a través de una matriz de interconexión global. De esta manera el CPLD tiene dos niveles de programabilidad: cada uno de los bloques de PLD's puede ser programado individualmente, y la interconexión entre estos bloques también puede ser programada. Una FPGA tiene una configuración diferente. Esta se encuentra compuesta por un grupo de bloques lógicos configurables muy sencillos organizados en forma de arreglo y cuyas interconexiones son manejadas por unos switches que permiten reconfigurar las interconexiones entre los bloques lógicos. Cada bloque lógico es programado individualmente para desarrollar una función lógica, y luego los switches son programados para conectar los bloques de forma que la función lógica completa se implemente.. Los fabricantes de FPGA’s y CPLD’s usan una variedad de métodos para hacer posibles las conexiones entre los bloques lógicos. Algunos fabrican integrados con fusibles o antifusibles que son programados por el paso de una corriente bastante alta a través de ellos.. 11.
(16) IEL2-II-04-26. Este tipo de CPLD’s y FPGA’s son programable una sola vez, debido a que no se puede cablear de Nuevo una vez se han quemado los fusibles. Otros fabricantes hacen las conexiones usando transistores de paso que son cerrados o abiertos mediante la carga capacitiva en los electrodos del gate usando pulsos de alto voltaje. A este tipo de dispositivos programables se les conoce como EPROM o EEPROM , y pueden ser borrados y programados insertándolos en un programador usualmente costoso y complicado si el dispositivo se encuentra montado y soldado a una placa o tarjeta. Finalmente, algunos fabricantes usan memorias RAM estáticas o bits Flash para controlar los transistores de paso en cada conexión. Cargando cada bit con un 1 o 0 lógico, se puede controlar si el switch esta abierto o cerrado y, por consiguiente, si dos bloques lógicos están conectados o no. Los dispositivos construidos usando switches controlados por memorias pueden ser reprogramados sin remover el integrado del impreso o tarjeta, estos son llamados in-circuit programmable. Sin contar el método de conexiones usado, saber cuales switches abrir o cerrar no es una tarea sencilla, es por esto que los fabricantes, como Xilinx o Altera, desarrollan componentes software que toman las descripciones del diseño lógico y las implementan en la secuencia binaria que configura el CPLD o la FPGA, de forma que actúe de según el diseño. En las plataformas de desarrollo, generalmente el CP LD es usado para crear la interfaz con el usuario y ayudar en la configuración de los dispositivos a utilizar ya sea un microprocesador o una FPGA. De forma que la FPGA, es el dispositivo de reconfiguración hardware que se usa para implementar los sistemas lógicos a desarrollar.. 1.3.2. Memoria FLASH La memoria Flash es una forma de memoria no volátil que permite escribir y borrar múltiples locaciones o bloques de memoria en una sola operación de programación, siendo reprogramada en el mismo sistema. Las memorias normales de su tipo (EPROM ), solo permiten un bloque de escritura o lectura por programación, lo que hace a la memoria Flash más efectiva cuando los sistemas en que se usan leen y escriben en diferentes bloques a la vez, brindándole la posibilidad de operar a velocidades mas altas. Las memorias Flash son fabricadas en dos formas: Nor y Nand, dependiendo del tipo de lógica usada en su celda básica de almacenamiento. El tipo Nor fue el primer tipo de flash desarrollado, lanzado por Intel en 1988. Tiene ciertas desventajas en cuanto a los tiempos de lectura y escritura, pero consta de una completa interfaz de direcciones y datos que permite el acceso aleatorio a cualquier ubicación. Lo cual es atractivo para el almacenamiento de código que no necesita ser actualizado constantemente, como en las cámaras digitales o los PDA’s. El tipo Nand, fue lanzado por Toshiba en 1989. Este tiene mejores tiempos, mayor densidad y menor costo por bit que el tipo Nor. Sin embargo, su interfaz de I/O solo permite el acceso a los datos de forma secuencial. Esto hace que esta memoria pueda ser utilizada para almacenamientos masivos, como tarjetas de desarrollo, o formatos de media como los memory sticks. Las memorias Flash son usualmente usadas para almacenar el código de control y configuración, como el BIOS del sistema.. 12.
(17) IEL2-II-04-26. 1.3.3. Programación de Dispositivos Reconfigurables Ya que en el numeral pasado nos centramos en la FPGA como dispositivo reconfigurable a tratar durante el desarrollo de este documento, por ser el elemento utilizado por las compañías dedicadas a producir tarjetas de desarrollo, presentamos ahora, una de las formas en que comúnmente se realiza la programación de dicho dispositivo, que es la programación vía CPLD-Flash. La memoria Flash puede ser utilizada para almacenar configuraciones para la FPGA. La ventaja principal de este modo de utilización de la memoria (Flash) radica en que de esta manera no es necesario reprogramar de forma externa la FPGA cada vez que esta se desconecta de la fuente de alimentación, ya que el programa se encuentra almacenado en la memoria Flash y es desde aquí desde donde se vuelve a cargar. Cuando se utiliza de esta forma, existen tres pasos que permiten ajustar la Flash: Para este caso se tiene una CPLD para generar la interfaz entre los elementos involucrados en la configuración de la Flash con el código proveniente del PC a través del puerto paralelo, y la programación de la FPGA con el código ya almacenado. • Se configura la CPLD con un circuito de programación que conecta la Flash con el puerto paralelo • Se programa la Flash pasando las líneas de código de la configuración de la FPGA a través del puerto paralelo • Se carga la CPLD con un circuito de configuración que va, en el ciclo inicial de la tarjeta, a cargar a la FPGA con el código almacenado en la Flash Interfaz de Programación de la M emoria Flash El circuito de la CPLD que conecta la Flash con el puerto paralelo es simplemente una interfaz que le permite al PC leer y escribir en la Flash utilizando únicamente cuatro bits de datos y dos señales de control. El PC utiliza esta interfaz simple para controlar las funciones de programación de la Flash de alto nivel, tal como borrar sectores de la Flash antes de ser programados con nuevos datos. El circuito de programación de la Flash realiza las siguientes funciones: • Recopila seis cadenas 1 consecutivas provenientes del puerto paralelo y las concatena formando una dirección en la memoria Flash de 24 bits (16M Bytes), que constituye la ubicación en la cual se pretende almacenar un dato • Recopila dos cadenas consecutivas provenientes del puerto paralelo y las concatena formando un dato de un byte, el cual debe ser almacenado en la memoria Flash • Escribe el dato en la Flash en la dirección asignada y luego regresa a esperar la llegada de otro grupo de cadenas correspondientes a dirección y a dato • M ientras se encuentra recopilando las cadenas para conformar la dirección, también lee el byte de dato del ciclo anterior y lo pasa al puerto paralelo en segmentos de 3, 3 y 2 bits cada uno La interfaz del circuito utiliza seis pines del puerto paralelo: cuatro para el paso de las cadenas que conforman tanto el dato como la dirección, uno más para la sincronización del reloj encargado del manejo de la máquina de estados en la CPLD, y el último como reset 1. Una cadena para este caso especí fico se encuentra compuesta por cuatro bits. 13.
(18) IEL2-II-04-26. para la maquina de estados. Tres pines de estado del puerto paralelo son utilizados para enviar de vuelta al PC los datos de la Flash y para reportar el punto en el que se encuentra la maquina de estados de la CPLD. La CPLD sirve de interfaz con los pines de dirección, dato y control de la Flash, así como con el pin de PROGRAM de la FPGA. Para la programación de la Flash se definen ocho estados de la siguiente manera: seis estados son utilizados para reunir la dirección de 24 bits, y luego dos más son utilizados para recoger el byte de dato que será escrito en la Flash. La CPLD luego pone en bajo el pin de PROGRAM de la FPGA para que esta se mantenga en su estado de no-configurado. Esto aísla los pines de la FPGA para que esta no pueda interferir con la programación de la Flash. Después es necesario asegurarse que el reset de la Flash sea liberado para que esta pueda ser programada. Se implementan seis estados que concatenan las cadenas recibidas a través del puerto paralelo formando una dirección de 24 bits. Durante cada uno de los estados, la cadena proveniente del puerto paralelo es ubicada en un lugar apropiado en el registro de direcciones. El estado actual es reportado al PC a través de las líneas de estado; este es utilizado por el código de programación de la Flash que se encuentra en el PC para asegurarse que ambos se encuentran en concordancia. Sin embargo, durante tres estados las líneas de estado se encuentran siendo utilizadas para llevar los segmentos del byte de dato desde la Flash hasta el PC. La ubicación del dato en la Flash se almacena en un registro. Esta dirección aparece en las líneas de dirección de la Flash y se mantiene hasta que el registro sea modificado. Al forzar por lo tanto las líneas de chip_enable y output-enable a bajo, se obtiene el byte de dato que se encuentra en la Flash en la dirección determinada y se envía a través de las líneas de estado del puerto paralelo de la siguiente forma: primero los tres bits más significativos, luego los tres intermedios y por último los dos menos significativos completando así los 8 bits que constituyen el dato. El código de programación de la Flash en el PC reúne estas cadenas recibidas y reconstruye el byte de dato que se encuentra en la Flash. Se implementan dos estados que concatenan las cadenas correspondientes al byte de dato que es escrito en la Flash en la dirección cargada durante los seis estados anteriores. La escritura ocurre cuando el reloj se encuentra en bajo. Esto le da tiempo a la dirección para estabilizarse del ciclo anterior antes de que la escritura se realice. Cuando el reloj sube para concluir con el pulso de escritura, hay un cambio de estado. Es necesario en esta instancia asegurarse de que las líneas de datos de la Flash se encuentren transmitiendo todavía los mismos valores que al momento de llevarse acabo la escritura. Esto asegura por lo tanto, que el tiempo por el cual se mantuvo el dato es el correcto. Luego se actualizan los registros de estados, dirección y dato en el flanco de subida del reloj. Un reset proveniente del puerto paralelo limpiará el registro de dato y enviará a la maquina de estados a esperar otro ciclo de dirección. El reset no cambia el registro de dirección. Esto le permite al PC leer de la Flash sin necesidad de escribir sobre esta utilizando el reset. Cuando se activa el reset antes de que la Flash reciba el dato, se le permite al PC leer el dato que se encuentra en la dirección enviada en el ciclo anterior. Esto no sería posible si el registro de dirección fuera borrado mediante el reset. Las líneas de dirección cambian en el flanco de bajada del reloj con lo que se asegura que estas han alcanzado la estabilidad antes de que cualquier operación potencial de escritura sea inicializada en el siguiente flanco de subida del reloj.. 14.
(19) IEL2-II-04-26. Configuración de la FPGA por la Flash En este caso el circuito de la CPLD le permite a la Flash configurar la FPGA con el código que había sido almacenado de la manera expuesta anteriormente. Este circuito simplemente incrementa un contador de dirección el cual permite la lectura de los datos que se encuentran almacenados en la memoria Flash y luego los pasa a la FPGA para su configuración. Cuando la FPGA emite la señal de configuración completa, la CPLD detiene todas las operaciones. El procedimiento que se sigue es el siguiente: Inicialmente se define la interfaz del circuito. Se utiliza un oscilador programable como reloj principal. La CPLD tiene interfaz con los pines de dirección y de control de la Flash para que de esta forma sea posible transferir el código para la configuración de la FPGA. En este caso no es necesario tener acceso a los pines de dato de la Flash, ya que estos se encuentran conectados de forma directa a la FPGA. La CPLD inserta el código en la FPGA utilizando los pines de control de configuración. Es necesaria la utilización de una señal proveniente de la FPGA que indique cuando esta se encuentre ocupada guardando los bytes de los datos de configuración. La CPLD por otro lado debe poner a la FPGA en modo de Slave Parallel Configuration, en el cual esta última acepta los bytes de los datos de configuración en los flancos de subida del reloj de configuración, mientras que chip-select y write-enable se encuentren activos. Los pines de control de la Flash son puestos de tal forma que esta permita la lectura de los datos para la configuración de la FPGA que esta contiene. Estos son luego liberados por la CPLD cuando la FPGA envía la señal indicando que el proceso de configuración ha concluido. La Flash tiene un tiempo de acceso de 90 ns. Por lo que, para el manejo de la configuración de la FPGA es necesario utilizar otro reloj que sea más lento. Cuando se enciende la fuente de energía que alimenta la FPGA esta necesita de cierto tiempo para estabilizarse antes del inicio de cualquier configuración. Por esta razón se debe tener una cuenta regresiva que se inicie con el encendido y que mantenga una señal de reset activa hasta que esta (cuenta) llegue a cero, permitiendo que se inicie la configuración. Esta señal de reset también puede ser utilizada para bajar el pin de PROGRAM de la FPGA al momento del encendido, manteniéndolo así hasta que termine la cuenta regresiva y subiéndolo para que se inicie la configuración. Se selecciona la FPGA para configuración cuando el pin de PROGRAM se encuentra en alto y esta no está indicando ningún error de configuración a través del pin INIT. Para realizar la configuración la CPLD toma control de los pines de chip-select y write-enable de la FPGA y los libera solo hasta que la configuración se complete. Se dispone un registro que contenga la dirección de la Flash en la cual se encuentre el dato de configuración asociado. Este registro es mantenido en cero mientras que la FPGA se mantenga en su estado de reset con el pin de PROGRAM en bajo. Luego de que el pin de PROGRAM es subido y se inicia la configuración, la dirección de la Flash que se encuentra en el registro es incrementado cada ciclo de reloj mientras que la FPGA se encuentre seleccionada y esta no se encuentre enviando señales que indiquen algún error en la configuración o que se encuentra ocupada procesando el último dato enviado para su configuración. La dirección debe ser pasada, como es obvio, a la Flash para indicar el lugar de lectura de los datos de configuración.. 15.
(20) IEL2-II-04-26. Después de que la FPGA se encuentre configurada, se pasa el reloj del oscilador programable a la FPGA para su uso interno, y para lo que se encuentre destinado a hacer dentro de la lógica ahora activa en la tarjeta.. 1.4. Arquitectura GBA1-Xport El laboratorio Charmed Labs ofrece al mercado la tarjeta Xport 2.0, con una documentación básica para el uso de la misma. Junto con la tarjeta viene un CD, “Xport Software Distribution” que contiene Cygwin, Xport Development Kit, Xport eCos 2.0, y la documentación. En cuanto a la documentación, presenta el manual completo de eCos, que también esta disponible en la red en los sitios que mencionamos anteriormente. Es importante destacar que para la naturaleza de este estudio, y el interés académico que este tiene, la documentación es corta y carece de detalles funcionales del s istema. Es por esto que con el apoyo del Grupo de M icroelectrónica de la Universidad Nacional de Colombia, que realizo el trabajo que presentamos a continuación, mostramos, con fines académicos únicamente, el funcionamiento del sistema de la Xport 2.0 mediante diagramas de bloques. Reiteramos que este apartado no es de nuestra autoría, y que fue obtenido gracias al profesor Carlos Camargo, miembro del Grupo de M icroelectrónica de la Universidad Nacional de Colombia. Las explicaciones y comentarios presentados con los diagramas son producto de nuestra experiencia personal con el uso de la tarjeta. Xport 2.0. Conector I/O 64 pines. Cport. JTAG. CPLD. FPGA Spartan II 150K. SDRAM 16Mbytes. Flash 4Mbytes GBA. GamePad 10 Botones. Pantalla a Color ARM7TDMI Parlante. Figura 1-1. Diagrama de bloques GBA-Xport. 1. GameBoy Advanced. 16.
(21) IEL2-II-04-26. Figura 1-2. Diagrama de comunicación GBA-Xport. 17.
(22) IEL2-II-04-26. 2 CONTROL ADAPTATIVO 2.1. Introducción En general, las técnicas de diseño de sistemas de control, presumen un buen conocimiento tanto de la planta objeto de estudio como del ambiente en el que esta se encuentra. En algunos casos sin embargo, la complejidad de los procesos es demasiado alta, forzando a que el desarrollo de modelos matemáticos de estos sea muy costoso tanto en tiempo como en capital; o que por otro lado, simplemente no se tenga la suficiente claridad o información que permitan el completo entendimiento de dichos procesos. A esto se le sumó, la necesidad de contar con controladores capaces de responder de forma adecuada en un amplio rango de condiciones de operación, cosa que no se había logrado con controladores lineales de ganancia constante. Se introdujo entonces el control adaptativo, cuya razón principal de ser, era la de obtener controladores capaces de adaptarse a cambios tanto en la dinámica de los procesos como en las características de las perturbaciones sobre estos. Se encontró además, que era posible utilizar estas técnicas de adaptación para obtener controladores auto-ajustables. Para lograr una mejor comprensión de lo que es un controlador adaptativo, es necesario primero definirlo como “un controlador con parámetros ajustables y un mecanismo para ajustar estos parámetros” (Astrom & Wittenmark, 1995, p. 1). Así, un sistema de control adaptativo puede ser visualizado con dos ciclos; el primero sería el ciclo de realimentación normal conformado por el proceso y el controlador, y el otro sería el ciclo encargado del ajuste de los parámetros del controlador. Ajuste de Parámetros Parámetros C ontrolador Entrada. Controlador. Planta. Salida. Señal de Control. Figura 2-1. Diagrama de bloques sistema adaptativo generalizado. A continuación se describen algunas aproximaciones al control adaptativo.. 2.2. Ganancia Programada La introducción de este tipo de control adaptativo se dio en la década de los 50´s, en la cual se venían desarrollando sistemas de control para aeronaves de alto rendimiento. Los rangos de operación de estas aeronaves eran tan amplios que los sistemas de control tradicionales no eran capaces mantener su buen funcionamiento a lo largo de estos. Lo que llevó a la búsqueda de variables auxiliares que se correlacionaran bien con la dinámica del proceso y que permitieran compensar las variaciones en los parámetros de este, por medio del cambio de los parámetros del regulador en función de las variables auxiliares.. 18.
(23) IEL2-II-04-26. Programador de Ganancia. Variables Auxiliares. Parámetros Controlador Referencia. Controlador. Entrada. Proceso. Salida. Figura 2-2. Diagrama de bloques Control de Ganancia Programada. La ventaja que tiene el control por ganancia programada es que los parámetros del controlador pueden ser modificados de forma rápida y de acuerdo con los cambios de las variables auxiliares. Este tipo de control es conveniente siempre y cuando la dinámica del proceso dependa de unas pocas variables y cuya medición sea relativamente fácil. Además, la ganancia programada es una buena forma de compensar no linealidades en el proceso. Algunas de las desventajas son que en algunos casos este método pude requerir de mucho tiempo, que la modificación de los parámetros se realiza en lazo abierto sin realimentación del sistema, y que no es posible utilizarlo si tanto la dinámica del proceso como las perturbaciones sobre este son conocidas con la suficiente precisión.. 2.3. Sistema Adaptativo por Modelo de Referencia (MRAS) El MRAS fue diseñado para solucionar el problema de tener ciertas especificaciones de funcionamiento expresadas en un modelo de referencia; el cual, expresa la respuesta que el sistema debe tener a determinadas entradas o estímulos. El fin de este sistema de control adaptativo, es lograr que la salida de la planta concuerde con la salida del modelo de referencia. Para lograr esto, se plantearon dos esquemas.. 2.3.1. Esquema de Alta Ganancia en Serie Este esquema basa su funcionamiento en aumentar la ganancia lo suficiente para que la función de transferencia sea aproximadamente 1 sobre las frecuencias de interés, de tal forma que la salida se acerque a Ym. En este caso el ciclo de ajuste permite que la ganancia aumente hasta cuando se detecte algún grado de inestabilidad. Bajo ese límite se permite el incremento de la ganancia. R efer encia. M odel o d e R eferen ci a. Ym + +. Ga nanc ia. u. Plan ta. -. Aj uste de Gana nci a. D etec tor L im ite de cl ic lo. Figura 2-3. Diagrama de bloques MRAS. Esquema de alta ganancia. 19. Salid a.
(24) IEL2-II-04-26. Desventajas de este esquema: - Oscilaciones se presentan de forma constante en este sistema. - Ruido en la banda de frecuencia del Detector puede generar decrecimiento de la ganancia muy por debajo de su valor crítico. - La señal de Referencia puede causar saturación debido a la alta ganancia. - La saturación puede enmascarar oscilaciones límites, permitiendo que la ganancia continúe creciendo por encima del valor crítico, llevando el sistema a la inestabilidad.. 2.3.2. Esquema en Paralelo En este esquema el controlador puede considerarse en dos ciclos; el interno o ciclo del regulador que se encuentra conformado por la planta y por el controlador, y el externo o ciclo de adaptación que ajusta los parámetros del controlador de tal forma que el error, diferencia entre la salida real del proceso y la del modelo de referencia (respuesta deseada), sea cero. Diseño Controlador. Ym. Parámetros Controlador. Mecanismo de Ajuste. Referencia. Controlador. Entrada. Proc eso. Salida. Figura 2-4. Diagrama de bloques MRAS. Esquema en paralelo. El planteamiento principal de este esquema, se basa en encontrar un mecanismo de ajuste que logre llevar el error a cero. El planteamiento inicial de solución, consistía en utilizar el método de actualización del gradiente, en el que era necesario contar con la función de variación de la salida de la planta debida a cambios en los parámetros del controlador. Luego se introdujo la regla M IT, en la cual ya no se utilizan estos parámetros desconocidos, sino que se utilizan aproximaciones a estos en un tiempo “t”; la desventaja principal de esta solución se encuentra en la imposibilidad de asegurar la estabilidad del sistema de lazo cerrado. Empíricamente se observó que esta solución se comportaba de forma correcta para ganancias y señales de referencia de magnitudes pequeñas. Por ultimo se rediseño el mecanismo de ajuste de los parámetros utilizando la teoría de Lyapunov, para de esta forma obtener esquemas estables y probablemente convergentes.. 2.4. Reguladores Auto-Ajustables (STR) En el caso de esta técnica de control adaptativo, el ciclo encargado del ajuste de los parámetros del controlador esta conformado por dos bloques, el primero es el encargado de estimar los parámetros de la planta utilizando métodos recursivos de identificación; y el segundo se encarga del diseño del controlador utilizando los datos provenientes del bloque. 20.
(25) IEL2-II-04-26. de identificación; para esto ultimo, se debe asumir que los parámetros estimados del proceso son los reales, conociéndose esto como el principio de equivalencia certera. En algunos casos sin embargo, no es posible lograr la correcta identificación de los parámetros del proceso sin que a este le sean introducidas señales de prueba o perturbaciones. Regulador auto-ajustable Especificación. Parámetros del Proceso. Diseño Controlador. Estimación. Parámetros Controlador Referencia. Controlador. Entrada. Planta. Salida. Figura 2-5. Diagrama de bloques STR. El esquema STR es bastante flexible, ya que es posible utilizar combinaciones entre diferentes métodos tanto de identificación como de diseño. Además, dependiendo de estos, ambos bloques, el de “Estimación” y el de “Diseño Controlador”, pueden integrarse reduciendo la complejidad del algoritmo de ajuste de los parámetros del controlador.. 2.5. Control Estocástico Los esquemas de control anteriormente descritos parecen aproximaciones heurísticas razonables. A pesar de esto, algunas limitaciones salen a relucir, como lo es el no tener en cuenta la incertidumbre en los parámetros utilizados. Así, se hace atractiva la idea de obtener estos esquemas desde ciertos principios básicos. Esto puede lograrse utilizando el control estocástico, en donde el sistema y su ambiente son descritos por un modelo estocástico, y en el cual, se formula un criterio para minimizar el valor esperado de la función de pérdida, que es una función escalar de las variables de estado y de control. La solución de estos controladores óptimos da como resultado la siguiente estructura. Hiperestado. Cálculo de Hiperestado Entrada. Controlador. Planta. Salida. Señal de Control. Figura 2-6. Diagrama de bloques Control Estocástico. 21.
(26) IEL2-II-04-26. De algunas pruebas con este tipo de control, se han observado resultados interesantes. El controlador, además de utilizar la señal de control para obtener de la planta la salida deseada, la utiliza para inducir señales de prueba que permitan el mejoramiento de la identificación y por consiguiente el control a futuro de la planta. De esta forma, se mantiene un equilibrio entre el control y la identificación, lo que se conoce como control dual.. 22.
(27) IEL2-II-04-26. 3 IDENTIFICACIÓN DE SISTEMAS 3.1. Introducción La identificación de un sistema o proceso desconocido, consiste en encontrar un modelo matemático que lo represente, utilizando solamente los datos correspondientes a entradas y salidas. Para el caso específico de este proyecto, los procesos a identificar son tipo SISO (una entrada, una salida), por lo que los datos utilizados para la identificación en línea (simultánea al control) se presentan en pares entrada-salida. Entre algunas de las utilidades principales de la identificación de sistemas, se encuentran: la predicción de comportamientos, la explicación de relaciones entre entradas y salidas; y el diseño de controladores basados en los modelos obtenidos. Es esta última característica, la que más nos interesa para el desarrollo del control adaptativo. Existen algunas pautas que se deben tener en cuenta para el correcto desarrollo de la identificación, estas son: selección de la estructura del modelo, diseño del tipo de experimentación, estimación de los parámetros y por último, la validación de los resultados. Selección de la estructura del modelo: Para seleccionar una estructura correcta, es necesario contar con un conocimiento previo del comportamiento general del proceso. De esta forma, es necesario enmarcar al sistema a identificar dentro de un grupo de modelos factibles, utilizando la experiencia y el conocimiento de las leyes físicas que lo rigen. Diseño de la experimentación: Este aspecto es crucial para la identificación, y se convierte en un punto neurálgico cuando se trata de control; ya que las señales de entrada deben ser escogidas cuidadosamente, teniendo en cuenta tanto la estructura del proceso como la utilización que de este se requiere. En los sistemas de control adaptativo existe una complicación mayor, puesto que la señal de entrada del proceso se encuentra generada por el controlador luego de la realimentación; lo que en ciertos casos, evita que los parámetros sean encontrados de forma única, haciéndose necesaria la utilización de señales de perturbación. Estimación de los parámetros: Este paso se encuentra dentro del algoritmo de identificación, el cual se vale de técnicas de optimización para determinar el vector de parámetros desconocidos, resultando una función aproximada de la salida con respecto a la entrada. Validación: Esta se realiza al comparar la salida real del proceso con la obtenida del modelo aproximado; haciendo posible la determinación el grado de precisión de los parámetros estimados.. 23.
(28) IEL2-II-04-26. Proceso a ser Identificado. ui. Modelo Matemático. Técnica de Identificación. yi +. ŷi -. yi − yˆ i. Figura 3-1. Diagrama de Bloques para la Identificación de Sistemas. 3.2. Estimador de Mínimos Cuadrados El principio de los mínimos cuadrados se basa en la escogencia de los parámetros desconocidos del modelo matemático de forma tal, que la suma de los cuadrados de las diferencias entre los datos reales del proceso y los valores estimados, multiplicados por números que midan su grado de precisión, sea un mínimo. En general en el problema de los mínimos cuadrados, la salida de un modelo lineal “y” se encuentra dada en términos de una expresión parametrizada linealmente, así: Ecuación 3-1:. y (i ) = ϕ1 (i )θ1 + ϕ 2 (i )θ 2 + ... +ϕ n (i)θn = ϕ T (i)θ. Donde θ1 , θ 2 ,…, θ n son los parámetros del modelo que deben ser determinados y ϕ1 , ϕ 2 ,…, ϕ n son funciones conocidas o variables de regresión, que dependen de las entradas del proceso. Definimos de la Ecuación 3-1 los siguientes vectores:. ϕ T (i ) = (ϕ1 (i ) ϕ 2 (i ) ... ϕn (i )) θ T = (θ1 θ 2 ... θ n ) Para identificar los parámetros desconocidos θ k , es necesario que se realicen algunos experimentos de los cuales se obtenga el conjunto de datos de entrenamiento, compuesto por parejas de datos {y(i ),ϕ (i ), i = 1,2,...,t }, que representan el comportamiento deseado del sistema a ser modelado. Si reemplazamos cada una de estas parejas de datos en la Ecuación 3-1 vamos a tener un número t de ecuaciones lineales:. 24.
(29) IEL2-II-04-26. ϕ1 (1)θ1 + ϕ 2 (1)θ 2 + ... + ϕ n (1)θ n = y (1) ϕ1 (2)θ1 + ϕ2 (2)θ 2 + ... + ϕ n (2)θ n = y(2) Μ. Ecuación 3-2:. ΜΜ. ϕ1 (t )θ1 + ϕ 2 (t )θ 2 + ... + ϕ n (t )θ n = y (t ). Utilizando notación matricial, y rescribiendo la Ecuación 3-2, tenemos que: Ecuación 3-3:. Φ(t )θ = Y (t ). Donde “ Φ(t ) ”, es una matriz de t x n,. ⎡ϕ1 (1) Λ Φ(t ) = ⎢ Μ Ο ⎢ ⎢⎣ϕ1 (t ) Λ. ϕn (1)⎤. Μ⎥ ⎥ ϕn (t )⎥⎦. Y “ Y(t)” un vector de t x 1,. ⎡ y (1)⎤ Y (t ) = ⎢ Μ ⎥ ⎢ ⎥ ⎢⎣ y (t )⎥⎦ Para hallar una solución única de la Ecuación 3-3 debe cumplirse que t ≥ n . Si A es cuadrada ( t = n ) y no singular, la solución estaría dada por Ecuación 3-4:. θ = Φ −1 (t )Y (t ). Como por lo general t > n (se tienen más parejas de datos que parámetros a estimar), es posible no encontrar una solución que satisfaga todas las ecuaciones. Esto puede deberse a que algunos de los datos han sido contaminados por ruido, o a que, simplemente, el modelo escogido para realizar la identificación no describe de forma correcta el proceso. Se hace necesario entonces, la inclusión de un vector que represente el error generado por cualquiera de las dos causas anteriores, modificando la Ecuación 3-3 así Ecuación 3-5:. Donde,. 25. Φ(t )θ + Ε(t ) = Y (t ).
(30) IEL2-II-04-26. ⎡ε (1)⎤ Ε(t ) = ⎢ Μ⎥ ⎢ ⎥ ⎢⎣ε (t)⎥⎦ Ahora, el problema se transforma de la Ecuación 3-3, en la cual se buscaban los valores exactos, a encontrar los parámetros en θ que minimicen la suma del cuadrado del error 2V (θ , t ) = ∑ (y(i ) − ϕ T (i )θ ) = ΕT Ε = (Y − Φθ )T (Y − Φθ ) t. Ecuación 3-6:. 2. i=1. Expandiendo la Ecuación 3-6 tenemos que 2V (θ , t ) = (Y − Φθ )T (Y − Φθ ) = Y T Y − Y T Φθ − θ T ΦT Y + θ T ΦT Φθ. Ecuación 3-7:. Es posible observar que Y T Φθ = θ T ΦT Y , que es un escalar. Rescribimos la Ecuación 3-7 2V (θ , t ) = (Y − Φθ )T (Y − Φθ ) = Y T Y − 2Y T Φθ + θ T ΦT Φθ. Ecuación 3-8:. Ahora derivamos 2V (θ , t ) 2. Ecuación 3-9:. Igualando 2. ∂V (θ , t ) = 2ΦT Φθ − 2ΦT Y ∂θ. ∂V (θ , t ) a cero con θ = θˆ , obtenemos la siguiente ecuación: ∂θ. Ecuación 3-10:. Φ T Φ θˆ = Φ T Y. Si ΦT Φ es no singular, entonces θ̂ tiene una única solución dada por, Ecuación 3-11:. θˆ = (Φ T Φ ) Φ T Y −1. NOTA: Es posible que se presenten problemas en la identificación de sistemas debido a la mala escogencia del modelo matemático que lo representa; ya que por un lado puede que los parámetros de éste no sean suficientes para explicar todo el comportamiento del sistema, o que por el otro, que sean demasiados y simplemente el modelo obtenido se ajuste bien al conjunto de datos del que se obtuvo, pero no a otros.. 26.
(31) IEL2-II-04-26. 3.3. Estimador Recursivo por Mínimos Cuadrados (RLS 1) 3.3.1. Sistemas Invariantes en el Tiempo Suponiendo que para realizar la estimación de los parámetros del sistema contamos con t-1 parejas de datos, rescribimos la Ecuación 3-11 de tal manera que esto quede representado. Así, tendríamos que Ecuación 3-12:. θ (t − 1) = (Φ T Φ ) Φ T Y −1. Si adquiere una nueva pareja de datos {y(t ), ϕ (t )}, es posible ahorrar el esfuerzo computacional que implicaría tomar nuevamente todos los datos para el cálculo de θ (t ) , por medio de la actualización de θ (t −1) . A esto, se le conoce como identificación recursiva por mínimos cuadrados. Es posible representar a θ (t ) de la siguiente forma: −1. Ecuación 3-13:. ⎛ ⎡ Φ ⎤ T ⎡ Φ ⎤ ⎞ ⎡ Φ ⎤T ⎡ Y ⎤ θ (t ) = ⎜ ⎢ T ⎥ ⎢ T ⎥ ⎟ ⎢ T ⎥ ⎢ ⎥ ⎜ ⎣ϕ (t )⎦ ⎣ϕ (t )⎦ ⎟ ⎣ϕ (t )⎦ ⎣ y (t )⎦ ⎝ ⎠. Para simplificar la nomenclatura, se introducen dos matrices de dimensión n x n, definidas de la siguiente forma, Ecuación 3-14:. P(t −1) = (ΦT Φ ). −1. ⎛ ⎡ Φ ⎤T ⎡ Φ ⎤ ⎞ P(t ) = ⎜ ⎢ T ⎥ ⎢ T ⎥ ⎟ ⎜ ⎣ϕ (t )⎦ ⎣ϕ (t )⎦ ⎟ ⎝ ⎠ Ecuación 3-15:. ⎛ = ⎜⎜ [Φ T ⎝. −1. ⎡ Φ ⎤⎞ ϕ (t )]⎢ T ⎥ ⎟⎟ ⎣ϕ (t )⎦ ⎠. −1. = (Φ T Φ + ϕ (t )ϕ T (t )). −1. La relación entre estas dos matrices se encuentra dada por Ecuación 3-16:. P −1(t − 1) = P −1(t ) − ϕ (t )ϕ T (t ). Utilizando las matrices P(t −1) y P(t ) en la Ecuación 3-12 y la Ecuación 3-13 se tiene que Ecuación 3-17: 1. Recursive Least-Square.. 27. θ (t − 1) = P(t − 1)Φ T Y.
(32) IEL2-II-04-26. Ecuación 3-18:. θ (t ) = P(t )(Φ T Y + ϕ (t ) y (t )). Para expresar θ (t ) en función de θ (t − 1) , es necesario despejar el término y reemplazarlo en la Ecuación 3-18. Utilizando además, la. ΦT Y. de la Ecuación 3-17. Ecuación 3-16 se obtiene Ecuación 3-19:. θ (t ) = θ (t − 1) + P(t )ϕ (t )( y (t ) − ϕ T (t )θ (t − 1)). De la Ecuación 3-16 tenemos que Ecuación 3-20:. P(t ) = (P −1 (t − 1) + ϕ (t )ϕ T (t )). −1. Para evitar la inversión matricial que implica la Ecuación 3-20, nos valemos de la siguiente formula. ( A + BC )−1 = A −1 − A −1B (I + CA− 1B )−1 CA −1 Tomando A = P −1 (t −1) , B = ϕ (t ) y C = ϕ T (t ) tenemos que. P(t ) = P(t − 1) − P(t −1)ϕ (t )(I + ϕ T (t )P(t − 1)ϕ (t )) ϕ T (t )P(t −1) −1. Ecuación 3-21:. = P(t −1) −. P(t − 1)ϕ (t )ϕ T (t )P(t − 1) I + ϕ T (t )P(t − 1)ϕ (t ). Las ecuaciones para la estimación recursiva por mínimos cuadrados pueden ser resumidas de la siguiente manera Ecuación 3-22:. θˆ(t ) = θˆ(t − 1) + K (t )ε (t ). Ecuación 3-23:. ε (t ) = y (t ) − ϕ T (t )θˆ(t − 1). Ecuación 3-24:. K (t ) = P(t )ϕ (t ) = P(t −1)ϕ (t )(I + ϕ T (t )P(t − 1)ϕ (t )). Ecuación 3-25:. P(t ) = (I − K (t )ϕ T (t ))P(t − 1). −1. Así, los parámetros estimados en θ̂ (t ) , para un número “t” de muestras, son obtenidos de sumarle a la estimación anterior θˆ (t −1) cierta corrección proporcional al error (diferencia entre el valor real obtenido del proceso y el estimado por el modelo). El vector K (t ) (constante de adaptación) es el encargado a su vez, de indicar cual es la cantidad de esta corrección que debe ser hecha a cada componente de θ̂ . La matriz P(t ) por otro lado, es proporcional a la matriz de covarianza de los estimadores.. 28.
Documento similar