09.06.2013 Aufrufe

Entwicklung eines Kontrollsystems für die Strahllagemessung am ...

Entwicklung eines Kontrollsystems für die Strahllagemessung am ...

Entwicklung eines Kontrollsystems für die Strahllagemessung am ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

38 5 DAS KLASSENKONZEPT<br />

sehr einfach, denn es ist nicht mehr nötig, kleinere Fehler abzufangen. Nur<br />

beim Auftreten schwerer Fehler wird <strong>die</strong> aufrufende Funktion benachrichtigt<br />

und kann so geeignete Maßnahmen ergreifen.<br />

D<strong>am</strong>it nicht genug, kann der Benutzer auch <strong>die</strong> Standard-Fehlerprozedur deaktivieren<br />

und eine eigene Fehlerbehandlungsroutine installieren, ohne <strong>die</strong><br />

Busklasse ändern zu müssen. Diese wird dann bei jedem Übertragungsfehler<br />

anstatt der Standardfehlerfunktion aufgerufen und erlaubt, flexibel auf<br />

bestimmte Fehler zu reagieren, ohne direkt <strong>die</strong> ges<strong>am</strong>te Busklasse ändern<br />

zu müssen. Die eigene Fehlerroutine muß dabei der Busklasse mitteilen, wie<br />

auf den Fehler reagiert werden soll: Entweder eine Neuübertragung auslösen<br />

(RETRY), den Fehler ignorieren und fortfahren (IGNORE) oder aber <strong>die</strong> aufrufende<br />

Routine beenden (ABORT).<br />

Neben den Routinen zum Schreiben und Lesen von Daten und zur Fehlerbehandlung<br />

existieren noch weitere Routinen, <strong>die</strong> den Umgang mit einem<br />

Feldbus erleichtern. So überprüft z. B. <strong>die</strong> Routine IsValid, ob eine übergebene<br />

Busadresse auch eine gültige Busadresse darstellt. Das kann dazu<br />

benutzt werden, schon vor dem eigentlichen Buszugriff Fehler zu vermeiden.<br />

Die beiden Routinen UseExclusive und EndExclusive arbeiten Hand in<br />

Hand, um einen exklusiven Buszugriff zu gewährleisten. Grundsätzlich ist<br />

es durch <strong>die</strong> parallele Ausführung verschiedener Threads nämlich nicht gewährleistet,<br />

daß in einem Thread zwei aufeinanderfolgende Schreibbefehle<br />

tatsächlich direkt nacheinander ausgeführt werden können. Stattdessen ist es<br />

möglich, daß ein anderer Thread zwischenzeitlich Daten überträgt. In zeitkritischen<br />

Situationen kann es jedoch möglich sein, daß mehrere Schreibbzw.<br />

Lesebefehle direkt hintereinander ausgeführt werden müssen. Nach einem<br />

Aufruf von UseExclusive kann sich der Thread sicher sein, daß außer<br />

ihm niemand auf den Bus zugreifen kann. Mit EndExclusive kann er den<br />

Feldbus <strong>für</strong> andere Threads wieder freigeben.<br />

5.1.1 Simulation <strong>eines</strong> Feldbusses<br />

Für Testzwecke kann es erforderlich sein, einen Feldbus zu simulieren. Da<strong>für</strong><br />

wurde eine eigene Test-Busklasse entwickelt, <strong>die</strong> Klasse CBusDummy. Sie stellt<br />

das oben beschriebene Interface der Busklasse komplett zur Verfügung, ohne<br />

tatsächlich auf den Bus zuzugreifen. Durch <strong>die</strong> Benutzung <strong>die</strong>ser Klasse<br />

können somit Progr<strong>am</strong>mteile getestet werden, ohne daß das echte Feldbussystem<br />

benutzt werden muß. Das ist nützlich, wenn der Feldbus <strong>für</strong> <strong>die</strong> geplante<br />

Anwendung nicht ununterbrochen zur Verfügung steht, sei es aus Kostengründen,<br />

Platzmangel etc.<br />

Bei der vorliegenden Diplomarbeit konnten nicht alle Progr<strong>am</strong>mfunktionen<br />

an dem Testaufbau in Aachen überprüft werden. Die Busklasse CBusDummy

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!