Process and Programmieren von
Experiment Echtzeit
Automation PEARL90 Anwendungen
Realtime Relativ
Language Leicht

Warum PEARL

Das außerordentliche Anwachsen der Software-Kosten erzwingt den Übergang von der Assemblerprogrammierung zur strukturierten Programmierung in einer höheren Echtzeit-Programmiersprache. PEARL ist weltweit die einzige anwendungsorientierte höhere Echtzeit-Programmiersprache. Unabhängige Probleme können als eigenständige Prozesse (Tasks) programmiert und parallel exekutiert werden - eine wesentliche Erleichterung bei der Realisierung automatisierungstechnischer Probleme.

Ein modernes Konzept

Die Anfänge von PEARL liegen in den 70er Jahren. Ziel der vom BMFT geförderten Entwicklung war die Definition einer Sprache, die die wichtigsten Elemente der gängigen Hochsprachen mit einem klaren Realzeit- und Tasking-Konzept vereinigt. UH-PEARL ist eine Implementierung der Sprache auf Mikroprozessorsystemen, deren Entwicklung Anfang der 80er Jahre an der Universität Hannover unter Leitung von Prof. Dr.-Ing. W. Gerth begann.

Leicht erlernbar

PEARL ist eine leicht erlernbare Programmiersprache insbesondere zur Lösung echtzeitorientierter Probleme. Sie ist, anders als zum Beispiel Prozeß-FORTRAN, eine Sprache aus einem Guß, die direkt integrierte Sprachelemente für Prozeß-E/A und zeitliche Aufgabeneinplanung besitzt. Damit ist ein hohes Maß an Portabilität gegeben.

Universell einsetzbar

PEARL ist eine blockorientierte, strukturierte Sprache. Sie ist universell auch zur Lösung komplexer, algorithmischer Probleme geeignet. PEARL stellt Sprachelemente zur Interrupt-Behandlung und zur synchronisierten Kommunikation zwischen Tasks zur Verfügung.

Spracheigenschaften

Ein ausgearbeitetes Multitasking-Konzept, die Unterstützung aller gängigen algorithmischen Kontrollstrukturen sowie leicht anwendbare Echtzeit-Sprachelemente sind wesentliche Merkmale des UH-PEARL. Bei der Entwicklung der Sprache wurde besonderer Wert auf gute Selbstdokumentation und einfache, klare Formulierung des Echtzeit- und Multitasking-Verhaltens gelegt. Anders als z.B. Ada ist Pearl von anwendungsorientierten Entwicklern in kurzer Zeit erlern- und wirkungsvoll einsetzbar.

Modularität

Die Voraussetzung für sichere und effiziente Programmentwicklung und Wartung bei größeren Projekten schafft der modulare Aufbau von PEARL-Programmen.

Die Unterteilung eines Moduls in einen hardwareabhängigen SYSTEM-Teil, in dem die Verbindung zwischen den PEARL-Datenstationen und der Umwelt definiert wird, und dem hardwareunabhängigen PROBLEM-Teil erleichtert Portierungen von PEARL-Programmen in eine andere Hardwareumgebung.

Die Aufgliederung eines Moduls in hierarchische Blöcke mit Kapselung lokaler Daten bietet einen problemangepaßten Programmaufbau. Quasi-parallele Abarbeitung der Tasks und wiedereintrittsfeste wie auch rekursive Prozeduren ermöglichen die einfache Aufteilung eines Problems in unabhängige Prozesse.

Datentypen

Neben den auch in anderen Sprachen üblichen Grunddatentypen FIXED, FLOAT, CHAR stellt Pearl außerdem CLOCK (Uhrzeit), DURATION (Zeitdauer), SEMA (Synchronisationsvariable) und BIT (Bitkette) zur Verfügung. Neue Datentypen können durch problemspezifisches Zusammenfassen von Elementen verschiedener Grunddatentypen zu Verbunden (STRUCT) und durch eigene Typ-Vereinbarungen (TYPE) vereinbart werden. Zusammen mit Zeigervariablen ( REF) erlaubt dies eine fein abgestufte Modularisierung der Programme.

Normung

PEARL ist seit 1981 in DIN 66 253 Teil 1 (Basic PEARL} und seit 1982 in DIN 66 253 Teil 2 {Full PEARL} genormt und hat sich bereits in über 200 Groß- und vielen hundert Kleinprojekten bewährt.

Echtzeit-Anweisungen

Die einfache zeitliche Organisation des Programmablaufes

AFTER 10 SEC  ALL 4 SEC  UNTIL 17:00:00  ACTIVATE Regler PRIO 6;
(Zyklische Durchführung der Task Regler bis zu einer festen Uhrzeit)

sowie die integrierte Interruptverarbeitung

WHEN Feuer ACTIVATE Loesch;
(Einplanung der Task Loesch auf den Interrupt Feuer)

erfolgen durch selbstdokumentierende Anweisungen.

Ein-Ausgabe-Anweisungen

Ein-/Ausgaben erfolgen über stets identische Pearl-Datenstationen. Rechnerspezifische Kontroll- und Konvertierungsfunktionen werden über Vereinbarungen nur im SYSTEM-Teil bestimmt. Insbesondere Prozeß-E/A

SEND Aus TO Motor ;
TAKE belegt FROM Lichtschranke ;

und dateiorientierte, alphanumerische E/A

PUT Temperatur TO Protokolldatei;
GET Sollhoehe FROM Bedienkonsole ;

können so leicht an unterschiedliche Gerätekonfigurationen angepaßt werden.

ROM-Code

Der PEARL-Compiler erzeugt optional ROM-fähigen Code und erlaubt so die Programmierung abgeschlossener Systeme ohne Massenspeicher. Beim Start des Systems werden nur die ggf. mit Initialwerten besetzten Variablen im RAM angelegt; der Programmcode wird aus dem ROM heraus exekutiert.

Verfügbarkeit

IEP unterstützt den Einsatz von UH-PEARL auf allen Rechnern unter dem Betriebssystem RTOS-UH.
Zielprozessoren sind Motorola MC68xxx und PowerPC. Zielsysteme gibt es in allen Leistungsklassen, von der low-end 680xx-Reihe mit den 683xx-Controllern über das komplette VMEbus-Spektrum bis zu Multiprozessor-PPC-Workstations.
Der UH-PEARL-Compiler kann auch als Cross-Compiler eingesetzt werden. Compilerversionen für z.B. Windows oder UNIX etc. sind verfügbar; der erzeugte Code kann auf jedem Rechner unter RTOS-UH ausgeführt werden.

Hier finden Sie weiterführende Informationen zu PEARL90, unter anderem eine kurze Einführung, eine weiterführende Literaturliste sowie eine FAQ.