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 />
Gemeinsame Nutzung von Ressourcen<br />
Wenn mehrere Tasks gleiche Systemkomponenten o<strong>de</strong>r Elemente <strong>de</strong>r Roboterarbeitszelle (globale Variablen,<br />
Monitore, Tastatur, Roboter usw.) verwen<strong>de</strong>n, muss darauf geachtet wer<strong>de</strong>n, dass sie sich nicht gegenseitig stören.<br />
Zum Schutz <strong>de</strong>r Komponenten kann eine sogenannte "(’mutex’)"-Funktion (mutuel exclusion) verwen<strong>de</strong>t wer<strong>de</strong>n, die<br />
sie nur für jeweils eine Task freigibt. Das nachstehen<strong>de</strong> Programmierbeispiel ver<strong>de</strong>utlicht die Funktion Mutex in VAL3.<br />
Zum Beispiel<br />
bool bEcran<br />
bEcran = false<br />
program tache1()<br />
begin<br />
while(true)<br />
call mutex(bEcran) // Anfor<strong>de</strong>rung <strong>de</strong>r Komponente Bildschirm<br />
call fillScreen(1)<br />
bEcran = false // Freigabe <strong>de</strong>r Komponente Bildschirm<br />
<strong>de</strong>lay(0) // Weitergehen zur nächsten Task<br />
endWhile<br />
end<br />
program tache2()<br />
begin<br />
while(true)<br />
call mutex(bEcran) // Anfor<strong>de</strong>rung <strong>de</strong>r Komponente Bildschirm<br />
call fillScreen(2)<br />
bEcran = false // Freigabe <strong>de</strong>r Komponente Bildschirm<br />
<strong>de</strong>lay(0) // Weitergehen zur nächsten Task<br />
endWhile<br />
end<br />
// Programm zum Füllen <strong>de</strong>s Bildschirms mit <strong>de</strong>r Ziffer i<br />
program fillScreen(num i)<br />
num x<br />
num y<br />
begin<br />
i = i % 10<br />
for x = 0 to 39<br />
for y = 0 to 13<br />
gotoxy(x, y)<br />
put(i);<br />
endFor<br />
endFor<br />
end<br />
// Programm zur Verhin<strong>de</strong>rung <strong>de</strong>s gleichzeitigen Zugriffs auf eine<br />
Komponente<br />
program mutex(bool& bRessource)<br />
begin<br />
// Die Zuweisung <strong>de</strong>r Komponente (bRessource) zu true muss in <strong>de</strong>r gleichen Zeile wie die Prüfung erfolgen!!!<br />
wait((bRessource==false) and (bRessource = true))<br />
end<br />
D28056202B - <strong>06</strong>/<strong>2005</strong> 55 / 122