Downloads
This application integrates a Universal Robots UR5 cobot with an Allen-Bradley CompactLogix 5480 controller via EtherNet/IP. The CompactLogix operates as the connection originator/scanner and the UR5 as the target/adapter, enabling cyclic exchange of process data between both controllers.
The implementation shown in this guide was developed using a CompactLogix 5069-L4200ERMW connected through its LAN B1 interface, a Stratix 5700 switch, a UR5 CB-Series robot with PolyScope 3, and an engineering workstation running Studio 5000 Logix Designer. The guide validates both the reading of robot information by the PLC and the transmission of data from the PLC to the UR5.
What does this application do?
The objective is to provide a practical, reusable reference for integrating a UR5 into a machine or automated cell controlled by Logix. The connection allows the PLC to monitor robot status, joint positions, TCP information, I/O signals, and general-purpose registers, as well as transfer commands or parameters from the CompactLogix to a PolyScope program.
Please note: You will need to agree to the Terms & Conditions for each download.
Need Help?
If you need help with an application or have feedback from the Innovation Center, please contact us.
Is this application relevant to me?
This application is useful when the CompactLogix must coordinate the overall process sequence and the robot must operate as a subsystem within the cell. Key benefits include:
- Establishing standardized cyclic EtherNet/IP communication between CompactLogix and Universal Robots.
- Reading robot status, operating modes, safety variables, joints, TCP, I/O, and general-purpose registers from the PLC.
- Sending parameters, commands, and test values from Studio 5000 to a PolyScope program.
- Creating a reusable foundation for Ready, Busy, Done, and Fault handshakes, as well as recipe or task selection.
- Simplify diagnostics by making robot information available directly in Controller Tags.
How can I make it work?
Requirements: products, tools, prior knowledge.
Hardware
- CompactLogix 5480 (5069-L4200ERMW)
- Universal Robots UR5 CB-Series
- Allen-Bradley Stratix 5700
- Engineering Workstation (Windows, Ethernet 192.168.1.167)
Software
- Studio 5000 Logix Designer v37.x
- PolyScope 3.15.4
- UR_DataTypes.L5X
Prior Knowledge
- Basic knowledge of Studio 5000 Logix Designer and FactoryTalk Linx.
- Basic EtherNet/IP concepts.
- Basic operation of Universal Robots PolyScope 3.
Links of Interest (internal or external)
- https://www.rockwellautomation.com/en-us/products/software/factorytalk/designsuite/studio-5000/studio-5000-logix-designer.html
- https://literature.rockwellautomation.com/idc/groups/literature/documents/um/5069-um002_-en-p.pdf
- https://compatibility.rockwellautomation.com/
- https://www.universal-robots.com/articles/ur/interface-communication/ethernet-ip-guide/
- https://www.universal-robots.com/download/manuals-cb-series/user/ur5/
Implementation Guide
- Introduction
- Step 1
- Step 2
- Step 3
- Step 4
- Step 5
- Step 6
- Step 7
- Step 8
- Step 9
- Step 10
- Step 11
- Step 12
- Result
The following hardware and software environment is required to run the application.
Controller Revision and Software Compatibility
- The CompactLogix 5480 controller requires Studio 5000 Logix Designer v32.01 or later. Additionally, firmware v32.012 is required as the base revision for the generation. For this exercise, the physical controller was identified as running revision 37.013; therefore, it is recommended to use Studio 5000 v37.x and create the project using the same major revision as the controller to avoid incompatibilities during the download process.
IMPORTANT: If the revision installed on the controller is not available in Studio 5000, install support for that revision or consider a firmware update. A flashing process must not be interrupted by a loss of power or communication, as this could render the controller inoperable.
SAFETY: Safety states received via EtherNet/IP are useful for diagnostics and supervisory logic; however, the standard EtherNet/IP connection described here does not replace the hardwired or safety-rated safety functions required by the cell's risk assessment.
The following steps document the complete configuration used to establish and validate bidirectional communication between the CompactLogix and the UR5. The images are presented in the order of execution, and each is sequentially numbered for easy reference during the exercise.
Validate and interpret the data received from the UR5.
Under Controller Tags > Monitor Tags, expand URI.Robot. During the test, Controller Major = 3 and Controller Minor = 15 were observed, consistent with PolyScope 3.15.4. The value Robot_Mode = 5 corresponds to the robot's IDLE status under this test condition. This match confirms that the CPS is correctly aligning the byte map with the UDTs.
The most useful branches for monitoring are:
Group |
Primary information |
Why it matters |
|---|---|---|
URI.Robot |
Version, Robot Mode, program status, current, and speed slider. |
Shows overall status and confirms that the robot is in the expected mode before coordinating a sequence. |
URI.Safety |
Safety Mode and Normal, Reduced, Protective Stop, E-Stop, Safeguard, Fault, and other bits. |
Supports diagnostics and process interlocks. It does not replace a certified safety function. |
URI.Joints |
Position, speed, current, temperature, and mode for all six joints. |
Supports monitoring of movement, joint position, and the condition of each axis. |
URI.TCP |
TCP XYZ position, RX/RY/RZ orientation, speed, force, and torque. |
Supports monitoring of the tool's Cartesian pose and coordination of the application with the machine. |
URI.IO / URI.Tool |
Inputs, outputs, and tool signals. |
Useful for diagnostics and for sharing the status of robot sensors or actuators. |
URI.Bit / URI.Int / URI.Float |
General-purpose fieldbus registers. |
Flexible channel for handshakes, recipes, commands, and parameters between the PLC and PolyScope. |
Return to the main URI level and review the available branches: Robot, Safety, I/O, Tool, Joints, TCP, Bit, Int, and Float. These structures organize the data received from the robot and simplify its use in control and diagnostic logic.
ethernet-ip-integration-between-compactlogix-and-ur5-cobot_56_URI_Data_Groups
Prepare the CompactLogix-to-UR5 write path.
To transmit data to the robot, add a second CPS that copies the URO structure to the output assembly. During initial preparation, place an AFI before the CPS to keep writing disabled until the PolyScope test program is complete.
AFI -> CPS |
To prepare the CompactLogix → UR5 direction, return to MainRoutine and insert a second rung. Temporarily place an AFI at the beginning of the rung and add a CPS after it. The AFI keeps the output copy disabled while configuration is being completed.
ethernet-ip-integration-between-compactlogix-and-ur5-cobot_57_CPS_Output_with_AFI.png
Configure the second CPS with Source = URO, Dest = UR5:O.Data[0], and Length = 224. Keep the AFI ahead of the instruction to prevent the PLC from writing the output assembly before the UR5 test program is created.
ethernet-ip-integration-between-compactlogix-and-ur5-cobot_58_CPS_Output_Config.png
The value 224 corresponds to the 224 SINTs/bytes of the Output Assembly configured in the Generic Ethernet Module. While the AFI is present, values prepared in URO are not copied to UR5:O.Data[].
Replace the AFI with controlled write enable logic.
In Studio 5000, create a BOOL Controller Tag named UR_Enable_Write. Replace the AFI in the output rung with an XIC associated with this tag. This allows writing to the UR5 to be enabled or blocked without modifying the logic during testing.
In Studio 5000, open Controller Tags and create a new BOOL tag named UR_Enable_Write. This bit is used as an explicit permission to enable or block writes from the CompactLogix to the UR5.
ethernet-ip-integration-between-compactlogix-and-ur5-cobot_68_UR_Enable_Write_Tag.png
Return to MainRoutine and replace the AFI in the output rung with an XIC associated with UR_Enable_Write. Initially leave the bit at 0 so that the output CPS remains disabled until the test.
ethernet-ip-integration-between-compactlogix-and-ur5-cobot_69_UR_Enable_Write_XIC.png
XIC UR_Enable_Write -> CPS |
IMPORTANT: Before enabling UR_Enable_Write, keep the Speed Slider and physical output masks in URO at zero if you do not want to take control of those resources. This test modifies only URO.Int.Registers[23].
Download the project, leave the controller in Remote Run, and enter the value 123 in URO.Int.Registers[23].
Download the updated project, place the controller in Remote Run, and open Controller Tags > Monitor Tags. Expand URO.Int.Registers and enter the value 123 in URO.Int.Registers[23], while keeping UR_Enable_Write at 0.
ethernet-ip-integration-between-compactlogix-and-ur5-cobot_70_URO_Int_Register23.png
The completed application establishes bidirectional EtherNet/IP communication between a CompactLogix 5480 and a UR5 CB-Series robot. URI receives and decodes robot information, while URO sends registers to PolyScope. The integer-register test confirms that the network configuration, assemblies, UDTs, and CPS instructions work together correctly.
Validation |
Expected result |
|---|---|
IP connectivity |
PLC, UR5, and PC accessible on the 192.168.1.x network. |
UR5 EtherNet/IP |
Adapter: Connected with a green indicator. |
Studio 5000 |
Controller OK and I/O OK. |
UR5 → PLC |
URI.Robot, URI.Safety, URI.Joints, and URI.TCP display valid data. |
PLC → UR5 |
With UR_Enable_Write active, PLC_Value matches URO.Int.Registers[23]. |
This foundation supports Ready, Start, Busy, Done, and Fault handshakes, as well as recipe or task selection. For production, assign registers clearly, document the handshake, and validate behavior during communication loss, restarts, and safety-state changes.
EtherNet/IP Integration Between CompactLogix and UR5 Cobot
Version 1.0 - October 2026