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