programming pipe welding using a single point
My name is George. I am a new user on the forum, forgive my English, but I need help.
Ok. My problem is that I want to program pipe welding through a single point, but when running the TCP program the tool does not stand still. ie robot makes unnecessary movements. And I have, together with the positioner, the robot describes other movements. At the same time, in step mode at the point P_SVARKA2,P_SVARKA3, p_svarka4 the Coordinates in jogging do not coincide with the set values of the point. If you record these movements by points( commented in the program, everything is fine) How to cope with it? help please!
I have robot is IRB 4600 and IRBP_L300_L1250_M2009_REV1_01 positioner.
Here is my program:
R is the pipe radius.
l is long from the center point to the weld.
My workobject has the following parameters:
NAME WbjSTN2
Robot holds workobject False
moved by mechanical unit stn1
programmed false.
the center of the my workobject and the direction of the axes coincide with the coordinate system of the positioner faceplate.
Axis x is directed upwards; axis Y is directed to the left.
MODULE TRUBA
LOCAL VAR robtarget P_SVARKA1:=[[10,0,124],[0.332717,0.635377,0.400919,-0.569964],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,0,9E+9]];
LOCAL VAR robtarget p_svarka2;
LOCAL VAR robtarget p_svarka3;
LOCAL VAR robtarget p_svarka4;
LOCAL VAR robtarget p_svarka5;
VAR num R;
VAR num L;
TASK PERS seamdata seam1:=[0,0,[0,0,0,0,0,0,0,0,0],0,0,0,0,0,[0,0,0,0,0,0,0,0,0],0,0,[0,0,0,0,0,0,0,0,0],0,0,[0,0,0,0,0,0,0,0,0],0];
TASK PERS welddata weld1:=[10,0,[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];
PROC R_TRUB2()
actunit stn1;
R:=10;
L:=124;
P_SVARKA1.trans:=[R,0,L];
p_svarka2:=[[0,-R,L],[0.302898,0.131523,0.638947,0.694767],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,90,9E+9]];
p_svarka3:=[[-R,0,L],[0.705456,0.544804,0.358803,0.277093],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,180,9E+9]];
p_svarka4:=[[0,R,L],[0.694767,0.638947,-0.131523,-0.302898],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,270,9E+9]];
p_svarka5:=[[R,0,L],[0.277093,0.358803,-0.544804,-0.705456],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,360,9E+9]];
MoveJ Offs(P_SVARKA1,R+200,0,0),v200,z50,tweldgun\WObj:=Wbjstn2;
ArcLStart P_SVARKA1,v200,seam1,weld1,fine,tWeldGun\WObj:=WbjSTN2;
ArcC P_SVARKA2,P_SVARKA3,v200,seam1,weld1,z0,tweldgun\WObj:=Wbjstn2;
ArcCend P_SVARKA4,P_SVARKA5,v200,seam1,weld1,fine,tweldgun\WObj:=Wbjstn2;
!MoveC [[0.00,-10.00,124],[0.302898,0.131523,0.638947,0.694767],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,90,9E+9]], [[-10.00,-0.00,124],[0.705456,0.544804,0.358803,0.277093],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,180,9E+9]], v200, z10, tWeldGun\WObj:=WbjSTN2;
!MoveC [[-0.00,10.00,124],[0.694767,0.638947,-0.131523,-0.302898],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,270,9E+9]], [[10.00,0.00,124],[0.277093,0.358803,-0.544804,-0.705456],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,360,9E+9]], v200, z10, tWeldGun\WObj:=WbjSTN2;
ENDPROC
ENDMODULE
Comments
-
Problem solved using CalcJointT functions.
0 -
Hi,
Your code was just about right.
You need to move the offset so the welding torch stays in the same place relative to the rotating positioner.
The orientation of the torch (relative to the rotating positioner ) also changes - but once you have used modify position to record the values at each of the 5 robtargets you can zero out the x,y,z as you will be using your varibles).
I have tested the below modified version of your code in RobotStudio and the welding torch stays in one position while the work piece rotates below it.
MODULE MainModule
LOCAL VAR robtarget P_SVARKA1:=[[0,0,0],[0.530656,0.45786,-0.544881,-0.460297],[0,0,0,0],[12300,9E+9,9E+9,9E+9,0,9E+9]];
LOCAL VAR robtarget p_svarka2:=[[0,0,0],[0.0497512,-0.0615331,-0.709045,-0.70071],[0,-1,0,0],[12300,9E+9,9E+9,9E+9,90,9E+9]];
LOCAL VAR robtarget p_svarka3:=[[0,0,0],[0.460297,0.544881,0.45786,0.530656],[0,-1,0,0],[12300,9E+9,9E+9,9E+9,180,9E+9]];
LOCAL VAR robtarget p_svarka4:=[[0,0,0],[0.70071,0.709045,-0.0615331,0.0497513],[0,-1,0,0],[12300,9E+9,9E+9,9E+9,270,9E+9]];
LOCAL VAR robtarget p_svarka5:=[[0,0,0],[0.530656,0.45786,-0.544881,-0.460297],[0,-1,0,0],[12300,9E+9,9E+9,9E+9,360,9E+9]];
VAR num R;
VAR num L;
PROC Main()
!main routine
TestingWelds;
ENDPROC
PROC TestingWelds()
R:=100;
L:=124;
actunit stn1;
MoveJ Offs(P_SVARKA1,200+R,0,L),v1000,z50,tweldgun\WObj:=wobjRotator;
ArcLStart offs(P_SVARKA1,R,0,L),v200,seam1,WD_6_LIN,z0,tWeldGun\WObj:=wobjRotator;
ArcC offs(P_SVARKA2,0,-R,L),offs(P_SVARKA3,-R,0,L),v200,seam1,WD_6_LIN,z0,tWeldGun\WObj:=wobjRotator;
ArcCend offs(P_SVARKA4,0,R,L),offs(P_SVARKA5,R,0,L),v200,seam1,WD_6_LIN,fine,tWeldGun\WObj:=wobjRotator;
MoveJ Offs(P_SVARKA5,200+R,0,L),v1000,z50,tweldgun\WObj:=wobjRotator;
DeactUnit STN1;
ENDPROC
ENDMODULE
0 -
Thanks, graemepaulin, your code is really simpler.
0
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
- 312 IRC5
- 59 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 793 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 5 Job listings