ECCO Manual 1.03.pdf - Horsch Elektronik AG
ECCO Manual 1.03.pdf - Horsch Elektronik AG
ECCO Manual 1.03.pdf - Horsch Elektronik AG
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Horsch</strong> <strong>Elektronik</strong> <strong>AG</strong><br />
Die Deklaration würde es erlauben, den einzelnen Labels andere Namen zu geben.<br />
Davon wird jedoch abgeraten, da solche Programme schwer verständlich werden.<br />
Die elf .SETLABEL-Instruktionen sollten daher immer wörtlich kopiert werden.<br />
Die Funktion der einzelnen Funktionen ist im Minimalprogramm minimal. In üblichen<br />
Programmen beginnt hier die eigentliche Arbeit.<br />
3. 7. Funktionen, Tasks und Prozeduren<br />
In diesem Abschnitt wird erklärt, wie der <strong>ECCO</strong> Programmierer seine Aufgabe in<br />
mehrere kleinere Teile zerlegen kann, und welche Hilfsmittel <strong>ECCO</strong> ihm dazu bietet.<br />
Es geht also um die grossen Funktionsblöcke, nicht um die Programmierung einzelner<br />
Geräte oder um Befehle.<br />
Funktionen<br />
Wie jede halbwegs moderne Programmiersprache verfügt auch <strong>ECCO</strong> über<br />
Funktionen. Eine Funktion ist dabei ein zusammengehörender Programmblock, welcher<br />
ein bestimmtes Teil-Problem löst.<br />
Konkret können in <strong>ECCO</strong> Funktionen mit Parametern versehen werden, um Lösungen<br />
allgemein und widerverwendbar zu gestalten. Funktionen werden im Programmtask<br />
(mehr dazu weiter unten) mit CALLF gestartet und enden mit der RETF Instruktion.<br />
Sie können verschachtelt werden, so dass eine Funktion eine zweite aufrufen<br />
kann; dabei sind bis zu vier solche Verschachtelungen möglich.<br />
Funktionen müssen im .FUNCTIONS Block definiert werden. Die Definition besteht<br />
aus der Position (als Zeile und Spalte) zum Aufruf vom Terminal aus, der erwarteten<br />
Anzahl von Argumenten und einem Text zur Beschreibung der Funktion.<br />
Mit dem CALLF-Befehl werden die Argumente, wie unten beschrieben, kopiert, die<br />
Funktion gestartet und der bisherige Task deaktiviert. Sobald die Funktion beendet,<br />
also auf RETF trifft, werden die Argumente zurückkopiert (sofern sie im aufrufenden<br />
Task keine Konstanten waren) und der aufrufende Task nach dem CALLF weiter bearbeitet.<br />
Wird eine parameterlose Funktion vom Display aus gestartet, so können bis zu vier<br />
Funktionen ineinander verschachtelt werden. Im Programmablauf können mehr<br />
Funktionen verschachtelt werden, wobei jede Funktion einen freien Task benötigt.<br />
Somit beschränkt die Zahl der vorhandenen Tasks die Verschachtelung von<br />
Funktionen.<br />
Der CALLF-Befehl scheint auf den ersten Blick etwas umständlich, dies ermöglicht<br />
jedoch grossartige Möglichkeiten:<br />
CALLF #, I, O, F,<br />
D, [, ]<br />
Mit den Offset-Feldern können Eingänge, Ausgänge, Merker und Fehlermerker in<br />
den Befehlen L_INP, L_OUTP und L_JMPCOND verschoben und somit parametrisiert<br />
werden. Danach folgen die 32-bit Argumente und zuletzt die 16-bit Argumente, beide<br />
entsprechend der Funktions-Deklaration. Die Argumente werden in lokale Register<br />
kopiert, weshalb der Funktionstask bis zu 32 LV und bis zu 32 LW Register hat.<br />
<strong>ECCO</strong> bietet die ungewöhnliche, aber äusserst hilfreiche Möglichkeit, parameterlose<br />
Funktionen direkt vom Terminal aus zu starten. Damit können beispielsweise<br />
Funktionen direkt getestet werden, oder Kalibrations- oder Inbetriebnahmeroutinen in<br />
Funktionen verpackt manuell gestartet werden.<br />
19.12.05 – Ver.: 1.03 <strong>ECCO</strong> Referenz - 24/305 -