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

Abb robotstudio programming movement

  • SimoneCosti
  • August 6, 2022 at 10:49 AM
  • Thread is Resolved
  • SimoneCosti
    Trophies
    1
    Posts
    10
    • August 6, 2022 at 10:49 AM
    • #1

    Hello everyone

    Currently i'm programming a robotized cells with an Irb6700 and a conveyor. This cells need to manage different types of products and every one has a different grab position.


    I was thinking on how i could organize the rapid code in the best way.

    The first thing it came up in my mind is to create a function that return a robtarget "generalGrabPose" based on the product code and then use a single instruction MoveL to this robtarget.


    But on the other side, if i need to adjust an offset for the position with the flexpendant i can't modify the single moveL instruction...

    I could need a long test-case with different MoveL instruction, so i could change the single offs for every robtarget but i don't like pretty much this option.

    Is there a better way to organize it? Or some inbuild function to help me?


    Thanks.

  • gmumaugh
    Reactions Received
    13
    Trophies
    2
    Posts
    63
    • August 6, 2022 at 5:54 PM
    • #2

    You could create an array of robtargets. In this way, there is only one "named" robtarget but it contains a different position for each part type. When you modify the position, it will ask you which element you would like to update.

    Code
    CONST robtarget pAtGrabPosition{3}:=[
    [[172.52,155.40,5.87],[0.000331694,-0.999943,0.0106272,-8.62312E-05],[1,-2,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
    
    [[159.08,156.43,5.89],[0.00400481,-0.00228554,-0.999987,0.00224012],[1,-2,3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
    
    [[158.53,154.19,6.94],[0.00295511,-0.00246473,-0.999991,0.00166861],[1,-2,3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]
    ];

    To go to the different positions you need to provide a number that corresponds to the data inside the array. This could be another num variable that gets updated based on something like a group input

    Code
    VAR num nPartType;
    
    nPartType:=giPartTypeFromPLC; 
    MoveL pAtGrabPosition{nPartType},v200,fine,tool_Gripper\WObj:=wobj_Conveyor;

    In this way, the same movement instruction can be updated to go the correct position for each part type.

  • SimoneCosti
    Trophies
    1
    Posts
    10
    • August 6, 2022 at 11:18 PM
    • #3

    But if you use the "Offs" argument on the Move instruction you change all the robtarget of the array, right?

  • gmumaugh
    Reactions Received
    13
    Trophies
    2
    Posts
    63
    • August 7, 2022 at 2:34 PM
    • #4

    Offs will only affect whatever the current array element is. If you use something like:

    Code
    MoveL Offs(pAtGrabPosition{2},0,0,100),v200,z20,tool_Gripper\WObj:=wobj_Conveyor;

    Then the robot will move 100mm on the Z axis from the second robtarget in the array. If you were to hard-code the offset values into the Offs function, then the robot would move the same amount away from the taught positions. If you need to make different offset moves based on the part type, you could set something up like this:

    Code
    VAR num nXOffset;
    VAR num nYOffset;
    VAR num nZOffset;
    VAR num nPartType;
    
    nPartType:=giPartTypeFromPLC;
    TEST nPartType
    CASE 1:
        nXOffset:=30;
        nYOffset:=0;
        nZOffset:=100;
    CASE 2:
        nXOffset:=50;
        nYOffset:=2;
        nZOffset:=250;
    ENDTEST
    
    MoveL Offs(pAtGrabPosition{nPartType},nXOffset,nYOffset,nZOffset),v200,z20,tool_Gripper\WObj:=wobj_Conveyor;
    Display More

    If the part type is 1, the robot will offset 30mm in X and 100mm in Z. If the part type is 2, offset 50 in X, 2 in Y, and 250 in Z. In this way, even if a new part type is added later on, you only need to add another CASE to set the correct offset amounts.

  • SimoneCosti
    Trophies
    1
    Posts
    10
    • August 7, 2022 at 2:52 PM
    • #5

    Okey, this could be a good option

    Thanks!

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

  • Attach Machine (Conveyor) to Rail in Roboguide

    • audijus
    • August 19, 2020 at 4:38 PM
    • Fanuc Robot Forum

Tags

  • abb
  • RAPID
  • robotstudio
  • irb
  • robotware
  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