next up previous contents
Next: Schnittstelle zur Hardware Up: Programm xpendulum Previous: Programm xpendulum

Grundlegender Aufbau

  Das Programm xpendulum besteht aus zwei getrennten Modulen. Nach dem Programmstart wird die grafische Oberfläche unter dem X-Window System angezeigt. Hier können die Parameter für die Simulation bzw. Regelung eingestellt und die gesamte Simulation bzw. Regelung gesteuert werden. Die Anzeige der Parameter, die grafische Darstellung des Pendelsystems und das Benutzerinterface stellen einen Prozeß dar.

Wenn nun eine Simulation bzw. die Regelung der Hardware gestartet wird, wird mit der Systemfunktion fork() ein zweiter Prozeß erzeugt, der die ganze Simulation bzw. Regelung übernimmt. Im Prinzip ist der zweite Prozeß nur ein sogenannter Thread (Task) des Hauptprogramms. Da die Threadfunktionen unter Linux noch nicht geeignet implementiert waren, werden die beiden Threads in dem Programm als eigenständige Prozesse realisiert.

   figure609
Abbildung: Server- und Clientprozeß

Das System mit den zwei Prozessen ist in Abbildung gif dargestellt. Der Serverprozeß, ist dabei nur für das Benutzerinterface und die grafische Ausgabe verantwortlich. Seine Rechenzeit hängt direkt von der Angabe beim Parameter Refresh Rate, siehe Kap. gif, und der Geschwindigkeit des X-Servers ab.

Der Clientprozeß (zweiter Prozeß) berechnet fortwährend die Steuerbefehle für die Regelung und die Simulationswerte bei der Simulation. Die Angabe bei Calculation gibt nur an, in welcher Zeitspanne Neuberechnungen zu erfolgen haben. Unabhängig davon ist die Rechenzeit des Clientprozesses immer maximal. Wohingegen der Server wirklich nur Rechenzeit bei der grafischen Ausgabe benötigt.

Die Verbindung der beiden Prozesse geschieht durch einen gemeinsam genutzten Speicherbereich. Dazu wird das im UNIX System-V definierte Shared Memory System eingesetzt. Auf der Grundlage diese Speicherbereichs ist ein Nachrichtensystem implementiert, welches den beiden Prozessen ermöglicht, Nachrichten, d.h. Befehle mit Parametern, auszutauschen. Durch getrennte Speicherbereiche für jede Richtung wird die Kommunikation in beide Richtungen gleichzeitig ermöglicht (vom Client zum Server und umgekehrt). Die Synchronisation des Zugriffs von Client und Server auf den gemeinsamen Speicherbereich erfolgt durch das Konzept der Semaphore. Dies bedeutet, daß jeweils nur ein Prozeß auf den Speicherbereich zugreifen kann. Dadurch wird die Datenkonsistenz sichergestellt, d.h. der empfangende Prozeß darf nur Daten lesen, die vollständig sind, und der sendende Prozeß nur Daten schreiben, wenn nicht gerade der lesende Prozeß Daten ausliest.

Der Client schickt zum Server hauptsächlich die neuen Parameter, die er berechnet bzw. gemessen hat, wohingegen der Server zum Client Befehle schickt, die neue Parameter setzen, die z.B. durch den Benutzer verändert wurden.


next up previous contents
Next: Schnittstelle zur Hardware Up: Programm xpendulum Previous: Programm xpendulum

Marius Heuler
Tue Jan 7 12:11:50 MET 1997