1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. Industrial Robot Support and Discussion Center
  4. ABB Robot Forum
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

applying the Offs function to several moves

  • BluesMatt
  • July 25, 2017 at 4:39 PM
  • Thread is Resolved
  • BluesMatt
    Reactions Received
    1
    Trophies
    3
    Posts
    176
    • July 25, 2017 at 4:39 PM
    • #1

    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.

  • Iowan
    Reactions Received
    2
    Trophies
    4
    Posts
    686
    • July 25, 2017 at 5:43 PM
    • #2

    You should be able to use variables for offset values:

    Code
    MoveL Offs(p20,xoffset,yoffset,zoffset), v20, fine, tool0\WObj:=wobj0;
  • Online
    jarm
    Reactions Received
    11
    Trophies
    4
    Posts
    285
    • July 25, 2017 at 5:44 PM
    • #3

    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…9bvyfxrKPsUgLFs


    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 (July 25, 2017 at 6:23 PM).

  • BluesMatt
    Reactions Received
    1
    Trophies
    3
    Posts
    176
    • July 25, 2017 at 6:48 PM
    • #4

    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.

  • Online
    jarm
    Reactions Received
    11
    Trophies
    4
    Posts
    285
    • July 25, 2017 at 8:06 PM
    • #5

    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 (July 25, 2017 at 8:17 PM).

  • Iowan
    Reactions Received
    2
    Trophies
    4
    Posts
    686
    • July 25, 2017 at 8:35 PM
    • #6
    Quote from BluesMatt


    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 (July 25, 2017 at 8:37 PM).

  • Online
    Lemster68
    Reactions Received
    301
    Trophies
    9
    Posts
    2,491
    Blog Articles
    7
    • July 25, 2017 at 8:38 PM
    • #7

    You could do something like p100:=Offs(p10,0,0,100); p110:=Offs(p20,0,0,100); and so on. Maybe get really clever with a FOR NEXT to make some compact code.

  • BluesMatt
    Reactions Received
    1
    Trophies
    3
    Posts
    176
    • July 25, 2017 at 10:58 PM
    • #8

    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

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • krc5
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • krc5
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Users Viewing This Thread

  • 1 Guest
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download