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

RE: workobject copy

  • Elderwild
  • August 4, 2021 at 11:26 PM
  • Thread is Resolved
  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 4, 2021 at 11:26 PM
    • #1

    Hello all,

    New to forums so I might not be doing this correctly, sorry. I am newer to Robotics but learning rapidly. I came across the thread "workobject copy" that seems to be exactly what I need to do. Running an irb 6600 on the old SC4+ M2000a controller so the easy way of running it through Robotstudio is out. Going to remove old spindle and replace it with 3 new ones. The Problem: I have no idea what points or elongator were used to define the current wobjRouter. Sooo...... Going to create wobjRotor1,define using known elongator, and hopefully use info from the old workobject copy thread to transpose the data to the new (known) wobjRotor1 so that I can move the spindle and redefine wobjRotor1 in its new place. There are currently 9 different programs that utilize wobjRouter.

    I am not sure exactly how to do that, but here is my plan.

    1) I am planning to copy all the procedures that use wobjRouter to Module MoveExChange using ultra edit. (is this the proper place to put them, and do I need to do one at a time or can I put them all in there?)

    2) Run each program from the Jobs Module. (the question here is where, when and how to call Module MoveExChange. Logically I feel I need to call it from the running program right before I go to the router procedures. is this correct or does MoveExChange run in the background?, do I need to call it before each line of code?)

    3) cut and paste updated wobjRotor1 RobTargets to Jobs module and test.

    Any help with the less short version would be much appreciated!

    Cheers!

    SAABoholic and Lemster, Usually all I have to do is read your posts to figure it out. This one is a bit daunting, but hey, I joined my first Forum!

  • Online
    Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,453
    Blog Articles
    7
    • August 5, 2021 at 1:59 PM
    • #2

    You can determine the origin of the workobject by having it active and driving a good tcp to the 0,0,0 coords of that workobject's coordinate system. Then, if you jog in that workobjects coordinate system, you can at least see which way +X and +Y go. That will allow you to at least teach your new one in the same fashion. Without seeing how your program is structured, I cannot really tel you where you should put your routines and new modules. The fact of the matter is, it really does not matter. As long as you have your new routines with their new, unique workobjects, it is fine. Create new, unique robtargets for them or you will get way jacked up. Not quite clear about what "spindle" you are talking about, but since you also mention router I am guessing that you have a stationary router spindle on which the robot works some parts.

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 5, 2021 at 4:14 PM
    • #3

    You are correct Lemster68, stationary router, robot works parts. I have a pointer to add new wobjs, but do not have "the" pointer or points used when this was set up. I know the X+,Y+ directions of the router spindle. Trying to save a bunch of down time from reprogramming points after I move the router, by using known and duplicatable 3pt wobj definitions. I am trying to better understand how to use the module "workobject copy". It seems to run in the background. I think my duplicate points need to be in this module, is that correct? If so, do the procedures get called out with each move (MoveJ,L,etc.) of the robot , or do I call each procedure for every line? Trying to better understand the order of operations here because I usually type my code in a text editor and test with the robot controller, so when its not correctly coded it can be a bit time consuming to figure out properly.:winking_face:

  • Online
    Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,453
    Blog Articles
    7
    • August 5, 2021 at 5:08 PM
    • #4

    The most important point is the origin. Just how far the X and Y are taught does not matter, what matters is that you go the same direction. As to the other questions I cannot address because I don't see the code.

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 6, 2021 at 6:09 PM
    • #5

    Here is the shortest of the Router Procedures and declarations (Jobs module, run inside of the Main module) that need to be transposed. I want to define wobjROTOR1 with 3 known points(I have marked them on the router) so I can replace wobjRouter(Found the origin, unknown programming tool)

    PROC SideOIL()

    CONST robtarget AboveRouter_10:=[[-557.96,46.61,197.82],[0.009554,-0.301838,-0.953311,-0.001615],[1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p130:=[[-45.86,-197.01,-38.89],[0.003573,-0.817645,0.575696,0.004538],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p120:=[[-45.81,-103.03,-38.83],[0.003563,-0.817599,0.57576,0.0046],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p110:=[[-45.9,-103.89,-38.81],[0.005539,-0.953512,0.301307,-7.9E-05],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p80:=[[-76.43,-103.77,-38.98],[0.005515,-0.953623,0.300955,-0.000257],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p70:=[[-76.17,-103.96,-39.04],[0.006792,-0.999885,0.012726,-0.004904],[0,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p60:=[[-46.12,-106.2,-38.93],[0.005523,-0.953574,0.301113,-0.000187],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p30:=[[-45.41,-111.72,-38.9],[0.005531,-0.95354,0.301219,-0.000121],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p20:=[[-75.87,-111.28,-38.99],[0.005534,-0.953599,0.301033,-0.000214],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p10:=[[-56.4,-123.77,-36.13],[0.011623,-0.977345,-0.211066,-0.010704],[0,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget AboveRouter:=[[-68.41,-244.43,349.99],[0.00754,-0.953922,0.299766,-0.010908],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    ! SideOIL

    MoveJ AboveRouter,v5000,z10,tGripper\WObj:=wobjRouter;

    MoveL p10,v400,z10,tGripper\WObj:=wobjRouter;

    MoveL p70,v30,z1,tGripper\WObj:=wobjRouter;

    MoveJ p80,v2,fine,tGripper\WObj:=wobjRouter;

    MoveL p20,v20,fine,tGripper\WObj:=wobjRouter;

    MoveL p30,v5,z1,tGripper\WObj:=wobjRouter;

    MoveL p60,v5,z1,tGripper\WObj:=wobjRouter;

    MoveL p110,v2,z1,tGripper\WObj:=wobjRouter;

    MoveL p120,v2,z1,tGripper\WObj:=wobjRouter;

    MoveL p130,v400,z1,tGripper\WObj:=wobjRouter;

    MoveJ AboveRouter_10,v1000,z50,tGripper\WObj:=wobjRouter;

    RETURN;

    ! SideOIL

    ENDPROC

    PROC ElecRouter4()

    SetGO goSpindleRPM,7500;

    SideOIL;

    SetGO goSpindleRPM,0;

    RETURN;

    ENDPROC

    Now for the real Question. How does this module "workobject copy" get used?

    Do I need to place a Proc Call ie PROC MoveL/MoveJ after each Move* in "SideOIL", or do I need to write something like a trap routine that calls for the matching PROC Call for each line when wobjRouter is present?

    Again I am relativley new to this. I get the concept here but not the Syntax or order of operations.

  • Online
    Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,453
    Blog Articles
    7
    • August 6, 2021 at 6:56 PM
    • #6

    Are you telling us that you want to use the same routine with different workobjects? I am still not sure what your end goal is.

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 6, 2021 at 7:13 PM
    • #7

    I do not have the elongator tool that was used to program wobjRouter. I want to use the robot to transpose the RobTarget program points to Joint targets then back to updated RobTargets in "the new but in the same place" wobjROTOR1 with known elongator/TCP/and User defined points so that all programs remain as is with no reprogramming (I have heard that if I use offsets, then I can't easily use offsets to adjust tool paths, can't offset an offset). The reasoning is that in about a week we are going to remove the router and move it and I do not want to reprogram the more than 1500 "wobjRouter" points across 9 different "Jobs". I want to redefine "wobjROTOR1" in its new place using the same 3 pts that I set it up with. I am really hoping that this will alleviate most of that reprogramming. To my best understanding, the Module "workobject copy" is meant to do that but I don't fully understand the how of it. Am I way off base?

    Edited once, last by Elderwild (August 6, 2021 at 7:39 PM).

  • Online
    Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,453
    Blog Articles
    7
    • August 6, 2021 at 7:38 PM
    • #8
    Quote from Elderwild

    I do not have the elongator tool that was used to program wobjRouter.

    That is irrelevant. Any well defined tcp is sufficient. That is why I was trying to steer you to find the origin and the +X and +Y so that you can teach it the same. Only the origin is the most important to be at 0,0,0. The distance for the +X and +Y is also not relevant, just that you stay on the same vector. The robtargets follow the workobject. If you were to duplicate any one of your routines and change the workobject to one of your new ones, it will work. You Just have to teach the new workobject exactly as the first was taught.

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 6, 2021 at 9:06 PM
    • #9

    It appears that the monkey who taught the points in the first place picked a point at random and just flew off into space any old place he wanted to. the object frame is not square or level to the world ,base or any other frame (it should be as the router is plumb and square to the world). X2 and Y1 will be floating in the air some where off to the right and behind the tool.

    I would like to have the origin determined by points on the tool so I can physically see and touch the points/ less error this way and the new tool frame would actually be square and level to the tool this time. (Guess its just the OCD in me)

    I guess I could try the align command to the wobjframe, find the origin and mark it (if I can) on the Router. Then move the router, Align to the old wobjframe in the jog menu, move to the new origin, lock the joy, and fly off into space myself. It may "work" but it won't "square up" the tool frame, and I won't know if it'll be as accurate as I need it to be. Also at that point it would be too late to do anything about it because the Router has been moved. Your line "exactly as the first" is why this is freaking me out. I know what it took to program all those points the first time and really don't want to go through that all again.

    So for clarification: X1 is the entire origin or just the X part of it? / X2 defines X+ direction and the X axis/ Y1 defines Y+ direction, the y axis and the Z axis? Is that correct?

    As long as I can do the above as described, in paragraph 3, Do you think this will work with minimal reprogramming? I guess I can live with a crooked wobjframe if it'll save a bunch of time, but it would be nice to clean it up before moving it. I know that no one else knows its crooked, but everytime I make a correction I am reminded that it was poorly programmed and I want to scream and fix it.

    Quote from Lemster68

    That is irrelevant. Any well defined tcp is sufficient. That is why I was trying to steer you to find the origin and the +X and +Y so that you can teach it the same. Only the origin is the most important to be at 0,0,0. The distance for the +X and +Y is also not relevant, just that you stay on the same vector. The robtargets follow the workobject. If you were to duplicate any one of your routines and change the workobject to one of your new ones, it will work. You Just have to teach the new workobject exactly as the first was taught.

    Just a thought here that steers me back to transposing the points. What if the placement of the new router is rotated a bit? This will essentially move the center of the router bit in an arc inside my wobj frame. Since I only have the one point on the router to go off of there is no way to accurately reproduce the initial programming vectors even if I use the Align function as the alignment of the router to the world frame may change slightly when moving.

    Edited once, last by Elderwild (August 6, 2021 at 9:56 PM).

  • Online
    Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,453
    Blog Articles
    7
    • August 6, 2021 at 9:51 PM
    • #10

    Actually, in the past I have just manually updated the workobject origin in the data by driving to the origin in the new location. Make sure that you are in world coordinates, note the x,y,z values in the pendant, and then just type in the new "origin" into the workobject data.

    X1 can be the origin, depending on how you teach it. The Origin is the point at which the X plane and Y plane intersect. The way I like to teach it is: X1 first, jog X2, teach, go back to X1, then Jog Y1, teach. In this manner, X1 is the Origin. If you taught X1, then X2, jog Y1 without returning to X1, what will you get?

    And, Z automatically get figured 90 degrees through the X/Y intersection.

  • Online
    Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,453
    Blog Articles
    7
    • August 6, 2021 at 10:02 PM
    • #11

    You don't have to move several or even one foot for the X and Y, inches will suffice. Regarding rotation, if you cannot move in your current workobject position just a little and mark a point you could fab up a template to attach to it to extend the points that you need to make. It could even be just a piece of cardboard or rigid sheet of plastic.

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 6, 2021 at 10:08 PM
    • #12
    Quote from Lemster68

    Actually, in the past I have just manually updated the workobject origin in the data by driving to the origin in the new location. Make sure that you are in world coordinates, note the x,y,z values in the pendant, and then just type in the new "origin" into the workobject data.

    X1 can be the origin, depending on how you teach it. The Origin is the point at which the X plane and Y plane intersect. The way I like to teach it is: X1 first, jog X2, teach, go back to X1, then Jog Y1, teach. In this manner, X1 is the Origin. If you taught X1, then X2, jog Y1 without returning to X1, what will you get?

    And, Z automatically get figured 90 degrees through the X/Y intersection.

    The Origin is the only point I have to work with here. If I chose X2 as the origin I still only get 2 points on the Router and the current wobj frame in not square or level to the Router. I don't think there is an accurate way to reproduce the new wobj frame after moving the Router without first correcting the positioning of the current frame.

    Edited once, last by Elderwild: I meant to say correcting the current frame to align with the router (August 6, 2021 at 10:17 PM).

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 6, 2021 at 10:15 PM
    • #13
    Quote from Lemster68

    You don't have to move several or even one foot for the X and Y, inches will suffice. Regarding rotation, if you cannot move in your current workobject position just a little and mark a point you could fab up a template to attach to it to extend the points that you need to make. It could even be just a piece of cardboard or rigid sheet of plastic.

    I like this idea, but the router will be detached from it's current turret and placed inside of an 8x8 steel tube. not likely that a jig will survive all the movement.

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 6, 2021 at 10:33 PM
    • #14

    Thank you Lemster68 for all of the ideas and attention. I am going to try to figure out some sort of indexable Jig this weekend using a round clamp and Pins ground to the different proper heights to account for the tilt in the wobj frame. Have a great week end.

  • Online
    Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,453
    Blog Articles
    7
    • August 9, 2021 at 7:21 PM
    • #15

    You are welcome. I had envisioned a fixture that you affix to the router to teach, then remove. Of course it has to be repeatable/located well when you replace it after the move.

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 16, 2021 at 6:29 PM
    • #16
    Quote from Lemster68

    You are welcome. I had envisioned a fixture that you affix to the router to teach, then remove. Of course it has to be repeatable/located well when you replace it after the move.

    Got her moved! Thanks Lemster68.

  • Online
    Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,453
    Blog Articles
    7
    • August 16, 2021 at 6:40 PM
    • #17

    So you are claiming success? It worked well?

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 16, 2021 at 7:34 PM
    • #18

    Installed all new components over the weekend. Programmed this morning. It was perfect the first time (when the orientation was the same)! ...But had to redo to change the orientation about 17 deg. due to other space constraints in the cell (robot touching dust collector chute). Changed offsets by maybe a couple millimeters (-1,+1.2,+5) to adjust to new orientation. Up and running in 2 hours.

  • Online
    Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,453
    Blog Articles
    7
    • August 16, 2021 at 7:53 PM
    • #19

    Fantastic! :thumbs_up::fine:

  • Elderwild
    Reactions Received
    4
    Trophies
    2
    Posts
    80
    • August 16, 2021 at 8:09 PM
    • #20

    I still have to check all the other programs, but hey....that's what a test run is for right?:winking_face:

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
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • 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
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Similar Threads

  • Moving ABB robot, creating a workobject to reference program points location

    • JayLab
    • May 7, 2019 at 11:17 PM
    • ABB Robot Forum
  • workobject copy

    • smarci96
    • September 3, 2018 at 11:46 AM
    • ABB Robot Forum
  • Selectively copying data

    • jarm
    • March 29, 2018 at 10:40 PM
    • ABB Robot Forum
  • Programming Multiple fixtures on one table

    • JayRW
    • October 6, 2017 at 8:03 PM
    • ABB Robot Forum
  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