Start program from where it was stopped

Good morning together,

at the UR Website i found following article:

I tried to implement this but I don´t understand the functionality:

My problem /what i dont understand is, after i press “Stop” and the “Halt” will b active. why is the robot ALWAYS asking to start at waypoint of line 40?

For example. It´s stopped now, and the Tracker has the value “0”:

Once i click on the “PLAY” Button, the Robot asks me to move it to the Position defined at line 40 (which would b only “valid” if the Tracker has the value “3”)

No Matter what i choose here, following screen appears where it wants to get moved to Position of line 40…

Do I make something wrong?
I´m very thankful for any suggestion.

Greetings from Luxembourg

What do you have in your other steps? If they aren’t moves, and are just sensor checks, or logical operations, the robot will always try to move to the first taught location. Otherwise, it offers to start from whatever line you have selected, so if you haven’t already tried it, simply click a different line. But it sounds like it’s wanting to move to line 40 even when you click play from beginning.

Try this to fix it: Add a relative move in your before start, and use the same point for both the Start and End positions.


what´s the purpose of that?

I´ve “updated” my before start sequence now like this:


At each Step (no matter if its "i_prog_tracker 0 or 1…) i have a waypoint (movement).

0= Pre-Pick Pos.
1= Pick (down) + close crippers
2= Pick (up)
3= “dummy” Waypoint
4= Pre-Drop Pos.
5= Drop (down)+ open gripper
6= Drop (up).

the confusing part (at least to me) is that once i stopped the program, and I press “play” again, I get 2 Options to choose from (Start from Beginning or Start…). BUT no matter which button i click, it always says “move robot to Position (of line 40)”.

The relative (or variable) position sort of tricks Polyscope into starting your program without needing to jog to the first waypoint. Can’t say I really know WHY that’s the case, I’ve just never really questioned it.

Take a program like this:

As you can see, the first instruction is a Popup saying “Hello!” and the second is a move command. Now, if I use the Move tab to jog my robot somewhere and press Play From Beginning…

I get a screen telling me I need to jog the robot to line 4, which is the waypoint.

However, if I add a relative/variable move as you’ve done, when I click Play From Beginning I get…


The Popup instruction has run immediately, despite the robot not being at Waypoint_1.

Now, as to why YOUR program isn’t doing this…I’m not sure to be honest. What does it try to do if you suppress that Move node?

1 Like


well i think since i´ve “updated” my prestart-sequence it´s working the way i want it.
I´m not really familiar with Robots at all, but when i now stop the robot and press “start” again, the robot continues its
program the way i was expecting it.

If i stopp it at Position3 and press start again, it will continue from its position and will go to position 4.


with this i dont have to jog the program, once i stopp it and press start again, it will continue.

I got confused cause i checked for the example of UR:


cause here they don´t do anything like that. Therefore I thought it was not mendatory.
Well, guess now I´ve learned smth new.

It’s not really “mandatory,” it’s just what you decide to do. If you had instead included a “Home” position as the first waypoint, it would likely have required the user to jog Home before starting the program. The UR wants you to Jog to the first taught waypoint, probably to ensure you know where it’s starting from. This is not ideal though in the case of a program and needs to resume from its current position. In that case, adding the relative move trick to the before start sequence just starts the robot from wherever it currently is.


But for my project it is.

Basically I have a simple pick and place function. So the Robot will will stay in that routine. The operator can press pause, once they go for their break. A “HOME” position is requiered if they are finished with that product.
So they can press a button on a Siemens HMI to say (run-empty). Once there is nothing to pick anymore, the robot will go to a defined home position. Via dashboard server, the operator can select then a new product and the robot will leave the home position and do the pick n place with the new product.

So basically its like that:

Robot gets a Integer value from PLC (0= Production finished → go to HOME/ 1= Production → Stay in the loop for pick n place).
In that pick n place “loop” the robot will “save” its actual position, so they can start from wherever they stopped the machine.

I think the best way and I have tried in the past is to create a TCP socket server on the robot and sending for itself PAUSE in case of event occurs so in this way the robot stays in PAUSE and also using elsif for RESUME …so in this way the robot continues by itself.


Hi @omniplc,

I´m not so familiar with the whole topic.

What is the difference between a “own” TCP Socket server and the Dashboard Server of the UR?
I´ve tested to send signals from my PLC (Pause/ Play…) and the Robot was reacting on those commands.

Kind regards from Luxembourg.

Here it is a part of a code which i wrote it for a palletization sequence:


You are creating a socket server on the robots local host and send the string “pause” …based on some inputs

Hi omniplc,

How did you forced robot to resume itself on paused program? I’m just curious :slight_smile:

As you saw, there is a continuously monitoring condition to check that small sequence so when that condition disappear the robot it runs again :slight_smile: