31.10.2012 Aufrufe

referenzanleitung val3 d28056202b - 06/2005 - eule-roboter.de

referenzanleitung val3 d28056202b - 06/2005 - eule-roboter.de

referenzanleitung val3 d28056202b - 06/2005 - eule-roboter.de

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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!