Is there a way to copy more than one line at a time in the teach pendant. I doing a welding program that welds to two parts and then repeats this again but with an offset. I only seem to be able to copy one line at a time which is quite slow.
ABB copy in teach pendant
-
David.mms -
August 15, 2018 at 1:33 PM -
Thread is marked as Resolved.
-
-
Put the program in a subroutine, call the same routine (ProcCall) twice in your "main" weld routine with an offset applied between the two (PDispSet or through workobjects/userframe)
or
Put the program within a For x loop, with an offset applied between the two (PDispSet or through workobjects/userframe) on the second round
or
to answer your specific question.... edit and (I think it was) "mark", tap up/down to mark the area you want and then select copy. -
That seems like a better idea. I've made the main program call some routines but how do you set PDispSet to apply the offset within the routine.
-
Not the best example, but a sample.
Code
Display MorePROC rPath03() PDispSet posePass3; MoveL pPath3_01,vProcessSpeed,z50,tFlame\WObj:=wobj0; MoveL pPath3_02,vProcessSpeed,z50,tFlame\WObj:=wobj0; MoveL pPath3_03,vProcessSpeed,z50,tFlame\WObj:=wobj0; MoveL pPath3_04,vProcessSpeed,z30,tFlame\WObj:=wobj0; MoveL pPath3_05,vProcessSpeed,z30,tFlame\WObj:=wobj0; MoveL pPath3_06,v1000,z30,tFlame\WObj:=wobj0; PDispOff; RETURN; ENDPROC
I generally use a pose variable, your routine could look something like:Code
Display MorePROC rCaller() rPath3; PDispSet poseP1; rPath3; PDispSet poseP2; rPath3; PDispSet poseP3; rPath3; ENDPROC PROC rPath3() MoveL pPath3_01,vProcessSpeed,z50,tFlame\WObj:=wobj0; MoveL pPath3_02,vProcessSpeed,z50,tFlame\WObj:=wobj0; MoveL pPath3_03,vProcessSpeed,z50,tFlame\WObj:=wobj0; MoveL pPath3_04,vProcessSpeed,z30,tFlame\WObj:=wobj0; MoveL pPath3_05,vProcessSpeed,z30,tFlame\WObj:=wobj0; MoveL pPath3_06,v1000,z30,tFlame\WObj:=wobj0; PDispOff;
I've also used PDispOn in a similar method. -
Do you set PDispset the same way you would set an output. Such as Set D01 through the use of the set function.
-
No, PDispSet is it's own instruction. IOWan's 2nd example is basically what you're looking for.
PDispSet sets an offset based on a pose(data), you can either use named data or direct input (it has a fancier official name) such as...
PDispSet [[0,0,0],[1,0,0,0]]; Sets it to 0 / the same as PDispOff;
PDispSet [[100,0,0],[1,0,0,0]]; Sets it to 100mm in X -
Why don't you use robot studio to make your edits?
-
Why don't you use robot studio to make your edits?Arc Welding system and it's not an IRC5 = not worth the hassle if you're just doing a simple copy/paste.
-
I didn't include the definitions in the example, but they would look something like:
CodeMODULE PROJECT PERS pose posePass1:=[[50,0,0],[1,0,0,0]]; PERS pose posePass2:=[[50,50,0],[1,0,0,0]]; PERS pose posePass3:=[[0,50,0],[1,0,0,0]]; CONST robtarget pPath1_App:=[[1037.49,680,1000],[0.625011,-0.130523,0.764634,-0.087518],[0,-2,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; CONST robtarget pPath1_01:=[[1037.53,679.92,847.51],[0.625005,-0.130563,0.764631,-0.08754],[0,-2,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];