Schleifen und PROC verlassen

  • Hallo Zusammen,

    ich bin auf der Suche, Schleifen vorzeitig zu verlassen. Sowohl FOR-Schleifen als auch WHILE-Schleifen. Leider bin ich weder in der in der RAPID-Doku,

    noch hier im Forum fündig geworden. Eine "Lösung" über GoTo hätte ich zwar gefunden, wird dann aber leider unübersichtlich und unsauber.


    Mein Ziel wäre etwas in der Richtung:


    FOR NR FROM 1 TO NR_END DO

    IF GI_Auftrag = IN{NR} THEN

    SetDO XYZ,1;

    *Hier die Schleife vorzeitig verlassen*


    IF NR = NR_END THEN

    *Fehler ausgeben*

    ENDIF

    ENDIF

    ENDFOR


    Außerdem würde ich gerne über einen Interrupt gesteuert, ein Unterprogramm verlassen, und in die Main-Ebene zurückkehren.

    Also ähnlich wie der "RESUME" Befehl bei KUKA.

  • ANZEIGE
  • Hallo MrTimmey,

    leider gibt es keine Instruktion mit der man von eine Schleife vorzeitig abbrechen kann.
    Du könntest aber die Schleife in eine separate Routine auslagern und mit RETURN die Routine verlassen, sobald Deine Bedingung erfüllt ist.

    Wenn Du einen Fehler auslösen willst kannst Du die Instruktion RAISE verwenden, und das Programm wird in der Fehlerbehandlung fortgesetzt. Den Fehler musst Du in einer der aufrufenden Routinen auswerten.

    Wenn Du Dein Programm vom Anfang der Main Routine fortsetzen willst, kannst Du die Instruktion EXITCYCLE verwenden.

    Wenn Du aus der TRAP Routine in die Fehlerbehandlung einer der aufrufenden Routinen (Callstack) springen willst, funktioniert das über den RAISE Befehl und der Angabe der Fehlernummer in Klammern hinter ERROR im Errorhandler der jeweiligen Zielroutine (Long-Jump).


    Das Thema Long-Jump ist hier im Forum schon mehrfach behandelt worden und ist zusätzlich im Handbuch "RAPID Kernel" beschrieben

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Wenn du die Schleife in eine separate Subroutine einbindest und dann die Instruktion RETURN verwendest ist das kein Problem.


    Gruß

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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