notas unidad 1

19
FACULTAD DE INGENIERIA ELECTRICA UNIVERSIDAD MICHOACANA DE SAN NICOLAS DE HIDALGO Programación en Tiempo Real Notas de Curso 2011 M.I. Rosalía Mora Juárez

Upload: rosalia-mora

Post on 16-Mar-2016

263 views

Category:

Documents


0 download

DESCRIPTION

Unidad 1 Introducción a los sistemas de tiempo real

TRANSCRIPT

Page 1: Notas Unidad 1

 

FACULTAD DE INGENIERIA ELECTRICA 

UNIVERSIDAD MICHOACANA DE SAN NICOLAS DE HIDALGO 

Programación en Tiempo Real

Notas de Curso 2011   M.I. Rosalía Mora Juárez 

Page 2: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  2

 

Programación en tiempo real Contenido sintético del curso

1. Introducción a los sistemas en tiempo real. 2. Restricciones de la programación en tiempo real. 3. Planificación de prioridades. 4. Planificación de tiempos. 5. Manejo de recursos. 6. Sincronización. 7. Confiabilidad. 8. Sistemas Operativos en Tiempo Real. 9. Aplicaciones.

Objetivo El objetivo fundamental de este curso es conocer los mecanismos y herramientas existentes para el diseño y programación de sistemas de tiempo real.

• Que el estudiante comprenda qué es un sistema de tiempo real, así como las restricciones que la programación de estos sistemas conlleva.

• Competencia: conocer una plataforma de programación en tiempo real mediante la práctica en un

sistema operativo de tiempo real.

Bibliografía básica ⎯ Burns, Alan. Sistemas de tiempo real y lenguajes de programación, 3era Edición, Prentice Hall, 2003. ⎯ Doug Abbott. Linux for Embedded and Real-time Applications, Second Edition, 2006 ⎯ Dibble, Peter C. Real-Time Java Platform Programming, Prentice Hall, 2002.

Page 3: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  3

 

1. Introducción a los sistemas de tiempo real

a influencia de las computadoras se ha extendido a todos los órdenes de la vida, desde lavadoras hasta el control de tráfico aéreo. Una de las áreas de expansión más rápida de la explotación de computadoras es aquélla que implica aplicaciones cuya función principal no es la de procesar información, pero que

precisa dicho proceso de información con el fin de realizar su función principal. Una lavadora controlada por microprocesador es un buen ejemplo de dicho tipo de sistemas. En este caso, la función principal es la de lavar ropa; sin embargo, dependiendo del tipo de ropa que va a ser lavada, se deben ejecutar programas de lavado diferentes. Este tipo de aplicaciones de computador se conocen genéricamente como de tiempo real o empotradas. Se ha estimado que el 99 por ciento de la producción mundial de microprocesadores se utiliza en sistemas embebidos. Estos sistemas plantean requisitos particulares para los lenguajes de programación necesarios para programarlos, ya que tienen características diferentes de las de los sistemas de procesamiento de información tradicionales.

1.1 ¿Qué es un sistema en tiempo real? En la actualidad hay un debate sobre qué es tiempo real.

Existen varias definiciones de “tiempo real”, inclusive algunas de ellas pudieran llegar a ser contradictorias. El tema es controvertido y no existen indicios de que se pueda llegar a estar 100% de acuerdo sobre ésta terminología.

El Diccionario Oxford de computación (Oxford Dictionary of Computing) proporciona la siguiente definición de un sistema de tiempo real:

Cualquier sistema en el que el tiempo en el que se produce la salida es significativo. Esto generalmente es porque la entrada corresponde a algún movimiento en el mundo físico, y la salida está relacionada con dicho movimiento. El intervalo entre el tiempo de entrada y el de salida debe ser lo suficientemente pequeño para una temporalidad aceptable.

Por otra parte, la definición canónica de un sistema en tiempo real es la expresada por Donald Gillies1:

"A  real‐time  system  is one  in which  the correctness of  the computations not only depends upon  the  logical correctness of  the computation but also upon the time at which the result is produced.  If  the  timing  constraints of  the  system are not met,  system  failure  is  said  to have occurred." 

  que traducida al español sería:

Un sistema de tiempo real (STR) es aquel en cual los resultados son correctos, y no sólo depende de si la lógica e implementación de los programas computacionales son correctos, sino también el tiempo en el cual se producen dichos resultados.

Si no se verifican las restricciones de tiempo, se dice que se ha producido un fallo en el sistema.

                                                            1 Donald Gillies, Department of Electrical and Computer Engineering, University of British Columbia, 2356 Main Mall, Vancouver, B.C., Canada.

L

Page 4: Notas Unidad 1

FIE‐2011 

 

M.I. Rosalía M

 

Otros invest

Así talo cuasistem

Se h

sistemas rádefinición s

Un s(inclu

El crespuesta devariar del ouna respues 

Una

1.1.1

Es nconsiderarsetiempo. Loeventos, lasetc. Las tédentro de es

1.1.2

La mes aplicar realimentac

Los

funciones d

Mora Juárez 

tigadores han

ambién, es fual implicaríama sea alto, a

han hecho taápidos. Por esiguiente (Ra

istema de tieuyendo el pa

concepto tieel sistema po

orden de segusta limitada o

a aproximaci

Program

necesario dife como unas aspectos d

s restriccionecnicas y herste curso.

Sistemas

mayor parte la acción d

ción del sistem

s sistemas emde control de

Sistem

Tiemp

n agregado a

fundamental ga que el sistea la vez de q

ambién referejemplo, el pandell et al.,

empo real eso de tiempo

empo real nor sí misma undos, milis

o latencia me

ión para defi

mación en

ferenciar la pa extensión dderivados dees de tiempo rramientas de

s empotra

de los sistemde control ma.

mpotrados otros sistem

ma de 

po Real

a la definició

garantizar qema sea predque mantiene

rencias a sistproyecto PDC1995):

es aquél al qo físico) en in

no es necesarla que define

segundos, naenor son men

nir qué es un

tiempo re

programacióde la prograe considerar

(time-in y te diseño de

ados

mas de tiempcalculada p

o embebidomas o subsiste

•Inter•Respdent

•Tiendivermom

ón anterior:

que las restridecible. Es taen las restricc

temas de tiemCS (Predicta

que se le solntervalos del

riamente sine la idea de

anosegundos,nos eficientes

n sistema de

eal

ón en tiempoamación conel tiempo s

ime-out), la programas e

po real son sipor medio d

os son aquellemas.

racciona repponde a los ero de un plaze capacidadrsos evento

mento con cie

icciones de también deseaciones de tie

mpo real queably Depend

licita que rel tiempo dicta

nónimo de rátiempo real, , etc. Con frs que los algo

tiempo real c

o real (RTP)ncurrente qson principasincronizacien tiempo re

istemas de cde una com

los donde se

etidamente cestímulos quzo de tiempod para aten

os que seertas restricc

P

tiempo en losable que el gempo.

e considerandable Compu

eaccione a eados por el e

ápido, es deya que una

recuencia, looritmos que

consideraría

. La programque incorporaalmente: el oón de relojes

eal son objet

control de promputadora “e

e utilizan com

con su entore recibe del

o determinadnder simultproducen e

ciones de tiem

Programación

s sistemas segrado de utili

n que éstos suter Systems)

estímulos delentorno.

ecir, no es larespuesta de

os algoritmosen general n

los siguiente

mación en tiea la problemorden de cóms, semaforizato de un apa

ocesos; su prempotrada”

mputadoras

no físico.entorno físi

do.táneamenteen el mismmpo.

n en Tiempo R

4

e cumplan, ización del

son simpleme) proporcion

l entorno

a latencia del sistema pus que garantino lo hacen.

es aspectos:

empo real pumática de famo suceden ación, bloqu

artado especí

rincipal objeen el lazo

que realizan

co

amo

Real

4

ente na la

de la uede izan

uede actor

los ueos, ífico

etivo de

n las

Page 5: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  5

 

Los sistemas empotrados están presentes en procesos industriales, experimentos científicos, medicina,

consulta de grandes bases de datos, control de vuelo, equipamiento telefónico, en refinerías, maquinarias, automóvil, seguimiento de capsulas espaciales, etc. y se caracterizan por tener que dar una respuesta en un tiempo determinado; es decir, la computadora recibe una determinada información, la analiza y posteriormente comienzan las acciones que constituyen su respuesta.

Aunque los sistemas empotrados de tiempo real son a menudo muy complejos, las características proporcionadas por los lenguajes y entornos de tiempo real permiten que esos sistemas complejos sean divididos en componentes más pequeños que se pueden gestionar de forma efectiva. La Figura 1.1 muestra un esquema de un sistema empotrado de tiempo real típico.

Figura 1.1 Esquema de un sistema empotrado de tiempo real típico.

Por ejemplo, en la Figura 1.1 el bloque Sistema de Ingeniería contiene todo un subsistema para aplicar acciones de control en respuesta a los eventos que provenientes del sistema físico. A continuación se muestra el esquema de un control en tiempo real general para un sistema empotrado (Figura 2).

Figura 1.2 Estructura general de un sistema de control de tiempo real.

El sistema de control en tiempo real actúa sobre el sistema físico que va a ser controlado para conseguir un comportamiento definido. Maneja dos aspectos esenciales: • El lazo de control, o sea un algoritmo de

control que determina las acciones impuestas al sistema físico controlado, para cada variación de eventos.

• Los tiempos en que se lleva a cabo la acción

que se origina para cada evento.

Page 6: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  6

 

La respuesta de la computadora de un sistema empotrado debe producirse siempre en un tiempo mínimo

para no comprometer el equilibrio del proceso que está controlando. Sin embargo, no todo depende la computadora, otra una parte fundamental son las prestaciones del sistema operativo. Los sistemas operativos que permiten una respuesta rápida se denominan sistemas operativos en tiempo real y su objetivo principal es ofrecer las prestaciones necesarias para lograr tiempos rápidos de respuesta, evitando los tiempos muertos de planificación, pero sin preocuparse de la utilización óptima del resto de los recursos del sistema.

1.2 Ejemplos de Sistemas en Tiempo Real

Un ejemplo muy sencillo de sistema de tiempo real en la vida común es esperar de pie en una fila para hacer el pago en la caja de una tienda. Si la fila crece asintóticamente más y más sin límite, el proceso de compra no será en tiempo real, dado que el comportamiento de la fila no sería predecible; Esto implicaría que el sistema de control (en este caso el proceso de atención a cada cliente) no pueda dar atención a la cantidad de eventos (clientes) que se presentan.

Si la longitud de la fila es limitada, los clientes estarían siendo "procesados" rápidamente, en promedio a medida que entran a la fila, y ese proceso si es en tiempo real porque cumple con los requisitos de atender todos los eventos (clientes) que se presenten dentro de una restricción de tiempo (tiempo máximo estimado que se requiere para hacer el cobro a cada cliente).

Otro ejemplo de tiempo real es aquel donde la computadora realiza una única actividad, como garantizar un flujo estable de un líquido corrosivo a través de una tubería controlada por válvula. Si se detecta un incremento en el flujo, la computadora debe responder inmediatamente alterando el ángulo de la válvula; esta respuesta debe producirse en un periodo finito de tiempo si el equipamiento del receptor final de la tubería no está sobrecargado. Hay que indicar que la respuesta del sistema de control puede implicar una computación muy compleja en relación con el cálculo del nuevo ángulo de la válvula.

Figura 1.3 Un sistema de control de fluido.

Figura 1.4 Un sistema de control de procesos.

Un ejemplo más: el sistema operativo Unix puede ser considerado de “tiempo real” en el sentido de que

cuando un usuario introduce un comando, éste esperará una respuesta en pocos segundos. Afortunadamente, normalmente no ocurre ningún desastre si la respuesta no se produce en ese tiempo. Estos tipos de sistemas se distingue de aquéllos otros en los que un fallo al responder puede ser considerado como una respuesta incorrecta o catastrófica.

Page 7: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  7

 

La importancia que tienen los sistemas de tiempo real en la vida diaria va en crecimiento. La Tabla 1

muestra la cantidad de procesadores de propósito específico que se fabricaban para usarse en sistemas de control.

Tabla 1. Crecimiento de procesadores para tiempo real TIPO DE PROCESADOR MILLONES DE

UNIDADES OBSERVACIONES

Para computadoras personales

100 • Un teléfono móvil de última generación tiene más de 1 millón de líneas de código.

• El 50% del costo total de un avión se refiere a su software de control

• El 90% de las innovaciones en los automóviles corresponden a su sistema electrónico.

Para sistemas empotrados

300

Procesador digital de señales (DSP)

600

Microcontroladores 8000

* Datos tomados de Enterprice magazine, septiembre del 2002. Algunos otros ejemplos de la aplicación de sistemas de tiempo real se listan a continuación:

• Aviación • Control de tráfico aéreo • Control de tráfico ferroviario • Telecomunicaciones • Sistemas multimedia • Control de centrales generadoras de

energía (por ejemplo centrales nucleares) • Control de hospitales, invernaderos, etc.

• CAM (Fabricación asistida por ordenador, por ejemplo: fresadoras, tornos, pintura, etc.)

• Control en equipos médicos • Control de sistemas de telecomunicaciones • Juegos en línea • Control de cápsulas espaciales y satélites • Domótica

Figura 1.5 Sistema de intercomunicación GMS.

Figura 1.6 Tboot. Software traductor de conversaciones en tiempo real.

Figura 1.7 Sistema para optimizar la formación de los oficiales mediante un proceso de simulación de operaciones militares aeronavales. Este sistema permite la preparación, ejecución y análisis de ejercicios que simulan un entorno táctico donde se desarrollan las operaciones de carácter militar dentro de un escenario de máximo realismo que cuida la influencia del entorno ambiental.

Page 8: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  8

 

Figura 1.8 Sistema de Supervisión Visual del Tránsito mediante cámaras de TV.

Figura 1.9 Centro de control de tráfico aéreo de Tokio

Figura 1.10 Videojuego on-line y en tiempo real.

Figura 1.11 Sistema de vigilancia en tiempo real

Page 9: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  9

 

Figura 1.12 Terminal de audio/video en tiempo real.

1.2.1 Características Generales de los Sistemas de Tiempo Real Los requisitos especiales que distinguen a los sistemas de tiempo real de los sistemas que no los son se

listan a continuación:

• Determinismo. • Tamaño y complejidad. • Fiabilidad y seguridad. • Sensibilidad. • Control del usuario. • Cálculo con números reales

• Interacción con dispositivos físicos • Eficiencia • Dependencia del tiempo • Tolerancia a los fallos. • Concurrencia

1.2.1.1 Determinismo

En matemáticas, un sistema determinista es un sistema en el cual el azar no está involucrado en los futuros estados del sistema. Es decir, si se conoce el estado actual del sistema, las variables de ambiente y el comportamiento del sistema ante los cambios en el ambiente, entonces se puede predecir sin ningún riesgo de error el estado siguiente del sistema. En este contexto, se hace referencia a dos tipos de determinismo:

• El determinismo fuerte, que considera que no existen sucesos genuinamente aleatorios o azarosos, y en general el futuro es potencialmente predecible a partir del presente (aunque lógicamente predictibilidad y determinación son independientes, ya que la primera requiere además cierto tipo de conocimiento de las condiciones iniciales).

• El determinismo débil, que considera a la probabilidad como la responsable de determinar los hechos que se presentan, es decir, que existe una fuerte correlación entre el estado presente y los estados futuros, aun admitiendo la influencia de sucesos esencialmente aleatorios e impredecibles.

En sistemas de tiempo real casi todas las peticiones de servicio (o interrupciones) se generan por eventos

externos al sistema. Por tanto, es fundamental que el sistema tenga un comportamiento determinista, o sea, previsible. El determinismo es una cualidad clave del sistema porque refiere a su capacidad para establecer con una alta probabilidad cuanto es el tiempo que se toma una tarea en iniciarse. Esto es esencial porque los sistemas de tiempo real necesitan que ciertas tareas se ejecuten antes de que otras tareas se puedan iniciar.

Page 10: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  10

 

Determinismo temporal en los sistemas de tiempo real

El determinismo temporal se refiere al tiempo que tarda el sistema antes de responder a una interrupción. Siguiendo el comportamiento determinista, se esperaría que las interrupciones ocurran en intervalos de tiempo determinados, de tal manera que el sistema responda correctamente en todas las situaciones pudieran presentarse. Por ejemplo, en una petición de servicio a una base de datos es importante determinar el tiempo que tardara el sistema en aceptar esta petición, antes que pueda dar entrada a otra petición de servicio.

En el diseño de sistemas de tiempo real estrictos o duros se debe ser capaz de prever el comportamiento del sistema en el peor caso posible (la definición de sistema estricto y no estricto se trata en la sección 1.3).

1.2.1.2 Tamaño y complejidad

El concepto de tamaño y complejidad de un sistema de tiempo real se relaciona directamente con el diseño de software:

• Los algoritmos de control en sistemas empotrados suelen contener un gran número (miles) de líneas

de código, lo que los hace complicados y complejos. • Se presenta el coste de rediseñar y reescribir software para responder al cambio continuo en los

requisitos del mundo real. Esta tarea no es nada sencilla, y para simplificarla se utiliza programación modular y orientada a objetos.

• Se precisa de lenguajes y entornos de tiempo real que permiten que esos sistemas complejos sean divididos en componentes más pequeños que se pueden gestionar de forma efectiva.

• Los sistemas de tiempo real precisan mantenimiento constante y mejoras durante su ciclo de vida, lo que obliga a realizar su diseño de manera que puedan ser extensibles.

El tamaño y la complejidad de los sistemas de tiempo real agravan el problema de la fiabilidad, puesto

que no sólo deben tenerse en consideración las dificultades esperadas inherentes a la aplicación, sino también aquéllas introducidas por un diseño de software defectuoso.

1.2.1.3 Fiabilidad y seguridad

Aunque todas las aplicaciones de software deben ser confiables, los requisitos de fiablilidad y seguridad en los sistemas de tiempo real son mayores que para otro tipo de sistema.

El fallo de un sistema implicado en la transferencia automática de fondos entre bancos puede conducir a que millones de dólares se pierdan irremediablemente; un componente incorrecto en la generación de electricidad podría redundar en el fallo de un sistema de soporte vital, como una unidad de cuidados intensivos, y la rotura prematura de una planta química podría producir un costoso daño en la maquinaria o un daño ambiental.

La fiabilidad en un sistema de tiempo real se refiere a que el sistema debe estar libre de fallas (o lo más posible a ello) y si se presentan, el sistema debe tener la capacidad de recuperación de fallos, incluyendo la auto-reinicialización, en un periodo de tiempo dado. Pero más aún, la calidad de la respuesta y servicio que presta no debe degradarse más allá de un límite determinado; esto quiere decir que a pesar de catástrofes, desgastes o fallas mecánicas, el sistema debe de seguir en funcionamiento óptimo ya que generalmente una degradación en el servicio que presta un sistema de tiempo real lleva consecuencias catastróficas, tanto para los resultados de control como para el sistema mismo.

Page 11: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  11

 

La fiabilidad se puede aproximar a través de una tasa promedio de fallos λ, es decir, la cantidad de

fallos o averías producidas durante una cantidad de tiempo (por ejemplo: λ averías/hora); de esta manera es posible calcular la probabilidad de proporcionar un servicio continuo sin fallos.

La métrica normalmente utilizada en fiabilidad es el tiempo medio entre fallos (Mean Time Between

Failures o MTBF), el cual, para un sistema sin redundancia (realimentación), es igual a l/λ. Un dato interesante es que, si en un sistema se obtiene que su MTBF > 10-9, se considerará que el

sistema de tiempo real es ultraconfiable. Seguridad

La seguridad en sistemas de tiempo real frecuentemente se relaciona con la fiabilidad y la posibilidad de predecir los errores.

Por ejemplo: se sabe que entre el 80% y 90% de los sistemas de defensa utilizados por el ejército de los

Estados Unidos, realizan control mediante software de tiempo real. Según una estimación hecha por Hecht y Hecht (1986), en los sistemas de software complejos, por cada

millón de líneas de código que contienen existe una media de 20 000 errores. De aquí, aplicando técnicas de probabilidad y estadística, concluyen que:

• El 90% de estos errores pueden ser detectados con sistemas de comprobación. • Del 10 % restante, aproximadamente 200 errores se detectan durante el primer año. • De los 1800 errores restantes, permanecerán sin detectarse.

Hecht y Hecht concluyen que cuando se logra establecer una adecuada predicción de errores, el sistema

aumentará notablemente su seguridad. En conclusión, un sistema de tiempo real es seguro si cumple con las características de ser un sistema

estricto (hard) y ultraconfiable. Es importante señalar que algunos sistemas requieren además la implantación de normas especiales y/o certificación oficial que proporcionen parámetros de seguridad estandarizados (por ejemplo: cantidad de radiación máxima a que puede estar expuesto un trabajador en una planta nuclear).

1.2.1.4 Sensibilidad

Entre los parámetros clave que afectan al tiempo de respuesta en un sistema de tiempo real está el cambio de contextos y la latencia de la interrupción:

• El cambio de contexto (tiempo y sobrecarga necesario para conmutar entre tareas). • La latencia de interrupción (tiempo que pasa antes de que el cambio sea realmente posible).

Otros parámetros afectan al tiempo de repuesta son la velocidad de cálculo de la computadora empotrada

y el acceso a memorias masivas en el caso de sistemas distribuidos. La razón de transferencia de datos indica con qué rapidez se introducen o salen del sistema los datos

series o paralelos, tanto los analógicos como digitales.

Page 12: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  12

 

La sensibilidad se enfoca en el tiempo que tarda una tarea en ejecutarse una vez que la interrupción ha

sido atendida. Los aspectos a los que se enfoca son:

• La cantidad de tiempo que se lleva el iniciar la ejecución de una interrupción • La cantidad de tiempo que se necesita para realizar la tarea que pidió la interrupción • Los efectos de interrupciones anidadas

Una vez que el resultado del cálculo de determinismo y responsividad es obtenido, ésta se convierte en

una característica del sistema en general y un requerimiento para las aplicaciones que correrán en él (por ejemplo, si se diseña una aplicación en un sistema en el cual el 95% de las tareas deben terminar en cierto período entonces es recomendable asegurarse que las tareas ejecutadas desde otra aplicación no caigan en el 5% que corresponde al bajo desempeño).

1.2.1.5 Control del usuario

En sistemas de tiempo real, el usuario debe tener suficiente información para operar el sistema correctamente; es decir, debe conocer el estado de los procesos que corren en el sistema. Para realizar un control óptimo, los procesos del sistema deben ser capaces de reportar:

• Que proceso es, y especificar su prioridad. • El proceso especifica el manejo de memoria que requiere (que parte estará en caché y que parte en

memoria swap y que algoritmos de memoria swap va a usar). • El proceso especifica que derechos tiene sobre el sistema.

Esto aunque parece complicado no lo es, debido a que los sistemas de tiempo real usan tipos de procesos

que ya incluyen esas características, y usualmente este tipo de procesos son reconocidos como requerimientos del sistema por lo que se informan al usuario mediante manuales u hojas de especificaciones técnicas.

Un ejemplo sería cuando el equipo de diseñadores del software del sistema de control indica que “los

procesos de mantenimiento no deberán exceder el 3% de la capacidad del procesador, a menos que en el momento que sean ejecutados el sistema operativo se encuentre en la ventana de tiempo de menor uso”.

1.2.1.6 Cálculo con números reales

Como se ha indicado anteriormente, muchos sistemas de tiempo real se usan para el control de alguna actividad física. La Figura 12 presenta el ejemplo de un sistema de control sencillo.

Figura 1.13 Sistema de control simple.

El sistema físico está indicado como Planta, y tiene un vector de variables de salida y, que cambian en el tiempo (representada aquí como y(t)). Estas salidas son comparadas con la señal deseada o de referencia ( r(t) ) y la diferencia entre ambas produce una señal de error, e(t). El controlador utiliza este vector de error para cambiar

Page 13: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  13

 

las variables de entrada a la planta, u(t). Nótese que el sistema presenta además un controlador con realimentación. Para un sistema muy sencillo, el controlador puede ser un simple dispositivo analógico trabajando con una señal continua.

Con el fin de calcular qué cambios deben realizarse en las variables de entrada para que tenga lugar un

efecto deseable en el vector de salida, es necesario tener un modelo matemático de la planta mediante un conjunto de ecuaciones diferenciales de primer orden. Estas ecuaciones relacionan la salida del sistema y(t) con el estado interno de la planta y sus variables de entrada. Si la salida del sistema cambia implicará resolver dichas ecuaciones para conseguir los valores de entrada requeridos y mantener estable la planta.

Si se establece el requisito de respuesta de tiempo real, se deberá de forzar la repuesta a un periodo de

tiempo fijo. Sin embargo, la mayoría de los sistemas físicos presentan inercias producidas por los procesos de adaptación y comparación de entradas y salidas, por lo tanto, la reacción del controlador no será de manera instantánea.

Para contar con un sistema de tiempo real habrá que considerar los siguientes aspectos:

• La complejidad el modelo matemático que representa el sistema físico. • La complejidad de las manipulaciones necesarias para la adaptación de entradas y salidas distintas (pero

no independientes) del sistema físico. • Que las ecuaciones lineales de primer orden son sólo una aproximación a las características reales del

sistema físico. • La complejidad del algoritmo de control (controlador)

La mayoría de los sistemas de control de tiempo real o controladores realimentados introducen

componentes digitales que se implementan mediante computadora. La Figura 1.14 es una adaptación del modelo anterior (Figura 1.13).

Figura 1.14 Sistema de control con computadora.

El componente digital (computadora/microprocesador/microcontrolador) permite trabajar con valores

discretos. La operación de muestrear y mantener se realiza por un convertidor analógico-digital que está bajo control directo de la computadora.

La computadora resuelve además las ecuaciones diferenciales mediante técnicas numéricas, aunque es

muy probable que los propios algoritmos necesiten ser adaptados para tener en cuenta el hecho de que las salidas de la planta se estén muestreando.

El diseño de los algoritmos de control suelen ser matemáticamente muy complejos y necesitar un grado

de precisión elevado. Por tanto, un requisito fundamental de un lenguaje de programación de tiempo real es que tenga la capacidad para manipular números reales o de coma flotante.

Page 14: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  14

 

Tradicionalmente, los lenguajes de programación han soportado un único tipo de coma flotante

(conocido usualmente como dato de tipo real), el cual tiene una precisión que depende de la implementación. Por otra parte, las operaciones de coma flotante necesitan un hardware especial (una unidad de coma flotante) que hace que las operaciones en coma flotante sean varias veces más lentas que las equivalentes operaciones con enteros.

1.2.1.7 Interacción con dispositivos físicos

En cada uno de los ejemplos mostrados, la computadora interacciona directamente con el equipamiento físico en el mundo real. Con el fin de controlar esos dispositivos del mundo real, la computadora necesitará muestrear los dispositivos de medida (sensores, transductores, acopladores, actuadores, etc.) en intervalos regulares; por lo tanto, se precisará de un reloj de tiempo real.

Los dispositivos de medida va a interactuar con la computadora mediante registros de entrada y salida, o

bien pueden generar interrupciones para indicarle al procesador que se han realizado ciertas operaciones o que se han alcanzado ciertas condiciones de error.

Como ya se ha dicho, en un sistema de tiempo real, el operador humano debe mantiene constantemente informado del estado del sistema; por tanto, es necesario incluir en el diseño del sistema elementos físicos (dispositivos visuales o auditivos): Una manera muy común es incluir displays de varios tipos, inclusive graficadores y alarmas.

El software que controla las operaciones del sistema puede estar escrito en módulos que reflejan la

naturaleza física del entorno (como se muestra en la Figura 1.15). Normalmente, habrá un módulo que contenga los algoritmos necesarios para controlar físicamente los dispositivos, un módulo responsable del registro de los cambios de estado del sistema, un módulo para recuperar y presentar dichos cambios, y un módulo para interaccionar con el operador.

Figura 1.15 Diseño de sistema de mando y control.

Page 15: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  15

 

También es común que los registros de los cambios de estado del sistema se guarden en una base de

datos que puede ser consultada por los operadores, sobre todo en situaciones muy críticas (como el caso de una caída del sistema), o para proporcionar información con propósitos administrativos.

1.2.1.8 Eficiencia

Una idea popular equivocada que acompaña a los sistemas de tiempo real es que deben ser extremadamente eficientes. Esto no es del todo cierto; los sistemas de tiempo real deben satisfacer restricciones temporales y requisitos de fiabilidad; la implementación eficiente es un medio de extender una posibilidad, pero no es un fin en sí misma.

El término eficiencia se utiliza a menudo para expresar la calidad del código producido por un

compilador o el nivel de abstracción proporcionado por los mecanismos soportados por un sistema operativo o un sistema de soporte de tiempo real. Este término, sin embargo, no queda bien definido.

La eficiencia es, en muchos casos, una métrica pobre para valorar una aplicación y su implementación.

En los sistemas de tiempo real, lo realmente importante es satisfacer los tiempos límite o conseguir tiempos de respuesta adecuados en un entorno de ejecución concreto. Por tanto, la eficiencia de un sistema de tiempo real se relaciona con el rendimiento, principalmente por el tiempo de respuesta del sistema y su razón de transferencia de datos:

• El tiempo de respuesta del sistema es el tiempo en el que un sistema debe detectar un suceso interno o

externo y responder con una acción. • La trasferencia de datos se relaciona con la cantidad o volumen de datos por unidad de tiempo que el

sistema puede aceptar como válidos.

Frecuentemente, la detección del evento y la generación de la respuesta son tareas sencillas de implementar; Es el procesamiento de la información sobre el evento lo que implica determinar qué respuesta es la adecuada, o sea, implica utilizar algoritmos muy complejos y que consumen mucho tiempo.

1.2.1.9 Dependencia del tiempo

Como ya se mencionado, el tiempo de respuesta es crucial en cualquier sistema empotrado. Sin embargo, es muy difícil diseñar e implementar sistemas que garanticen que la salida apropiada sea generada en los tiempos adecuados bajo todas las condiciones posibles. Los sistemas de tiempo real se construyen habitualmente utilizando procesadores con considerable capacidad adicional, garantizando de este modo que el “comportamiento en el peor caso” no produzca ningún retraso durante los periodos críticos de operación del sistema. Funcionalidades de control en tiempo real

Dada una adecuada potencia de proceso (prestaciones del microprocesador de la computadora), se requiere también el soporte del lenguaje y de ejecución para permitir al programador:

a) Especificar los tiempos en los que deben ser realizadas las acciones.

Establecer determinados periodos de muestreo (lecturas de los sensores) mediante algoritmos de control digital directo. Por ejemplo, en un día a las dos de la tarde, a las tres de la tarde, y así sucesivamente, o a intervalos regulares (cada 5 segundos, etc.).

Page 16: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  16

 

b) Especificar los tiempos en los que las acciones deben ser completadas.

Los procedimientos de muestreo generalmente se deben sincronizar con el reloj de tiempo real.

c) Responder a situaciones en las que no todos los requisitos temporales se pueden satisfacer.

Por ejemplo, en una central eléctrica los convertidores analógico-digitales deben ser capaces de atender tasas de muestreo que pueden variar desde unos pocos hertzios a varios cientos de megahertzios.

d) Responder a situaciones en las que los requisitos temporales cambian dinámicamente (modos de cambio).

Por ejemplo, si un avión experimenta despresurización repentina, todos los recursos de computación (control de tiempo real) se dedicarán a hacerse cargo de la emergencia.

Nótese que el tiempo de respuesta puede variar dependiendo de las condiciones de control.

1.2.1.10 Tolerancia a los fallos

Los sistemas de tiempo real procesan un flujo continuo de datos de entrada procedentes de los eventos que se presentan; por lo tanto, el diseño del sistema debe asegurar que no se pierda ningún dato. Además, un sistema de tiempo real debe responder a los sucesos que son asíncronos. Por lo tanto, la secuencia de llegada (entrada de datos) y el volumen de los datos no pueden predecirse fácilmente de antemano. Operación a prueba de fallas duras (Fail soft operation)

Los sistemas de tiempo real contienen siempre mecanismos de restauración y recuperación de fallos y frecuentemente tienen incorporados lasos de control o retroalimentación para asegurar la restauración. El sistema debe asegurar que, de ocurrir un fallo, el sistema preserve la mayor parte de los datos y capacidades del sistema en la mayor medida posible.

También se debe asegurar que el sistema sea estable, es decir, que si para el sistema es imposible

cumplir con todas las tareas sin exceder sus restricciones de tiempo, entonces el sistema cumplirá con las tareas más críticas y de más alta prioridad.

1.2.1.11 Concurrencia

En el ejemplo típico de computadora empotrada de la Figura 1.1, el software de control o programa debe interactuar con un sistema físico (que constará de muchos elementos paralelos, como robots, cintas transportadoras, sensores, actuadores, etc.), y con dispositivos para desplegar información de la computadora (la consola del operador, la base de datos y el reloj de tiempo real). Por fortuna, la velocidad de una computadora moderna es tal, que normalmente estas acciones se pueden realizar en secuencia, dando la impresión de ser simultáneas. En algunos sistemas empotrados, sin embargo, puede no ser así; por ejemplo, donde los datos son recogidos y procesados en varios lugares distribuidos geográficamente, o donde el tiempo de respuesta de los componentes individuales no se puede satisfacer con una computadora única. En estos casos, es necesario considerar sistemas empotrados distribuidos o con multiprocesadores, lo que implica trabajar en sistemas concurrentes.

La concurrencia es una característica que se presenta cuando varios eventos ocurren casi al mismo tiempo y es necesario que el sistema de control atienda todas las tareas que los eventos requieren. Dicho de otra forma, la concurrencia es la simultaneidad en la ejecución de múltiples tareas interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución creados por un único programa.

Page 17: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  17

 

Las tareas se pueden ejecutar en un sola unidad central de proceso, dando origen a la multiprogramación;

o bien, las tareas se pueden ejecutar en varios procesadores o en una red de computadoras distribuidas. En resumen, la programación concurrente implica que:

• Se deben atender diversos tipos de eventos en paralelo • Pueden ser suficiente un solo procesador • En ocasiones es necesario recurrir a sistemas multiprocesador

1.3 Clasificación de los sistemas en tiempo real

La clasificación para los sistemas de tiempo real se hace según las propiedades del sistema físico que se va a controlar o según las propiedades del sistema de tiempo real en sí, es decir, la manera como responde ante el sistema físico. De esta clasificación general se desprenden otras subclasificaciones, tal como se observa a continuación:

1.3.1 Sistemas críticos y sistemas acríticos

Se distinguen porque se basan en el tipo de control que aplican sobre el sistema físico, principalmente en los requisitos de restricción temporal y de fiabilidad. Sistema de tiempo real crítico o duro (Hard Real Time Systems): si al tener un fallo en el tiempo de latencia de un proceso del sistema éste lleva como consecuencia a un error en todo el sistema, entonces esos procesos se consideran de tiempo real duro o crítico. Dicho de otra forma, en sistemas críticos los plazos de respuesta deben respetarse en todas circunstancias, pues una sola respuesta tardía a un suceso con funcionamiento incorrecto puede tener consecuencias fatales como pérdida de vidas o catástrofes similares (por ejemplo: sistemas de control de centrales nucleares o controladores de vuelo en aviones). En conclusión, los sistemas estrictos deben cumplir con:

• Plazo de respuesta estricto • Comportamiento temporal determinado por el entorno • Comportamiento en sobrecargas predecible • Requisitos de seguridad críticos • Redundancia activa • Volumen de datos reducido

• Sistemas críticos (hard) y sistemas acríticos (soft). • Sistemas con parada segura (fail-safe) y sistemas con degradación

aceptable (fail-soft).

• Sistemas con tiempo de respuesta garantizado (guaranteed) y sistemas que hacen lo que pueden (best effort).

• Sistemas con recursos adecuados y sistemas con recursos inadecuados.

• Sistemas dirigidos por tiempo y sistemas dirigidos por sucesos.

Page 18: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  18

 

Sistema de tiempo real acrítico o suave (Soft Real Time Systems): se denomina así al sistema que, de tener un fallo en algún proceso del sistema, este no conlleva una falla generalizada; sin embargo, el fallo debe presentarse dentro de ciertos límites establecidos (es posible encontrar fallos en la latencia en una de cada 1000 veces, o una de cada 100, o fallar siempre y cuando el error no exceda, por ejemplo, el 3% de la latencia). Por tanto, los sistemas acríticos o suaves pueden tolerar retrasos ocasionales en la respuesta a un suceso (por ejemplo: el sistema de control de una lavadora). En conclusión, los sistemas estrictos deben cumplir con:

• Plazo de respuesta flexible • Comportamiento temporal determinado por la computadora • Comportamiento en sobrecargas degradado • Requisitos de seguridad acríticos • Recuperación de fallos • Gran volumen de datos

1.3.2 Sistemas con parada segura y sistemas con degradación aceptable

Son sistemas de tiempo real que se distinguen por el tipo de comportamiento o respuesta que presentan en caso de que ocurra desperfecto o avería. Se subclasifican en dos tipos: Sistemas con parada segura (fail-safe):

• Detención en estado seguro • Probabilidad de detección de fallos elevada • Tal es el caso de sistemas de control de frenos ABS en un auto.

Sistemas con degradación aceptable (fail-soft):

• Funcionamiento con pérdida parcial de funcionalidad o prestaciones • También hay sistemas con tolerancia de fallos completa (fail operational)

1.3.3 Con respuesta garantizada y sistemas que hacen lo que pueden

Esta clasificación se basa en el grado de determinismo temporal que presenta el sistema de tiempo real. Sin embargo, hay sistemas cuyo determinismo temporal es mínimo y no pueden garantizar que su respuesta ocurra correctamente para todas las situaciones pudieran presentarse. En esta clasificación se encuentran: Sistemas con respuesta garantizada (guaranteed response systems)

• Comportamiento temporal garantizado analíticamente • Se debe caracterizar con precisión la carga máxima y los posibles fallos • Sólo aplica para sistemas duros o críticos.

Sistemas que hacen lo que pueden (best-effort systems)

• Comportamiento temporal de tipo “lo mejor que se pueda” • No se hace una caracterización precisa de carga y fallos • Sólo sirve para sistemas blandos o acríticos

Page 19: Notas Unidad 1

FIE‐2011  Programación en Tiempo Real

 

M.I. Rosalía Mora Juárez  19

 

1.3.4 Sistemas con recursos adecuados e inadecuados

Se distinguen por la cantidad de recursos disponibles para realizar el control, sin escatimar presupuesto de diseño e implementación, así como la calidad de los componentes. Estos sistemas se basan también en la cantidad de eventos que pueden detectar y dar respuesta: Sistemas con recursos adecuados (resource-adequate systems)

• Diseño con suficientes recursos para garantizar el comportamiento temporal con máxima carga y en caso de fallos.

Sistemas con recursos inadecuados (resource-inadequate systems)

• Diseño con recursos “razonables” desde un punto de vista económico • Sólo sirve para sistemas acríticos

1.3.5 Sistemas dirigidos por tiempo y por eventos

Se distinguen por la forma de arrancar la ejecución de sus actividades Sistemas dirigidos por eventos (event-triggered systems)

• Arranque cuando se produce un suceso o evento de cambio de estado • Mecanismo básico: interrupciones • Las interrupciones determinan la evolución del sistema. • Puede fallar si la carga es alta

Sistemas dirigidos por tiempo (time-triggered systems)

• Arranque en instantes de tiempo predeterminados • Mecanismo básico: reloj • Solo interrumpe el reloj de tiempo real • Operan mejor con cargas altas

Actividades

1. Indique cinco ejemplos de sistemas de tiempo real empotrados. Indique que "estímulos" alimentan al sistema y qué dispositivos o situaciones controla o supervisa el sistema.

2. De los siguientes ejemplos de sistemas de tiempo real, clasifícalos de acuerdo a los tipos que mencionan en esta

sección. Justifica el por qué de tu clasificación.

a) El software encargado de controlar un respirador artificial b) Juego de ajedrez en computadora c) Sistemas de audio y video en directo d) Sistema de gestión del motor de un auto e) Sistemas médicos como los marcadores de pasos artificiales f) Controladores de procesos químicos industriales de alta toxicidad. g) Software que mantiene y actualiza los planes de vuelo de las compañías aéreas comerciales h) Compresión de archivos de audio i) Motor de búsqueda de sitios web