24.11.2012 Aufrufe

Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden

Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden

Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden

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.

<strong>Diplomarbeit</strong>: Modulares System Programmierung der Knotenpunkte<br />

6.3. Umsetzung<br />

Um die Sensoren <strong>und</strong> Aktoren beziehungsweise die dazugehörigen Controller in die Lage zu<br />

versetzen, Steuerprogramme ausführen zu können, müssen die PL0-Programme in einen Code<br />

übersetzt werden, den die Controller verstehen. Um die Programme nicht <strong>für</strong> jeden Controllertypen<br />

spezifisch zu übersetzen, wird ein Code erzeugt, der von einer Virtuellen Maschine ausgeführt<br />

werden kann. Diese verfügt über einen Kellerspeicher, auf dem alle Daten abgelegt werden. Damit sie<br />

auch auf kleineren Controllern mit wenig Arbeitsspeicher lauffähig ist, ist die Breite des Maschinen-<br />

Speichers auf zwei Byte festgelegt.<br />

Der Code ist relativ klein gehalten <strong>und</strong> kommt mit derzeit 35 Befehlen aus. Damit ist er bereits<br />

gegenüber dem von Prof. Beck verwendeten Zwischencode um einige Befehle erweitert worden. Sie<br />

dienen zum einen dem Alternativ-Zweig der zweiseitigen Verzweigung (IF THEN ELSE) <strong>und</strong> den<br />

Funktionsaufrufen <strong>und</strong> zum anderen wurden zwei neue Befehle eingeführt, um mit den anderen<br />

Knotenpunkten kommunizieren zu können. Diese Befehle holen sich ihre Parameter vom<br />

Kellerspeicher <strong>und</strong> schreiben die Ergebnisse dorthin zurück. Die Virtuelle Maschine entscheidet dabei,<br />

ob sich die Anfrage an einen entfernten Knoten richtet oder die Daten direkt vom gleichen Controller<br />

bezogen werden können. Dadurch, dass keine Unterschiede bei diesen beiden Aufrufen in der<br />

Skriptsprache gemacht werden, vereinfacht sich die Programmierung <strong>und</strong> die Programme können mit<br />

gleichen Ergebnissen auf jedem Knoten ausgeführt werden, ohne extra angepasst werden zu<br />

müssen.<br />

6.3.1. Der Compiler<br />

Auf die genaue Entwicklung eines Compilers soll hier nicht eingegangen werden, sondern es wird nur<br />

ein grober Überblick gegeben.<br />

Ein Compilervorgang besteht aus mehreren Phasen. Am folgenden Beispiel werden diese kurz<br />

erläutert.<br />

CONST pi=3;<br />

VAR a,x;<br />

BEGIN<br />

IF a>0 THEN<br />

x:=2*pi+a;<br />

END.<br />

Phase Bedeutung<br />

Lexikalische Analyse Der Quelltext wird in eine Folge von Symbolen zerlegt.<br />

(const)(id,pi)(=)(num,3)(;)<br />

(var)(id,a)(,)(id,x)(;)<br />

(begin)<br />

(if)(id,a)(>)(then)<br />

(id,x)(:=)(num,2)(*)(id,pi)(+)(id,a)(;)<br />

(end)(;)<br />

26.07.2004 Seite 44 von 85

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!