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.
| 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. |
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. |
| Name | Arguments | Description |
|---|---|---|
| (none) | - | This connector does not currently expose any custom connector-level methods via Execute Commands. |
The Address field of each tag is the fully qualified tag name as it appears in the controller, for example:
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.
| 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) |