applying the Offs function to several moves

  • Hello everyone.


    I have to program a large part to weld. The part is basically a steel frame in the shape of a rectangle. There are many variations of this part; wider ones and taller ones. All of these parts require the same welds. I would like to program one part completely (about 80 welds), then duplicate this program and apply the Offs function to shift the moves to accommodate the different sized but similar parts. After the moves have been offset using the Offs function, I will need the ability to tweek the new positions by using ModPos. I'd like to be able to do all of the from the FlexPendant if possible.


    So far, I have written the following test program:


    PROC rOffs_test_matt()
    CONST robtarget p10:=[[744.24,2.09,417.13],[0.36758,0.014493,0.929793,-0.0126497],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget p20:=[[744.24,3.07,362.97],[0.367585,0.014492,0.929791,-0.0126525],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget p30:=[[744.24,33.40,362.97],[0.367583,0.0144878,0.929792,-0.0126527],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget p40:=[[744.24,33.40,395.42],[0.367588,0.0144841,0.92979,-0.0126532],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    MoveJ p10, v20, fine, tool0\WObj:=wobj0;
    MoveL p20, v20, fine, tool0\WObj:=wobj0;
    MoveL p30, v20, fine, tool0\WObj:=wobj0;
    MoveJ p40, v20, fine, tool0\WObj:=wobj0;
    !
    MoveJ Offs(p10, 100,0,0), v20, fine, tool0\WObj:=wobj0;
    MoveL Offs(p20,100,0,0), v20, fine, tool0\WObj:=wobj0;
    MoveL Offs(p30,100,0,0), v20, fine, tool0\WObj:=wobj0;
    MoveJ Offs(p40,100,0,0), v20, fine, tool0\WObj:=wobj0;
    ENDPROC


    This program works but I want to check my understanding with a couple of questions.


    1) It seemed like I needed to use named points (p10, p20, ...) and not * points.
    2) I was unable to find a function on the pendant that would allow me to select a group of moves and add an offset amount (in my program, 100mm in the +X direction) to each move. KUKA has such a function available on the pendant (SmartPad); I believe it is called "transform". Does ABB have a similar function available on the FlexPendant?
    3) I'm thinking that in order to wind up with a point I can touch-up (ModPos), I would need to use a statement like: p10 := Offs(p10,100,0,0); Is there a way to enter this kind of a statement efficiently on the FlexPendant or is it smarter to move to RobotStudio to do these edits?


    Thanks for any advice.....matt

    Building robotic welding systems.

  • Hold up. I have a tool that you may find useful. It's a program that physically adds offset value to the position (*). Then you can modify any actual position afterward. With the offs function, there is no modifying the actual position with the modpos. I was welding tailgates and they are 6 panel. I was able to program 1 and then shift all the points (touch sense and weld) to the other panels. It worked very well and quickly.



    https://mega.nz/#!vMdlVCaD!v80…qyiXAhjtaO9bvyfxrKPsUgLFs



    This works by recognizing the way positional data is stored
    Where the pendant will show you an *, if you backup the module and open it in notepad you will see the data is stored on the line.....no need to make declaration to a point name like p100.


    MoveJ [[-639.28,1474.73,201.16],[0.141426,-0.7153,0.618041,-0.293888],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]],v2500,z50,TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21;
    Search_1D P_TG_6, [[-539.28,1435.17,13.26],[0.141424,-0.715299,0.618047,-0.293877],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], [[-539.27,1435.13,-4.81],[0.141415,-0.715302,0.618053,-0.293862],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], v100, TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21\SchSpeed:=TG_SrchSpd_1;
    Search_1D P_TG_6p, [[-539.28,1435.17,13.27],[0.141426,-0.715297,0.618048,-0.293878],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], [[-525.70,1435.18,10.18],[0.141427,-0.715298,0.618046,-0.293881],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], v100, TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21\PrePDisp:=P_TG_6\SchSpeed:=TG_SrchSpd_1;
    MoveJ [[-580.83,1481.73,86.56],[0.0527216,-0.726612,0.576093,-0.370636],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]],v2500,z50,TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21;
    MoveJ [[-615.31,1488.13,95.54],[0.156877,0.649408,-0.658062,0.347295],[1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]],v2500,z50,TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21;
    Search_1D P_TG_6, [[-543.03,1424.81,13.25],[0.156867,0.649405,-0.658068,0.347293],[1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], [[-543.35,1408.69,10.25],[0.15687,0.649403,-0.658071,0.347289],[1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], v100, TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21\PrePDisp:=P_TG_6p\SchSpeed:=TG_SrchSpd_1;
    MoveJ [[-687.57,1565.39,205.77],[0.156872,0.649407,-0.658065,0.347292],[1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]],v2500,z50,TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21;



    Now this is an example of our code. if you save this code in a txt file and then open the offset program, edit your x,y,z you want to offset. Drag and drop your txt file on the program. It will create a new txt file called RobPosReplace.txt. This will contain the new code with the offset value added directly to the positional data and you will be able to modify all positions with the modpos


    example
    x 243
    y 23
    z 43


    MoveJ [[-396.28,1497.73,244.16],[0.141426,-0.7153,0.618041,-0.293888],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]],v2500,z50,TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21;
    Search_1D P_TG_6, [[-296.28,1458.17,56.26],[0.141424,-0.715299,0.618047,-0.293877],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], [[-296.27,1458.13,38.19],[0.141415,-0.715302,0.618053,-0.293862],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], v100, TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21\SchSpeed:=TG_SrchSpd_1;
    Search_1D P_TG_6p, [[-296.28,1458.17,56.27],[0.141426,-0.715297,0.618048,-0.293878],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], [[-282.7,1458.18,53.18],[0.141427,-0.715298,0.618046,-0.293881],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], v100, TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21\PrePDisp:=P_TG_6\SchSpeed:=TG_SrchSpd_1;
    MoveJ [[-337.83,1504.73,129.56],[0.0527216,-0.726612,0.576093,-0.370636],[1,0,-2,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]],v2500,z50,TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21;
    MoveJ [[-372.31,1511.13,138.54],[0.156877,0.649408,-0.658062,0.347295],[1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]],v2500,z50,TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21;
    Search_1D P_TG_6, [[-300.03,1447.81,56.25],[0.156867,0.649405,-0.658068,0.347293],[1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], [[-300.35,1431.69,53.25],[0.15687,0.649403,-0.658071,0.347289],[1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]], v100, TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21\PrePDisp:=P_TG_6p\SchSpeed:=TG_SrchSpd_1;
    MoveJ [[-444.57,1588.39,248.77],[0.156872,0.649407,-0.658065,0.347292],[1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,-30,9E+09]],v2500,z50,TCP_59A22_002_59G22_59S\WObj:=wo_TG_S21;

    Cut it back in and your good to go..
    Doesn't work with joint targets or to modify positioner values. Don't try it with joint targets..they are not setup the same way
    I described what I wanted to a programmer and he whipped this up quick for me...Works awesome and it will for you too.
    If you have any other questions, feel free to ask.

    Edited once, last by jarm ().

  • Thanks very much.


    So it sounds like ABB does not have a function to add an offset to a whole group of points? Seems odd. Seems like a tool like this would be extremely useful and used by many programmers.

    Building robotic welding systems.

  • Your very welcome. That's what I thought as well.....btw I always made the edits in robotstudio connected to the controller...its faster to apply the edits


    oh ya..make sure you populate all values....if its zero then put a zero

    Edited once, last by jarm ().


  • So it sounds like ABB does not have a function to add an offset to a whole group of points? Seems odd. Seems like a tool like this would be extremely useful and used by many programmers.

    There are program displacement instructions (PDispOn, PDispSet) that can "pattern-shift" a section of program.

    Edited once, last by Iowan ().

  • Lemster68:


    I actually tried that and was able to make that work.


    The unfortunate part is that ABB does not seem to include a tool where a group of moves can all be selected at the same time and then permanently shifted by some amount. This would be incredibly useful for those of us that basically have to duplicate the same moves only shifted by some amount.


    Anyway, it seems the approach I have worked out will work; it just means a lot of typing in RobotStudio.


    thanks

    Building robotic welding systems.

Advertising from our partners