Asignatura: Código: Año académico: Centro: Departamento: Área: SISTEMAS EN TIEMPO REAL 40007318 2009/2010 ESCUELA POLITÉCNICA SUPERIOR LENGUAJES Y COMPUTACIÓN INGENIERÍA DE SISTEMAS Y AUTOMÁTICA Titulación: Ciclo: Cuatrimestre: Créditos teóricos: INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS PRIMER TERCERO Curso: SEGUNDO OPTATIVA Carácter: 3 3 Créditos prácticos: Despacho Teléfono E-mail / Web Profesorado: JOSÉ LUIS GUZMÁN SÁNCHEZ 1.48, CITE III 950 015677 RAMÓN GONZÁLEZ SÁNCHEZ Sala Becarios - CITE III 950 214171 joguzman@ual.es http://www.ual.es/~joguzman/ rgonzalez@ual.es http://www.ual.es/~rgonzalez/ Objetivos Generales: Sistemas en Tiempo Real es una asignatura optativa que se imparte en primer ciclo de la titulación Ingeniería Técnica en Informática. La asignatura consta de 3 créditos teóricos y 3 prácticos, y se incluye en el horario de la especialidad de Sistemas, aunque es optativa para todas las especialidades y para la titulación de Ingeniería Informática. Se encuentra únicamente vinculada al área de conocimiento de Ingeniería de Sistemas y Automática, siendo sus descriptores los siguientes: Metodologías de desarrollo de sistemas en tiempo real, análisis, especificación, diseño, implantación y verificación; Lenguajes y herramientas de programación de sistemas en tiempo real; Sistemas empotrados. Esta asignatura introduce a los alumnos de informática en las tecnologías de diseño de sistemas con especificaciones temporales y de fiabilidad estrictas. Los sistemas informáticos de tiempo real se utilizan en numerosos campos de aplicación, como el control de aviones, automóviles y trenes, tráfico, comunicaciones, satélites, control de procesos, electrónica de consumo, etc. La característica más importante de estos sistemas es que sus acciones se deben ejecutar en intervalos de tiempo determinados por la dinámica de los sistemas físicos que supervisan o controlan. Además, suelen tener requisitos estrictos de fiabilidad y seguridad. Muchos de estos sistemas están empotrados en otros sistemas, lo que conlleva una limitación de recursos (potencia de procesador, memoria, etc.) con respecto a otros tipos de sistemas informáticos. En la mayoría de los casos, además, deben ejecutar varias tareas concurrentemente. Estas características, en conjunto, hacen que la construcción de sistemas de tiempo real presente características específicas respecto a otros tipos de sistemas informáticos. La necesidad de asegurar un comportamiento temporal determinado y una alta fiabilidad hacen que, en la mayoría de los casos, los métodos de diseño y realización y el software básico (compiladores y sistemas operativos) que se utilizan para desarrollar otros tipos de sistemas informáticos no sean adecuados para construir sistemas de tiempo real. De acuerdo con esto, los objetivos de la asignatura son: Comprender los problemas específicos de los sistemas de tiempo real, y las características que los diferencian de otros sistemas informáticos. Conocer los métodos más importantes que se utilizan para desarrollar sistemas de tiempo real con un grado de fiabilidad elevado, especialmente los que se refieren a la medida del tiempo, la planificación del uso de recursos, la prevención y tolerancia de fallos y la organización del software, comprendiendo sus principios y formas de aplicación. Conocer algunas herramientas (lenguajes de programación fundamentalmente) adecuados para la realización de sistemas de tiempo real. Conocimientos Previos Recomendados: Conocimientos básicos sobre programación. Contenidos teóricos (Temporización): Tema 0. Introducción a la informática, automática y sistemas de tiempo real (3 horas) 0.1. Introducción a la informática industrial y la automática. 0.2. Introducción a la robótica y a los sistemas de tiempo real. 0.3. Campos de aplicación. Ejemplos de sistemas de tiempo real. Tema 1. Introducción a los sistemas en tiempo real y los sistemas informáticos de control (2 horas) 1.1 Introducción a los sistemas en tiempo real y los sistemas informáticos de control. 1.2 Clasificación, elementos y características de los sistemas en tiempo real. 1.3 Introducción al control por computador y esquemas básicos de control en sistemas empotrados. Tema 2. Diseño de sistemas de tiempo real (2 horas) 2.1 Introducción. 2.2 Tipos de notación. 2.3 Especificación de requisitos. 2.4 Actividades y métodos de diseño. 2.5 Lenguajes de programación. 2.6 Sistemas operativos de tiempo real. 2.7 Pruebas. 2.8 Prototipos. 2.9 Interfaz hombre-máquina en sistemas en tiempo real. Tema 3. Introducción a la programación de sistemas en tiempo real en Ada y C (6 horas) 3.1 Introducción a Ada y C: conceptos básicos. 3.2 Estructura de un programa en Ada y C. 3.3 Programación modular y en gran escala. 3.4 Ocultamiento de información. 3.5 Compilación separada. 3.6 Tipos abstractos de datos. Sobrecarga de operadores y programación orientada a objetos. 3.7 Reutilización de software. 3.8 Entornos de desarrollo de software. Tema 4. Tareas y concurrencia en sistemas en tiempo real (5 horas) 4.1 Introducción. 4.2 Tareas concurrentes, tipos y tareas dinámicas. Hilos de ejecución en POSIX 1003. 4.3 Comunicación y sincronización entre tareas. 4.4 Esquemas de comunicación y sincronización basados en uso compartido de memoria. Uso de objetos protegidos en Ada. 4.5 Esquemas de comunicación y sincronización basados en envío de mensajes. Cita extendida en Ada. Colas de mensajes en POSIX 1003. Tema 5. Planificación de tareas (6 horas) 5.1. Introducción a la planificación de tareas. 5.2. Planificación con ejecutivos cíclicos. 5.3. Planificación con prioridades de tareas periódicas independientes. 5.4. Planificación con prioridades de tareas esporádicas y aperiódicas. 5.5. Interacción entre tareas y bloques en planificación con prioridades. 5.6. Planificación con prioridades siguiendo un modelo de tareas generalizado. 5.7. Realización de sistemas con prioridades. 5.8. Otros métodos de planificación. 5.9. Planificación en POSIX 1003. Tema 6. Modelado de sistemas en tiempo real con redes de petri (4 horas) 6.1 Introducción. 6.2 Redes de petri convencionales. 6.3 Interpretaciones temporales de redes de petri. 6.4 Modelado y análisis de sistemas en tiempo real. Tema 7. Aspectos avanzados de los sistemas de tiempo real y campos de aplicación (2 horas) 10.1 Introducción. 10.2 Sistemas distribuidos de tiempo real. CORBA y sus extensiones en tiempo real. 10.3 Sistemas operativos en tiempo real. Soluciones comerciales y de libre distribución. 10.4 Aplicaciones en tiempo real para sistemas empotrados de 8, 16 y 32 bits. Líneas de aplicación. 10.5 Control en Tiempo Real de Plantas de Energía Solar. Casos de Aplicación en Plantas de Energía de Receptor Central. Contenidos prácticos (Temporización): Módulo 1: Programación en lenguaje C con hebras POSIX bajo el SOTR LynxOS (4 horas). Material: herramientas de desarrollo en lenguaje C/C++ para SOTR LynxOS sobre Linux/Win2000. Computador de ejecución con LynxOS y de análisis y desarrollo Linux/Win2000. Laboratorio: Control Automático, Robótica y Visión Artificial. Dpto. de Lenguajes y Computación 1.1 Iniciación al SOTR POSIX LynxOS. 1.2 Interfaz POSIX para el manejo de procesos multihebra. Módulo 2: Mecanismos de sincronización y planificación con hebras POSIX 1003.1c. (4 horas) Material: herramientas de desarrollo en lenguaje C/C++ para SOTR LynxOS sobre Linux/Win2000. Computador de ejecución con LynxOS y de análisis y desarrollo Linux/Win2000. Laboratorio: Control Automático, Robótica y Visión Artificial. Dpto. de Lenguajes y Computación 2.1 Sincronización mediante objetos 'mutex', ‘variables de condición' y mediante semáforos. 2.2 Planificación en POSIX 1003.1c: prioridades, políticas y dominios Módulo 3: Introducción a Ada como lenguaje de programación de STR: Ejecutivo cíclico (4 horas) Material: compilador Ada 95 gnat 3.13. Software de libre distribución para programación en Ada. Laboratorios: Control Automático, Robótica y Visión Artificial. Dpto. de Lenguajes y Computación 3.1 Compilador gnat y entornos de programación en Ada: adacaps y adagide. 3.2 Análisis del software de libre distribución para programación en Ada. 3.3 Programación: introducción, estructura de programa, variables tipo entero, o peraciones lógicas y variables booleanas. 3.4 Programación: estructuras de control, tipos y subprogramas. 3.5 Implementación de Tareas mediante ejecutivo cíclico. Módulo 4: Concurrencia de Tareas en Ada (6 horas) Material: Compilador Ada 95 gnat 3.13. Laboratorio: Control Automático, Robótica y Visión Artificial. Dpto. de Lenguajes y Computación. 4.1 Implementación y estructura de tareas periódicas en Ada. 4.2 Gestión de tiempo en Ada. 4.3 Detección de incumplimiento de plazos. Módulo 5: Sincronización de tareas en ADA (6 horas). Material: Compilador Ada 95 gnat 3.13. Laboratorio: Control Automático, Robótica y Visión Artificial. Dpto. de Lenguajes y Computación. 5.1 Sincronización entre tareas Ada mediante cita extendida. 5.2 Planificación de las colas asociadas a las entradas de una tarea. Módulo 6: Programación de tareas en STR con Java (6 horas). Material: Compilador y máquina virtual de Java en Tiempo Real. Laboratorio: Control Automático, Robótica y Visión Artificial. Dpto. de Lenguajes y Computación. 6.1 Programación de tareas con Java. 6.2 Gestión de tiempo de Java. 6.3 Planificación de tareas en Java. Bibliografía: 1. J.G.P. Barnes. Programming in Ada; Ada'95. Addison-Wesley, 1995. 2. J.G.P. Barnes. Programming in Ada 95. Addison-Wesley, 1998. 3. S. Bennet. Real-Time Computer Control: An Introduction. Prentice-Hall. 1988. 4. G. Booch. Software Engineering with Ada. Addison-Wesley, 1994. 5. A. Burns. Real-Time systems and programming languages. Addison-Wesley, 2001. 6. A. Burns y A. Wellings. Real-Time Systems and Programming Languages. Addison-Wesley. 1996. 7. D. Butenhof. Programming with POSIX threads. Addison-Wesley, 2002. 8. B. P. Douglass, Real Time UML: Advances in the UML for Real-time Systems. Addison-Wesley, 2004 9. Information technology - Programming languages - Ada Reference Manual. International Standard ISO/IEC 8652:1995(E), versión 6.0, Diciembre 1994. 10. H. Kopetz. Real-Time Systems. Design Principles for Distributed Embedded Applications. Kluwer, 1997. 11. G. Olsson y G. Piani. Computer Systems for Automation and Control. Prentice-Hall. 1992. 12. J.A. de la Puente. Apuntes de la asignatura Control de Procesos. Escuela Superior de Ingenieros de Telecomunicación. Madrid, 1990-97. 13. J.A. de la Puente. Apuntes y transparencias de la asignatura Sistemas en Tiempo Real. Escuela Superior de Ingenieros de Telecomunicación. Madrid, 1998. 14. B.O. Gallmeister. POSIX.4: Programming for the real world. O'Reilly & Associates, Inc. 1995. 15. P. A. Laplante, Real-time Systems Design and Analysis: An Engineers Handbook. Wiley-IEEE Press – 2004. 16. B. Nichols, D. Buttlar and J. Proulx. Pthreads Programming. O'Reilly & Associates, Inc. 1996. 17. W. Y. Svrcek, D. P. Mahoney, B. R. Young. A real-time approach to process control. John Wiley & Sons, 2006. 18. A.M. Lázaro, LabVIEW 7i. Programación gráfica para el control de instrumentación. Paraninfo, 2005 19. L. Sokoloff. Applicattion in LabView; Ed. Prentice Hall; 2004 Metodología: Sesiones de teoría para todo el grupo de alumnos en las que el profesor explicará los contenidos teóricos fundamentales de cada tema y donde se valorará la participación del alumnado con la aportación de nuevos enfoques, preguntas,… Además durante el transcurso de cada tema hay un grupo de ejercicios que permiten al alumno/a mejorar la destreza en el uso de los conceptos. La parte práctica se organiza en sesiones para cada grupo de alumnos, desarrolladas en paralelo a la parte teórica y con una adecuada sincronización, de forma que el alumnado pueda poner en práctica los conocimientos adquiridos en cada módulo de la parte teórica y donde se pretenderá un comportamiento lo más autónomo posible. Además, se proponen un conjunto de ejercicios que el alumno/a opcionalmente puede realizar y enviar, o bien a través de WebCT o bien en tutorías, para su revisión. El profesorado realiza el seguimiento continuo del proceso de aprendizaje, anotando los progresos del alumnado y respondiendo a sus necesidades formativas que puedan surgir a lo largo del curso. Tanto en las clases teóricas como prácticas se hará uso intensivo de herramientas interactivas junto con laboratorios virtuales y remotos con el fin de realzar la motivación de los alumnos. Plan de acción tutorial: El alumnado podrá hacer uso de las tutorías para resolver las dudas que se le haya planteado en la parte práctica y/o en la parte teórica de la asignatura. Por otra parte, al iniciar el curso se propondrán temas relacionados con la temática de la asignatura para posibles trabajos opcionales organizados en grupos de dos alumnos. Cada grupo de trabajo deberá asistir al menos a 3 tutorías a lo largo del cuatrimestre. Previamente a la primera tutoría el profesor proporcionará la documentación inicial necesaria para la elaboración del trabajo así como las fuentes donde deben buscar. En la primera tutoría deberán presentar una recopilación del material bibliográfico que van a utilizar en la realización del trabajo. En la segunda deberán entregar la estructura del trabajo. En la tercera entregarán el trabajo ya elaborado. Evaluación: Prácticas obligatorias y evaluación continua Trabajo optativo relacionado con la asignatura Ejercicios opcionales a entregar de cada tema Examen final si se estima necesario: Junio 2010 Convocatorias extraordinarias que decida Escuela Politécnica Superior de la Universidad de Almería Observaciones: Las prácticas de laboratorio se desarrollarán en el Laboratorio de Control Automático, Robótica y Visión Artificial del Departamento de Lenguajes y Computación, CITE III, puerta 229.