Hope this helps.
Posts by JMF
-
-
First. If you have not yet attended a course for ABB Robot Programming, I strongly suggest to consider it. It will help a lot.
Second. Get Robotstudio if possible. It is lot easier and faster than on FlexPendant.
Third. Can you supply more details regarding the system you are using. S4C/IRC5?
I am using RS and is quite easier for me than on the FlexPendant. I am trying to put something together for you on how to do this on FlexPendant
-
Click on the "?" under the close button in RobotStudio there you will find the manual indicated. I haven't got a copy of the manual.
-
Have a look at WZHomeJointDef (World Zone Home Joint Definition) in the Rapid Instructions, Functions and Data types manual.
-
I do not know of a shortcut other than switch of welding and rerun the root pass as it would have welded and then switch welding back on after the run for the 2nd and 3rd passes. But what I have noticed is that your tracking might differ a bit because multipass requires tracking to be 100% correct.
-
When you use Multipass, you use the first weld as your reference to your mulitpass offsets. If your weldpath/reference weld change, your offsets will change. If you change you multipass data, your weld will be still referenced to where your first weld was only your offsets will adjust. So in short. When you change your weld path/reference weld, you need to rerecord that seam for the offsets to be accurately referenced to the weld path.
-
Also is your parameter set to "True" in the Trackdata for Store Path?
This must be set active to store the path names.
-
Question. Is the seam names stored as arrays or is it a string instruction?
As far as I know it should be "your_seam_name" if it is not declared in your data and "Your_seam_name{array nr}" if it is stored as array. NOTE the Inverted commas.
-
Make sure your seam names is unique to your seams.
-
What you can try.
Get the Schedule signal (on our system it was labeled goSchedule_1) and Weld Signal (our system is doWeld) from your powersource and use that signals when in position with SetDo instruction.
For instance
Move to Approach Point;
Move to Tack Point;
SetGo goSchedule_1,11;
Setdo doWeld,1;
WaitTime 0.5;
Setdo doWeld,0;
SetGo goSchedule_1,0;
Move to Depart point;Obviously you will have to set your welding parameters for the welding required and store it in your schedule. That will then be your variable that is activate by the SetGo instruction.
-
Modify and store each position for each point of the wobj, ex. X1=pWobj_O_PointX1, X2=pWobj_O_PointX2 and Y1=pWobj_O_PointY1.
When loading the new fixture, run the routine for these positions and manually jog to fine tune the wobj. No more heavy manual jogging
Program the routine something like this:
! Points are read in order of declaration.
! Please do not change the order of points!
LOCAL PERS robtarget pWobj_O_PointX1:=[[4740.57,975.81,574.97],[0.00162589,-0.707593,0.706561,-0.00903695],[0,1,-2,0],
[4625.08,9E+09,9E+09,9E+09,9E+09,9E+09]];
LOCAL PERS robtarget pWobj_O_PointX2:=[[4734.34,1994.04,569.21],[0.00162876,-0.707594,0.706559,-0.00903434],[0,1,-2,0],
[4625.08,9E+09,9E+09,9E+09,9E+09,9E+09]];
LOCAL PERS robtarget pWobj_O_PointY1:=[[861.92,978.29,592.72],[0.000285452,-0.803456,0.595294,-0.00917913],[0,1,-2,0],
[840.241,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST jointtarget Part_SafePos:=[[90.1096,-58.6954,33.1946,-0.190265,56.8059,0.138645],
[2434.52,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR num Part_Select;
PROC Part_WobjSetup()
TPErase;
TPReadFK Part_Select,"Setup Work Object ?","","",sAnswer_YES,"","";
IF Part_Select=3 THEN
Part_SafePos_Rout;
MoveJ Offs(pWobj_O_PointX1,0,0,100),v2500,fine,tWeldGun_Short\WObj:=wobj0;
MoveJ pWobj_O_PointX1,v2500,fine,tWeldGun_Short\WObj:=wobj0;
Stop\NoRegain;
MoveJ Offs(pWobj_O_PointX1,0,0,100),v2500,fine,tWeldGun_Short\WObj:=wobj0;
MoveJ Offs(pWobj_O_PointX2,0,0,100),v2500,fine,tWeldGun_Short\WObj:=wobj0;
MoveJ pWobj_O_PointX2,v2500,fine,tWeldGun_Short\WObj:=wobj0;
Stop\NoRegain;
MoveJ Offs(pWobj_O_PointX2,0,0,100),v2500,fine,tWeldGun_Short\WObj:=wobj0;
MoveJ Offs(pWobj_O_PointY1,0,0,100),v2500,fine,tWeldGun_Short\WObj:=wobj0;
MoveJ pWobj_O_PointY1,v2500,fine,tWeldGun_Short\WObj:=wobj0;
Stop\NoRegain;
MoveJ Offs(pWobj_O_PointY1,0,0,100),v2500,fine,tWeldGun_Short\WObj:=wobj0;
Part_SafePos_Rout;
ENDIF
ENDPROCPROC Part_SafePos_Rout()
MoveAbsJ Part_SafePos,v1000,fine,tWeldGun_Short\WObj:=wobj0;
ENDPROC -
Did you get it working?
I have recently done a similar application and mine worked perfectly.
Try this:
1. Move To Position
2. Wait for signal from axis (zero/ref position)
3. Set Welding signal On
4. Wait for Welding signal On
5. Move To Position (same position as 1)
6. Wait for signal from axis (zero/ref position)
7. Set Welding signal Off
8. Move Out of Position
NOTE. When using this method and NON ABB axis which is not fully integrated and without multitasking, you are not able to use Tracking or Weaving in your welding. This method is a dirty way but is working.
-
Hi Guys.
I am in need to find a used Positioner for a ABB 4600 that's running on a track.
We are welding heavy components for Mining machines which needs to be turned constantly because of the component's design.
If anyone know of a positioner that will able to carry more than 3 tons weight overall, please reply.
Thanks