22.02.2013 Aufrufe

ECCO Manual 1.03.pdf - Horsch Elektronik AG

ECCO Manual 1.03.pdf - Horsch Elektronik AG

ECCO Manual 1.03.pdf - Horsch Elektronik AG

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.

<strong>Horsch</strong> <strong>Elektronik</strong> <strong>AG</strong><br />

Funktionen können nicht von überall aufgerufen werden; dies wird nachfolgend (konkret<br />

auf Seite 26) genau dokumentiert.<br />

Tasks<br />

SPS-Steuerungen im Allgemeinen und <strong>ECCO</strong> im Speziellen sollen nicht nur eine<br />

Funktion aufs Mal erledigen, sondern mehrere. Die Lösung liegt in der Verwendung<br />

von Tasks. Ein Task ist eine Programmkette, also eine Folge von Instruktionen, welche<br />

nacheinander abgearbeitet werden. Da mehrere Tasks gleichzeitig aktiv sein<br />

können, wird so die gewünschte Parallelität erreicht.<br />

Zum Verwenden und zur Verwaltung von Tasks werden nur fünf Befehle benötigt:<br />

107 CLOSE<br />

175 OPEN<br />

230 TASK_KILL<br />

231 TASK_OPEN<br />

232 TASK_STEP<br />

Ein neuer Task wird mit dem Befehl OPEN oder TASK_OPEN eröffnet. Ein Backgroundtask<br />

kann dabei nur einen Backgroundtask, ein Programmtask nur einen Programmtask<br />

öffnen. Der aufrufende Task wird dabei nicht unterbrochen, wodurch der<br />

aufrufende und aufgerufene Task parallel und gleichzeitig arbeiten.<br />

Ein Task kann sich selber mit dem CLOSE Befehl schliessen. Gegenüber SMC42<br />

wurden in <strong>ECCO</strong> die Möglichkeiten zur Manipulation von Tasks massiv erweitert. Wie<br />

bereits erwähnt können Tasks nun auch mit TASK_OPEN geöffnet werden, ein Task<br />

kann einen weiteren mit TASK_KILL beenden (Programmierer lieben es, dies als<br />

„abschiessen“ zu bezeichnen) und die Geschwindigkeit der Ausführung kann mit<br />

TASK_STEP reduziert werden.<br />

Die Synchronisation von Tasks wird in <strong>ECCO</strong> durch Mutexes im EXCL-Befehl<br />

realisiert. In den meisten Fällen wird dies aber gar nicht benötigt, da sämtliche<br />

Schreib- und Rechenoperationen atomar sind, und durch geschickte Ausschluss-<br />

Regeln der Zugriff auf das Terminal selbstsynchronisert ist (mehr dazu im Abschnitt<br />

3. 11 „Anzeige und Eingabe“), ebenso wie Fehlermerker. Diese Ausschluss-Regeln<br />

werden üblicherweise als Priorität der Task-Gruppen bezeichnet. Das genaue<br />

Prioritäts-Diagramm ist in Anhang 5. 2 „Priorität“ abgebildet.<br />

Label<br />

<strong>ECCO</strong> verwendet Sprungmarken, so genannte Labels, um Verzweigungen und<br />

Sprünge zu ermöglichen. Jeder Anfang eines Programmblocks (also beispielsweise<br />

einer Funktion, eines Tasks oder einer Fehlermerker-Routine) verfügt über ein Label,<br />

das dem <strong>ECCO</strong> Compiler den Start angibt.<br />

Natürlich können auch innerhalb eines Programmblocks Labels verwendet werden,<br />

um innerhalb des Blocks zu verzweigen oder um den Block erst ab dem späteren<br />

Punkt auszuführen.<br />

Solche Label sind global, das heisst, dass sie von jeder Stelle des Programms<br />

ersichtlich (und erreichbar) sind. Oft will man das aber nicht; ein Label soll nur innerhalb<br />

des Programmblocks sichtbar sein, so dass der gleiche Label-Name mehrmals<br />

verwendet werden kann, was gerade bei grossen Programmen zwingend ist. <strong>ECCO</strong><br />

unterstützt lokale Labels durch die .LOCAL Anweisung.<br />

Die nachfolgende Aufzählung gibt eine Übersicht über die Labels und ihre<br />

Verwendung.<br />

19.12.05 – Ver.: 1.03 <strong>ECCO</strong> Referenz - 25/305 -

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!