Interrupt-Routine wird nicht aufgerufen

  • Hallo,


    ich versuche in einem Testprogramm den Roboter zu verfahren und schließlich an einem bestimmten Punkt (P2_Int) die Interrrupt-Routune aufzurufen.


    Folgenden Programm-Code habe ich benutzt:


    MODULE Jog100


    PERS robtarget Home:=[[350.99,0,709.10],[0,0,1,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    PERS jointtarget P1:=[[-30,90,-86.25,0,-20,-90],[9E+09,9E+09,9E+09,9E+09,9E+09,0]];

    PERS robtarget P2_Int:=[[0.035877694,781.83645161,440.987125876],[0.799948505,-0.600068649,0.000064832,0.00002816],[0,0,-1,3],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    PERS jointtarget P3:=[[130,90,-86.25,0,-20,-90],[9E+09,9E+09,9E+09,9E+09,9E+09,0]];

    VAR num X:=1;

    VAR triggdata triggcurrpos;

    VAR intnum int1;



    PROC main()


    SetDO P_Int, 0;

    IDELETE int1;

    CONNECT int1 WITH Cycletime;

    ISignalDO p_int, 1, int1;

    AccSet 50, 100; !Beschleunigung auf 50% setzen


    Jog;



    ENDPROC



    PROC Jog ()


    WHILE X=1 DO


    MoveJ Home,vmax,fine,tool0;

    MoveAbsJ P1,vmax,fine,tool0;

    TriggIO triggcurrpos, 0,\DOp:=P_Int , 1; !Signal P_Int auf 1 setzen

    TriggJ P2_Int, vmax, triggcurrpos, z10, tool0;

    MoveAbsJ P3, vmax, fine, tool0;

    MoveJ Home,vmax,fine,tool0;


    ENDWHILE


    ENDPROC






    TRAP Cycletime


    TPWRITE "Interrupt wurde aufgerufen!";


    ENDTRAP



    ENDMODULE





    Dabei konnte ich über die Beobachtungsfunktion in Robot Studio sehen , dass das Signal P_Int auf 1 gesprungen ist, sobald der Roboter an Punkt P2_Int angekommen ist. Aber anstatt in die Interrupt-Routine Cycletime zu springen, ist das Programm chronologisch weiter abgelaufen.

    Jetzt stellt sich die Frage: Woran liegt es, dass das Programm nicht abgebrochen wird?


    Vielen Dank für Eure Hilfe.


    Gruß, 20sot01

  • ANZEIGE
  • Guten Morgen.

    Selber noch nicht verwendet aber hätte da vielleicht eine kleine Anmerkung...

    Folgendes Beispiel konnte ich bei ABB finden und ich vermute das du dein Interrupt falsch verknüpft hast.


    Beispiel von ABB - TriggInt

    VAR intnum intno1;

    VAR triggdata trigg1;

    ...

    PROC main()

    CONNECT intno1 WITH trap1;

    TriggInt trigg1, 5, intno1;

    ...

    TriggL p1, v500, trigg1, z50, gun1;

    TriggL p2, v500, trigg1, z50, gun1;

    ...

    IDelete intno1;


    Ich würde folgendes ausprobieren.


    PROC main()


    SetDO P_Int, 0;

    IDELETE int1;

    CONNECT int1 WITH Cycletime;

    AccSet 50, 100; !Beschleunigung auf 50% setzen


    Jog;



    ENDPROC



    PROC Jog ()


    WHILE X=1 DO


    MoveJ Home,vmax,fine,tool0;

    MoveAbsJ P1,vmax,fine,tool0;

    TriggInt triggcurrpos,5,int1 ;

    TriggJ P2_Int, vmax, triggcurrpos, z10, tool0;

    MoveAbsJ P3, vmax, fine, tool0;

    MoveJ Home,vmax,fine,tool0;


    ENDWHILE


    ENDPROC




    Wie gesagt alles ohne Gewähr, da noch nie verwendet...

    Viel Erfolg :)

  • Ich denke er meint das der PZ nicht in die Interrupt gesprungen ist. Da er sich ja extra - TPWRITE "Interrupt wurde aufgerufen!"; - zur Kontrolle einprogrammiert hat...

  • Ich denke er meint das der PZ nicht in die Interrupt gesprungen ist. Da er sich ja extra - TPWRITE "Interrupt wurde aufgerufen!"; - zur Kontrolle einprogrammiert hat...

    Springt rein das stimmt nur es wird immer wieder die Programm wiederholt fehlt eine haltestelle oder boolsche variable,signal vom SPS etc.


    MFG


    Tamas

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