Hallo Zusammen,
ich hätte eine Frage an euch Experten. Folgenden Code habe ich erstellt, hierzu möchte ich nun wissen wie "sicher"
dieser ist im Bezug auf den Abbruch des Programmes. Oder ob es besser wäre das ganze mit einem Interrupt zu lösen.
An einer bestimmten Stelle im Hauptablauf (If $IN[45]==FALSE) wird ein Signal überprüft das von der SPS zum Roboter gesendet wird. Wenn dieses "FALSE" ist, soll der Roboter in ein Unterprogramm springen die Bauteile abwerfen und zurück in Grundstellung fahren.
Anschließend eine Fehlermeldung ausgeben, dass Programm stoppen und abwählen, sodass kein weiterer Verfahrbefehl aus dem
Hauptablauf ausgeführt wird.
Auszug aus dem Hauptablauf ( )
TRIGGER WHEN DISTANCE=1 DELAY=0 DO POSITION=5
PTP P5 CONT Vel=100 % PDAT14 Tool[6]:Greifer_Btl_abl Base[0]
;-----------------------------------------------------------
If $IN[45]==FALSE THEN ;Typnr. falsch
SET Schwenker v/r State= OPN
SET Verfahreinheit v/r State= OPN
;-----------------------------------------------------------
id_false_up ()
OUT 60 'Anwenderfehler' State=TRUE
meldungen (200)
wait sec 0.5
$Flag[1]=True
Halt
Endif
;-----------------------------------------------------------
SYN OUT 406 'SCHWENKEINHEIT FEST UG 13 SCHWENKEINHEIT VERFAHRBAR UG 14 RUECK' State=FALSE at START Delay=0 ms
SYN OUT 405 'SCHWENKEINHEIT FEST UG 13 SCHWENKEINHEIT VERFAHRBAR UG 14 VOR' State=TRUE at START Delay=0
TRIGGER WHEN DISTANCE=1 DELAY=0 DO POSITION=6
PTP P6 CONT Vel=100 % PDAT16 Tool[6]:Greifer_Btl_abl Base[0]
Auszug aus dem Unterprogramm ( )
PTP P76 Vel=100 % PDAT15 Tool[5]:Greifer_Btl_holen Base[0]
...
Bauteile abwerfen
...
PTP P77 Vel=100% PDAT16 Tool[5]:Greifer_Btl_holen Base
Verweiß Flag in der sps.sub
If ($Flag[1]) and ($Pro_State1==#P_Active) THEN
CWRITE($CMD,STAT,MODE,"Stop 1")
Endif
If ($Flag[1]) and ($Pro_State1==#P_Stop) THEN
CWRITE($CMD,STAT,MODE,"Cancel 1")
Endif
If ($Pro_State1==#P_Free) or ($Pro_State1==#P_Reset) THEN
$Flag[1]=False
Endif
Vielen Danke im Voraus für Eure Mühe!
Danke und Gruß muggy