16.08.2013 Aufrufe

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

6.4. KONTROLLFLUSS IN FUNKTIONALEN DATENNETZEN 129<br />

Wird nun <strong>die</strong> Sequenz Ë ebenfalls mit der <strong>Daten</strong>zeit Ø aktualisiert, wiederholt sich der<br />

Aufruf von ÂÃ. Da jetzt alle Eingangsdaten zur Verfügung stehen, kann der Funktor seine<br />

intern gekapselten Operationen in der Ó -Methode ausführen <strong>und</strong> anschließend in ÔÓ×Ø <strong>die</strong><br />

von ihm berechneten Ausgangsdaten in <strong>die</strong> entsprechenden Sequenzen schreiben. Dies geschieht<br />

mit der ×Ø -Methode nacheinander <strong>für</strong> alle Ausgangsdaten, wobei sich <strong>für</strong> jede Ausgangssequenz<br />

das hier beschriebene Prozedere wiederholt, d.h. <strong>die</strong> Sequenz bekommt <strong>die</strong> Kontrolle<br />

übergeben, ruft eventuell vorhandene Folgefunktoren auf, wartet auf deren Abarbeitung<br />

<strong>und</strong> gibt <strong>die</strong> Kontrolle an ÂÃ zurück. Sind alle Ausgangsdatensequenzen aktualisiert, gibt der<br />

Funktor <strong>die</strong> Kontrolle an Ë zurück. Sind weitere Folgefunktoren vorhanden, werden <strong>die</strong>se<br />

in der gleichen Form abgearbeitet, <strong>und</strong> schließlich wird <strong>die</strong> Aktualisierung der Sequenz Ë<br />

beendet.<br />

In <strong>die</strong>sem Diagramm wird davon ausgegangen, daß Ë das erste Eingangsdatum von ÂÃ<br />

ist <strong>und</strong> vor Ë aktualisiert wird. Es läßt sich jedoch leicht zeigen, daß der Mechanismus ähnlich<br />

arbeitet, wenn <strong>die</strong> Eingabeparameter vertauscht werden, <strong>die</strong> Aktualisierung der Sequenzen in<br />

umgekehrter Reihenfolge erfolgt oder ein Funktor beliebig viele Eingangsdaten besitzt. Auch<br />

ein Verschieben des Funktors ÂÃ in den Listen der von Ë <strong>und</strong> Ë zu triggernden Funktionen<br />

ÔÒ ändert nichts Gr<strong>und</strong>sätzliches an dem aufgezeigten Kontrollfluß.<br />

Es ist ebenfalls offensichtlich, daß Funktoren ohne Ausgangsdaten wie Ë ohne<br />

Probleme in <strong>die</strong>sen Aufrufmechanismus integriert werden können. Bei ihnen entfällt lediglich<br />

<strong>die</strong> ÔÓ×Ø -Methode des Funktoraufrufs. Und schließlich fügen sich auch Funktoren, <strong>die</strong> wie À<br />

ein aktuelles Datum zusammen mit älteren Sequenzwerten der gleichen Sequenz verarbeiten:<br />

ËÀ À Ë <br />

, ohne weiteres in den Mechanismus ein. Im Rahmen der Aktualisierung von<br />

Ë wird À aufgerufen, <strong>und</strong>, da alle Eingangsdaten zur Verfügung stehen, kann <strong>die</strong>ser sofort<br />

seine Arbeit aufnehmen. Zu beachten ist dabei, daß nach Abschnitt 5.1.2 <strong>die</strong> <strong>Daten</strong>meßzeit des<br />

Ausgangsdatums ËÀ zwar standardmäßig das Intervall über alle Eingangsmeßintervalle umfaßt<br />

(z.B. Ë À Ë Ë ℄), <strong>für</strong> Gültigkeitstests nachfolgender Funktoren aber nur der<br />

Endzeitpunkt <strong>die</strong>ses Intervalls herangezogen wird: Ø Ë À Ë Ø Ë .<br />

Asynchrone Ablaufsteuerung<br />

Kennzeichen einer asynchronen Ablaufsteuerung ist, daß der Kontrollfluß sich an bestimmten<br />

Punkten im Programm bzw. im <strong>Daten</strong>flußgraphen teilt. Verschiedene Programmzweige werden<br />

dadurch nebenläufig bearbeitet. Darüber hinaus müssen <strong>die</strong> <strong>Daten</strong>- oder Funktionsobjekte nicht<br />

auf <strong>die</strong> Beendigung der von ihnen in anderen Objekten gestarteten Aktionen warten, bevor <strong>die</strong><br />

eigene Methode abgeschlossen werden kann, d.h. ein Funktor kann so z.B. bereits den nächsten<br />

Zyklus beginnen, während nachfolgende Funktoren noch <strong>die</strong> <strong>Daten</strong> eines vorhergehenden<br />

Zyklus bearbeiten.<br />

Bei der datengetriebenen Modulsteuerung lassen sich mit Hilfe der folgenden Relationen<br />

asynchrone Programmzweige spezifizieren: ×Ø kennzeichnet das Setzen eines neuen Sequenzwert<br />

in einem eigenen Programmfaden <strong>und</strong> ØÖ sorgt <strong>für</strong> den Aufruf eines nachfolgenden<br />

Funktors — ebenfalls in einem eigenen Programmfaden. Einfache <strong>Daten</strong>zugriffe mit<br />

Ø <br />

Ø <strong>und</strong> Ø℄ werden nicht asynchron definiert, da sie nur einen Wert abfragen, <strong>und</strong> <strong>die</strong><br />

Kontrolle sofort zum aufrufenden Funktor zurückkehrt — eine Parallelisierung ist an <strong>die</strong>ser<br />

Stelle nicht notwendig.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!