one doubt about a KUKA instruction.

  • Unlike RAPID, KRL does not have a dedicate "search move" function. Instead, you create an Interrupt that triggers on a particular input or inputs. The Interrupt calls an "interrupt service routine" that you craft to carry out whatever you want the robot to do when the Interrupt occurs.


    There's a lot about this in the forum archives, but it sounds like you'll want to create a dedicated Search Motion subroutine, containing your motion and interrupt, then an ISR that uses BRAKE to halt the robot physically, then RESUME (which is very badly named!) to cancel the in-progress motion and (this is important!) return the program pointer to the level where the Interrupt was declared. So if your Main program has the DECL INTERRUPT, the RESUME command in the ISR would basically skip the entire remaining portion of the Search subroutine, and the program pointer would jump to the line in Main immediately after the call to Search.


    It's more work than coding a search in RAPID, but gives you much more granular control in return. Which is a pretty common pattern, comparing KUKAs to ABBs, in general.

  • Unlike RAPID, KRL does not have a dedicate "search move" function. Instead, you create an Interrupt that triggers on a particular input or inputs. The Interrupt calls an "interrupt service routine" that you craft to carry out whatever you want the robot to do when the Interrupt occurs.


    There's a lot about this in the forum archives, but it sounds like you'll want to create a dedicated Search Motion subroutine, containing your motion and interrupt, then an ISR that uses BRAKE to halt the robot physically, then RESUME (which is very badly named!) to cancel the in-progress motion and (this is important!) return the program pointer to the level where the Interrupt was declared. So if your Main program has the DECL INTERRUPT, the RESUME command in the ISR would basically skip the entire remaining portion of the Search subroutine, and the program pointer would jump to the line in Main immediately after the call to Search.


    It's more work than coding a search in RAPID, but gives you much more granular control in return. Which is a pretty common pattern, comparing KUKAs to ABBs, in general.

    thank you very much for the info SkyeFire

  • Unlike RAPID, KRL does not have a dedicate "search move" function. Instead, you create an Interrupt that triggers on a particular input or inputs. The Interrupt calls an "interrupt service routine" that you craft to carry out whatever you want the robot to do when the Interrupt occurs.


    There's a lot about this in the forum archives, but it sounds like you'll want to create a dedicated Search Motion subroutine, containing your motion and interrupt, then an ISR that uses BRAKE to halt the robot physically, then RESUME (which is very badly named!) to cancel the in-progress motion and (this is important!) return the program pointer to the level where the Interrupt was declared. So if your Main program has the DECL INTERRUPT, the RESUME command in the ISR would basically skip the entire remaining portion of the Search subroutine, and the program pointer would jump to the line in Main immediately after the call to Search.


    It's more work than coding a search in RAPID, but gives you much more granular control in return. Which is a pretty common pattern, comparing KUKAs to ABBs, in general.

    hi again SkyeFire .

    I´m having hard troubles to declare the interrupt. i don´t know if you could help me.

    reading a lot of manuals i see diferents ways but noone works:

    -declaring the interrupt in src ( DECL INTERRUPT INTER1 or INTER1()) it says: unkown type.

    -writing "INTERRUPT DECL 4 WHEN &IN[6]==TRUE DO INTER1", it says: name no declared as sp".

    -declaring INTER1 as: DECL GLOBAL INT INTER1" in dat, it don´t say anythingbut don´t recognize anything anywhere.


    i tried to the declare "&INTER1" as a variable but is no posible.

    By the vkr i cant select the instruccion "INTERRUP" because this ain´t on the softkey menus.

    have you got any idea?

  • please change HMI language to English so we can understand messages. this is English forum. there are sub forums for other languages, pick one,,


    interrupt is just a way to call a subprogram.


    if you have program called DO_SOMETHING.SRC

    it can be used as a subroutine. then calling it from other program would require typing name in the main program as

    DO_SOMETHING()


    but if you want to call it using interrupt, line is longer (as you have typed) and contains other syntax elements.


    in both cases if the subroutine is missing (or maybe it is named differently), you will get message that it cannot find it.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • That code should also work on your old robot.

    As I already told you the statement IN[1] (in your case IN[6]) mus be $IN[1] (in your case $IN[6]).

    But there must be some other requirements like a defined e6pos P1 and P2.

    That are basics. The forum can't serve a complete programming course.:frowning_face:

  • sorry about the language in the hmi.

    Finally the matter was because i din´t wrote all the subroutines.

    now it seemesit doesnt give any error.

    gonna try if the robot do what he must do

  • That code should also work on your old robot.

    As I already told you the statement IN[1] (in your case IN[6]) mus be $IN[1] (in your case $IN[6]).

    But there must be some other requirements like a defined e6pos P1 and P2.

    That are basics. The forum can't serve a complete programming course.:frowning_face:

    it doesn´t show any error already. everything is defined (e6pos) in the .dat of the main, and the IN is with $.

    Now i try to run it and the only message it shows is " interrupt 3 not defined". Do you know where or how i must define it?

  • Simplest solution for interrupt 3 problem is to copy the INI fold from the template or a program that was created with the KUKA HMI.


    Interrupt 3 DECL is normally part of the INI fold of standard KUKA programs. If you skipped over the INI, that could cause the "Interrupt 3 Not Defined" message.

    thank you guys. the robot works perfectly.

Advertising from our partners