Programm abbrechen und in Cell zurück

  • Hallo Gemeinde,
    kann mir jemand helfen?
    Wie kann ich folgendes Programm abbrechen bei Bauteil_NIO
    Brake und RESUM funktioniert hier nicht.


    Grüße
    Alvedin


    ;#################################
    ;
    ;Start Schleife
    LOOP
    ;
    ;melde SPS --> Rob: Bauteil i.O
    IF Checker_IO == TRUE THEN
    GOTO Bauteil_IO
    ENDIF
    ;
    ;melde SPS --> Rob: Bauteil n.i.O
    IF Checker_NIO == TRUE THEN
    GOTO Bauteil_NIO
    ENDIF
    ;
    ;Schleife Ende
    ENDLOOP
    ;#################################
    ;
    ;
    ;#################################
    ;Sprungziel Bauteil n.i.O
    Bauteil_NIO:
    ;
    ;Fold Bauteil NIO
    ;Rob legt Bauteil wieder auf Förderband ab und fährt in Home-Pos
    ;
    ;Vorlaufzeiger auf 1 setzen
    $ADVANCE = 1
    ;
    ;Fold Initialisere Bewegung
    ;
    ;Bewegung Initialiseren
    BAS(#INITMOV,0)
    ;
    ;BASE laden
    $BASE = BASE_DATA[7]
    ;
    ;TOOL laden
    $TOOL = TOOL_DATA[2]
    ;
    ;Getrieberuck
    $JERK = {CP 50.0}
    ;
    ;Geschwindigkeit laden
    $VEL.CP = 0.05
    ;
    ;Überschleifen
    $APO.CVEL = 100
    ;
    ;Endfold
    ;Bewegung Fahrgestell ablegen
    SLIN XP4
    ;
    ;;Bewegung Fahrgestell ablegen
    SLIN XP3
    ;
    ;Ablegeposition Fahrgestell
    SLIN XP2
    ;
    ;Fold Greifer öffnen
    ;FOLD OUT 152 'Greifer links+rechts schliessen' State=FALSE ;%{PE}%R 8.3.44,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:152, 3:Greifer links+rechts schliessen, 5:FALSE, 6:
    $OUT[152]=FALSE
    ;ENDFOLD
    ;FOLD OUT 153 'Greifer Stifte ausfahren' State=FALSE ;%{PE}%R 8.3.44,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:153, 3:Greifer Stifte ausfahren, 5:FALSE, 6:
    $OUT[153]=FALSE
    ;ENDFOLD
    ;FOLD WAIT FOR ( IN 154 'E_Greifer Stift links eingefahren' AND IN 155 'E_Greifer Stift rechts eingefahren' );%{PE}%R 8.3.44,%MKUKATPBASIS,%CEXT_WAIT_FOR,%VEXT_WAIT_FOR,%P 2:, 4:, 5:$IN, 6:154, 7:E_Greifer Stift links eingefahren, 8:AND, 9:, 10:$IN, 11:155, 12:E_Greifer Stift rechts eingefahren, 14:
    WAIT FOR( $IN[154] AND $IN[155] )
    ;ENDFOLD
    ;FOLD OUT 160 'Greifer links+rechts oeffnen' State=TRUE ;%{PE}%R 8.3.44,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:160, 3:Greifer links+rechts oeffnen, 5:TRUE, 6:
    $OUT[160]=TRUE
    ;ENDFOLD
    ;FOLD WAIT FOR ( IN 153 'E_Greifer rechts offen' AND IN 160 'E_Greifer links offen' );%{PE}%R 8.3.44,%MKUKATPBASIS,%CEXT_WAIT_FOR,%VEXT_WAIT_FOR,%P 2:, 4:, 5:$IN, 6:153, 7:E_Greifer rechts offen, 8:AND, 9:, 10:$IN, 11:160, 12:E_Greifer links offen, 14:
    WAIT FOR( $IN[153] AND $IN[160] )
    ;ENDFOLD


    ;
    ;Endfold
    ;
    ;Bewegung wegfahren von Förderband
    SLIN XP1
    ;
    ;Home-Pos anfahren
    ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $BWDSTART = FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS (#PTP_PARAMS,100 )
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD
    ;
    ;Endfold
    ;Fold Auftrag komplett abbrechen
    ;
    ;Aktive Fahrbewegungen abbrechen
    BRAKE
    ;Abbruch des Programms
    RESUME
    ;
    ;Endfold
    ;
    ;#################################
    ;
    ;
    ;#################################
    ;Sprungziel Bauteil i.O
    Bauteil_IO:
    ;
    ;Fold BAUTEIL IO
    ;Rob fährt auf Vorposition zum einlegen des Fahrgestells auf WT
    ;FOLD SPTP P5 CONT Vel=50 % PDAT3 Tool[2]:Greifer Fahrgestell Base[7]:Zufuehrband;%{PE}%R 8.3.44,%MKUKATPBASIS,%CSPLINE,%VSPTP_SB,%P 1:SPTP_SB, 2:P5, 3:C_DIS, 5:50, 7:PDAT3
    SPTP XP5 WITH $VEL_AXIS[1]= SVEL_JOINT( 50), $TOOL= STOOL2( FP5), $BASE= SBASE( FP5.BASE_NO),$IPO_MODE= SIPO_MODE( FP5.IPO_FRAME), $LOAD= SLOAD( FP5.TOOL_NO), $ACC_AXIS[1]= SACC_JOINT( PPDAT3), $APO= SAPO_PTP( PPDAT3), $GEAR_JERK[1]= SGEAR_JERK( PPDAT3) C_SPL
    ;ENDFOLD
    ;FOLD SPTP P6 Vel=50 % PDAT4 Tool[2]:Greifer Fahrgestell Base[7]:Zufuehrband;%{PE}%R 8.3.44,%MKUKATPBASIS,%CSPLINE,%VSPTP_SB,%P 1:SPTP_SB, 2:P6, 3:, 5:50, 7:PDAT4
    SPTP XP6 WITH $VEL_AXIS[1]= SVEL_JOINT( 50), $TOOL= STOOL2( FP6), $BASE= SBASE( FP6.BASE_NO),$IPO_MODE= SIPO_MODE( FP6.IPO_FRAME), $LOAD= SLOAD( FP6.TOOL_NO), $ACC_AXIS[1]= SACC_JOINT( PPDAT4), $GEAR_JERK[1]= SGEAR_JERK( PPDAT4)
    ;ENDFOLD
    ;
    ;melde Rob --> SPS: Auftrag erledigt Fahrgestell nchfördern
    ;FOLD OUT 2106 'Rob_weg_von_Foerderband' State=TRUE ;%{PE}%R 8.3.44,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:2106, 3:Rob_weg_von_Foerderband, 5:TRUE, 6:
    $OUT[2106]=TRUE
    ;ENDFOLD
    ;
    ;Wartezeit
    ;FOLD WAIT Time=0.2 sec;%{PE}%R 8.3.44,%MKUKATPBASIS,%CWAIT,%VWAIT,%P 3:0.1
    WAIT SEC 0.2
    ;ENDFOLD
    ;
    ;melde Rob --> SPS: Auftrag erledigt Fahrgestell nchfördern
    ;FOLD OUT 2106 'Rob_weg_von_Foerderband' State=FALSE ;%{PE}%R 8.3.44,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:2106, 3:Rob_weg_von_Foerderband, 5:TRUE, 6:
    $OUT[2106]=FALSE
    ;ENDFOLD
    ;
    ;Endfold
    ;
    ;#################################

    Einmal editiert, zuletzt von Alvedin ()

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Alvedin,


    UP's früher verlassen und zurück Ebene höher kannst Du mit Befehl RETURN


    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Brake und Resume sind hier nicht nur sinnlos , sondern falsch
    Stattdessen einfach nur RETURN

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Oh. Hermann war nal wieder schneller... :icon_rofl:

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Bei mir sieht das Programm aber so aus:


    1 Cell
    2 Hauptjob
    3 Greifer einstellen ()
    4 Bauteil holen ()
    Hier ist die Abfrage drin
    Bauteil i.o oder Bauteil n.i.o
    4 Bauteil ablegen ()


    Das heißt wenn ich jetzt mit RETURN arbeite
    Komme ich ja nur im Hauptjob raus und nicht in Cell.


    Oder?



    Grüße


    Alvedi

  • Da kann man dann vor dem Aufruf von '4 Bauteil ablegen' abfragen, ob ein Bauteil im Greifer ist, wenn nein: return.
    Oder man macht das UP '3 Bauteil abholen' als Function und gibt true zurück wenn io, false wenn nio, bei NIO wird dann '4' wieder nicht aufgerufen sondern mit return zurückgesprungen. ......
    Es gibt sicher noch mehr Möglichkeiten, aber mit Resume geht es nicht. Man muss auf alle Fälle vor dem Aufruf der folgenden UP im NIO-fall mit return zurückspringen.
    Oder man schreibt alles in den Cell und springt mit goto wild hin und her, und versteht in ein, zwei Monaten sein eigenes Programm nicht mehr. :biggrins:
    Soll heissen: goto Anweisungen sollten vermieden werden.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden