referenzanleitung val3 d28056202b - 06/2005 - eule-roboter.de
referenzanleitung val3 d28056202b - 06/2005 - eule-roboter.de
referenzanleitung val3 d28056202b - 06/2005 - eule-roboter.de
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
REFERENZANLEITUNG VAL3 - Version 5.2<br />
Sequentielles Ordnen<br />
Wenn in einer Applikation mehrere Tasks ausgeführt wer<strong>de</strong>n, hat es <strong>de</strong>n Anschein, als ob dies gleichzeitig und<br />
unabhängig voneinan<strong>de</strong>r erfolgt. Das ist jedoch nur richtig, wenn man die Applikation global, d.h. über genügend lange<br />
Zeitintervalle von z.B. einer Sekun<strong>de</strong> betrachtet. Bei kurzen Zeitintervallen ist diese Aussage nicht mehr gültig.<br />
Da das System nur einen Prozessor besitzt, kann es auch nur jeweils eine Task ausführen. Die Gleichzeitigkeit <strong>de</strong>r<br />
Ausführung wird durch ein rasches sequentielles Ordnen <strong>de</strong>r einzelnen Tasks erreicht, die reihum einige Anweisungen<br />
abarbeiten, bevor das System auf die nächste Task weitergeht.<br />
Priorität<br />
T1<br />
Normale<br />
Ausführung<br />
T2<br />
Sequentielles Ordnen<br />
T1 führt die<br />
Funktion <strong>de</strong>lay()<br />
aus.<br />
T1<br />
T2<br />
Zeit abgelaufen<br />
T2 T2<br />
T3 T3 T3 T3<br />
T1<br />
Normale<br />
Ausführung<br />
Unter VAL3 sind die Sequenzen <strong>de</strong>r Tasks nach folgen<strong>de</strong>n Regeln geordnet:<br />
1. Die Tasks wer<strong>de</strong>n in <strong>de</strong>r Reihenfolge ihrer Erstellung sequentiell geordnet.<br />
2. In je<strong>de</strong>r Sequenz versucht das System, die Anzahl von VAL3-Programmzeilen auszuführen, die <strong>de</strong>r<br />
Priorität <strong>de</strong>r Task entspricht.<br />
3. Sobald eine Programmzeile nicht been<strong>de</strong>t wer<strong>de</strong>n kann (Ausführungsfehler, Warten auf ein Signal, Task<br />
unterbrochen...), fährt das System mit <strong>de</strong>r nächsten Task fort.<br />
4. Je<strong>de</strong> Task wird min<strong>de</strong>stens alle 10 ms aufgerufen.<br />
Folgen<strong>de</strong> Anweisungen in VAL3 bewirken ein sofortiges Weitergehen zur Sequenz <strong>de</strong>r nächsten Task:<br />
• watch() (zeitlich begrenztes Warten auf eine Bedingung)<br />
• <strong>de</strong>lay() (Wartezeit)<br />
• wait() (Warten auf eine Bedingung)<br />
• waitEndMove() (Warten auf Stillstand <strong>de</strong>s Roboters)<br />
• open() und close() (Warten auf Stillstand <strong>de</strong>s Roboters mit anschließen<strong>de</strong>r Wartezeit)<br />
• get() (Warten auf eine Tasteneingabe)<br />
• resume() (wartet, bis die Task zum Neustart bereit ist)<br />
• kill() (wartet, bis die Task tatsächlich gekillt ist)<br />
• disablePower() (wartet, bis die Leistung tatsächlich abgeschaltet wur<strong>de</strong>)<br />
• Die Anweisungen zum Zugriff auf <strong>de</strong>n Inhalt <strong>de</strong>r Festplatte (libLoad, libSave, libDelete, libList)<br />
• Die Anweisungen zum Lesen / Schreiben von sio (Bediener =, sioGet(), sioSet())<br />
D28056202B - <strong>06</strong>/<strong>2005</strong> 53 / 122<br />
T2<br />
T3<br />
Zeit