You are on page 1of 30

Benemrita Universidad Autnoma de Puebla Facultad de Ciencias de la Computacin

Sistemas de Tiempo Real.


Profr. Dr. Luis Enrique Colmenares Guillen

PEARL ( Process and Experiment Automation Realtime) es en lenguaje de alto nivel el cual permite escribir programas en tiempo real y multitarea en una forma confortable y ampliamente independiente del hardware.

Importantes metas durante el desarrollo de Pearl fueron una imagen precisa de problemas tiempo real y multitarea y sobretodo un lenguaje fcil de aprender por el programador.

Este lenguaje es ampliamente usado en Europa, la estructura esta basada en Algol 68, y su tamao y complejidad es comparable con Ada.

Pearl naci en los 70s y finales de los 60s (especficamente 1968). La meta de su desarrollo promovido por el Ministerio de Investigacin y Tecnologa Alemana fue sobre un lenguaje, el cual combinara los mas importantes elementos de los lenguajes de alto nivel con un concepto conciso sobre tiempo real y tareas. UH-Pearl es una implementacin de este lenguaje para sistemas multiprocesadores, as entonces el desarrollo estandarizado comenz a principios de los 80s en la Universidad de Hanover (UH-Pearl) bajo el comando del profesor Dr. Ing. W. Gerth.

Posterior a lo anteriormente mencionado PEARL ha sido estandarizado en varias versiones por el 'Deutsches Institut fr Normung' (DIN):

DIN 66253, Part 1, Basic PEARL, 1981 DIN 66253, Part 2, Full PEARL, 1982 DIN 66253, Part 3, Multiprocessor PEARL, 1988 (Aqui se encuentra Specification Pearl, SPearl) DIN 66253, Part 2, PEARL 90, 1998

El lenguaje fue diseado para proporcionar a los ingenieros de sistemas un alto nivel para especificar programas de aplicaciones embebidas. Por esa razn se hace hincapi en las reas de especificacin inputoutput y la de procesamiento en tiempo real.

Como ejemplos UH-Pearl corre sobre computadoras bajo RTOS-UH basadas en: -MC86xxx family -Power PC family (MPC60x, MPC750, MPC8x, ) Las capacidades de este sistema cubre todos los controles desde pequeos sistemas embebidos basados por ejemplo en VMEbus-boards, hasta en altos sistemas multiprocesadores. El compilador UH-Pearl es disponible tambin genricamente como un compilador cruzado, que es capaz de correr bajo todas las versiones de Windows desde WIN95. Sus sentencias de multitarea son independientes de la computadora, por ejemplo Pearl al igual se puede programar bajo iRMX, OS/2, UNIX o VAX/VMS sin ningn cambio al sistema.

PEARL tambin puede estar corriendo en el SO PADROS bajo el standard 80X86 de IBM-AT systems.

Tambin por ejemplo a Pearl 90 se le puede ver correr en: HP-UX, HPRT, AIX, OS/2, LynxOS, WindowsNT, pSOS+, PXROS, VRTX, Solaris.
Tambin vale la pena mencionar que se esta desarrollando: PEARL-PLC working group. Un ejemplo del rendimiento de Pearl se muestra en la siguiente tabla:

A continuacin se da una descripcin general de las caractersticas del lenguaje que Pearl. Ya que como se puede ver se tienen diferentes versiones de Pearl, en la que para cada una existen algunas diferencias. Pearl es un lenguaje estructurado orientado a bloques. Es un lenguaje aplicable para resolver problemas algortmicos complejos, integra el manejo de interrupciones y la sincronizacin de objetos. As como un bien formulado concepto de multitareas.

Modularidad
Su estructura modular sienta las bases para un seguro y eficiente desarrollo de programas siendo fciles de dar mantenimiento. Un modulo esta contenido de unidades de compilacin, pero no precisamente de ejecucin. La conexin entre mdulos esta dada por declaraciones globales.

Portabilidad
Un modulo en Pearl esta separado en dos partes. Uno comienza con la Parte del Sistema definiendo los recursos del sistema usados en una manera dependiente del sistema. Y el siguiente es Parte del Problema este es independiente del sistema y solo hace uso de los servicios del sistema, los cuales estn definidos ya sea en el propio modulo o en otros. Es decir System-Part tiene que ver con el hardware y Problem-Part tiene que ver con los procedimientos, tareas, etc.

Control de estructuras

Condicionales
Repeticion

IF-THEN-ELSE-FIN CASE-ALT-...-ALT-OUT-FIN FOR-REPEAT-END WHILE-REPEAT-END

Tipos Basicos de datos

Tipos compuestos de datos

fixed point, floating point characters, character strings bit variables, bit strings

Funciones, procedimientos (paso de parmetros por valor, va IDENT y como apuntador) Tambin se encuentran los tipos CLOCK (tiempo), DURATION (longitud del tiempo), SEMA (sincronizacin de variables)

estructuras (Struct) arreglos de varias dimensiones sin una definicion del usuario para los limites.

Sentencias tiempo real


Las tareas pueden ser activadas ya sea por un disparador de tiempo as como por un disparador de eventos.

-dado un periodo (Ej.: ALL 0.00005 SEC ACTIVATE controller), -con referencia a un tiempo absoluto(Ej.: AT 12:00 ACTIVATE testalarm), - en la ocurrencia de un evento(Ej.: WHEN sensorchange ACTIVATE actuator). -en su combinacion(Ej.: AT 12:00 ALL 3 MIN UNTIL 13:00 ACTIVATE testalarm), (WHEN sensorchange AFTER 0.5 SEC ACTIVATE actuator).

Sincronizacin

Las tareas pueden ser sincronizadas en objetos compartidos usando semforos y variables bolt:

-Los Semforos pueden estar contando las peticiones y desbloqueos de operaciones. Tambin para evitar el bloqueo en semforos se incluye la operacin try para saber el estado del semforo.

Ejemplo: TEST: TASK; IF TRY SEMVAR THEN RELEASE SEMVAR; !release semaphore again ELSE FAILED=FAILED+1; FIN; AFTER 10 SEC ACTIVATE TEST; ! self activation after 10 seconds END;

Sincronizacin
- Las variables Bolt permiten mltiples accesos de lectura con accesos concurrente de escritura. Su uso se da por ejemplo para el manejo de las Bases de datos.

READER1: TASK; DCL L1 CHAR(255); !ENTER allows, that all other tasks with ENTER !can continue to run ENTER BOLTVAR; L1=A; LEAVE BOLTVAR; END; WRITER1: TASK; DCL S1 CHAR(255); !After a RESERVE a task only continues to run if no other !reader or writer has executed an ENTER/RESERVE. RESERVE BOLTVAR; A=S1; FREE BOLTVAR; END; WRITER2: TASK; DCL S2 CHAR(255); RESERVE BOLTVAR; A=S2; FREE BOLTVAR; END;

Orientado a tareas y su calendarizacin


Task Construct: No Explicit Task Delay-Management

Controller1: TASK ; TAKE Measurement FROM Sensor1 ; PID (Measurement, . . . ,ControlSignal) ; SEND ControlSignal TO Actuator2 ; END;

Explicit Task-Scheduling of Periodic Tasks:

ALL Ta ACTIVATE Controller1 PRIO 10 ;

Sporadic Tasks:
WHEN ProcessEvent ACTIVATE SequenceContoller ; )

Con respecto a este tema se centrara en la versin Specification Pearl, que es la que mayor impacto ha tenido en las metodologas para el Diseo. Specification Pearl es un lenguaje de descripcin y de especificacin de la arquitectura en el co-diseo HW/SW. Tambin da soporte para los sistemas distribuidos, embebidos y sus aplicaciones. Algunos de sus principios son: -construcciones para la descripcin de configuraciones HW -construcciones para la descripcin de configuraciones SW -construcciones para la especificacion de comunicaciones -contrucciones para reconfiguraciones dinamicas

HW Architecture Design
La especificacion para la arquitectura HW en Spearl esta compuesta de diferentes secciones, y cada una de estas describe diferentes capas asociadas, principalmente se encuentran: STATION DIVISION, CONFIGURATION DIVISION, NET DIVISION and SYSTEM DIVISION
STATION DIVISION La capa mas alta representa a los nodos de procesamientos (multiprocesadores), y debido a que el procesamiento en estos nodos se denomina Station, es por eso la denominacin a esta capa de Station Division. En esta se tienen 4 tipos basicos de Stations: -Basic: un nodo de procesamiento general -Kernel: debido al procesamiento asimetrico se tiene un RTOS -Task: Para las tareas del usuario -Composite: una arquitectura jerarquica, se sompone de substations.

Actualmente tambin se esta incorporando a los tipos bsicos el concepto de Peripheral, desde el uso de sistemas empotrados en tarjetas.

HW Architecture Design
CONFIGURATION DIVISION Esta capa se ve envuelta con la arquitectura del software. En la que se tiene que ver la asociacin entre Stations (nodos) y los colecciones(son la unidad mas grande de SW que se puede reconocer, compuesta por varios mdulos.) Tambin aqu se observa como los mdulos se componen de TASKS (tareas) que se comunican a travs de PORTS (puertos). NET DIVISION En esta se describen las conexiones fsicas entre Stations, por sus nombres lgicos. SYSTEM DIVISION Este encapsula las descripciones HW y sus nombres asignados. La descripcin se hace a partir de la STATION DIVISION y NET DIVISION. PERIPHERAL DIVISION Aqu se dan detalles de los perifricos, que son adheridos al sistema, son identificados por nombres, y sobre todo se usan mas cuando se habla de un sistema embebido.

HW Architecture Design
Una descripcin grafica en Spearl de los conceptos anteriormente mencionados es:

HW Architecture Design
Una descripcin de lo anteriormente citado visto en forma BNF es:

SW Architecture Design

La especificacion para la arquitectura SW en Spearl esta compuesta de diferentes secciones, y cada una de estas describe diferentes capas asociadas, principalmente se encuentran: COLLECTION LAYER, TASK lAYER" and"TSTD LAYER".

COLLECTION LAYER Collections, la parte mas grande de SW que puede estar asociada con una Station, Collections se componen a su vez de mdulos y estos de tareas. Operan con las principales actividades y sus interconexiones. TASK LAYER Estas desarrollan las actividades de las colecciones, es por eso que son diseadas en una capa separada. En estas se asignan tiempos limites para su ejecucin as como condiciones de disparo. TSTD LAYER Time State Transition Diagram, en ella se permite la especificacin de cuadros de tiempo y tiempos de ejecucin para cada una de las actividades atmicas. Pueden ser vistos como autmatas de estado finito en el tiempo

SW Architecture Design
Una descripcin grafica en Spearl de los conceptos anteriormente mencionados es:

SW Architecture Design
Una descripcin de lo anteriormente citado visto en forma BNF es:

Algunas de las areas donde ha tenido impacto Pearl es: -Medical Systems -Industrial Cranes -Washing Machine Production -Drive Control, Mechatronics -Robotics

Las tendencias que se tienen para este lenguaje son: -Fiabilidad- / Dependecia - / Seguridad- orientado Software para Sistemas embebidos -Evitar y remover fallas: Verificabilidad -SW tolerancia a fallos*: SW - Diversidad -Construnccion de expresiones Real-Time: HI-PEARL -PLC-Systems: Software-PLC, incl. Fuzzy-Control

Un ejemplo concreto sobre Pearl 90 se puede ver en la siguiente figura:

Un ejemplo concreto en Spearl es: El cruce del ferrocarril: En este ejemplo se tienen dos vas, y hay dos sensores S1 y S2 cuidando el cruce del ferrocarril en cada uno de los lados del cruce. Las barreras del cruce se abren y se cierran de acuerdo a lo recibido por las seales.

Restricciones: -Seguridad: Si el tren esta cruzando, la barrera debe estar cerrada. -Sensibilidad: las barreras deben estar abierta la mayor parte del tiempo. Precondiciones: -Un tren no llegara antes de que el previo se haya ido. - Si el tren llega por la izq. se va por la der. y viceversa. -dmin es el tiempo del tren para llegar al cruce despues de que el sensor lo detecta -dopen, dclose son los tiempo mximos de estar abierto y cerrado.

Solucin Algortmica:

Solucin como un sistema asimtrico de 3 procesadores:

Un poco de codigo:

Como se puede observar Pearl y en especifico hablando de Spearl ofrece muchas ventajas para el modelado de la Arquitectura HW/SW necesario en los STR, igualmente sus aplicaciones van desde pequeos sistemas empotrados hasta grandes sistemas con multiprocesamiento y/o distribuidos. Su historia y las diferentes versiones que hay respaldan la forma de su modelado, incluso herramientas CASE y UML se han apegado a SPearl debido a su facilidad de manejo y compatibilidad con los diagramas.

Es cierto que como muchos otros tiene sus limitantes vindolo desde una perspectiva general, ya que no incluye el modelo para la ingeniera de requisitos. O desde una perspectiva interna al no incluir el paradigma orientado a objetos (ya que como se menciono es un lenguaje originalmente orientado a bloques, aunque se puede dar solucin agregando la extensin ObjectPearl).
Sin embargo aun as se puede decir que SPearl es un lenguaje muy completo, cumpliendo sus objetivos (modularidad, portabilidad, sentencias tiempo real, etc). Y evolucionando a favor de un fcil manejo para los programadores.

You might also like