Hallo zusammen,
(ja,ja der Elch schon wieder )
ja, ich weiß, es gab schon einige Threads zum Thema.
Ich habe auch fast alles gelesen was unter dem Tag #cell läuft, leider nichts konkretes gefunden, was mich einer Lösung näher bringen könnte, lediglich einige Ansätze, die mich auf diverse Lösungen/Ideen bringen könnten.
Hier mein aktuelles Problem;
im über_nachfolgenden Code bleibt der Roboter in der jeweils angeforderten Position stehen. Das funktioniert. Nur habe ich jetzt die Situation, dass ich aus dem aktuellen MAIN unter allen Umständen zurück in's CELL muss. Da dort, im Falle des Rüstvorganges ein zweites, MAIN2 (oder umgekehrt das MAIN) per PGNO abgefragt und gestartet wird. Ein RETURN würde mich nur in die aufrufende DEF zurück führen, kontraproduktiv, ich bleibe ja immer noch im Modul MAIN oder MAIN2.
Mein Ansatz wäre jetzt, nach dem
mir eine DEF zu basteln, die prüft, ob sich die PGNO von der SPS geändert hat und ggf. einen Reset ausführt, mit dem Ziel zurück ins CELL zu hüpfen.
Aktuell ist es eben so, dass der ROB ohne "Programm zurücksetzen" oder "Ab/Anwahl" einfach im aktuellen MAIN oder MAIN2 verbleibt und einfach weiter macht. Was schlecht ist, je nach dem haben wir, entweder ölige Teile (vom Kühlschmierstoff, da nicht getaucht) oder der Schlosser muss das Tauchbecken richten (weil Teile zu groß im Durchmesser )..
Also, wie könnte ich innerhalb des Moduls die PGNO abfragen und entsprechend den Reset auslösen ? Auch wenn es über den SUB laufen müsste, da bin ich frei.
Und wie immer, danke für eure Anregungen, Ideen, Denkanstöße
Gruß, der Elch
DEF Unterbrechung(HomePos:IN, Ruest:IN)
DECL LOCATION HomePos
BOOL Ruest, antwort
IF (VARSTATE("Ruest")==#DECLARED) THEN
; Variable Ruest ist nur 'DECLARED' und nicht 'INITIALIZED'
Ruest=FALSE
ENDIF
; Maschine entladen - Leerfahrt
MaschineBeEntladen(TRUE)
FerAblegen()
WAIT SEC 0 ; Satzvorlauf stoppen
MoveTo(HomePos, AktPos)
WAIT SEC 0 ; Satzvorlauf stoppen
; Greiferbacken öffnen, wenn Ruestpos.
IF Ruest THEN
Greifen(#ROH, 123, FALSE)
Greifen(#FER, 123, FALSE)
ENDIF
NioErzwingen=TRUE
TuerFreigabe=TRUE
INTERRUPT OFF 10
HALT ; <-- STOP .. ROB steht und kann wieder von der SPS aus gestartet werden
INTERRUPT ON 10
TuerFreigabe=FALSE
; Greiferbacken wieder schliessen
IF Ruest THEN
Loslassen(#ROH, 123)
Loslassen(#FER, 123)
ENDIF
; Teiletyp aktualisieren
TypDataExt()
UpdateTeiletyp()
MoveTo(#HOME, AktPos)
WAIT SEC 0 ; Satzvorlauf stoppen
END
Alles anzeigen