Multiple ABB robots cutting the same programs, TCP Issues
samj11
✭
Hi Guys,
New member, great forum with some excellent information!
Just a quick background.. I work for a company that machines flat sheet composite material 'kits' which go into the assembly of a number of different boats. Each 'kit' is machined using a range of rotary tools and can comprise of up to 120 different sheets of material therefore, multiple machines are used for one kit to reduce production time.
We currently have 4 x ABB 6400 robots with tool change spindles attached via an end effector and machine the parts on fabricated beds. We do our best to source the fabricated components (Bed, End Effector, Mounting Plinths etc) to be as accurately the same as we can but we know this is not possible.
We defined the TCP data from a single robot, this was then applied to our post processor in mastercam/robotmaster and is added to the toolpaths. The issue we are having, as you can imagine, is that cutting the same programs on each robot produces inaccuracies due to the TCP being used from one robot on all four. An example is we would cut a straight line with a 10mm end mill with the head not rotated at all and then bevel the edge with a 45 degree tool rotated at 90 degrees and we can get drastically different results from robot to robot.
We can't define the TCP for each robot separately as this would mean savings off thousands of the same programs again for each robot which isn't viable.
I may be being naïve, but is there a way to call the TCP data defined from an individual robot and apply it to a program before machining? or calling specific tooldata for that robot?
Any help would be greatly appreciated, Thankyou!
New member, great forum with some excellent information!
Just a quick background.. I work for a company that machines flat sheet composite material 'kits' which go into the assembly of a number of different boats. Each 'kit' is machined using a range of rotary tools and can comprise of up to 120 different sheets of material therefore, multiple machines are used for one kit to reduce production time.
We currently have 4 x ABB 6400 robots with tool change spindles attached via an end effector and machine the parts on fabricated beds. We do our best to source the fabricated components (Bed, End Effector, Mounting Plinths etc) to be as accurately the same as we can but we know this is not possible.
We defined the TCP data from a single robot, this was then applied to our post processor in mastercam/robotmaster and is added to the toolpaths. The issue we are having, as you can imagine, is that cutting the same programs on each robot produces inaccuracies due to the TCP being used from one robot on all four. An example is we would cut a straight line with a 10mm end mill with the head not rotated at all and then bevel the edge with a 45 degree tool rotated at 90 degrees and we can get drastically different results from robot to robot.
We can't define the TCP for each robot separately as this would mean savings off thousands of the same programs again for each robot which isn't viable.
I may be being naïve, but is there a way to call the TCP data defined from an individual robot and apply it to a program before machining? or calling specific tooldata for that robot?
Any help would be greatly appreciated, Thankyou!
0
Comments
-
I'm not sure I completely understand the problem, but I think this would work.Define a new tool and set it to the values of your original TCPtool_offset:=tool1;Compare the original TCP values with the desired TCP values and subtract/add the difference in an instruction like sotool_offset.tframe.trans.x:= tool1.tframe.trans.x+100;
tool_offset.tframe.trans.y:= tool1.tframe.trans.y+100;
tool_offset.tframe.trans.z:= tool1.tframe.trans.z+100;
Then use the tool_offset in your move instructions.
Alternatively you could log the TCP data from the FlexPendant into separate tooldata definitions and save it in your user.sys module.
PERS tooldata tool1 := [TRUE, [[148,0,326], [0.8339007,0,0.551914,0]], [1,[0,0,100], [1,0,0,0], 0,0,0]];
PERS tooldata tool2 := [TRUE, [[318,0,103], [0.8339007,0,0.94264,0]], [1,[0,0,100], [1,0,0,0], 0,0,0]];
You can then call the TCP you wish you use by specifying the tool in the movement instruction.0 -
samj11 said:
We can't define the TCP for each robot separately as this would mean savings off thousands of the same programs again for each robot which isn't viable.Lee Justice0 -
xerim said:I'm not sure I completely understand the problem, but I think this would work.Define a new tool and set it to the values of your original TCPtool_offset:=tool1;Compare the original TCP values with the desired TCP values and subtract/add the difference in an instruction like sotool_offset.tframe.trans.x:= tool1.tframe.trans.x+100;
tool_offset.tframe.trans.y:= tool1.tframe.trans.y+100;
tool_offset.tframe.trans.z:= tool1.tframe.trans.z+100;
Then use the tool_offset in your move instructions.
Alternatively you could log the TCP data from the FlexPendant into separate tooldata definitions and save it in your user.sys module.
PERS tooldata tool1 := [TRUE, [[148,0,326], [0.8339007,0,0.551914,0]], [1,[0,0,100], [1,0,0,0], 0,0,0]];
PERS tooldata tool2 := [TRUE, [[318,0,103], [0.8339007,0,0.94264,0]], [1,[0,0,100], [1,0,0,0], 0,0,0]];
You can then call the TCP you wish you use by specifying the tool in the movement instruction.0 -
lemster68 said:samj11 said:
We can't define the TCP for each robot separately as this would mean savings off thousands of the same programs again for each robot which isn't viable.
The TCP is defined from one robot and these values are then sent offsite and the 'End Effector' (tool) is created. All of our toolpathing programs are then created in Mastercam and posted using Robotmaster with the specific 'End Effector' added. The program code is created with the TCP values from the single defined robot but is run on 4 different robots, this is where the inaccuracies occur whilst machining.
If we had an 'End Effector' (tool) created for each robot then the program would have to be saved off 4 separate times with the corresponding robot. This is when the thousands of programs we use for individual sheets would need saving off 4 times each.
I've attached some pics of our set up to illustrate it a little better. There's also an example of a sheet we machine and its program code if there is something obvious! The defined TCP values are highlighted but I need to find a way so that these are altered for each robot when the program is called up to be ran on the shop floor.
Really appreciate the help!
0 -
Sorry, the TCP quarternian values are highlighted, these are different for each robot but the program runs from the defined robot meaning that when the head rotates or tilts on another robot, it moves the machining tool away from where it should be. I need a way to call up the robot specific quarternian values for each seprate robot.
Thanks, Sam0 -
Do not declare the tool in the download. Declare it in a module unique to each robot, like the USER module.Lee Justice0
Categories
- All Categories
- 5.5K RobotStudio
- 396 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 250 ScreenMaker
- 2.8K Robot Controller
- 316 IRC5
- 61 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 799 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 5 Job listings