Fortgeschrittenen-Praktikum

Realzeitsysteme

SS 1995 - WS 1996/97

Prof. R. Wilhelm - Betreuer: Christian Ferdinand




Einleitung

Im Sommersemester 1995 hielt Professor Reinhard Wilhelm an der Universität Saarbrücken die Vorlesung ``Realzeitsysteme''. Während den ersten Stunden entstand die Idee, ein typisches Realzeitsystem zu implementieren. Nikolaus Gerteis, Michael Rumpf und Roland Schlosser entschlossen sich, diese Implementierung im Rahmen eines Fortgeschrittenenpraktikums (Fopra) zu realisieren. Es sollte ein kleines Fahrzeug gebaut werden, welches mit einer Rechnersteuerung versehen, eine vorgegebene Streckenfolge möglichst exakt nachfährt.

Aufgabenstellung

  1. Konstruiere ein Fahrzeug, das einen vorzugebenden Weg nachfährt.
  2. Die Kosten für das Fahrzeug sind möglichst gering.
  3. Das Fahrzeug wird über zwei nicht mechanisch verbundene Elektromotoren angetrieben.
  4. Zur Steuerung des Fahrzeugs wird ein mini166 Microcontrollerboard verwendet.
  5. Die Eingabe des nachzufahrenden Weges ist komfortabel (GUI).
  6. Das Fahrzeug fährt schnell (im Durchschnitt 5km/h) und ist robust gegenüber Unebenheiten in der Fahrbahn.
  7. Die Abweichung vom vorgegebenen Weg ist gering ( 1cm pro zurückgelegtem Meter).
  8. Die Dokumentation beschreibt die Realisation des Fahrzeugs, die Steuerungssoftware und die Benutzung.
  9. Das Fahrzeug und die Steuerungssoftware wird in einem Vortrag vorgestellt.

Was sind Real- (Echt-)zeitsysteme?

In einem Echtzeitsystem werden an das darin integrierte Computersystem besondere Anforderungen, die Echtzeitanforderungen, gestellt. Typischerweise besitzt der Computer eine steuernde Funktion und bestimmte Reaktionen müssen bis zu einem vorgegebenem Zeitpunkt - der Deadline - erfolgt sein, da ansonsten ein korrektes Funktionieren des Gesamtsystems nicht mehr gewährleistet werden kann. Ein elektronisches ABS-System (wie man es von einem PKW kennt)ist ein einfaches Beispiel für ein Echtzeitsystem. Der Computer (Microchip ), der das Öffnen und Schliessen der Bremsen steuert, darf keine ``Denkpausen'' einlegen, ein Unfall wäre eine Folge.

Ein weiteres Beispiel ist die gesamte Steuerung eines modernen Linienflugzeuges (z.B. Airbus). Hier muß das Computersystem auf eine große Anzahl verschiedener Eingangsgrössen zuverlässig reagieren und darf sich, wie man unschwer einsieht, keine Verspätungen (Verletzung der Echtzeitanforderungen) erlauben. Die enorme Komplexität solcher Systeme macht es schwer, Aussagen im Vorhinein zu treffen, ob eine Steuerung auch wirklich ihre Aufgabe korrekt erfüllt. Auf der anderen Seite stehen enorme Sicherheitsanforderungen. Am deutlichsten wird dies bei Systemen, wie etwa einem Kernkraftwerk, einer Nuklearrakete oder einer chemische Fabrik. Also ist es in vielen Fällen unabdingbar, die Korrektheit eben auch des Verhaltens von Systemen zu beweisen. Hauptgegenstand des Forschungsgebietes Realzeitsysteme ist nun das Studieren von Systemen unter dem Aspekt ihres zeitlichen Verhaltens. Man möchte garantieren können, daß ein System unter allen Umständen vorgegebene (Echt-) Zeitbedingungen nicht verletzt. In den meißten Fällen bedeutet dies, daß eine Berechnung zu einem vorher bestimmten Zeitpunkt abgeschlossen sein muß.

Neben den extrem sicherheitskritischen Realzeitsystemen des letzten Abschnittes (welche man als ``harte'' Echtzeitsysteme bezeichnet) gibt es die sogenannten weichen Realzeitsysteme. Im Gegensatz zu Ersteren sind bei diesen gewisse Verspätungen, etwa bei kurzzeitiger Spitzenbelastung, erlaubt. Aber auch hier ergibt sich ein ähnliches Problem bei der Vorhersage: es gibt Verspätungen, die nicht überschritten werden dürfen.

Ein Hauptproblem bei der Analyse von Echtzeitsystemen ist, einzelne Komponenten des Systems nur schwer für sich getrennt betrachten zu können. Eine Echtzeitanforderung betrifft immer ein System als Ganzes. Eine einzelne Komponente, welche eine Verspätung bewirkt, kann eine Katastrophe auslösen, obwohl alle anderen Komponenten ``richtig programmiert'' waren. So ist es unter Umständen wichtig, daß der Programmierer, der in einer höheren Programmiersprache programmiert, weiß, wie der Compiler in Maschinencode übersetzt, denn meißt erst über dem Maschinencode können Laufzeitaussagen getroffen werden.

Mittlerweile gibt es spezielle Realzeitprogammiersprachen(Ada, Pearl), Realzeitbetriebssysteme und Analysewerkzeuge, die dem Entwickler und Programmierer von Realzeitsystemen bei der Arbeit helfen.


Installation

Folgende Voraussetzungen müssen geschaffen werden, damit alle Projekte kompiliert werden können:

Natürlich können, falls LEDA und die 80C166 Entwicklungsumgebung noch nicht installiert sind, die beiden Pakete direkt im fopra Verzeichnis installiert werden, wobei LEDA sich jedoch immer mit der Versionsnummer im Verzeichnisnamen installiert, so daß eine Umbenennung des Verseichnisses in "LEDA" notwendig ist.

Zum vollständigen Erzeugen aller Teilprojekte ist lediglich im fopra-Verzeichnis make aufzurufen. Dabei wird vorerst nur der Editor erzeugt. Die Steuerungssoftware wird erst vor dem Übertragen der Streckeninformation an den Steuerungsrechner kompiliert, weil die Streckendaten als Konstanten in Form einer Header-Datei in das Steuerungsprogramm eingebunden werden.


Teilnehmer


Roland Schlosser

Roland Schlosser

Am Galgenberg 22
66564 Ottweiler
Phone 06824/5507
Email schlosse@cs.uni-sb.de


Nikolaus Gerteis

Nikolaus Gerteis

St.Ingberter Str. 41
66123 Saarbrücken
Telefon 0681/635461
Email nige@wurzelausix.CS.Uni-SB.DE


Michael Rumpf

Michael Rumpf

Moltkestrasse 1
66117 Saarbrücken
Phone 0681/52035
FAX 0681/52445
Email miru@stud.uni-sb.de
WWW http://fsinfo.cs.uni-sb.de/~miru