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. Fanuc 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

Error recovery by finishing the loop

  • xtruder
  • September 4, 2023 at 9:34 PM
  • Thread is Unresolved
  • xtruder
    Trophies
    3
    Posts
    11
    • September 4, 2023 at 9:34 PM
    • #1

    Hello.

    I have a program which welds, trims and stacks the product all in one loop. Recovering by backtracking is due to complexity not an option,

    I would like to create "recovery program" which is a simplified copy of the production loop, minus the production steps, DO's, Di's etc.. Basically, "recovery program" should start where production loop had stopped and end up back at home like it normally would.

    For that, in recovery program, i need to jump in it at correct line based on current (approximate) robot position. But how to accomplish that? Using DCS zones is not an option for me.

    Thanks in advance.

  • HalbesYoyo
    Persona non grata
    Reactions Received
    47
    Trophies
    3
    Posts
    151
    • September 5, 2023 at 8:27 AM
    • Best Answer
    • #2

    Good morning,

    you could add a GO[]=... to the movements to store a number (of your choice) related to the position. Like ...

    Code
    J PR[1:home] 100% FINE GO[1]=1
    ...
    J PR[10:pre] 100% FINE GO[1]=10
    J PR[11:weld] 100% FINE GO[1]=11
    J PR[12:post] 100% FINE GO[1]=12

    You can determine the last reached position by just reading the value in GO[1] and use it to move forwards or backwards to HOME.

    Maybe Distance Before, Time before|after and/or some kind Point logic can fit your needs also. Depends on the way the program is written. You may have a look to the Additional Motion Instructions in the Basic Operation Manual for details. :winking_face:

    Addition:

    You also can use the last known position as a target for an (indirect) jump:

    Code
    ! store last known pos to R[1] and
    ! (indirect) jump to according movement
    R[1]=GO[1]
    JMP LBL[R[1]]
    ...
    LBL[10]
    J PR[10:pre] 100% FINE GO[1]=10
    ...
    LBL[11]
    J PR[11:weld] 100% FINE GO[1]=11
    ...
    LBL[12]
    J PR[12:post] 100% FINE GO[1]=12
    Display More

    Kind regards

    Jörn

    Edited once, last by HalbesYoyo (September 5, 2023 at 9:09 AM).

  • HawkME
    Reactions Received
    568
    Trophies
    11
    Posts
    3,268
    • September 5, 2023 at 2:32 PM
    • #3

    Instead of using DCS zones, you can use LPOS and JPOS to determine current position within a range and then select a path home.

  • xtruder
    Trophies
    3
    Posts
    11
    • September 6, 2023 at 7:21 AM
    • #4

    Thanks for replies!
    The GO approach seems straight forward, thanks. But do i really need the GO's, as i can just record key positions in R1?

    Code
    R[1]=10
    J PR[11:weld] 100% FINE
  • HalbesYoyo
    Persona non grata
    Reactions Received
    47
    Trophies
    3
    Posts
    151
    • September 6, 2023 at 8:48 AM
    • #5

    Either way has it advantages and disadvantages.

    Advantage of using a GO is that the robot will set the GO as soon as the position has been reached. A disadvantage is, that only one Additional Motion Instructions for a motion command can be used at a time. If you need to use one of the other Additional Motion Instructions you can't use the GOs and you will have to set a register separately.

    First of all you should set the register after the motion:

    Code
    J PR[11:weld] 100% FINE
      R[1]=11

    This way the register will only be set if the position actually has been reached. The disadvantage of separating setting a register and the motion is, that if the program will be stopped right between the motion and setting the register the actual position and the content of the register do not match.

    Anyway. Both ways only tell you the last position the robot has actually reached. Thus if the program stops while the robot is in motion you only know it is somewhere between this last reached and the next position.

    Also keep in mind that an operator may has jogged the robot manually. But you can use the system variable $MOR_GRP[1].$JOGGED to check this. :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
  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