GUI programming UR

Also checkout the new CB3 forum

Polyscope – UR Graphics User Interface.

From wherever you are in the menus – Press “File” and “Exit” to return to the Main menu.

ur_file_menu     ur_gui_new_program_1

Choose Program Robot and select “Empty Program”.

This screen is the program screen and properly in the future the screen you will be at most of the time. This is where you build up your program and test run it.


The left side is the program window where the program statements are inserted line by line downwards.

At the moment the program block is empty and empty. That’s why the test is yellow because nothing is defined. We can also it says “unnamed” because we have not loaded or named any program at this moment, but very soon we will make a small program.

In the middle there are 3 tabs – Command – Graphics – Structure. We are actually in the Command tab already and that’s why it is highlighted.


Below is 4 control buttons which looks like a CD player which we will use when we start our program later. There is also a “Speed” indicator from where the speed of the robot program can be manipulated.

MoveJ, MoveL and MoveP.

The robot can be programmed in different ways. From the Poluscope GUI which is an onscreen method or remotely by script programming. In this chapter we use the user friendly touch screen GUI method.

The UR is a 6 axis robot with 6 rotating motors. Therefore the narure of a move is a rounded move.

The joints are connected with the aluminium tubes and can be compared to an arm. So it is important to understand that a move by the robot and its arms tend to be circular in nature because the arm is solid. Maybe think of a cars window viper to visulaize this nature.


For the robot to move from A to B it is obvious that it is nessecary to use a circular move if only on axis is observed.

(Later we will see that if more axis is used then it is possible to make this move linear).

The robot has three ways of calculating how to move from Waypoint to Waypoint which is a Non linear movement (MoveJ) and a linear movement (MoveL) and a circular movement (MoveP). The “J” symbolizes the rounded nonlinear move mode and the “L” symbolizes the linear move mode. The non linear (MoveJ) is the default and the most commonly used and the one to recommend using if it is not absolutely a must to use a linear move. The difference is the way the robot calculates and how to move to next position.  In the non linear (MoveJ) method the robot might seem to take a slight bended route from point A to point B – this is because of the physical construction of the robot – the lengths or “arms” and “wrists” combined with when the motors are turning. This is normally not an issue in normal pick and place operation and can easy be overcome by inserting more waypoints – like mentioned above.

But if you want the have an absolutely perfect linear move from point A to point B it is possible by using linear move (MoveL). However the downside to this that turns and smooth bends now become more difficult to perform. In pick and place you properly need to go in and out up and down and around most of the time and a linear move is not important – so MoveJ is recommend to use.

MoveJ (Joint Move – Non Linear Movements).




The “Command” tab and the “Structure” tab is properly the most used tabs on the robot control and programming the robot is a frequent use of “Command” and “Structure” tab.

Press the “Structure” tab. This brings you to the first of 3 different program objects to choose from when we build up our program.

The very first thing we need to do I robot programming is to define our path and movement for the robot. This is done by defining Waypoints (positions). So we define the positions the robot has to go through rather than the actual path. In other words we choose a position e.g. “A” and next position e.g. “B” and then the robot will calculate how to come from “A” to “B”. (Not to be confused with that the robot records the path we moved the robot by hand or by control.

Start programming.

Let’s get started to program and now choose a Waypoint. Pres the “Waypoint” button.


Ups we already got an error messages that says “Waypoint has to be under a Move”.


So we need to go back to the program screen – Press OK to acknowledge the messages.


We need to be in the section where we can insert program lines – so point and press on the “empty” word so it becomes highlighted.

Now again Press the “Waypoint” button.


Notice how a “MoveJ” and “Waypoint” has been inserted and it starts looking like a program tree. The statements are still yellow because we have not defined the position of this Waypoint.

MoveJ is the default and that’s why this is automatically chosen for us here. Later MoveL will be explained.

Program “Home” position.

This first Waypoint is also what becomes this user program “Home” position and this can be anywhere and therefore different as to the robot home position discussed in the Move Screen.


We need to define each Waypoint we insert into out program. Point and press on the Waypoint we want to define – in this case there is only one because we just started programming. Press the “Command” tab.


Because we have pointed out the Waypoint in the program tree we now get this screen with a big “?” question mark – like it is asking us where should this waypoint be ?.

So we need to set. Press the “Set this Waypoint” button.

This brings us the familiar Move Screen.

We can choose to use the Move Screen to move the robot into position by pressing the arrow keys on the bars.


Teach-in mode.

But the arrow keys are more useful when we need to fine adjust our Waypoints. Here in the beginning to define our rough positions it is faster to use the “Teach in mode” by moving the robot by hand.

On the back side of the monitor there is a small button. Hold the monitor as shown on the photo with one hand because then it is easy the watch and handle the monitor and also to press the button on the back of the monitor.

This small black button releases the breaks on the robot and you can now move the robot into position by moving with your other hand – a little effort has to be made to move it because we also don’t want to drop on the floor. (This can still happen if a heavy tool is mounted on the robot head).


Press and keep pressing the black button on the back of the monitor and grab the robot and start moving into your desired position.



When you are happy with the position then release the black button on the monitor again


While we were manually manipulating the robot around with our hand we had the Move Screen on the monitor. Press the “OK” button in the lower right corner of the Move Screen which takes you back to the Program window.


Notice how the Waypoint and the other symbols turned green because now we have defined the statement which is the Waypoint. Actually we already have a very small program because all symbols are on green, but a program with only one Waypoint is not funny to look at because it will not move the robot.

So let’s define one more Waypoint.


Press “Structure” to go to our program object menu. Choose “Waypoint” again.

The second Waypoint has entered into the program, but it is still yellow because it is undefined, make sure you have highlighted the yellow Waypoint statement. Press “Command” to define the Waypoint.


Press “Set this waypoint” which brings up the Move Screen. This time we just choose to move the tool head upwards with the “Up” arrow key.


Keep pressing the “Up” key until the robot

reaches a desired position and the release the “Up” key in the Move Screen.


The “Teach” block in the Move Screen has the same function as the black button on back of the monitor i.e. to release the robot breaks for manual manipulation into position.

Press “OK” on the Move Screen to go back to the Program tree window. Now we have two green Waypoint in our program.

The controller software checks the syntax for us automatically and that’s why we have green symbols which mean our syntax and method is OK.


We are ready to test run our first program. Press the “Start” button (The triangle symbol). The program does not start executing right away because we left the robot in the Waypoint 2 position whereas Waypoint 1 is our “Home” position. Before we can start the running the program we need to bring the robot to this “Home” position – and therefore a Screen appear when we can move the robot either automatically or manually.

Automatically is the easiest if the robot is free fro obstacles, but if we need to guide the robot we can also choose the manual method.


Notice how the button in the lower right corner has a red “X” and says “Cancel” because the robot is not yet in the “Home” position. The graphic also shows how the robot has to move from its current position to the “Home” position.


Make sure the robot is free from nearby obstacles.

Press and keep pressing the “Auto” button and observe the robot movements towards the “Home” position.

This programs “Home” Position.

When the robot reaches the “Home” position the button in the lower right corner of the Screen goes from “Cancel” to “OK”. When it says “OK” the Press ok.


Press Start (The black triangle symbol).ur_gui_teach_in_14

Program tree Screen.                                       

After pressing the “OK” button the program tree Screen reappear, but the robot is still not moving, but now it is in the “Home” position and can be started.


The robot runs the program by it self from Waypoint_1 to Waypoint_2 continuously. This is just an Up and Down movement.


You can stop the program execution.                  You can pause the program execution.


You can restart the program execution.               You can control the speed    during test run.


Notice how you can follow the program execution during the program run so you now where in the program the robot is.

The Speed regulator is useful for testing. During normal Run it is better control you speed in you program because the Speed regulator will slow down everything in the program inclusive of wait statements.

Disclaimer: While the Zacobria Pte. Ltd. believes that information and guidance provided is correct, parties must rely upon their skill and judgement when making use of them. Zacobria Pte. Ltd. assumes no liability for loss or damage caused by error or omission, whether such an error or omission is the result of negligence or any other cause. Where reference is made to legislation it is not to be considered as legal advice. Any and all such liability is disclaimed.

If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.

By Zacobria Lars Skovsgaard
Accredited 2015-2018 Universal Robots support Centre and Forum.

Also check out the CB3 forum


7 thoughts on “GUI programming UR

  1. Mohd Syariffudin Gazali

    Hi, I am new and currently working on UR5 for automatic deflashing of plastic parts.
    Anyone knows whether we can teach the pathways for the robot to follow using original part 3D drawing instead of teaching it point by point?


    1. zacopressadmin Post author

      Hi Mohd

      Thanks for your question.

      Not directly, but there might be third party software that can do something similar at this link

      By Zacobria Lars Skovsgaard
      Accredited Universal Robots support Centre and Forum.

      Also check out the CB3 forum

  2. Giannis let

    Regarding to off-line programming while using a UR10 robot, I am concerned about the accuracy in terms of cycle time that the simulation program provides. I am thinking about using delmia in order to connect via RRS to the controller and extract a more accurate cycle time. Is it possible? Should I use another simulation program?

    1. zacopressadmin Post author

      Giannis let

      Thanks for the question.

      I think the UR simulator is good.

      By Zacobria Lars Skovsgaard
      Accredited Universal Robots support Centre and Forum.

      Also check out the CB3 forum

  3. Arunava Nag


    I have been working on the ur10 programming using along with a cognex through ur scripting. Everything has been going at its own development phase. But suddenly encountered some error displayed on the pendant which says:

    Protective Stop
    C207A0 : Fieldbus input disconnected.
    It is not letting me run any program on the robot, from the pendant. Can you tell me what has exactly happened and how can i troubleshoot this?

    1. zacopressadmin Post author

      Hello Arunava

      Thanks for the question.

      Can it be because someone has been using the robot before you – and they have turned on the “Ethernet IP adapter” and you are not using it ?

      The Ethernet IP adapter can be turned on inside “Installation – Ethernet IP” tab – and if it is not used it might provide this error – and then it can be turned off.

      By Zacobria Lars Skovsgaard
      Accredited Universal Robots support Centre and Forum.

      Also check out the CB3 forum

  4. Brendan

    Hello Lars and all,

    I am having a problem with a subroutine. The UR controller shuts down when the end of the sub routine is reached. It is not a command within the subroutine which causes this. I added a 10 sec wait at the end to test, and the shutdown occurs after the 10 seconds. I have also run the content of the subroutine as a separate program, and it works fine.

    The error message on the pendant is “Robot has changed mode from OK to No Controller”

    This has all been programmed on the pendant, so the structure should be correct.
    What should I be looking for?




Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>