Handshaking between robots: What is Best Practice?
Options

bran21
✭
in RobotStudio
Hello,
I am needing help understanding how to handshake between multiple robots and prevent any collisions from happening. How is this best done?
I see that you can SetDO() and TestDI() in RAPID but I am confused what else needs to be done and how do I communicate between the robots and read other I/O signals from other robots.
Some robots will need to handshake with 2 robots, while other robots might need to handshake with 3 robots and prevent collisions.
Will they all need at least 4 signals? Or how do you normally handle the I/O? I would love to see someones example.
1. PartReady - input
2. RobotReady - Output
3. PickComplete - Output
4. ResetHandshake - input
Any advice is appreciated!
I am needing help understanding how to handshake between multiple robots and prevent any collisions from happening. How is this best done?
I see that you can SetDO() and TestDI() in RAPID but I am confused what else needs to be done and how do I communicate between the robots and read other I/O signals from other robots.
Some robots will need to handshake with 2 robots, while other robots might need to handshake with 3 robots and prevent collisions.
Will they all need at least 4 signals? Or how do you normally handle the I/O? I would love to see someones example.
1. PartReady - input
2. RobotReady - Output
3. PickComplete - Output
4. ResetHandshake - input
Any advice is appreciated!
Tagged:
0
Answers
-
First thing, is there a PLC controlling the workcell? If so, it should be the "traffic cop" directing traffic.Lee Justice0
-
lemster68 said:First thing, is there a PLC controlling the workcell? If so, it should be the "traffic cop" directing traffic.
I do have a Beckhoff PLC running TwinCAT but struggling setting up the PLC to communicate with RobotStudio, I know it needs to be OPC UA. I found UAExpert (Does that sound familiar-or do you suggest something different for OPC?).
Thank you again! Your help and advice mean so much!0 -
I wouldn't worry about the PLC communicating with RS, it's the robots that need to communicate.
See here for example routines:
https://github.com/ernell/ABB-RAPID-UTILITY-LIBRARY/blob/master/Contributions/LeeJustice/LEERULZ.mod
Take care that clear signals need to be high to signal clear and dropped low for not clear. This is fail-to-safe working for if there is a robot with an IO failure or is simply just powered down.Lee Justice0 -
lemster68 said:I wouldn't worry about the PLC communicating with RS, it's the robots that need to communicate.
See here for example routines:
https://github.com/ernell/ABB-RAPID-UTILITY-LIBRARY/blob/master/Contributions/LeeJustice/LEERULZ.mod
Take care that clear signals need to be high to signal clear and dropped low for not clear. This is fail-to-safe working for if there is a robot with an IO failure or is simply just powered down.
Thank you for sharing your example-I will take a look at it!
Do you know If I were to use a PLC as my traffic cop,
would I need to use both OPCUA and 'SmartComponents' or could I avoid the SmartComponents step? (just want to make sure I'm not skipping anything and having troubles understanding the SmartComponents)
I know I need to create Digital Inputs and outputs for each robot and those can be controlled via RAPID,
but I'm getting stuck going any further than that and getting stuck on trying to connect the PLC / OPCUA to the RobotStudio.
Thank you for your patience and help!
0 -
I have 2 welding robots in 1 cell and don't use a plc.
Handshaking between the 2 arms is done using WaitSyncTask.
Each arm then waits at predetermined task position until both have reached the same task number.
very useful in case one has stopped due to a weld error, and also before the jig positioner is rotated0 -
Grahammy said:I have 2 welding robots in 1 cell and don't use a plc.
Handshaking between the 2 arms is done using WaitSyncTask.
Each arm then waits at predetermined task position until both have reached the same task number.
very useful in case one has stopped due to a weld error, and also before the jig positioner is rotated
So all I need to do is to create the digital inputs and outputs, and the handshaking is done in the RAPID code by utilizing 'WaitSyncTask' and SETDI and SETDO? Any other steps that need to be done? I saw someone do something under 'station logic --> signals and connections' but wasn't sure why someone would use that.0 -
Just digital In's and out's to the PLC. The PLC will receive a request, it will check to see if a zone or area is clear, and check to see if there is a request active from another robot at the same time. If it is clear and not also requested by another, it grants permission to enter by turning on an output to the robot. If there are simultaneous requests, it must prioritize the permission, not granting simultaneous access. That would be bad. The robot will turn off the request and the clear bit off, then go to do what it must do. When it leaves the area, it will turn the clear bit back on, signaling clear. One must be careful that the robot read ahead does not set clear too soon. Normally moves with fine points are used to ensure this.Lee Justice0
Categories
- All Categories
- 5.6K RobotStudio
- 400 UpFeed
- 20 Tutorials
- 14 RobotApps
- 301 PowerPacs
- 406 RobotStudio S4
- 1.8K Developer Tools
- 250 ScreenMaker
- 2.8K Robot Controller
- 348 IRC5
- 74 OmniCore
- 8 RCS (Realistic Controller Simulation)
- 844 RAPID Programming
- 21 AppStudio
- 4 RobotStudio AR Viewer
- 19 Wizard Easy Programming
- 109 Collaborative Robots
- 5 Job listings