Overview

The Universal Robot connector reads live robot state (joint/TCP positions, speeds, forces, currents, temperatures, safety/robot mode) from a UR robot's RTDE (Real-Time Data Exchange) interface. Data streams continuously from the robot over a dedicated RTDE socket connection (see RtdeClient.cs) rather than being individually polled - Ur5_OnDataReceive fires on every RTDE package and updates every configured tag in one pass.

This connector is read-only - it does not currently support writing values back to the robot.

Parameters

Name Values Description
Type UNIVERSALROBOT The connector type identifier.
IP IP address or hostname Address of the UR controller.
UpdateRate milliseconds (integer) Present for consistency with other connectors, but not used to drive polling - data arrives continuously via the RTDE stream, not on a timer.

Supported Tag Types:

Tags are fixed, not user-addressed - each of the following is created internally and updated on every RTDE package:

Tag Type Description
Actual_q / Actual_qd Object (JSON) Actual joint positions/velocities (Base, Shoulder, Elbow, Wrist1-3), degrees.
Actual_current / Actual_current_window Object (JSON) Per-joint actual current and current window.
Joint_control_output / Joint_Mode / Joint_Temperatures Object (JSON) Per-joint control output, mode, and temperature.
Target_q Object (JSON) Target joint positions, degrees.
actual_TCP_pose / target_TCP_pose Object (JSON) Actual/target tool centre point pose (x, y, z, rx, ry, rz).
actual_TCP_speed / target_TCP_speed Object (JSON) Actual/target TCP speed. Rotational components in degrees/s.
actual_TCP_force Object (JSON) Actual TCP force.
Actual_tool_accelerometer Object (JSON) Tool accelerometer (X, Y, Z).
RobotV / RobotA Decimal Actual robot voltage/current.
TimeStamp / actual_execution_time Decimal RTDE package timestamp / actual execution time.
SafetyMode / DigitalInputBits / RobotMode Int Safety mode, digital input bits, robot mode.

Connector Methods

Name Arguments Description
(none) - This connector does not currently expose any custom connector-level methods via Execute Commands.

Addressing

The Address field of each tag is the fully qualified tag name as it appears in the controller, for example:

  • MyTag - a controller-scoped tag
  • Program:MainProgram.MyTag - a program-scoped tag
  • MyArrayTag[3] - a specific element of an array tag
  • MyUdt.MyMember - a member of a user-defined type

The tag name must match the width/type actually configured on the controller - for example, requesting a tag as DINT when it is really an array or a member of a larger UDT will fail to initialize (ErrorOutOfBounds). Where more than one AB type could apply to a tag type (see Supported Tag Types above), set Parameters["DataType"] to match the controller's actual configuration.

Diagnostic Codes

Code Type Description
1010 Error Unsupported tag type encountered while creating a handle
1015 Error A tag's DataType is a 64-bit type (LINT/ULINT) but stores as Int32 - large values will truncate
1020 Error Unrecognised DataType for a tag - falling back to the type's default
1025 Error Unable to initialize a tag added while the connector was already running
1030 Error Unable to create the underlying AB tag handle
1200 Error Unable to initialize a tag during the initial connect/reconnect probe
1215 Error A reconnect attempt did not bring any tag online
1225 Error No tags came online against the PLC on startup
1305 Error A tag read returned a non-Ok status
1310 Error Exception while reading a tag
1405 Error AB tag handle not present for a tag ChangeData was called on
1410 Error Write skipped - tag has never successfully initialized against the PLC
1415 Error A tag write returned a non-Ok status
1420 Error Exception while writing a tag
1510 Error RunMethod called with an unrecognised method name
1600 Error Exception while disposing an AB tag handle during shutdown
1700 Error Unrecognised PLCTYPE configuration value - falling back to the current default
1705 Error Unrecognised PROTOCOL configuration value - falling back to the current default
2201 Debug Connection lost
2230 Debug Invoking Connected
2231 Debug Invoking ConnectionLost
2300 Debug ReadUpdate cycle overran cycleDelay
2325 Debug UDT auto-discovery could not resolve this tag - falling back to raw bytes (reason given in message text)
2400 Debug ITag not present - ChangeData called for an unregistered tag name
3100 Info Connector started
3205 Info Attempting to reconnect to the PLC
3210 Info Reconnected to the PLC
3220 Info Connected to the PLC on startup
3326 Info UDT auto-discovery resolved a tag to a named-field template (template name/id/field count/size given in message text)