Hello all, I am currently working on a project using 2 Fanuc CR351A Collaborative robots and they are each holding a part in their grippers and inserting one part into the other. If the assembly fails and the parts collide, then the robots will fault out due to the external force being too large. If that occurs, I would like to set up a "recover" program so that the robot retracts from its current position and then places the parts back on the table, or the program can simply reverse completely to take the parts back to the table. I am not sure how to achieve this.
How to run a program simultaneously.
-
DG -
October 7, 2019 at 8:47 PM -
Thread is Unresolved
-
-
I've looked into this before but once I started getting all of the information I needed they moved the line to another building so I haven't done it yet. One option is Fanuc offers an "Auto Backwards Exit" feature that will allow you to record up to I believe 6,000mm of travel and when a collision is detected it will reverse back through the job. It is a paid option and I have not had the pleasure of working with it.
Another would be using a skip condition monitoring variable $MISC[1]_$HPD_TRQ[x] Using this you can watch to see which axis sees the biggest torque difference and execute the skip before it gets a collision detect. Again I've not been able to mess with this yet to tell you exactly how to set it up. But I was talking with another member on here about it and here is what he came up with for me to try.
SKIP CONDITION $MISC[1]_$HPD_TRQ[1] >= 20 // Here you will specify what condition you are using as a decision point. This will act like a branching instructione (if, then, else) that is checked during a move rather than between moves. You may not use 20 as your threshold, and you may use a different axis. You will have to find the threshold that works best for you.
L [2] 20mm/s CNT100 SKIP,LBL[100] // This is your break point. This is the move that approaches the surface of the part, but is on the lookout for your skip condition, which is the point when your torque rises above your set threshold. At that point, it will execute its next action.
You may need to do some testing with this as I haven't gotten around to it yet but the skip condition should jump to the label specified if the torque is seen to be equal to or above whatever you set it at.
-
Okay, thank you very much! I will give that a try. Do I put the skip condition in the actual program or am I running that like Background logic?
-
It would be entered in the actual program just before the move where you are encountering your collision. Like I said you'll have to play around with it a bit as i haven't been able to test it out yet. Although if I get some time tonight I may try to get mess around with it.
-
Thank you so much! I really appreciate your help. If you do find success with this, please advise me on how you accomplished it!