Ethernet IP guide - 18712

This is an Ethernet IP guide to help you when using this with Universal Robots.

NOTE: All files are avalable for download at the bottom of this page.

Examples are valid for:
CB3 Software version: 3.2.18654
Note that newer software versions may behave differently.

These examples can be used on CB3/CB3.1 from software 3.2


Here is an overview of some important information to get started. 

PLC (used in example)

  • Allen-Bradley Compact Logix L16ER
    • Studio 5000 Logix Designer
    • UR only supports Ethernet/IP Class 1 implicit or "I/O" messaging, not Ethernet/IP Class 3 explicit or "client/server" messaging.
    • Remember to change/select the correct CPU


  • UR3, UR5, & UR 10 running Polyscope v. 3.2 

Sample Programs:

The files listed are available for download at the bottom of this page and are used in the example (ACD project files are compatible with Logix Designer v.24):

  • UR.ACD
  • ur-eip-demo.urp

Conveyor Tracking example:

  • EIP_conveyor_example.ACD
  • UR-EIP-conveyor-tracking.urp 

EDS file:

  • UniversalRobot.eds 

User-defined Data Types:

  • UR_DataTypes.L5X 

Note: The L5X file contains user-defined data types and can be used to import the message format into Rockwell Studio 5000 Logix Designer

I/O Message Format:

  • eip-iomessage.pdf

Note: When using output registers, it is important to set the mask accordingly. 


Script Functions for synchronizing a program with a PLC:

  • read_input_boolean_register(address)
  • read_input_float_register(address)
  • read_input_integer_register(address)
  • read_output_boolean_register(address)
  • read_output_float_register(address)
  • read_output_integer_register(address)
  • write_output_boolean_register(address, value)
  • write_output_float_register(address, value)
  • write_output_integer_register(address, value)


The lower range (bool[0:64], int[0:23], float[0:23]) of the gp input and output registers is reserved for FieldBus/PLC interface usage. The upper range (bool[64:127], int[23:47], float[23:47]) can be used by external RTDE clients (i.e URCAPS).

Trouble Shooting

  • It is important to consider and set an RPI value that corresponds with the requirements of the installation. The valid range of RPI is 2ms - 3200ms where a smaller value means more frequent data synchronization but also requires more resources from the PLC, Robot and Network.
  • If you experience connection issues between a scanner and the robot make sure that you have configured the scanner for unicast connection (point-to-point) and that you have sufficient network bandwidth between the scanner, the Robot and other devices to avoid colliding packets etc. 


This guide gives step-by-step instruction on how to start using Ethernet/IP with Universal Robots or watch the video

Video: How to connect your UR robot to an Allen Bradley PLC

1. ROBOT: Enable Ethernet/IP in the Installation tab. Remember to save the installation afterwards for the changes to take effect the next time the installation is loaded.


2. ROBOT: The yellow LED indicates Ethernet/IP is running on the robot but no PLC/scanner is connected to the robot


3. PLC: Open UR.ACD project in Studio 5000 Logix Designer. If your version of Logix Designer is incompatible with the project file (i.e. older than v.24), you can create a new project and import the user-defined data types from the UR_DataTypes.L5X file.

4. PLC: Navigate to I/O Configuration -> Ethernet -> Ethernet-Module UR

5. PLC: Set IP Address of Robot and Press "Apply"



6. PLC: Navigate to "Connection" Tab and ensure that the RPI matches your requirements and that the check box next to "Use Unicast Connection over Ethernet/IP" is checked.



7. PLC: Download the program to the PLC


8. PLC: Confirm that "I/O OK" is solid green


9. ROBOT: Confirm that LED in Installation tab is also green


10. PLC: Navigate to Tasks -> Main Task -> Main Program -> Parameters and Local Tags

10.1. IF You did not use the demo, but will implement communication to your own code, you need to enable communication between the robot and the AB PLC. First set up URI and URO in your local or global variables, using the provided User Define Data Types:

10.2. Then setup CPS between the robot and the PLC



11. PLC: Navigate to URI -> URI.Robot inspect values sent from the robot


11.1. Example to test - Trend Velocity of XYZ


This demo is provided to show a basic example of how to communicate between the PLC and Robot. The demo allows the user to set two numbers in PLC output registers. The robot retrieves the numbers, calculate their sum and stores the result in a PLC input register.

1. ROBOT: Open ur-eip-demo.urp 


2. ROBOT: Run program

3. ROBOT: Navigate to variables tab

4. PLC: Set integer registers URO.Int.Registers[0] and URO.Int.Registers[1] to some values


5. ROBOT: Go to the Variables tab and confirm that the numbers are received

6. PLC: Validate that the URI.Int.Registers[0] contains the sum