How to arc along circular path

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?
Help me please.

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;

which sensor maker do you use?

I use “Servo robot / i cube”

I see z10 is used, try smaller zone. Also, I see a weave, maybe check into your weavedata.

Also, make sure that you have a really good TCP.

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.

thanks for replys.

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.
please help me again.

I am having a similar problem.
I have a 2 pipes which are coming into angle iron at different angles and my ArcC,s are not staying on path i programmes i have a lot of points.
Does Arcl would just as good??