Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
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 151<br />
griff auf den Vorgängerzyklus angezeigt wird. Dieser sollte nach Möglichkeit erkannt <strong>und</strong> lokalisiert<br />
werden. Geschieht <strong>die</strong>s nicht, wird durch <strong>die</strong> wartenden Zugriffe eine Verklemmung<br />
provoziert: Trifft der Anfragestrom auf eine Sequenz, <strong>die</strong> bereits aktiv ist, wartet er auf das Ergebnis<br />
der dort laufenden Aktualisierung. Wird da<strong>für</strong> jedoch <strong>die</strong> Antwort der laufenden Anfrage<br />
benötigt, kommt der Zyklus zu keinem Ende <strong>und</strong> der Prozeß hängt.<br />
Hier ergeben sich nun entscheidende Unterschiede zwischen einem synchronen <strong>und</strong> einem<br />
asynchronen Kontrollfluß. Wird das Modul ausschließlich synchron angesteuert, d.h. alle Relationen<br />
sind synchron spezifiziert <strong>und</strong> der komplette Zyklus läuft in einem einzigen Thread ab,<br />
kann es bei regulärem Netzdesign nicht vorkommen, daß ein Funktor mehrfach mit ÐÐ aufgerufen,<br />
oder daß <strong>für</strong> eine Sequenz während einer bereits laufenden ØØ -Methode ein erneuter<br />
Zugriff mit ØØ gestartet wird. Hat der <strong>Daten</strong>flußgraph jedoch einen Rückkopplungszweig<br />
ohne den obligatorischen Rückgriff auf den vorangegangenen Zyklus, tritt genau einer <strong>die</strong>ser<br />
beiden Fälle ein. Dies kann lokal leicht erkannt werden, <strong>und</strong> zu einer entsprechenden Ausnahmebehandlung<br />
führen.<br />
Können im Modul jedoch auch asynchrone Programmzweige vorkommen, ist <strong>die</strong>ses Kriterium<br />
nicht geeignet, einen Konflikt zu erkennen, da auch im regulären Betrieb, wie Abb. 6.40<br />
zeigt, parallele Mehrfachaufrufe <strong>die</strong>ser Methoden auftreten. Lokal ist dabei nicht zu unterscheiden,<br />
ob wartende Aufrufe durch einen noch aktiven Thread beantwortet werden können, oder<br />
ob durch das Anhalten eines Ausführungszweiges, um auf ein Datum zu warten, genau <strong>die</strong>s verhindert<br />
wird. Hier können nur weitergehende Kontrollmechanismen, wie sie in Abschnitt 6.4.5<br />
beschrieben wurden, zum Erkennen von Fehlern im Netzdesign beitragen. Um im regulären<br />
Betrieb den Overhead aufwendiger Tests zu vermeiden, bietet es sich beispielsweise an, zu Beginn<br />
des Programms <strong>und</strong> nach jeder Änderung der Netztopologie einen Testzyklus — synchron<br />
oder durch einen Agenten überwacht — zu starten. Ein solcher Mechanismus kann leicht in <strong>die</strong><br />
Sequenz- <strong>und</strong> Funktorobjekte integriert werden.<br />
Zugriffe auf <strong>die</strong> Eingangsdaten des Moduls<br />
Anders als bei der datengetriebenen Steuerung, wo <strong>die</strong> Zykluszeit direkt von den (dominanten)<br />
Eingangsdaten abhängt (Ø Ø Ë ÅÁÒ ), wird in anfragegetriebenen Modulen <strong>die</strong> Zykluszeit<br />
i.d.R. durch <strong>die</strong> anfragende Instanz vorgegeben, ohne daß dabei <strong>die</strong> durch <strong>die</strong> Eingangssensoren<br />
vorgegebenen <strong>Daten</strong>meßzeiten bekannt wären. Zeittolerante <strong>Daten</strong>zugriffe, wie sie in<br />
Abschnitt 6.4.4 diskutiert wurden, spielen daher <strong>für</strong> <strong>die</strong> Zugriffe auf <strong>die</strong> Eingangsdaten des<br />
Moduls in <strong>die</strong>sem Steuerungsmodell eine wichtige Rolle, selbst wenn keine unsynchronisierten<br />
Eingangsdaten zu verarbeiten sind.<br />
Welches Zugriffsverfahren über <strong>die</strong> Relationen Ø ℄ , Ø Ø℄ , Ø Ø , Ø Ø <strong>und</strong> Ø <br />
im einzelnen auszuwählen ist, muß sich auch hier an der Netztopologie, den Eigenschaften der<br />
externen Sensoren sowie an Kriterien, wie Zugriffskonsistenz, <strong>Daten</strong>verzögerung, Wartezeit<br />
<strong>und</strong> Anwendbarkeit orientieren. Da <strong>die</strong>se Problematik bereits ausführlich in Abschnitt 6.4.4<br />
diskutiert wurde, soll an <strong>die</strong>ser Stelle nur kurz auf <strong>die</strong> verschiedenen Zugriffsrelationen eingegangen<br />
werden.<br />
Ø ℄ liefert den neuesten in der Sequenz verfügbaren Wert <strong>und</strong> stellt damit <strong>die</strong> einfachste<br />
Zugriffsmethode dar. Aufgr<strong>und</strong> des fehlenden Zeitbezugs ist <strong>die</strong>se Relation allerdings relativ<br />
ungeeignet <strong>für</strong> <strong>Daten</strong>flußgraphen, in denen mehrere Funktoren auf ein Eingangsdatum zugreifen.<br />
Wird zwischen zwei Zugriffen <strong>die</strong> Sequenz aktualisiert, rechnen <strong>die</strong> Funktoren mit in-<br />
Ø