Frage zu RAISE ... RETRY usw.

  • Hallo zusammen,


    habe Probleme mit einer Greiferstatus prüfung.


    Fehler: Maximale anzahl versuche überschritten (genaue Meldung weis ich jetzt nicht).


    Routine:
    PROC rGrp2Check(
    \switch GRP_GET
    |switch GRP_DRP)


    !
    ! get part with gripper
    IF Present(GRP_GET) THEN
    IF DOutput(Q_GRP2_OPN)=0 THEN
    RAISE 1;
    ELSE
    IF I_GRP2_PCK=1 THEN
    RAISE 3;
    ELSE
    RETURN;
    ENDIF
    ENDIF
    ENDIF
    !
    ! drop part with gripper
    IF Present(GRP_DRP) THEN
    IF DOutput(Q_GRP2_OPN)=1 THEN
    RAISE 2;
    ELSE
    IF I_GRP2_PCK=0 THEN
    RAISE 4;
    ELSE
    RETURN;
    ENDIF
    ENDIF
    ENDIF
    !
    ERROR
    TEST ERRNO
    CASE 1:
    StopMove;
    TPErase;
    SetGO qErrNr,ERR_GRP2;
    TPReadFK nTPSel,"Fehler Greifer2 sollte offen sein",stEmpty,stEmpty,stEmpty,stEmpty,"OK";
    SetGO qErrNr,0;
    StartMove;
    RETRY;
    !
    CASE 2:
    StopMove;
    TPErase;
    SetGO qErrNr,ERR_GRP2;
    TPReadFK nTPSel,"Fehler Greifer2 sollte geschlossen sein",stEmpty,stEmpty,stEmpty,stEmpty,"OK";
    SetGO qErrNr,0;
    StartMove;
    RETRY;
    !
    CASE 3:
    StopMove;
    TPErase;
    SetGO qErrNr,ERR_GRP2;
    TPReadFK nTPSel,"Fehler Greifer2 sollte leer sein",stEmpty,stEmpty,stEmpty,stEmpty,"OK";
    SetGO qErrNr,0;
    StartMove;
    RETRY;
    !
    CASE 4:
    StopMove;
    TPErase;
    SetGO qErrNr,ERR_GRP2;
    TPReadFK nTPSel,"Fehler Greifer2 sollte belegt sein",stEmpty,stEmpty,stEmpty,stEmpty,"OK";
    SetGO qErrNr,0;
    StartMove;
    RETRY;
    !
    DEFAULT:
    StopMove;
    TPErase;
    TPReadFK nTPSel,"Unbekannte Fehlerursache bei Greiferstatus Greifer2",stEmpty,stEmpty,stEmpty,stEmpty,"OK";
    StartMove;
    RETRY;
    ENDTEST
    ENDPROC

    Wer Syntaxfehler findet darf sie behalten, ich bin nicht Geizig ich mach mir einfach neue.

  • ANZEIGE
  • Hallo,
    nachdem ich meine Kristallkugel befragt habe ist mir folgende Antwort eingefallen:


    Die maximale Anzahl der Retry-Versuche ist beschränkt, keine Ahnung warum.
    Im Programm wird bei einem Fehler sehr schnell hintereinander immer wieder das Raise
    mit sofort folgendem Retry aufgerufen. Da die max. Anzhal begrenzt ist erfolgt die Fehlermeldung.


    Abhilfe, vom Einzelfall abhängig:
    - Bei jedem Retry einein Zähler hochzählen, und nur 2 oder 3 mal einen Retry zulassen, dann Programm abbrechen.
    - Quittierung bei Fehlermeldung einbauen.
    - Oder oder oder ...
    - Hab' gerade noch mal nachgelesen: Es gibt den Befehl
    ResetRetryCount
    damit vor jedem Retry sollte sich das Problem beheben lassen.


    Hermann
    PS: Steht im: Technisches Referenzhandbuch RAPID Instruktionen, Funktionen und Datentypen

    Einmal editiert, zuletzt von Hermann ()

  • Hallo irb_expert,
    du hast auch die möglichkeit die Anzahl der Versuche für Retry zu erhöhen indem du in der Datei SYS folgenden parameter anpasst.


    SYS_MISC:


    -Name "NoOfRetry" -Value 4


    Gruß z750


    PS: Steht auch im Handbuch unter RETRY. :mrgreen:

  • Danke erst mal...


    kann im Rapid Handbuch "ResetRetryCount" nicht finden.!?
    hab jetzt auch nicht die Möglichkeit es zu Testen!
    ... Anlage ist derzeit nicht verfügbar! :-() ... Hmmm

    Wer Syntaxfehler findet darf sie behalten, ich bin nicht Geizig ich mach mir einfach neue.

  • - Hab' gerade noch mal nachgelesen: Es gibt den Befehl
    ResetRetryCount
    damit vor jedem Retry sollte sich das Problem beheben lassen.


    Hermann
    PS: Steht im: Technisches Referenzhandbuch RAPID Instruktionen, Funktionen und Datentypen


    Hab grade mit ABB gesprochen der Befehl "ResetRetryCount" gibt es nicht!

    Wer Syntaxfehler findet darf sie behalten, ich bin nicht Geizig ich mach mir einfach neue.

  • Na dann sollten die Ihr Handbuch überarbeiten,
    oder Du hast keine IRC5 (dürfte das wahrscheinlichere sein).


    Zitat aus dem Handbuch(gerade frisch ausgeschnitten):


    1.131. ResetRetryCount - Zurücksetzen der Anzahl an Wiederholungen
    Verwendung
    ResetRetryCount wird verwendet, um die Anzahl der Wiederholungen durch eine
    Fehlerbehandlungsroutine zurückzusetzen. Die maximale Anzahl der möglichen
    Wiederholungen ist in der Konfiguration definiert.
    Grundlegende Beispiele
    Grundlegende Beispiele für die Instruktion ResetRetryCount sind unten aufgeführt.
    Beispiel 1:
    VAR num myretries := 0;
    ...
    ERROR
    IF myretries > 2 THEN
    ResetRetryCount;
    myretries := 0;
    TRYNEXT;
    ENDIF
    myretries:= myretries + 1;
    RETRY;
    ...
    Mit diesem Programm wird die fehlerhafte Instruktion drei Mal wiederholt, und dann wird
    die nächste Instruktion ausgeführt. Der interne Wiederholungszähler des Systems wird
    zurückgesetzt, bevor die nächste Instruktion ausgeführt wird (auch wenn dies durch das
    System bei TRYNEXT erfolgt).


    Hermann

    Einmal editiert, zuletzt von Hermann ()

  • ... bei der IRC5 gibt es den Befehl definitiv! :genau: !

  • Hab grad das richtige Handbuch runtergeladen!


    Alles super...!


    werde das gleich mal an ABB weiterleiten ...

    Wer Syntaxfehler findet darf sie behalten, ich bin nicht Geizig ich mach mir einfach neue.

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