Hi all.
anybody knows how can i do to program a searching routine/movement in a robot KUKA as it does in ABB?
Thanx.
Hi all.
anybody knows how can i do to program a searching routine/movement in a robot KUKA as it does in ABB?
Thanx.
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?
There are so many examples for interrupts here in the forum, please use search function.
F.e.: RE: Motion stop
but in that post in line 2 IN[1] shoud be $IN[2].
use search term:
RESUME command
(both words)
There are so many examples for interrupts here in the forum, please use search function.
F.e.: RE: Motion stop
but in that post in line 2 IN[1] shoud be $IN[2].
it seems it doesnt works in this way.
i wrote exactly your code but shows a lot of errors.
maybe it could be because it´s an very old kr150 and an old vkrc1
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.
also read READ FIRST...
when posting screenshots, make sure entire screen is visible and readable.
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.
Display Moreplease 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.
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.
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?
also read READ FIRST...
when posting screenshots, make sure entire screen is visible and readable.
i think my mobile has too much definition, sorry
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.
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.