# How to arc along circular path

South Korea
I am welding our product with abb robot and program.
Outdiameter of product is 1020mm so i divided teaching point with 24 points.
I get ArcC offset parameter through laser vision sensor.
But caculated path is not equal to our real product.
There are 2~3mm gaps in some position.
Is there any faults in programming?

below rapid program.

MoveJ Offs(p1,100,0,100), v1000, z50, EUNHO\WObj:=wobjSide;
ArcLStart Offs(p1,a1,b1,c1), speed1, seam1, Weld_No1_1UN\Weave:=weave1, fine, EUNHO\WObj:=wobjSide;
ArcC Offs(p2,a2,b2,c2), Offs(p3,a3,b3,c3), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p4,a4,b4,c4, Offs(p5,a5,b5,c5), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p6,a6,b6,c6), Offs(p07,a7,b7,c7), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p8,a8,b8,c8), Offs(p09,a9,b9,c9), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p10,a10,b10,c10), Offs(p11,a11,b11,c11), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p12,a12),b12),c12), Offs(p13,a13,b13,c13), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p14,a14,b14,c14), Offs(p15,a15,b15,c15), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p16,a16,b16,c16), Offs(p17,a17,b17,c17), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p18,a18,b18,c18), Offs(p19,a19,b19,c19), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p20,a20,b20,c20), Offs(p21,a21,b21,c21), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p22,a22,b22,c22), Offs(p23,a23,b23,c23), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcC Offs(p24,a24,b24,c24), Offs(p25,a1,b1,c1), v1000, seam1, Weld_No1_1UN\Weave:=weave1, z10, EUNHO\WObj:=wobjSide;
ArcLEnd Offs(p26,a1,b1,c1), v1000, seam1, Weld_No1_1UN\Weave:=weave3, fine, EUNHO\WObj:=wobjSide;
MoveJ Offs(p26,100,0,100), v1000, z50, EUNHO\WObj:=wobjSide;
MoveJ Offs(p26,500,0,500), v1000, z50, EUNHO\WObj:=wobjSide;

• Republic of Korea
which sensor maker do you use?
• South Korea
I use "Servo robot / i cube"
• United States ✭✭✭
I see z10 is used, try smaller zone.  Also, I see a weave, maybe check into your weavedata.
Lee Justice
• United States ✭✭✭
Also, make sure that you have a really good TCP.
Lee Justice
• Korea, South ✭✭
The welding path looks like a circle.  If so, you don't need to divide the path several sections.
Only four points  are enough to make a circle. (ex. pCircle10, pCircle20, pCircle30, pCircle40)
Try to modify your RAPID code as follows.
ArcLStart pCircle10, ...
ArcC pCircle20, pCircle30, ...
ArcCEnd pCircle40, pCircle10, ...
As lemster68 mentioned, it is essential to reduce zonedata at the mid point and define an accurate TCP.
• South Korea
edited July 6

Finally, I found a exact welding path.
but I changed rapid programming.

1. I used ArcL instead of ArcC despite circular path ( fixing welding tool, rotating additional 7-axis)
2. used standard work object.

then, problem is what weaving is not constant.
for example, there is horizontal weaving in p1~p2, vertical weaving in p2~p3.
so I changed weave data(dir_angle, tilt_angle, ori_angle) but there is same problem.