How to see which Program is loaded (without starting the program)

Good morning together,

We have 3 different programs on our UR.
Depending on the seleceted recipe (at my PLC) the robot will open a different program.

After opening a new program, the robot is stopped.
How can i see that the robot actually has loaded the program (WITHOUT using Dashboard Server).
I mean on the Robot Panel i can see that the robot did open the right one. But i would need to get a feedback on my PLC to be sure that the right program is loaded

I guess that all Variables or all register will only get activated/ refreshed once the robot program is running.

Do u guys have any Idea?

Thank you in advance!

Greetings from Luxembourg!

Yeah unfortunately I believe the Dashboard server is the only way to see that information :confused:

Create 1 default program that always runs, and that calls the 3 options as subroutines with a case statement

Good morning @m.ricchino,

That´s what i´ve done in the beginning.
But sooner or later there will be like 20+ different programs ant it will make it pretty tough to read the program.
And I´m using “Check IF continuelsy”.
I´ve been told, that you are “limited” in using this.

It would be cool “feature” if i could set a register (INT) to a value depenidng on the loaded program (even tho its not startet).

Hi @eric.feldmann
I was 99% sure that someone would give me that answer :smiley:

You are right. It’s not the most pretty solution.

I have about 20 typesets right now plus a maintenance program all called through that case statement. One thing that helps a little is hiding the folder tree of the subprograms. That makes a nice condensed list at the bottom of the job on the pendant.

What are you using the CHECK IF Continuously for? Can the typeset change mid-job?

Good morning @m.ricchino

I´m using the continously check to stop my program wherever it is. Like: Someone presses a “Quick-Stop” on my PLC. In that case I want the Robot to stop too (directly). Now, with help of a program tracker (INT) i know where my Robot program was at the moment when the “Quick Stop” occurs.

After pressing that “Quick-Stop”, I want the user to initialize the machine. As the Robot program is still in state “Running” (it just stopps with the program because of the Signal “Quick-Stop”, the Robot is stuck somewere in the program. To get out of this and to make the robot run its initialize routine, i have to check all of my IF/ElseIF cases continuesly.

So no matter where the Robot program is, as soon as i press “initialize” the Robot will drive its init-route. Depending on the actual program tracker, the init-route is different.

See:
At Line 21 the “normal” operation of the robot is programed (Auftragsnummer /Job Number 1)
At Line 160 i check for the Stop_Request (Quick Stop).
L 164 is my init-routine.
All of them have to b checked continously! Otherwise if i make a stop request and the Programm was e.g. in L120 the Robot would NOT stop and it might get stuck there cause other release signals from the PLC will not get activated due to the “Quick-Stop” request.
Once a Quick-Stop occurs, the Robot will (no matter where it was) “Activate” the Program from L160 on.
After that, the operator presses “INIT” and the Robot will work from L164.


From L164 on, the Robot will check where it was during the time someone pressed “Quick-Stop”.
Depending on that one of the ElseIF cases will start and make the robot go back to a defined “Home” position.

For now, i have an automatic start of the Robot (after booting). The Robot will power on, releases its brakes… And it will NOT open any program. So the Operator has to select a Recipe on my PLC HMI. After selecting a Recipe, i will send a command via Dashboard Server to the Robot. So the UR will open that program.
As I´ve never seen any Robot program before I´m not sure how “well experienced” Robot programmer will handle this situation. But for now it´s working “fine” for me.

Many greetings from Luxembourg!

In case this helps you or others who find this thread later.

This is how my job is structured;

  • BeforeStart is my auto-recovery job section. It has a safe move to home (move straight up to ‘safe ceiling’, then home), Resets all IO used in the job
  • Then i set an output that robot is waiting for Job to run (MasterTop)
  • Wait until PartStart input & Job number (D2010) decides what program to run. Second picture shows the Case statement
  • After completing the specific job, i turn on/off a job complete bit, and loop the program continuously.


Instead of using the continuous ‘check IF’ to stop / restart the program, you can configure digital inputs as a program start/pause/stop
I haven’t used them since initial testing phase, but i believe they would work as you describe.