Welcome, Guest. Please login or register.
Did you miss your activation email?
December 03, 2008, 10:52:33 PM
Home Help Search Calendar Login Register
News: Any Problems or Experience with Industrial Robots ?
Register and place your Question to worldwide Robotexperts right here !

+  Robotforum | Support for Robotprogrammer and Users
|-+  Robot Help and Discussion Center
| |-+  KUKA Robots (Moderators: Werner Hampel, kai_n, MartinH)
| | |-+  Two robot: cooperation
0 Members and 1 Guest are viewing this topic. « previous next »
Pages: [1] Print
Author Topic: Two robot: cooperation  (Read 840 times)
Andicot
Newbie
*
Offline Offline

Posts: 25


« on: July 28, 2008, 06:43:04 PM »

I have two robot in the same cell, the robots are linked with profibus.
Start and stop with automatc external.
The work is handling and finishing mold part:
The main robot take the part from the mold and put on a bench drilling, after start to drill
The second robot cooperate in drill operation, after take the part from the bench drilling and put the part in other bench.

There are some part to mold in the same cell.
I think:
I load specific program for the part to work in main robot
main robot with The P00 (AUTOMATIC EXTERNAL) module load the specific program for the part to work in second robot.
i check the home position for start the two robot.
The secon robot wait for a numeric variable passed by main robot than mean the step of the program that is running
step 1: unloading part from the mold
step 2: loading part to bench
Step 3: drilling
Step 4: end drilling
at step 3 the second robot start to drill
Step 4: second robot take the part from the bench

Other ideas?

I think to implemets working area but is not simple because the part is not big (1mtx0.50mt) and the robot are kr 125/2 and to drill they must go very near.
I think that the only way is that second robot wait step from main robot.
« Last Edit: July 28, 2008, 07:51:24 PM by Andicot » Logged
potis
Newbie
*
Offline Offline

Posts: 21


« Reply #1 on: July 28, 2008, 07:32:27 PM »

when i have cooperation with robots and machines or robots with robots i use digital output. For example when the first robot enters the cooperation area sets a digital output on and it is always on untilt it exits that area. the other robot waits for that specific output to be off and then  goes into that area and when it does it sets another digital output on so that the first robot will not enter.
it is very simple it works fine and it is very secure for the machines
Logged
asimo
Full Member
***
Offline Offline

Posts: 174


« Reply #2 on: July 29, 2008, 02:16:26 AM »

You will find the menu to do this under "Configure -> Miscellaneous -> Monitoring working envelope -> Configure".
Logged
Tuipveus
Newbie
*
Offline Offline

Posts: 20


« Reply #3 on: August 20, 2008, 09:34:02 PM »

when i have cooperation with robots and machines or robots with robots i use digital output. For example when the first robot enters the cooperation area sets a digital output on and it is always on untilt it exits that area. the other robot waits for that specific output to be off and then  goes into that area and when it does it sets another digital output on so that the first robot will not enter.
it is very simple it works fine and it is very secure for the machines

This is not secure way. Not because it doesn't have syncronization. In this example robots might be in that part of the cycle that both of them would like to go to cooperation area and they have just checked the signal that another one is not in that same area. Then they would crash. Secure way is more complicate.


Let's say you have robots 1 and 2 and they have shared area x where both of them want to work. You need 3 outputs and 3 inputs and 1 boolean for each robot.

1 bit output for sending signal which tells that robot wants to go to area.
1 bit output for sending signal which tells that "I am currently on forbidden area"
1 bit output for sending signal "it is ok, that you will go to area, I wont"
1 boolean for remembering that another robot is asking to go to area, but we haven't acknowledge that yet.
similar inputs to outputs

1. First robot 1 checks that input area_x_acknowledge_rob1=FALSE and boolean area_x_allowed=TRUE. Then robot 1 request with signal which tells that robot 1 wants to go to area. (area_x_request_rob1=TRUE)
2. After receiving request robot 2 checks that itself is not in that area and itself request for same area is FALSE.  After that it sets internal boolean (area_x_allowed) false, and sends feedback for robot1 that request is ok with signal (area_x_acknowledge_rob1=TRUE)
3. After that robot 1 will notice that both it's request to area and acknowledge from another robot is TRUE, so it will set area_x_not_reserved_rob1=FALSE (area is actually reserved) and drops area_x_request_rob1=FALSE.
4. After that robot 1 can freely work in area.
5. When robot 1 leaves from area it just sets area_x_not_reserved_rob1=TRUE (area is not reserved for rob1 anymore, rob2 it is your turn if needed).

During the time when area_x_not_reserved_rob1=FALSE (area reserved to robot 1) robot 2 can set it's internal boolean area_x_allowed=TRUE. Always before requesting you have to check that both area_x_not_reserved=TRUE (area not reserved for rob1) and  internal variable area_x_allowed=TRUE.

I hope I got all trues and falses right. Programming this is easier than explaining.

Using this method you can make secure communicating with multiple robots and multiple areas. If you have a lot of robots, things get quite confusing anyway. Addition to this I would also make different signals for working envelope. Safe state of the signal should always be FALSE, so if your profibus goes down you can be sure that robot wont expect anything.
Logged
RAS-Skordos GR
Newbie
*
Offline Offline

Gender: Male
Posts: 21



« Reply #4 on: August 21, 2008, 12:27:37 PM »

Personally, I wouldn't use envelope monitoring.

I always use digital signals, but in a secure / synchronous way, very much like Tuipveus described.
With the asynchronous way Potis described, you have TWO good chances to end up with a crush.
As Tuipveus explained in their last sentence, program carefully. If somebody stops/resumes the operation of the robot or if the power goes down or if for some reason the communication stops before completion, make sure that it can be restarted safely without getting into some chaotic situation.
Logged
Andicot
Newbie
*
Offline Offline

Posts: 25


« Reply #5 on: August 21, 2008, 05:09:22 PM »

...

I always use digital signals, but in a secure / synchronous way, very much like Tuipveus described.
...

You can tell us what you mean?
You how it works?
Logged
RAS-Skordos GR
Newbie
*
Offline Offline

Gender: Male
Posts: 21



« Reply #6 on: August 22, 2008, 04:22:58 PM »

I can give you an example of something I have done in the past.

Two robots. One doing spot welding and the other arc welding. Both work on the same part at the same time and there are many areas where they could collide. Also, there are some areas where the "spot" robot must work before the "arc" robot can do its work. The following example however, is more generic.

The procedure is very similar to what Tuipveus described.
I have used a number of signals:
Out[1]-Out[3] -> forming a binary number corresponding to which area the robot is interested to enter.
Example: '001' is area 1, '010' is area 2, '011' is area 3, etc.
Out[4] -> is used as a request; that robot is interested in entering this area.
There are also internal variables where the robot stores that 'xxx' area is now busy by itself.
Out[5] -> is used as a final OK

The other robot(s) must respond in the same way. That area 'xxx' is or isn't busy.

Full example:
Robot 1 asking...
Out[1] = false
Out[2] = false
Out[3] = true   (area '001')
Out[4] = true   (want to enter)

Robot 2, 3, 4, ..., n answer AFTER they have checked their internal variables...
Out[1] = false
Out[2] = false
Out[3] = true   (area '001')
Out[4] = true   (clear to enter)

After robot 1 has checked the answers from ALL the coop robots....
after robot 1 has checked that all the robots have answered about the SAME area number....
and after robot 1 has checked that ALL the answers were OK, it sets its internal variables and answers:
Out[1] = false
Out[2] = false
Out[3] = true   (area '001')
Out[5] = true   (OK, I'm in)

To ALL the robots, I have also programmed a loop that works as a timer. Everybody must answer within a specific time. If not, it is up to you to decide what to do. You can either restart the whole communication, or you can stop everybody and sound a siren. Out[5] is used just to stop this timer to all robots.
In that way if (for any unpredictable reason) they get de-synchronised...
- they won't make a false decision
- they will not hang and stand there waiting for something that will never come
- they will not be re-triggered by the next robot that makes a request and so end up with a HUGE chaotic mix-up!

Hope this helps....
Logged
Andicot
Newbie
*
Offline Offline

Posts: 25


« Reply #7 on: August 22, 2008, 08:15:28 PM »

I do this.
this is what the robots must do:
Cycle stamping and milling with 2 robots in cooperation
Robot 1                                                                              Robot 2
Step Operations performed                                                Step Operations performed
0      Standby press open                                                    0      Location HOME
        Unloading press                                                                  Wait Robot 1-step 1
        Deposit support
        take electrospindles
        Positioning start milling
 
1      Wait Robot2 to step 2                                                 1     Positioning start milling
2      Milling Zone A                                                               2     Milling Zone B
3      Wait Robot 2 to Step 3                                                3     Wait Robot 1 to step 3
4      Milling zone C                                                               4     Milling Area D
5      Deposit electrospindles                                                5     Wait Robot 1 to step 6
6      Wait Robot2 to step 7                                                  6     Take piece from the bench
                                                                                                    Free bench area
7      Withdraw Support
        positioning front the press                                           7     Transportation piece zone unload
                                                                                                    Back in position HOME

Back to step 0                                                                             Back to step 0

For do this:
I used 4 output of robot1 linked to 4 input of robot 2 to read from robot2 the step of robot1 converted in integer 0-15
to be sure that the step is read correct i reflect the 4 bit to the robot1 with 4 output of robot 2 to input of robot1
I use 1 bit for strobe for each robot
The same from robot 2 to robot1 for read from robot 1 the step of robot2
To set the step of the robot:
          bit strobe_R1 = false
          step_R1=5
          when step_R1_refl=5 then bit strobe_R1=true

in sps of each robot i reflect the step
          step_R1_refl=Step_R1

to wait the step from other robot

             wait for bit_strobe_R2=true and step_R2=5


« Last Edit: August 22, 2008, 08:18:51 PM by Andicot » Logged
jseger
Jr. Member
**
Offline Offline

Posts: 94



« Reply #8 on: August 22, 2008, 10:04:29 PM »

this is good stuff.   dance2   dance 
Logged
Tuipveus
Newbie
*
Offline Offline

Posts: 20


« Reply #9 on: August 31, 2008, 09:45:47 PM »

I understand your point with "cycle stamping" andicot, but system which I was describing makes able to stop or start in any phase of another robot work cycle. That made it cool in my past project. However, depending of system this feature might, or might not be useful.
Logged
Andicot
Newbie
*
Offline Offline

Posts: 25


« Reply #10 on: September 06, 2008, 05:15:18 PM »

I used your solution in an other application with 2 robot with al lot of work to do in the same area.
Logged
markopo
Jr. Member
**
Offline Offline

Gender: Male
Posts: 65


« Reply #11 on: September 07, 2008, 09:28:56 AM »

Hi all.
That solution which You describe is more flexible and time-loss than allow robot goes into area if everyone robots are in his starting point in cell ? This method allows to work togheter more than 1 robots in one area ?
Logged
Tuipveus
Newbie
*
Offline Offline

Posts: 20


« Reply #12 on: September 12, 2008, 10:50:02 PM »

Hi all.
That solution which You describe is more flexible and time-loss than allow robot goes into area if everyone robots are in his starting point in cell ? This method allows to work togheter more than 1 robots in one area ?

Yes. It allows n robots to work in same area, where n can be a big number. Reserving of the area (and it's time) is depending of each robot work-cycle, so no time is wasted for "waiting other robot". Balancing the work is also possible, if you have multiple areas for multiple robots, where some of the areas are "faster" than other. If one of the area has some problems with automation (other than robots), robots can easily continue working in another area.   

ps. Sorry about that messy example. I think you got the idea anyway.
Logged
Pages: [1] Print 
« previous next »
Jump to:  


Login with username, password and session length

Powered by MySQL Powered by PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!