Handshaking between robots: What is Best Practice?

Options
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! 

Answers

  • lemster68
    lemster68 ✭✭✭
    First thing, is there a PLC controlling the workcell?  If so, it should be the "traffic cop" directing traffic.
    Lee Justice
  • lemster68 said:
    First thing, is there a PLC controlling the workcell?  If so, it should be the "traffic cop" directing traffic.
    Thank you! I am definitely struggling with finding the correct order of steps to follow, so thank you for mentioning the PLC! I totally zoomed passed that step. 


    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!  
  • lemster68
    lemster68 ✭✭✭
    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 Justice
  • 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.
    Hello Lee,
    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!
  • 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
  • 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
    Awesome! Thank you for the reply! 

    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. 
  • lemster68
    lemster68 ✭✭✭
    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 Justice