How do I change programs in the UR5e from my Allen Bradley PLC?


I have a UR5e CoBot and I have a Allen Bradley PLC connected over Ethernet/IP. My communications are established and I am reading and writing my registers.

I am having trouble finding the commands to change my programs from the PLC. I may not have my UR program structured correct for this function.

Does anyone have an example of how to for this?

Also I have my Play/Pause/Stop buttons working from the PLC by using bit registers, but when I pause from the PLC I have to press resume on the UR pendent. Is there a different I/O set up I am missing for resume after pause?

Thank you


Hi @josh_mckay,

try to use the Dashbord Server of the UR.

I connected my PLC (Siemens) with the UR and i could send directly strings to the Robot.
The Robot has to be in “Remote”.

Here you can find a PDF file with all the commands that the robot “accepts”. There are commands for Start/ Stop/ Pause…
Also from here you can Open/ Load saved Robot Programs.

With Siemens PLC I´m able to send the commands to the Robot (and the Robot is acting corretly on the given commands).
Unfortunally I´m struggling with the answers from the Robot. At my PLC i don´t receive any answer from the UR (via Dashboard Server).

Kind regards from Luxembourg!

1 Like

From my experience you cannot change UR programs over Ethernet I/P.
I assume you have already referenced the Ethernet IP guide - 18712 - collaborative robots support (

For you note about pausing working but not resuming, that is a limitation of the Ethernet I/P implementation I think. It seems to only updates when the program is running because you are using the bit registers. So while the value changes the robot does not do anything with it. As silly as it sounds (and I have not tried this on my UR) you could wire a UR output to a UR input setting the input as the resume button and then change the output to high from the PLC to see if it would ack like a button being physically pressed.

Something I have done is I write my programs individually then I add them as subprograms in another program. The new program will have if/case/switch statements for each subprogram call. With this method, you could change a variable in the PLC to change with subprogram runs… just an idea/workaround.

1 Like

The case | Sub program is how i solved the issue also. Pushing a register # over modbus, and use that to drive the case statement.

Thank you for the help.

I had to put the UR into Automatic mode and then Remote mode to be able to control the Play/Pause/Stop (resume from pause with play button works also) from the PLC and they work correctly. I’ll have to try calling specific sub programs as an alternative.

Hi @josh_mckay

you are using bits from ur PLC that u send to the “boolean input register” of the UR, right?

Just keep in mind, that if u have a Safety - Stop you still have to go to the Robot HMI to activate the Robot and release its breaks.
If you communicate via Dashboard Server, you can send a String from your PLC to the Robot to power ON and Release the Breaks.

So basically you don´t have to go to ur UR HMI at all.
You can Start/stop/pause, load/ open UR Programs, Power ON and OFF the UR and many more things directly from ur PLC.

Attached the link to my forum entry (just did it moments ago). I can operate the UR from my PLC. That´s a very nice “feature”.
I´m only struggline to get a “readable” answer from the UR.

Kind regards from Luxembourg.