B3: Dezentrale Systeme - nur 840D sl
3.3 Beispiele
3.3.3.3
Sicher auf Achscontainer-Drehung warten
Hinweis
Obwohl die Programmierung der Systemvariable $AN_AXCTSWA einen impliziten
Vorlaufstopp auslöst, kann die nachfolgende Befehlsfolge nicht dazu verwendet werden, den
Abschluss einer angeforderten Achcontainer-Drehung im Kanal eindeutig festzustellen:
WHILE ($AN_AXCTSWA[<ID>] ==
Achscontainer-Drehung gelöscht wurde
ENDWHILE
Während der Kanal in der Befehls-Sequenz auf den Abschluss der Achscontainer-Drehung
wartet, könnte, ausgelöst von einem anderen Kanal, im Hintergrund ein Reorganisieren
durchgeführt werden. Beispielsweise durch das Übergeben einer angeforderten Achse an
einen anderen Kanal. Dadurch würde die Systemvariable dann den Wert FALSE liefern. Auch
wenn die Achscontainer-Drehung noch nicht abgeschlossen wurde.
Empfohlene Befehls-Sequenz:
RL = $AN_AXCTAS[<ID>] ; Lesen: aktuelle Achscontainer-Stellung
AXCTSWE(<ID>)
WHILE (RL == $AN_AXCTAS[<ID>]) ; Warten: bis die gelesene ungleich
der aktuellen Achscontainer-
ENDWHILE
RL ist dabei eine beliebige Anwendervariable.
Beispiel 1: Explizites Warten mittels Systemvariable $AN_AXCTAS
Programmcode
RL = $AN_AXCTAS[<ID>]
AXCTSWE(<ID>)
WHILE (RL == $AN_AXCTAS[<ID>])
ENDWHILE
Beispiel 2: Explizites Warten mittels WAIT-Marke
Programmcode
CLEARM(9)
AXCTSWE(<ID>)
; SynAct: Warten auf Abschluss der Achscontainer-Drehung
WHEN $AN_AXCTSWA[<ID>] == TRUE DO SETM(9)
WAITMC(9, 1)
128
TRUE) ; Warten: bis die Freigabe der
; Freigabe: Achscontainer-Drehung
; Stellung ist
Kommentar
; Lesen: aktuelle Achscontainer-Stellung
; Freigabe: Achscontainer-Drehung
; Warten: Änderung der Achscontainer-
; Stellung
Kommentar
; Löschen: Marker 9 im Kanal
; Freigabe: Achscontainer-Drehung
; Warten: Marker 9 von Kanal 1
Funktionshandbuch, 08/2018, 6FC5397-1BP40-6AA2
Setzen: Marker 9 im Kanal
Erweiterungsfunktionen