0% found this document useful (0 votes)
78 views312 pages

Client InterfacesV3.14andV5.9

The document describes the data streams sent from a Universal Robots controller to client interfaces. It outlines the primary and secondary client interfaces that provide robot state messages and optional messages at 10Hz and 125Hz. The robot state messages contain packages with data on robot mode, joint positions and velocities, tool position, master board inputs/outputs, and tool data. Optional message types for the primary client include version information, security alerts, and notifications.

Uploaded by

nerko
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views312 pages

Client InterfacesV3.14andV5.9

The document describes the data streams sent from a Universal Robots controller to client interfaces. It outlines the primary and secondary client interfaces that provide robot state messages and optional messages at 10Hz and 125Hz. The robot state messages contain packages with data on robot mode, joint positions and velocities, tool position, master board inputs/outputs, and tool data. Optional message types for the primary client include version information, security alerts, and notifications.

Uploaded by

nerko
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
You are on page 1/ 312

The Primary and Secondary Client Interfaces (10 Hz

The information on this section applies to UR software versions shown, below:

Primary client=port 30001 (Robot state and messages)


Secondary client=port 30002 (Only robot state and the Version messages)
Primary client read only=port 30011 (Robot state and messages)
Secondary client read only=port 30012 (Only robot state and the Version messages)

CB3 (10Hz):

3.12->3.14: Primary and Secondary Client interface


3.11: Primary and Secondary Client interface
3.10: Primary and Secondary Client interface
3.7 -> 3.9: Primary and Secondary Client Interface
3.6: Primary and Secondary Client Interface
3.5: Primary and Secondary Client Interface
3.4: Primary and Secondary Client Interface
3.3: Primary and Secondary Client Interface
3.2: Primary and Secondary Client Interface
3.1: Primary and Secondary Client Interface
3.0: Primary and Secondary Client Interface

e-Series (10Hz):

5.9: Primary and Secondary Client Interface


5.8: Primary and Secondary Client Interface
5.6->5.7: Primary and Secondary Client Interface
5.5: Primary and Secondary Client Interface
5.4: Primary and Secondary Client Interface
5.2 -> 5.3: Primary and Secondary Client Interface
5.1: Primary and Secondary Client Interface
5.0: Primary and Secondary Client Interface

The Realtime communications Interface


(The RealTime interface has been deprecated since version 3.5. It is recommended to use the RTDE Interfac

The information on this section applies to UR software versions shown, below:

RealTime client=port 30003


RealTime client read only=port 30013
The realtime communications interface is also known as the Matlab interface

CB3 (125 Hz):

3.10 ->3.14 Realtime interface


3.7 -> 3.9 Realtime interface
3.6 Realtime interface
3.5 Realtime interface
3.2 -> 3.4 Realtime interface
3.0 -> 3.1 Realtime interface

e-Series (500 Hz):

5.4 -> 5.9 Realtime interface


5.1 -> 5.3 Realtime interface
5.0 Realtime interface
1.6 Retur til index
Primary and secondary client
The robot state message contain several packages as seen below.

NOTE:

• Not every robot state message may necessarily contain all of the packages described.
• Therefore, it is a good idea to test the package type chars, to see what packages are included in the message.
• Not all package types are documented here.
• Only the message type "ROBOT_STATE" is documented here (messageType value is 16)

int messageSize (total size including robot mode data, joint data, cartesian info, kinematics info, masterboard data, tool data,
unsigned char messageType = ROBOT_STATE = 16

This page describes the data sent from the robot controller:

Robot mode data


int packageSize
unsigned char packageType = ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRobotConnected
bool isRealRobotEnabled
bool isPowerOnRobot
bool isEmergencyStopped
bool isSecurityStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
double speedFraction

Joint data
int packageSize
unsigned char packageType = JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro
unsigned char jointMode
end
The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char = CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz

Masterboard data
int packageSize
unsigned char packageType = MASTERBOARD_DATA = 3
short digitalInputBits
short digitalOutputBits
char analogInputRange0
char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char masterSaftyState
unsigned char masterOnOffState
char euromap67InterfaceInstalled
(if euromap67 interface is installed, also the following:
int euromapInputBits
int euromapOutputBits
short euromapVoltage
short euromapCurrent)

Tool data
int packageSize
unsigned char packageType = TOOL_DATA = 2
char analogInputRange2
char analogInputRange3
double analogInput2
double analogInput3
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
unsigned char toolMode

Below is only for primary client


The "source" field is a code for the sender of the message:

VersionMessage - first package only


int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VERSION = 3
char projectNameSize
char array projectName
unsigned char majorVersion
unsigned char minorVersion
int svnRevision
char array buildDate

Zero or more of the following messages:

SecurityMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_SECURITY = 5
int robotMessageCode
int robotMessageArgument
char array textMessage

RobotcommMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
char array textMessage

KeyMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_KEY = 7
int robotMessageCode
int robotMessageArgument
unsigned char titleSize
char array messageTitle
char array textMessage

LabelMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_PROGRAM_LABEL = 1
int id
char array textMessage

PopupMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_POPUP = 2
bool warning
bool error
unsigned char titleSize
char array messageTitle
char array textMessage

RequestValueMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_REQUEST_* = 0-8
unsigned int requestId
char array textMessage

TextMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TEXT = 0
char array textMessage
VarMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VARIABLE = 8
int code
int argument
unsigned char titleSize
char array messageTitle
char array messageText

Example of data recieved: Example


packages described.
what packages are included in the message.

ssageType value is 16)

rtesian info, kinematics info, masterboard data, tool data, configuration data)

DataStreamFromURController
nitialisation screen): JointModes
MessageSources
1.7 Retur til index
Primary and secondary client
The robot state message contain several packages as seen below.

NOTE:

• Not every robot state message may necessarily contain all of the packages described.
• Therefore, it is a good idea to test the package type chars, to see what packages are included in the message.
• Not all package types are documented here.
• Only the message type "ROBOT_STATE" is documented here (messageType value is 16)

int messageSize (total size including robot mode data, joint data, cartesian info, kinematics info, masterboard data, tool data,
unsigned char messageType = ROBOT_STATE = 16

This page describes the data sent from the robot controller: DataStreamFromURController

Robot mode data


int packageSize
unsigned char packageType = ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRobotConnected
bool isRealRobotEnabled
bool isPowerOnRobot
bool isEmergencyStopped
bool isSecurityStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
double speedFraction

Joint data
int packageSize
unsigned char packageType = JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro
unsigned char jointMode
end
The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char = CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz

Masterboard data
int packageSize
unsigned char packageType = MASTERBOARD_DATA = 3
short digitalInputBits
short digitalOutputBits
char analogInputRange0
char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char masterSaftyState
unsigned char masterOnOffState
char euromap67InterfaceInstalled
(if euromap67 interface is installed, also the following:
int euromapInputBits
int euromapOutputBits
short euromapVoltage
short euromapCurrent)

Tool data
int packageSize
unsigned char packageType = TOOL_DATA = 2
char analogInputRange2
char analogInputRange3
double analogInput2
double analogInput3
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
unsigned char toolMode

Below is only for primary client


The "source" field is a code for the sender of the message: MessageSources

VesionMessage - first package only


int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VERSION = 3
char projectNameSize
char array projectName
unsigned char majorVersion
unsigned char minorVersion
int svnRevision
char array buildDate

Zero or more of the following messages:

SecurityMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_SECURITY = 5
int robotMessageCode
int robotMessageArgument
char array textMessage

RobotcommMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
char array textMessage

KeyMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_KEY = 7
int robotMessageCode
int robotMessageArgument
unsigned char titleSize
char array messageTitle
char array textMessage

LabelMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_PROGRAM_LABEL = 1
int id
char array textMessage

PopupMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_POPUP = 2
bool warning
bool error
unsigned char titleSize
char array messageTitle
char array textMessage

RequestValueMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_REQUEST_* = 0-8
unsigned int requestId
char array textMessage

TextMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TEXT = 0
char array textMessage
VarMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VARIABLE = 8
int code
int argument
unsigned char titleSize
char array messageTitle
char array messageText

Example of data recieved: Example


in the message.

o, masterboard data, tool data, configuration data)


JointModes
1.8 Retur til index
Primary and secondary client
The robot state message contain several packages as seen below.

NOTE:

• Not every robot state message may necessarily contain all of the packages described.
• Therefore, it is a good idea to test the package type chars, to see what packages are included in the message.
• Not all package types are documented here.
• Only the message type "ROBOT_STATE" is documented here (messageType value is 16)

int messageSize (total size including robot mode data, joint data, cartesian info, kinematics info, masterboard data, tool data,
unsigned char messageType = ROBOT_STATE = 16

This page describes the data sent from the robot controller: DataStreamFromURController

Robot mode data


int packageSize
unsigned char packageType = ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRobotConnected
bool isRealRobotEnabled
bool isPowerOnRobot
bool isEmergencyStopped
bool isSecurityStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
double speedFraction

Joint data
int packageSize
unsigned char packageType = JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro
unsigned char jointMode
end
The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char = CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz

Masterboard data
int packageSize
unsigned char packageType = MASTERBOARD_DATA = 3
short digitalInputBits
short digitalOutputBits
char analogInputRange0
char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char masterSaftyState
unsigned char masterOnOffState
char euromap67InterfaceInstalled
(if euromap67 interface is installed, also the following:
int euromapInputBits
int euromapOutputBits
short euromapVoltage
short euromapCurrent)

Tool data
int packageSize
unsigned char packageType = TOOL_DATA = 2
char analogInputRange2
char analogInputRange3
double analogInput2
double analogInput3
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
unsigned char toolMode

Kinematics info
int packageSize
unsigned char packageType = KINEMATICS_INFO = 5

This package contains a checksum for the specific robot. It might be subject of change in the near future

Configuration data
int packageSize
unsigned char packageType = CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double DHd
for each joint:
double DHalpha
for each joint:
double DHtheta
int masterboardVersion
int controllerBoxType
int robotType
int robotSubType
for each joint:
int motorType

Force mode data


int packageSize
unsigned char = FORCE_MODE_DATA = 7
double X
double Y
double Z
double Rx
double Ry
double Rz
double robotDexterity

Additional info
int packageSize
unsigned char = ADDITIONAL_INFO = 8
bool teachButtonPressed
bool teachButtonEnabled

Calibration data
int packageSize
unsigned char packageType = CALIBRATION_DATA = 9

Below is only for primary client


The "source" field is a code for the sender of the message: MessageSources

VesionMessage - first package only


int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VERSION = 3
char projectNameSize
char array projectName
unsigned char majorVersion
unsigned char minorVersion
int svnRevision
char array buildDate

Zero or more of the following messages:

SecurityMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_SECURITY = 5
int robotMessageCode
int robotMessageArgument
char array textMessage

RobotcommMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
char array textMessage

KeyMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_KEY = 7
int robotMessageCode
int robotMessageArgument
unsigned char titleSize
char array messageTitle
char array textMessage

LabelMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_PROGRAM_LABEL = 1
int id
char array textMessage

PopupMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_POPUP = 2
bool warning
bool error
unsigned char titleSize
char array messageTitle
char array textMessage

RequestValueMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_REQUEST_* = 0-8
unsigned int requestId
char array textMessage

TextMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TEXT = 0
char array textMessage

VarMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VARIABLE = 8
int code
int argument
unsigned char titleSize
char array messageTitle
char array messageText

Example of data recieved: Example


in the message.

, masterboard data, tool data, configuration data)


JointModes
3.0 Retur til index
Primary and secondary client
The robot state message contain several packages as seen below.

NOTE:

• Not every robot state message may necessarily contain all of the packages described.
• Therefore, it is a good idea to test the package type chars, to see what packages are included in the message.
• Not all package types are documented here.
• Only the message type "ROBOT_STATE" is documented here (messageType value is 16)

int messageSize (total size including robot mode data, joint data, cartesian info, kinematics info, masterboard data, tool data,
unsigned char messageType = ROBOT_STATE = 16

This page describes the data sent from the robot controller: DataStreamFromURController

Robot mode data


int packageSize
unsigned char packageType = ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRobotConnected
bool isRealRobotEnabled
bool isPowerOnRobot
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
unsigned char controlMode
double targetSpeedFraction
double speedScaling

Joint data
int packageSize
unsigned char packageType = JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro
unsigned char jointMode
end
The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char = CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz

Masterboard data
int packageSize
unsigned char packageType = MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
char analogInputRange0
char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode
unsigned char InReducedMode
char euromap67InterfaceInstalled
(if euromap67 interface is installed, also the following:
int euromapInputBits
int euromapOutputBits
float euromapVoltage
float euromapCurrent)
uint32_t (Used by Universal Robots software only)

Tool data
int packageSize
unsigned char packageType = TOOL_DATA = 2
char analogInputRange2
char analogInputRange3
double analogInput2
double analogInput3
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
unsigned char toolMode

Kinematics info
int packageSize
unsigned char packageType = KINEMATICS_INFO = 5

This package contains a checksum for the specific robot. It might be subject of change in the near future.

Configuration data
int packageSize
unsigned char packageType = CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double DHd
for each joint:
double DHalpha
for each joint:
double DHtheta
int masterboardVersion
int controllerBoxType
int robotType
int robotSubType

Force mode data


int packageSize
unsigned char = FORCE_MODE_DATA = 7
double X
double Y
double Z
double Rx
double Ry
double Rz
double robotDexterity

Additional info
int packageSize
unsigned char = ADDITIONAL_INFO = 8
bool teachButtonPressed
bool teachButtonEnabled

Calibration data
int packageSize
unsigned char packageType = CALIBRATION_DATA = 9

This package is used internally by Universal Robots software only and should be skipped. It might be subject of change in the n

Below is only for primary client


The "source" field is a code for the sender of the message: MessageSources

VesionMessage - first package only


int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VERSION = 3
char projectNameSize
char array projectName
unsigned char majorVersion
unsigned char minorVersion
int svnRevision
char array buildDate

Zero or more of the following messages:

SafetyModeMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
char safetyModeType
char array textMessage
The "safetyModeType" field can contain the following values: SafetyModeTypes

RobotcommMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int warningLevel
char array textMessage

The "warningLevel" field can contain the following values: WarningLevels

KeyMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_KEY = 7
int robotMessageCode
int robotMessageArgument
unsigned char titleSize
char array messageTitle
char array textMessage

LabelMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_PROGRAM_LABEL = 1
int id
char array textMessage

RequestValueMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_REQUEST_VALUE = 9
unsigned int requestId
unsigned int requestedType = 0-8
(*) bool warning
(*) bool error
(*) bool blocking
(*) unsigned char titleLength
(*) char array messageTitle
char array textMessage

(*) Fields only included in this package, if the 'requestedType' field contains the value 8. This is the 'PopupMessage' type.

TextMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TEXT = 0
char array textMessage

RuntimeExceptionMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_RUNTIME_EXCEPTION = 10
char array textMessage

VarMessage
int messageSize
unsigned char messageType = PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_VARIABLE_UPDATE = 2
unsigned char titleSize
char array messageTitle
char array messageText

Deprecated:Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (described belo

GlobalVariablesSetupMessage
int messageSize
unsigned char messageType = PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType =PROGRAM_STATE_MESSAGE_GLOBAL_VARIABLES_SETUP = 0
unsigned short startIndex
(*) char array variableNames

(*) Each new line (terminated with the '\n' character) in the array contains the name of a variable.

GlobalVariablesUpdateMessage
int messageSize
unsigned char messageType = PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_GLOBAL_VARIABLES_UPDATE = 1
unsigned short startIndex
for each variable: (terminated with the '\n' character)
unsigned char valueType
One of following data chunks based on the value of 'valueType':
valueType = 'NONE_VAL':
// No content -> has not been initialized yet
valueType = 'STRING_VAL':
unsigned short valueLength
char array value
valueType = 'POSE_VAL':
float x
float y
float z
float rx
float ry
float rz
valueType = 'BOOL_VAL':
bool value
valueType = 'INT_VAL':
int value
valueType = 'FLOAT_VAL':
float value
valueType = 'LIST_VAL':
unsigned short listLength
for each item in the list:
unsigned char valueType
The data for that type

The relevant values for the "valueType" field are: ValueTypes

The information for each variable is on a new line (terminated with the '\n' character).

Example of data recieved: Example


sterboard data, tool data, configuration data)
JointModes
subject of change in the near future.
PopupMessage' type.

eMessage' (described below).


3.1 Retur til index
Primary and secondary client
The robot state message contain several packages as seen below.

NOTE:

• Not every robot state message may necessarily contain all of the packages described.
• Therefore, it is a good idea to test the package type chars, to see what packages are included in the message.
• Not all package types are documented here.
• Only the message type "ROBOT_STATE" is documented here (messageType value is 16)

int messageSize (total size including robot mode data, joint data, cartesian info, kinematics info, masterboard data, tool data,
unsigned char messageType = ROBOT_STATE = 16

This page describes the data sent from the robot controller: DataStreamFromURController

Robot mode data


int packageSize
unsigned char packageType = ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRobotConnected
bool isRealRobotEnabled
bool isPowerOnRobot
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
unsigned char controlMode
double targetSpeedFraction
double speedScaling

Joint data
int packageSize
unsigned char packageType = JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro
unsigned char jointMode
end
The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char = CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Masterboard data
int packageSize
unsigned char packageType = MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
char analogInputRange0
char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode
unsigned char InReducedMode
char euromap67InterfaceInstalled
(if euromap67 interface is installed, also the following:
int euromapInputBits
int euromapOutputBits
float euromapVoltage
float euromapCurrent)
uint32_t (Used by Universal Robots software only)
Tool data
int packageSize
unsigned char packageType = TOOL_DATA = 2
char analogInputRange2
char analogInputRange3
double analogInput2
double analogInput3
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
unsigned char toolMode

Kinematics info
int packageSize
unsigned char packageType = KINEMATICS_INFO = 5

This package contains a checksum for the specific robot. It might be subject of change in the near future.

Configuration data
int packageSize
unsigned char packageType = CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double DHd
for each joint:
double DHalpha
for each joint:
double DHtheta
int masterboardVersion
int controllerBoxType
int robotType
int robotSubType
Force mode data
int packageSize
unsigned char = FORCE_MODE_DATA = 7
double X
double Y
double Z
double Rx
double Ry
double Rz
double robotDexterity

Additional info
int packageSize
unsigned char = ADDITIONAL_INFO = 8
bool teachButtonPressed
bool teachButtonEnabled

Calibration data
int packageSize
unsigned char packageType = CALIBRATION_DATA = 9

This package is used internally by Universal Robots software only and should be skipped. It might be subject of change in the n

VesionMessage - first package only


This is the first package sent on both the primary and secondary client interfaces. This package it not part of the robot state m

int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VERSION = 3
char projectNameSize
char array projectName
unsigned char majorVersion
unsigned char minorVersion
int svnRevision
char array buildDate

Below is only for primary client


The "source" field is a code for the sender of the message: MessageSources

Zero or more of the following messages:

SafetyModeMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
char safetyModeType
char array textMessage

The "safetyModeType" field can contain the following values: SafetyModeTypes

RobotcommMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int warningLevel
char array textMessage

The "warningLevel" field can contain the following values: WarningLevels

KeyMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_KEY = 7
int robotMessageCode
int robotMessageArgument
unsigned char titleSize
char array messageTitle
char array textMessage

LabelMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_PROGRAM_LABEL = 1
int id
char array textMessage

RequestValueMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_REQUEST_VALUE = 9
unsigned int requestId
unsigned int requestedType = 0-8
(*) bool warning
(*) bool error
(*) bool blocking
(*) unsigned char titleLength
(*) char array messageTitle
char array textMessage

(*) Fields only included in this package, if the 'requestedType' field contains the value 8. This is the 'PopupMessage' type.

TextMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TEXT = 0
char array textMessage

RuntimeExceptionMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_RUNTIME_EXCEPTION = 10
char array textMessage

VarMessage
int messageSize
unsigned char messageType = PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_VARIABLE_UPDATE = 2
unsigned char titleSize
char array messageTitle
char array messageText

Deprecated:Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (described belo

GlobalVariablesSetupMessage
int messageSize
unsigned char messageType = PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType =PROGRAM_STATE_MESSAGE_GLOBAL_VARIABLES_SETUP = 0
unsigned short startIndex
(*) char array variableNames

(*) Each new line (terminated with the '\n' character) in the array contains the name of a variable.

GlobalVariablesUpdateMessage
int messageSize
unsigned char messageType = PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_GLOBAL_VARIABLES_UPDATE = 1
unsigned short startIndex
for each variable: (terminated with the '\n' character)
unsigned char valueType
One of following data chunks based on the value of 'valueType':
valueType = 'NONE_VAL':
// No content -> has not been initialized yet
valueType = 'STRING_VAL':
unsigned short valueLength
char array value
valueType = 'POSE_VAL':
float x
float y
float z
float rx
float ry
float rz
valueType = 'BOOL_VAL':
bool value
valueType = 'INT_VAL':
int value
valueType = 'FLOAT_VAL':
float value
valueType = 'LIST_VAL':
unsigned short listLength
for each item in the list:
unsigned char valueType
The data for that type

The relevant values for the "valueType" field are: ValueTypes

The information for each variable is on a new line (terminated with the '\n' character).

Example of data recieved: Example


erboard data, tool data, configuration data)
JointModes
ubject of change in the near future.

part of the robot state message.


opupMessage' type.

Message' (described below).


3.2 Retur til index
Primary and secondary client
The robot state message contain several packages as seen below.

NOTE:

• Not every robot state message may necessarily contain all of the packages described.
• Therefore, it is a good idea to test the package type chars, to see what packages are included in the message.
• Not all package types are documented here.
• Only the message type "ROBOT_STATE" is documented here (messageType value is 16)

int messageSize (total size including robot mode data, joint data, cartesian info, kinematics info, masterboard data, tool data,
unsigned char messageType = ROBOT_STATE = 16

This page describes the data sent from the robot controller: DataStreamFromURController

Robot mode data


int packageSize
unsigned char packageType = ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRobotConnected
bool isRealRobotEnabled
bool isPowerOnRobot
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
unsigned char controlMode
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit

Joint data
int packageSize
unsigned char packageType = JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro
unsigned char jointMode
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char = CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Masterboard data
int packageSize
unsigned char packageType = MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
char analogInputRange0
char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode
unsigned char InReducedMode
char euromap67InterfaceInstalled
(if euromap67 interface is installed, also the following:
int euromapInputBits
int euromapOutputBits
float euromapVoltage
float euromapCurrent)
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput

Tool data
int packageSize
unsigned char packageType = TOOL_DATA = 2
char analogInputRange2
char analogInputRange3
double analogInput2
double analogInput3
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
unsigned char toolMode

Kinematics info
int packageSize
unsigned char packageType = KINEMATICS_INFO = 5

This package contains a checksum for the specific robot. It might be subject of change in the near future.
This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data
int packageSize
unsigned char packageType = CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double DHd
for each joint:
double DHalpha
for each joint:
double DHtheta
int masterboardVersion
int controllerBoxType
int robotType
int robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data


int packageSize
unsigned char = FORCE_MODE_DATA = 7
unused double X
unused double Y
unused double Z
unused double Rx
unused double Ry
unused double Rz
double robotDexterity

Additional info
int packageSize
unsigned char = ADDITIONAL_INFO = 8
bool freedriveButtonPressed
bool freedriveButtonEnabled
bool IOEnabledFreedrive

Calibration data
int packageSize
unsigned char packageType = CALIBRATION_DATA = 9

This package is used internally by Universal Robots software only and should be skipped. It might be subject of change in the n

VersionMessage - first package only


This is the first package sent on both the primary and secondary client interfaces. This package it not part of the robot state m

int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VERSION = 3
char projectNameSize
char array projectName
unsigned char majorVersion
unsigned char minorVersion
int svnRevision
char array buildDate

Below is only for primary client


The "source" field is a code for the sender of the message: MessageSources

Zero or more of the following messages:

SafetyModeMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
char safetyModeType
char array textMessage

The "safetyModeType" field can contain the following values: SafetyModeTypes

RobotcommMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int warningLevel
char array textMessage

The "warningLevel" field can contain the following values: WarningLevels

KeyMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_KEY = 7
int robotMessageCode
int robotMessageArgument
unsigned char titleSize
char array messageTitle
char array textMessage

LabelMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_PROGRAM_LABEL = 1
int id
char array textMessage

RequestValueMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_REQUEST_VALUE = 9
unsigned int requestId
unsigned int requestedType = 0-8
(*) bool warning
(*) bool error
(*) bool blocking
(*) unsigned char titleLength
(*) char array messageTitle
char array textMessage

(*) Fields only included in this package, if the 'requestedType' field contains the value 8. This is the 'PopupMessage' type.

TextMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TEXT = 0
char array textMessage

RuntimeExceptionMessage
int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_RUNTIME_EXCEPTION = 10
char array textMessage

VarMessage
int messageSize
unsigned char messageType = PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_VARIABLE_UPDATE = 2
unsigned char titleSize
char array messageTitle
char array messageText
Deprecated:Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (described belo

GlobalVariablesSetupMessage
int messageSize
unsigned char messageType = PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType =PROGRAM_STATE_MESSAGE_GLOBAL_VARIABLES_SETUP = 0
unsigned short startIndex
(*) char array variableNames

(*) Each new line (terminated with the '\n' character) in the array contains the name of a variable.

GlobalVariablesUpdateMessage
int messageSize
unsigned char messageType = PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_GLOBAL_VARIABLES_UPDATE = 1
unsigned short startIndex
for each variable: (terminated with the '\n' character)
unsigned char valueType
One of following data chunks based on the value of 'valueType':
valueType = 'NONE_VAL':
// No content -> has not been initialized yet
valueType = 'STRING_VAL':
unsigned short valueLength
char array value
valueType = 'POSE_VAL':
float x
float y
float z
float rx
float ry
float rz
valueType = 'BOOL_VAL':
bool value
valueType = 'INT_VAL':
int value
valueType = 'FLOAT_VAL':
float value
valueType = 'LIST_VAL':
unsigned short listLength
for each item in the list:
unsigned char valueType
The data for that type
The relevant values for the "valueType" field are: ValueTypes

The information for each variable is on a new line (terminated with the '\n' character).

Example of data recieved: Example


erboard data, tool data, configuration data)
JointModes
ubject of change in the near future.

part of the robot state message.


opupMessage' type.
Message' (described below).
3.3

3.3 Retur til index


Primary and secondary client
The following messages have been changed with respect to the previous major software release 3.2

Please consult SW3.2 documentation for all other packages.

VesionMessage - first package only


This is the first package sent on both the primary and secondary client interfaces. This package it not part of the robot state m

int messageSize
unsigned char messageType = ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_VERSION = 3
char projectNameSize
char array projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
char array buildDate

Page 61
3.3

age it not part of the robot state message.

Page 62
3.4

3.4 Retur til index


Primary and secondary client
The following messages have been changed with respect to the previous major software release 3.3

Please consult SW3.3 documentation for all other packages.

Page 63
3.5

3.5 Retur til index


Primary and secondary client
The following messages have been changed with respect to the previous major software release 3.4

Please consult SW3.4 documentation for all other packages.

Robot mode data


int packageSize
unsigned char packageType = ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRobotConnected
bool isRealRobotEnabled
bool isPowerOnRobot
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
unsigned char controlMode
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
uchar (Universal Robots internal)

Page 64
3.6

3.6
Primary and secondary client

Robot mode data


int packageSize
unsigned char packageType =ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
unsigned char controlMode
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
Int (Universal Robots internal)

Joint data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
double V_actual
float T_motor
double T_micro
uint8_t jointMode
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4

Page 65
3.6
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Masterboard data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput

Tool data
Page 66
3.6
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
double toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Kinematics info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end
double vJointDefault

Page 67
3.6
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
unused double Fx
unused double Fy
unused double Fz
unused double Frx
unused double Fry
unused double Frz
double robotDexterity

Additional info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
bool freedriveButtonPressed
bool freedriveButtonEnabled
bool IOEnabledFreedrive

Calibration data (Internally used only)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
unused double Fx
unused double Fy
unused double Fz

Page 68
3.6
unused double Frx
unused double Fry
unused double Frz

This package is used internally by Universal Robots software only and should be skipped.

VesionMessage - first package only

This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot stat

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

The "source" field is a code for the sender of the message:

Primary client ONLY

SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType
unsigned char reportDataType
uint32_t reportData

The "safetyModeType" field can contain the following values:

Page 69
3.6

RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel
unsigned char robotMessageDataType
uint32 robotMessageData
charArray robotCommTextMessage

The "reportLevel" field can contain the following values:

KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

LabelMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL = 1
int robotMessageId
charArray labelTextMessage

PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source

Page 70
3.6
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType
char array requestTextMessage

The "requestedType" field can contain the following values:

TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


int messageSize

Page 71
3.6
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (described be

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
(*) charArray variableNames

(*) Each new line (terminated with the '\n' character) in the array contains the name of a variable.

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
(*) for each variable:
unsigned char valueType

The relevant values for the "valueType" field are:

(*) The information for each variable is on a new line (terminated with the '\n' character).

Page 72
3.6

Retur til index

JointModes

Page 73
3.6

ToolModes

Page 74
3.6

MessageSources

SafetyModeTypes

Page 75
3.6

ReportLevels

Page 76
3.6

RequestedTypes

Page 77
3.6

ValueTypes

Page 78
3.7 -> 3.9

3.7 -> 3.9 Retur til index


Primary and secondary client

Robot mode data


int packageSize
unsigned char packageType =ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
unsigned char controlMode
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
int (Universal Robots internal)

Joint data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
double V_actual
float T_motor
double T_micro
uint8_t jointMode
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen): JointModes

Cartesian info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4

Page 79
3.7 -> 3.9
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Masterboard data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput

Page 80
3.7 -> 3.9
Tool data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
double toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode

The "toolMode" field is a code for the joint status (shown on the initialisation screen): ToolModes

Kinematics info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end

Page 81
3.7 -> 3.9
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
unused double Fx
unused double Fy
unused double Fz
unused double Frx
unused double Fry
unused double Frz
double robotDexterity

Additional info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
bool freedriveButtonPressed
bool freedriveButtonEnabled
bool IOEnabledFreedrive

Calibration data (Internally used only)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
unused double Fx
unused double Fy

Page 82
3.7 -> 3.9
unused double Fz
unused double Frx
unused double Fry
unused double Frz

This package is used internally by Universal Robots software only and should be skipped.

VesionMessage - first package only

This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot stat

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

Primary client ONLY

SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType SafetyModeTypes
uint32_t reportDataType
uint32_t reportData

Page 83
3.7 -> 3.9

RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel ReportLevels
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

LabelMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL = 1
int robotMessageId
charArray labelTextMessage

PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp

Page 84
3.7 -> 3.9
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType RequestedTypes
char array requestTextMessage

TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)

Page 85
3.7 -> 3.9
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (described be

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
(*) charArray variableNames

(*) Each new line (terminated with the '\n' character) in the array contains the name of a variable.

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
(*) for each variable:
unsigned char valueType ValueTypes

(*) The information for each variable is on a new line (terminated with the '\n' character).

Page 86
3.7 -> 3.9

Retur til index

JointModes

Page 87
3.7 -> 3.9

ToolModes

tion is changed.

Page 88
3.7 -> 3.9

tion is changed.

Page 89
3.7 -> 3.9

ackage it is not part of the robot state message.

MessageSources

MessageSources

SafetyModeTypes

Page 90
3.7 -> 3.9

MessageSources

ReportLevels

MessageSources

MessageSources

Page 91
3.7 -> 3.9
MessageSources

MessageSources

RequestedTypes

MessageSources

MessageSources

Page 92
3.7 -> 3.9

iablesUpdateMessage' (described below).

ValueTypes

Page 93
3.10

3.10 Retur til index


Messages sent to primary and secondary clients

Robot State Message


int messageSize Length of overall package: t
unsigned char messageType = MESSAGE_TYPE_ROBOT_STATE = 16
Sub packages Each sub package that follo

Robot mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: tota
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode RobotModes
unsigned char controlMode ControlModes
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
int (Universal Robots internal)

Joint data (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1

Page 94
3.10
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
double V_actual
float T_motor
double T_micro
uint8_t jointMode JointModes
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Tool data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: tota
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
double toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode ToolModes

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Masterboard data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: tota
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode See SafetyModes sheet
uint8_t InReducedMode

Page 95
3.10
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput
unsigned char (Used by Universal Robots software only)

Cartesian info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: tota
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Kinematics info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: tota
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: tota

Page 96
3.10
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: tota
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz
double robotDexterity

Additional info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
bool freedriveButtonPressed
bool freedriveButtonEnabled
bool IOEnabledFreedrive

Page 97
3.10
Calibration data (Sub Package of Robot State Message, Internally used only)
int packageSize Length of Sub Package: tota
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz

This package is used internally by Universal Robots software only and should be skipped.

VesionMessage (sent only once)


This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robo

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

Messages sent to primary clients ONLY

Robot Message - SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType SafetyModeTypes
uint32_t reportDataType
uint32_t reportData

Robot Message - RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp

Page 98
3.10
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel ReportLevels
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

Robot Message - KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

Robot Message - LabelMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL = 1
int robotMessageId
charArray labelTextMessage

Robot Message - PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

Robot Message - RequestValueMessage (Primary client only)


int messageSize

Page 99
3.10
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType RequestedTypes
char array requestTextMessage

Robot Message - TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

Robot Message - RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (descri
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
charArray variableNames List of names separated by

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25

Page 100
3.10
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
unsigned char variableValues ValueTypes
Each variable value contains type byte, data, and terminating new line character (\n character). Example - two variable

Page 101
3.10

Retur til index

Length of overall package: total length of package including this field

Each sub package that follows contains size, type, and package specific data

Length of Sub Package: total length of subpackage including this field

RobotModes
ControlModes

Page 102
3.10

JointModes

Length of Sub Package: total length of subpackage including this field

ToolModes

Length of Sub Package: total length of subpackage including this field

See SafetyModes sheet

Page 103
3.10

Length of Sub Package: total length of subpackage including this field

Length of Sub Package: total length of subpackage including this field

on is changed.

Length of Sub Package: total length of subpackage including this field

Page 104
3.10

on is changed.

Length of Sub Package: total length of subpackage including this field

Page 105
3.10

Length of Sub Package: total length of subpackage including this field

ckage it is not part of the robot state message.

MessageSources

MessageSources

SafetyModeTypes

Page 106
3.10
MessageSources

ReportLevels

MessageSources

MessageSources

MessageSources

Page 107
3.10

MessageSources

RequestedTypes

MessageSources

MessageSources

ablesUpdateMessage' (described below).

List of names separated by new line character ('\n' character). Example: var_1\nvar_2\n

Page 108
3.10

ValueTypes
acter). Example - two variables of type BOOL(True), and STRING("aaaa"): 0c 01 0a 03 00 04 61 61 61 61 0a

Page 109
3.10

Page 110
3.11

3.11 Retur til index


Messages sent to primary and secondary clients

Robot State Message


int messageSize Length of overall package: total length of package including this fie
unsigned char messageType = MESSAGE_TYPE_ROBOT_STATE = 16
Sub packages Each sub package that follows contains size, type, and package spe

Robot mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this fi
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode RobotModes
unsigned char controlMode ControlModes
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
unsigned char reserved

Joint data (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1

Page 111
3.11
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro Deprecated - ignore
uint8_t jointMode JointModes
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Tool data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this fi
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode ToolModes

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Masterboard data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this fi
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode See SafetyModes sheet
uint8_t InReducedMode

Page 112
3.11
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput
unsigned char (Used by Universal Robots software only)

Cartesian info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this fi
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Kinematics info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this fi
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this fi

Page 113
3.11
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this fi
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz
double robotDexterity

Additional info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
unsigned char tpButtonState
bool freedriveButtonEnabled
bool IOEnabledFreedrive
unsigned char reserved

Page 114
3.11

Calibration data (Sub Package of Robot State Message, Internally used only)
int packageSize Length of Sub Package: total length of subpackage including this fi
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz

This package is used internally by Universal Robots software only and should be skipped.

VesionMessage (sent only once)


This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robo

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

Messages sent to primary clients ONLY

Robot Message - SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType SafetyModeTypes
uint32_t reportDataType
uint32_t reportData

Robot Message - RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20

Page 115
3.11
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel ReportLevels
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

Robot Message - KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

Robot Message - LabelMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL = 1
int robotMessageId
charArray labelTextMessage

Robot Message - ProgramThreadsMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL_THREADS = 14
following structure repeats for each running program thread
int labelId (line number)
int labelNameLength
charArray labelName
int threadNameLength
charArray threadName

Robot Message - PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20

Page 116
3.11
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

Robot Message - RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType RequestedTypes
char array requestTextMessage

Robot Message - TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

Robot Message - RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (descri
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize

Page 117
3.11
charArray varMessageTitle
charArray varTextMessage

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
charArray variableNames List of names separated by new line character ('\n' character). Exa

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
unsigned char variableValues ValueTypes
Each variable value contains type byte, data, and terminating new line character (\n character). Example - two variable

Page 118
3.11

al length of package including this field

contains size, type, and package specific data

ength of subpackage including this field

Page 119
3.11

ength of subpackage including this field

ength of subpackage including this field

Page 120
3.11

ength of subpackage including this field

ength of subpackage including this field

uration is changed.

ength of subpackage including this field

Page 121
3.11

uration is changed.

ength of subpackage including this field

Page 122
3.11

lly used only)


ength of subpackage including this field

his package it is not part of the robot state message.

Page 123
3.11

Deprecated
use ProgramThreadsMessage

Page 124
3.11

client only)

alVariablesUpdateMessage' (described below).

Page 125
3.11

w line character ('\n' character). Example: var_1\nvar_2\n

n character). Example - two variables of type BOOL(True), and STRING("aaaa"): 0c 01 0a 03 00 04 61 61 61 61 0a

Page 126
3.11

61 61 61 61 0a

Page 127
3.12->3.14

3.12->3.14 Retur til index


Messages sent to primary and secondary clients

Robot State Message


int messageSize Length of overall package: total length of package including this
unsigned char messageType = MESSAGE_TYPE_ROBOT_STATE = 16
Sub packages Each sub package that follows contains size, type, and package s

Robot mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode RobotModes
unsigned char controlMode ControlModes
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
unsigned char reserved

Page 128
3.12->3.14
Joint data (Sub Package of Robot State Message)
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro Deprecated - ignore
uint8_t jointMode JointModes
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Tool data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode ToolModes

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Masterboard data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0

Page 129
3.12->3.14
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode See SafetyModes sheet
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput
unsigned char (Used by Universal Robots software only)

Cartesian info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Kinematics info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:

Page 130
3.12->3.14
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage including this
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7

Page 131
3.12->3.14
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz
double robotDexterity

Additional info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
unsigned char tpButtonState
bool freedriveButtonEnabled
bool IOEnabledFreedrive
unsigned char reserved

Calibration data (Sub Package of Robot State Message, Internally used only)
int packageSize Length of Sub Package: total length of subpackage including this
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz

This package is used internally by Universal Robots software only and should be skipped.

VesionMessage (sent only once)


This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot st

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

Page 132
3.12->3.14

Messages sent to primary clients ONLY

Robot Message - SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType SafetyModeTypes
uint32_t reportDataType
uint32_t reportData

Robot Message - RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel ReportLevels
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

Robot Message - KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

Robot Message - ProgramThreadsMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20

Page 133
3.12->3.14
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL_THREADS = 14
following structure repeats for each running program thread
int labelId (line number)
int labelNameLength
charArray labelName
int threadNameLength
charArray threadName

Robot Message - PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

Robot Message - RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType RequestedTypes
char array requestTextMessage

Robot Message - TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

Page 134
3.12->3.14
Robot Message - RuntimeExceptionMessage (Primary client only)
int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (described
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
charArray variableNames List of names separated by new line character ('\n' character). E

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
unsigned char variableValues ValueTypes
Each variable value contains type byte, data, and terminating new line character (\n character). Example - two variables of

Page 135
3.12->3.14

al length of package including this field

contains size, type, and package specific data

ength of subpackage including this field

Page 136
3.12->3.14

ength of subpackage including this field

ength of subpackage including this field

Page 137
3.12->3.14

ength of subpackage including this field

ength of subpackage including this field

Page 138
3.12->3.14

on is changed.

ength of subpackage including this field

on is changed.

ength of subpackage including this field

Page 139
3.12->3.14

ength of subpackage including this field

ckage it is not part of the robot state message.

Page 140
3.12->3.14

ablesUpdateMessage' (described below).

w line character ('\n' character). Example: var_1\nvar_2\n

acter). Example - two variables of type BOOL(True), and STRING("aaaa"): 0c 01 0a 03 00 04 61 61 61 61 0a

Page 141
5.0

5.0
Primary and secondary client

Robot mode data


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
unsigned char controlMode
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
int (Universal Robots internal)

Joint data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
double V_actual
float T_motor
double T_micro
uint8_t jointMode
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4

Page 142
5.0
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Masterboard data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput

Page 143
5.0
Tool data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
double toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Kinematics info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end

Page 144
5.0
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
unused double Fx
unused double Fy
unused double Fz
unused double Frx
unused double Fry
unused double Frz
double robotDexterity

Additional info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
bool freedriveButtonPressed
bool freedriveButtonEnabled
bool IOEnabledFreedrive

Calibration data (Internally used only)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
unused double Fx
unused double Fy

Page 145
5.0
unused double Fz
unused double Frx
unused double Fry
unused double Frz

This package is used internally by Universal Robots software only and should be skipped.

Tool Communication Info


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_COMM_INFO = 11
bool toolCommunicationIsEnabled
int32_t baudRate
int32_t parity
int32_t stopBits
float RxIdleChars
float TxIdleChars

VesionMessage - first package only

This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot stat

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

The "source" field is a code for the sender of the message:

Primary client ONLY

SafetyModeMessage (Primary client only)


int messageSize

Page 146
5.0
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType
unsigned char reportDataType
uint32_t reportData

The "safetyModeType" field can contain the following values:

RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel
unsigned char robotMessageDataType
uint32 robotMessageData
charArray robotCommTextMessage

The "reportLevel" field can contain the following values:

KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

LabelMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp

Page 147
5.0
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL = 1
int robotMessageId
charArray labelTextMessage

PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType
char array requestTextMessage

The "requestedType" field can contain the following values:

TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20

Page 148
5.0
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (described be

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
(*) charArray variableNames

(*) Each new line (terminated with the '\n' character) in the array contains the name of a variable.

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
(*) for each variable:
unsigned char valueType

The relevant values for the "valueType" field are:

(*) The information for each variable is on a new line (terminated with the '\n' character).

Page 149
5.0

Retur til index

JointModes

Page 150
5.0

ToolModes

Page 151
5.0

MessageSources

Page 152
5.0

SafetyModeTypes

ReportLevels

Page 153
5.0

RequestedTypes

Page 154
5.0

ValueTypes

Page 155
5.1

5.1
Primary and secondary client

Robot mode data


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
unsigned char controlMode
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
int (Universal Robots internal)

Joint data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
double V_actual
float T_motor
double T_micro
uint8_t jointMode
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4

Page 156
5.1
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Masterboard data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput

Page 157
5.1
Tool data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
double toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Kinematics info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end

Page 158
5.1
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
unused double Fx
unused double Fy
unused double Fz
unused double Frx
unused double Fry
unused double Frz
double robotDexterity

Additional info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
bool freedriveButtonPressed
bool freedriveButtonEnabled
bool IOEnabledFreedrive

Calibration data (Internally used only)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
unused double Fx
unused double Fy

Page 159
5.1
unused double Fz
unused double Frx
unused double Fry
unused double Frz

This package is used internally by Universal Robots software only and should be skipped.

Tool Communication Info


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_COMM_INFO = 11
bool toolCommunicationIsEnabled
int32_t baudRate
int32_t parity
int32_t stopBits
float RxIdleChars
float TxIdleChars

VesionMessage - first package only

This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot stat

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

The "source" field is a code for the sender of the message:

Primary client ONLY


SafetyModeMessage (Primary client only)
int messageSize

Page 160
5.1
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType
unsigned char reportDataType
uint32_t reportData

The "safetyModeType" field can contain the following values:

RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel
unsigned char robotMessageDataType
uint32 robotMessageData
charArray robotCommTextMessage

The "reportLevel" field can contain the following values:

KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

LabelMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp

Page 161
5.1
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL = 1
int robotMessageId
charArray labelTextMessage

PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType
char array requestTextMessage

The "requestedType" field can contain the following values:

TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20

Page 162
5.1
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (described be

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
(*) charArray variableNames

(*) Each new line (terminated with the '\n' character) in the array contains the name of a variable.

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
(*) for each variable:
unsigned char valueType
end

The relevant values for the "valueType" field are:

(*) The information for each variable is on a new line (terminated with the '\n' character).

Page 163
5.1

Retur til index

JointModes

Page 164
5.1

ToolModes

Page 165
5.1

MessageSources

Page 166
5.1

SafetyModeTypes

ReportLevels

Page 167
5.1

RequestedTypes

Page 168
5.1

ValueTypes

Page 169
5.2 -> 5.3

5.2 -> 5.3 Retur til index


Primary and secondary client

Robot mode data


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode
unsigned char controlMode
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
int (Universal Robots internal)

Joint data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
double V_actual
float T_motor
double T_micro
uint8_t jointMode
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Cartesian info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4

Page 170
5.2 -> 5.3
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Masterboard data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput

Page 171
5.2 -> 5.3
Tool data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
double toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Kinematics info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end

Page 172
5.2 -> 5.3
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
unused double Fx
unused double Fy
unused double Fz
unused double Frx
unused double Fry
unused double Frz
double robotDexterity

Additional info
int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
bool freedriveButtonPressed
bool freedriveButtonEnabled
bool IOEnabledFreedrive

Calibration data (Internally used only)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
unused double Fx
unused double Fy

Page 173
5.2 -> 5.3
unused double Fz
unused double Frx
unused double Fry
unused double Frz

This package is used internally by Universal Robots software only and should be skipped.

Tool Communication Info


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_COMM_INFO = 11
bool toolCommunicationIsEnabled
int32_t baudRate
int32_t parity
int32_t stopBits
float RxIdleChars
float TxIdleChars

Tool Mode Info


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_MODE_INFO = 12
uint8_t output mode
uint8_t digtal output mode output 0
uint8_t digtal output mode output 1

VesionMessage - first package only

This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot stat

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

Page 174
5.2 -> 5.3

Primary client ONLY

SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType
uint32_t reportDataType
uint32_t reportData

RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode

Page 175
5.2 -> 5.3
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

LabelMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL = 1
int robotMessageId
charArray labelTextMessage

PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType
char array requestTextMessage

TextMessage (Primary client only)

Page 176
5.2 -> 5.3
int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (described be

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
(*) charArray variableNames

(*) Each new line (terminated with the '\n' character) in the array contains the name of a variable.

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp

Page 177
5.2 -> 5.3
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
(*) for each variable:
unsigned char valueType
end

(*) The information for each variable is on a new line (terminated with the '\n' character).

Page 178
5.2 -> 5.3

JointModes

Page 179
5.2 -> 5.3

ToolModes

ation is changed.

Page 180
5.2 -> 5.3

ation is changed.

Page 181
5.2 -> 5.3

ackage it is not part of the robot state message.

MessageSources

Page 182
5.2 -> 5.3

MessageSources

SafetyModeTypes

MessageSources

ReportLevels

MessageSources

Page 183
5.2 -> 5.3

MessageSources

MessageSources

MessageSources

RequestedTypes

Page 184
5.2 -> 5.3

MessageSources

MessageSources

riablesUpdateMessage' (described below).

Page 185
5.2 -> 5.3

ValueTypes

Page 186
5.4 Return to index
Messages sent to primary and secondary clients

Robot State Message


int messageSize Length of overall package: total length of package includin
unsigned char messageType = MESSAGE_TYPE_ROBOT_STATE = 16
Sub packages Each sub package that follows contains size, type, and pac

Robot mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode RobotModes
unsigned char controlMode ControlModes
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
int (Universal Robots internal)

Joint data (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
double V_actual
float T_motor
double T_micro
uint8_t jointMode JointModes
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Tool data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
double toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode ToolModes

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Masterboard data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode See SafetyModes sheet
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput
unsigned char (Used by Universal Robots software only)

Cartesian info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Kinematics info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz
double robotDexterity

Additional info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
bool freedriveButtonPressed
bool freedriveButtonEnabled
bool IOEnabledFreedrive

Calibration data (Sub Package of Robot State Message, Internally used only)
int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz

This package is used internally by Universal Robots software only and should be skipped.
Safety Data (Sub Package of Robot State Message)
int packageSize
unsigned char packageType = 10
safety data
It is used internally by Universal Robots software only and should be skipped.

Tool Communication Info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_COMM_INFO = 11
bool toolCommunicationIsEnabled
int32_t baudRate
int32_t parity
int32_t stopBits
float RxIdleChars
float TxIdleChars

Tool Mode Info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_MODE_INFO = 12
uint8_t output mode
uint8_t digtal output mode output 0
uint8_t digtal output mode output 1

Other Sub Package types, are used by UR software only, and are not guaranteed to be backwards compatible

VesionMessage (sent only once)


This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

Messages sent to primary clients ONLY

Robot Message - SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType SafetyModeTypes
uint32_t reportDataType
uint32_t reportData

Robot Message - RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel ReportLevels
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

Robot Message - KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

Robot Message - LabelMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL = 1
int robotMessageId
charArray labelTextMessage

Robot Message - PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

Robot Message - RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType RequestedTypes
char array requestTextMessage

Robot Message - TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

Robot Message - RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (describ
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
charArray variableNames List of names separated by new line character ('\n' charact
GlobalVariablesUpdateMessage (Primary client only)
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
unsigned char variableValues ValueTypes
Each variable value contains type byte, data, and terminating new line character (\n character). Example - two variables
length of package including this field

ontains size, type, and package specific data

gth of subpackage including this field


gth of subpackage including this field

gth of subpackage including this field


gth of subpackage including this field

gth of subpackage including this field

gth of subpackage including this field


gth of subpackage including this field

gth of subpackage including this field


gth of subpackage including this field

rds compatible

e it is not part of the robot state message.


sUpdateMessage' (described below).

line character ('\n' character). Example: var_1\nvar_2\n


). Example - two variables of type BOOL(True), and STRING("aaaa"): 0c 01 0a 03 00 04 61 61 61 61 0a
5.5 Return to index
Messages sent to primary and secondary clients

Robot State Message


int messageSize Length of overall package: total length of package includin
unsigned char messageType = MESSAGE_TYPE_ROBOT_STATE = 16
Sub packages Each sub package that follows contains size, type, and pac

Robot mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode RobotModes
unsigned char controlMode ControlModes
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
unsigned char reserved

Joint data (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro Deprecated - ignore
uint8_t jointMode JointModes
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Tool data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode ToolModes

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Masterboard data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode See SafetyModes sheet
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput
unsigned char (Used by Universal Robots software only)

Cartesian info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Kinematics info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz
double robotDexterity

Additional info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
unsigned char tpButtonState
bool freedriveButtonEnabled
bool IOEnabledFreedrive
unsigned char reserved

Calibration data (Sub Package of Robot State Message, Internally used only)
int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz

This package is used internally by Universal Robots software only and should be skipped.
Safety Data (Sub Package of Robot State Message)
int packageSize
unsigned char packageType = 10
safety data
It is used internally by Universal Robots software only and should be skipped.

Tool Communication Info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_COMM_INFO = 11
bool toolCommunicationIsEnabled
int32_t baudRate
int32_t parity
int32_t stopBits
float RxIdleChars
float TxIdleChars

Tool Mode Info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_MODE_INFO = 12
uint8_t output mode
uint8_t digtal output mode output 0
uint8_t digtal output mode output 1

Other Sub Package types, are used by UR software only, and are not guaranteed to be backwards compatible

VesionMessage (sent only once)


This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

Messages sent to primary clients ONLY

Robot Message - SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType SafetyModeTypes
uint32_t reportDataType
uint32_t reportData

Robot Message - RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel ReportLevels
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

Robot Message - KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

Robot Message - LabelMessage (Primary client only) Deprecated


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL = 1
int robotMessageId
charArray labelTextMessage

Robot Message - ProgramThreadsMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL_THREADS = 14
following structure repeats for each running program thread
int labelId (line number)
int labelNameLength
charArray labelName
int threadNameLength
charArray threadName

Robot Message - PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

Robot Message - RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType RequestedTypes
char array requestTextMessage

Robot Message - TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

Robot Message - RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (describ
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
charArray variableNames List of names separated by new line character ('\n' charact

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
unsigned char variableValues ValueTypes
Each variable value contains type byte, data, and terminating new line character (\n character). Example - two variables
ength of package including this field

ntains size, type, and package specific data

th of subpackage including this field


th of subpackage including this field

th of subpackage including this field


th of subpackage including this field

th of subpackage including this field

th of subpackage including this field


th of subpackage including this field

th of subpackage including this field


th of subpackage including this field

ds compatible

t is not part of the robot state message.


UpdateMessage' (described below).
ne character ('\n' character). Example: var_1\nvar_2\n

Example - two variables of type BOOL(True), and STRING("aaaa"): 0c 01 0a 03 00 04 61 61 61 61 0a


5.6 Return to index
Messages sent to primary and secondary clients

Robot State Message


int messageSize Length of overall package: total length of package includin
unsigned char messageType = MESSAGE_TYPE_ROBOT_STATE = 16
Sub packages Each sub package that follows contains size, type, and pac

Robot mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode RobotModes
unsigned char controlMode ControlModes
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
unsigned char reserved

Joint data (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro Deprecated - ignore
uint8_t jointMode JointModes
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Tool data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode ToolModes

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Masterboard data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode See SafetyModes sheet
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput
unsigned char (Used by Universal Robots software only)

Cartesian info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Kinematics info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz
double robotDexterity

Additional info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
unsigned char tpButtonState
bool freedriveButtonEnabled
bool IOEnabledFreedrive
unsigned char reserved

Calibration data (Sub Package of Robot State Message, Internally used only)
int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz

This package is used internally by Universal Robots software only and should be skipped.
Safety Data (Sub Package of Robot State Message)
int packageSize
unsigned char packageType = 10
safety data
It is used internally by Universal Robots software only and should be skipped.

Tool Communication Info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_COMM_INFO = 11
bool toolCommunicationIsEnabled
int32_t baudRate
int32_t parity
int32_t stopBits
float RxIdleChars
float TxIdleChars

Tool Mode Info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_MODE_INFO = 12
uint8_t output mode
uint8_t digtal output mode output 0
uint8_t digtal output mode output 1

Other Sub Package types, are used by UR software only, and are not guaranteed to be backwards compatible

VesionMessage (sent only once)


This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

Messages sent to primary clients ONLY

Robot Message - SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType SafetyModeTypes
uint32_t reportDataType
uint32_t reportData

Robot Message - RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel ReportLevels
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

Robot Message - KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

Robot Message - ProgramThreadsMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL_THREADS = 14
following structure repeats for each running program thread
int labelId (line number)
int labelNameLength
charArray labelName
int threadNameLength
charArray threadName

Robot Message - PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

Robot Message - RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType RequestedTypes
char array requestTextMessage

Robot Message - TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

Robot Message - RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (describ
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
charArray variableNames List of names separated by new line character ('\n' charact

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
unsigned char variableValues ValueTypes
Each variable value contains type byte, data, and terminating new line character (\n character). Example - two variables
ength of package including this field

ntains size, type, and package specific data

th of subpackage including this field


th of subpackage including this field

th of subpackage including this field


th of subpackage including this field

th of subpackage including this field

th of subpackage including this field


th of subpackage including this field

th of subpackage including this field


th of subpackage including this field

ds compatible

t is not part of the robot state message.


UpdateMessage' (described below).
ne character ('\n' character). Example: var_1\nvar_2\n

Example - two variables of type BOOL(True), and STRING("aaaa"): 0c 01 0a 03 00 04 61 61 61 61 0a


5.8 Return to index
Messages sent to primary and secondary clients

Robot State Message


int messageSize Length of overall package: total length of package includin
unsigned char messageType = MESSAGE_TYPE_ROBOT_STATE = 16
Sub packages Each sub package that follows contains size, type, and pac

Robot mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode RobotModes
unsigned char controlMode ControlModes
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
unsigned char reserved

Joint data (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro Deprecated - ignore
uint8_t jointMode JointModes
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Tool data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode ToolModes

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Masterboard data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode See SafetyModes sheet
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput
unsigned char (Used by Universal Robots software only)

Cartesian info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Kinematics info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz
double robotDexterity

Additional info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
unsigned char tpButtonState
bool freedriveButtonEnabled
bool IOEnabledFreedrive
unsigned char reserved

Calibration data (Sub Package of Robot State Message, Internally used only)
int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz

This package is used internally by Universal Robots software only and should be skipped.
Safety Data (Sub Package of Robot State Message)
int packageSize
unsigned char packageType = 10
safety data
It is used internally by Universal Robots software only and should be skipped.

Tool Communication Info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_COMM_INFO = 11
bool toolCommunicationIsEnabled
int32_t baudRate
int32_t parity
int32_t stopBits
float RxIdleChars
float TxIdleChars

Tool Mode Info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_MODE_INFO = 12
uint8_t output mode
uint8_t digtal output mode output 0
uint8_t digtal output mode output 1

Singularity Info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_SINGULARITY_INFO = 13
double singularity scale

Other Sub Package types, are used by UR software only, and are not guaranteed to be backwards compatible

VesionMessage (sent only once)


This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate

Messages sent to primary clients ONLY


Robot Message - SafetyModeMessage (Primary client only)
int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType SafetyModeTypes
uint32_t reportDataType
uint32_t reportData

Robot Message - RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel ReportLevels
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

Robot Message - KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

Robot Message - ProgramThreadsMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL_THREADS = 14
following structure repeats for each running program thread
int labelId (line number)
int labelNameLength
charArray labelName
int threadNameLength
charArray threadName
Robot Message - PopupMessage (Primary client only)
int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

Robot Message - RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType RequestedTypes
char array requestTextMessage

Robot Message - TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

Robot Message - RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (describ
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
charArray variableNames List of names separated by new line character ('\n' charact

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
unsigned char variableValues ValueTypes
Each variable value contains type byte, data, and terminating new line character (\n character). Example - two variables
length of package including this field

ontains size, type, and package specific data

gth of subpackage including this field


gth of subpackage including this field

gth of subpackage including this field


gth of subpackage including this field

gth of subpackage including this field

gth of subpackage including this field


gth of subpackage including this field

gth of subpackage including this field


gth of subpackage including this field

rds compatible

e it is not part of the robot state message.


sUpdateMessage' (described below).
line character ('\n' character). Example: var_1\nvar_2\n

). Example - two variables of type BOOL(True), and STRING("aaaa"): 0c 01 0a 03 00 04 61 61 61 61 0a


5.9 Return to index
Messages sent to primary and secondary clients

Robot State Message


int messageSize Length of overall package: total length of package includin
unsigned char messageType = MESSAGE_TYPE_ROBOT_STATE = 16
Sub packages Each sub package that follows contains size, type, and pac

Robot mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ROBOT_MODE_DATA = 0
uint64_t timestamp
bool isRealRobotConnected
bool isRealRobotEnabled
bool isRobotPowerOn
bool isEmergencyStopped
bool isProtectiveStopped
bool isProgramRunning
bool isProgramPaused
unsigned char robotMode RobotModes
unsigned char controlMode ControlModes
double targetSpeedFraction
double speedScaling
double targetSpeedFractionLimit
unsigned char reserved

Joint data (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_JOINT_DATA = 1
for each joint:
double q_actual
double q_target
double qd_actual
float I_actual
float V_actual
float T_motor
float T_micro Deprecated - ignore
uint8_t jointMode JointModes
end

The "jointMode" field is a code for the joint status (shown on the initialisation screen):

Tool data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_DATA = 2
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
float toolVoltage48V
unsigned char toolOutputVoltage
float toolCurrent
float toolTemperature
uint8_t toolMode ToolModes

The "toolMode" field is a code for the joint status (shown on the initialisation screen):

Masterboard data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_MASTERBOARD_DATA = 3
int digitalInputBits
int digitalOutputBits
unsigned char analogInputRange0
unsigned char analogInputRange1
double analogInput0
double analogInput1
char analogOutputDomain0
char analogOutputDomain1
double analogOutput0
double analogOutput1
float masterBoardTemperature
float robotVoltage48V
float robotCurrent
float masterIOCurrent
unsigned char safetyMode See SafetyModes sheet
uint8_t InReducedMode
char euromap67InterfaceInstalled
if euromap67 interface is installed, also the following:
uint32_t euromapInputBits
uint32_t euromapOutputBits
float euromapVoltage24V
float euromapCurrent
end
uint32_t (Used by Universal Robots software only)
uint8_t operationalModeSelectorInput
uint8_t threePositionEnablingDeviceInput
unsigned char (Used by Universal Robots software only)

Cartesian info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CARTESIAN_INFO = 4
double X
double Y
double Z
double Rx
double Ry
double Rz
double TCPOffsetX
double TCPOffsetY
double TCPOffsetZ
double TCPOffsetRx
double TCPOffsetRy
double TCPOffsetRz

Kinematics info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_KINEMATICS_INFO = 5
for each joint:
uint32_t cheksum
for each joint:
double DHtheta
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double Dhalpha
uint32_t calibration_status

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Configuration data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_CONFIGURATION_DATA = 6
for each joint:
double jointMinLimit
double jointMaxLimitt
end
for each joint:
double jointMaxSpeed
double jointMaxAcceleration
end
double vJointDefault
double aJointDefault
double vToolDefault
double aToolDefault
double eqRadius
for each joint:
double DHa
for each joint:
double Dhd
for each joint:
double DHalpha
for each joint:
double DHtheta
int32_t masterboardVersion
int32_t controllerBoxType
int32_t robotType
int32_t robotSubType

This information is sent when leaving initializing mode and/or if the kinematics configuration is changed.

Force mode data (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_FORCE_MODE_DATA = 7
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz
double robotDexterity

Additional info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_ADDITIONAL_INFO = 8
unsigned char tpButtonState
bool freedriveButtonEnabled
bool IOEnabledFreedrive
unsigned char reserved

Calibration data (Sub Package of Robot State Message, Internally used only)
int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_NEEDED_FOR_CALIB_DATA = 9
double Fx
double Fy
double Fz
double Frx
double Fry
double Frz

This package is used internally by Universal Robots software only and should be skipped.
Safety Data (Sub Package of Robot State Message)
int packageSize
unsigned char packageType = 10
safety data
It is used internally by Universal Robots software only and should be skipped.

Tool Communication Info (Sub Package of Robot State Message)


int packageSize Length of Sub Package: total length of subpackage includin
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_COMM_INFO = 11
bool toolCommunicationIsEnabled
int32_t baudRate
int32_t parity
int32_t stopBits
float RxIdleChars
float TxIdleChars

Tool Mode Info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_TOOL_MODE_INFO = 12
uint8_t output mode
uint8_t digtal output mode output 0
uint8_t digtal output mode output 1

Singularity Info (Sub Package of Robot State Message)


int packageSize
unsigned char packageType = ROBOT_STATE_PACKAGE_TYPE_SINGULARITY_INFO = 13
uint8_t singularitySeverity
uint8_t singularityType
It is used internally by Universal Robots software only and should be skipped.

Other Sub Package types, are used by UR software only, and are not guaranteed to be backwards compatible

VesionMessage (sent only once)


This is the first package sent on both the primary and secondary client interfaces. This package it is not part of the robot

int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_VERSION = 3
char projectNameSize
charArray projectName
unsigned char majorVersion
unsigned char minorVersion
int bugfixVersion
int buildNumber
charArray buildDate
Messages sent to primary clients ONLY

Robot Message - SafetyModeMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_SAFETY_MODE = 5
int robotMessageCode
int robotMessageArgument
unsigned char safetyModeType SafetyModeTypes
uint32_t reportDataType
uint32_t reportData

Robot Message - RobotCommMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_ERROR_CODE = 6
int robotMessageCode
int robotMessageArgument
int robotMessageReportLevel ReportLevels
uint32_t robotMessageDataType
uint32_t robotMessageData
charArray robotCommTextMessage

Robot Message - KeyMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_KEY = 7
int robotMessageCode
int robotMessageArgument
uint8_t robotMessageTitleSize
charArray robotMessageTitle
charArray keyTextMessage

Robot Message - ProgramThreadsMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_PROGRAM_LABEL_THREADS = 14
following structure repeats for each running program thread
int labelId (line number)
int labelNameLength
charArray labelName
int threadNameLength
charArray threadName

Robot Message - PopupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_POPUP = 2
unsigned int requestId
unsigned char requestedType
bool warning
bool error
bool blocking
uint8_t popupMessageTitleSize
charArray popupMessageTitle
charArray popupTextMessage

Robot Message - RequestValueMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_REQUEST_VALUE = 9
unsigned int requestId
unsigned char requestedType RequestedTypes
char array requestTextMessage

Robot Message - TextMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_TEXT = 0
charArray textTextMessage

Robot Message - RuntimeExceptionMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_ROBOT_MESSAGE = 20
uint64_t timestamp
char source MessageSources
char robotMessageType = ROBOT_MESSAGE_TYPE_RUNTIME_EXCEPTION = 10
int scriptLineNumber
int scriptColumnNumber
charArray runtimeExceptionTextMessage

VarMessage (Primary client only)


Deprecated: Use the much more efficient 'GlobalVariablesSetupMessage' and 'GlobalVariablesUpdateMessage' (describ
int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_VARIABLE_UPDATE = 2
uint8_t varMessageTitleSize
charArray varMessageTitle
charArray varTextMessage

GlobalVariablesSetupMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_SETUP = 0
uint16_t startIndex
charArray variableNames List of names separated by new line character ('\n' charact

GlobalVariablesUpdateMessage (Primary client only)


int messageSize
unsigned char messageType = MESSAGE_TYPE_PROGRAM_STATE_MESSAGE = 25
uint64_t timestamp
char robotMessageType = PROGRAM_STATE_MESSAGE_TYPE_GLOBAL_VARIABLES_UPDATE = 1
uint16_t startIndex
unsigned char variableValues ValueTypes
Each variable value contains type byte, data, and terminating new line character (\n character). Example - two variables
length of package including this field

ontains size, type, and package specific data

gth of subpackage including this field


gth of subpackage including this field

gth of subpackage including this field


gth of subpackage including this field

gth of subpackage including this field

gth of subpackage including this field


gth of subpackage including this field

gth of subpackage including this field


gth of subpackage including this field

rds compatible

e it is not part of the robot state message.

s
sUpdateMessage' (described below).
line character ('\n' character). Example: var_1\nvar_2\n

). Example - two variables of type BOOL(True), and STRING("aaaa"): 0c 01 0a 03 00 04 61 61 61 61 0a


Control Modes
Mode Description
0 CONTROL_MODE_POSITION
1 CONTROL_MODE_TEACH
2 CONTROL_MODE_FORCE
3 CONTROL_MODE_TORQUE
Robot Modes
Mode Description
-1 ROBOT_MODE_NO_CONTROLLER
0 ROBOT_MODE_DISCONNECTED
1 ROBOT_MODE_CONFIRM_SAFETY
2 ROBOT_MODE_BOOTING
3 ROBOT_MODE_POWER_OFF
4 ROBOT_MODE_POWER_ON
5 ROBOT_MODE_IDLE
6 ROBOT_MODE_BACKDRIVE
7 ROBOT_MODE_RUNNING
8 ROBOT_MODE_UPDATING_FIRMWARE
Retur til index
Value CB3 e-Series
JOINT_MODE_RESET 235 X X
JOINT_MODE_SHUTTING_DOWN 236 X X
JOINT_PART_D_CALIBRATION_MODE (INTERNAL USE ONLY) 237 X
JOINT_MODE_BACKDRIVE 238 X X
JOINT_MODE_POWER_OFF 239 X X
JOINT_MODE_READY_FOR_POWER_OFF (FROM VERSION 5.1) 240 X
JOINT_MODE_NOT_RESPONDING 245 X X
JOINT_MODE_MOTOR_INITIALISATION 246 X X
JOINT_MODE_BOOTING 247 X X
JOINT_PART_D_CALIBRATION_ERROR_MODE (INTERNAL USE ONLY) 248 X
JOINT_MODE_BOOTLOADER 249 X
JOINT_CALIBRATION_MODE (INTERNAL USE ONLY) 250 X
JOINT_MODE_VIOLATION 251 X X
JOINT_MODE_FAULT 252 X X
JOINT_MODE_RUNNING 253 X X
JOINT_MODE_IDLE 255 X X
Retur til index
Value CB3 e-Series
JOINT_MODE_RESET 235 X
JOINT_MODE_SHUTTING_DOWN 236 X

JOINT_MODE_POWER_OFF 239 X
JOINT_MODE_NOT_RESPONDING 245 X

JOINT_MODE_BOOTING 247 X
JOINT_MODE_BOOTLOADER 249 X X
JOINT_MODE_FAULT 252 X
JOINT_MODE_RUNNING 253 X X
JOINT_MODE_IDLE 255 X X
Retur til index
Each message sent has a "source" code for the sender of the message.
Value CB3 e-Series
MESSAGE_SOURCE_UNDEFINED -1 X
MESSAGE_SOURCE_JOINT_0 (BASE) 0 X
MESSAGE_SOURCE_JOINT_1 (SHOULDER) 1 X
MESSAGE_SOURCE_JOINT_2 (ELBOW) 2 X
MESSAGE_SOURCE_JOINT_3 (WRIST_1) 3 X
MESSAGE_SOURCE_JOINT_4 (WRIST_2) 4 X
MESSAGE_SOURCE_JOINT_5 (WRIST_3) 5 X
MESSAGE_SOURCE_TOOL 6 X
MESSAGE_SOURCE_EUROMAP_2 68 X
MESSAGE_SOURCE_EUROMAP_1 67 X
MESSAGE_SOURCE_TEACH_PENDANT_2 66 X
MESSAGE_SOURCE_TEACH_PENDANT_1 65 X

MESSAGE_SOURCE_JOINT_0_FPGA 100 X
MESSAGE_SOURCE_JOINT_0_A 110 X
MESSAGE_SOURCE_JOINT_0_B 120 X
MESSAGE_SOURCE_JOINT_1_FPGA 101 X
MESSAGE_SOURCE_JOINT_0_A 111 X
MESSAGE_SOURCE_JOINT_0_B 121 X
MESSAGE_SOURCE_JOINT_2_FPGA 102 X
MESSAGE_SOURCE_JOINT_2_A 112 X
MESSAGE_SOURCE_JOINT_2_B 122 X
MESSAGE_SOURCE_JOINT_3_FPGA 103 X
MESSAGE_SOURCE_JOINT_3_A 113 X
MESSAGE_SOURCE_JOINT_3_B 123 X
MESSAGE_SOURCE_JOINT_4_FPGA 104 X
MESSAGE_SOURCE_JOINT_4_A 114 X
MESSAGE_SOURCE_JOINT_4_B 124 X
MESSAGE_SOURCE_JOINT_5_FPGA 105 X
MESSAGE_SOURCE_JOINT_5_A 115 X
MESSAGE_SOURCE_JOINT_5_B 125 X
MESSAGE_SOURCE_TOOL_FPGA 106 X
MESSAGE_SOURCE_TOOL_A 116 X
MESSAGE_SOURCE_TOOL_B 126 X
MESSAGE_SOURCE_EUROMAP_FPGA 107 X
MESSAGE_SOURCE_EUROMAP_A 117 X
MESSAGE_SOURCE_EUROMAP_B 127 X
MESSAGE_SOURCE_TEACH_PENDANT_A 108 X
MESSAGE_SOURCE_TEACH_PENDANT_B 118 X
MESSAGE_SOURCE_SCB_FPGA 40 X

MESSAGE_SAFETY_PROCESSOR_UA 20 X X
MESSAGE_SAFETY_PROCESSOR_UB 30 X X
MESSAGE_SOURCE_ROBOTINTERFACE -2 X X
MESSAGE_SOURCE_RTMACHINE -3 X X
MESSAGE_SOURCE_SIMULATED_ROBOT -4 X X
MESSAGE_SOURCE_GUI -5 X X
MESSAGE_SOURCE_CONTROLLER 7 X X
MESSAGE_SOURCE_RTDE 8 X X

The message types are:

MESSAGE_TYPE_DISCONNECT -1 X X
MESSAGE_TYPE_ROBOT_STATE 16 X X
MESSAGE_TYPE_ROBOT_MESSAGE 20 X X
MESSAGE_TYPE_HMC_MESSAGE 22 X X
MESSAGE_TYPE_MODBUS_INFO_MESSAGE 5 X X
MESSAGE_TYPE_SAFETY_SETUP_BROADCAST_MESSAGE 23 X X
MESSAGE_TYPE_SAFETY_COMPLIANCE_TOLERANCES_MESSAGE 24 X X
MESSAGE_TYPE_PROGRAM_STATE_MESSAGE 25 X X
Retur til index
Value CB3 e-Series
SAFETY_MODE_UNDEFINED_SAFETY_MODE 11 X X
SAFETY_MODE_VALIDATE_JOINT_ID 10 X
SAFETY_MODE_FAULT 9 X X
SAFETY_MODE_VIOLATION 8 X X
SAFETY_MODE_ROBOT_EMERGENCY_STOP 7 X X
SAFETY_MODE_SYSTEM_EMERGENCY_STOP 6 X X
SAFETY_MODE_SAFEGUARD_STOP 5 X X
SAFETY_MODE_RECOVERY 4 X X
SAFETY_MODE_PROTECTIVE_STOP 3 X X
SAFETY_MODE_REDUCED 2 X X
SAFETY_MODE_NORMAL 1 X X
Comment

(EA + EB + SBUS->Euromap67) Physical e-stop interface input activated


(EA + EB + SBUS->Screen) Physical e-stop interface input activated
(SI0 + SI1 + SBUS) Physical s-stop interface input
SafetyStatusTypes
Retur til index
Value CB3 e-Series
SAFETY_STATUS_SYSTEM_THREE_POSITION_ENABLING_STOP 13 X
SAFETY_STATUS_AUTOMATIC_MODE_SAFEGUARD_STOP 12 X
SAFETY_STATUS_UNDEFINED_SAFETY_MODE 11 X X
SAFETY_STATUS_VALIDATE_JOINT_ID 10 X
SAFETY_STATUS_FAULT 9 X X
SAFETY_STATUS_VIOLATION 8 X X
SAFETY_STATUS_ROBOT_EMERGENCY_STOP 7 X X
SAFETY_STATUS_SYSTEM_EMERGENCY_STOP 6 X X
SAFETY_STATUS_SAFEGUARD_STOP 5 X X
SAFETY_STATUS_RECOVERY 4 X X
SAFETY_STATUS_PROTECTIVE_STOP 3 X X
SAFETY_STATUS_REDUCED 2 X X
SAFETY_STATUS_NORMAL 1 X X

Page 270
SafetyStatusTypes

Comment

(EA + EB + SBUS->Euromap67) Physical e-stop interface input activated


(EA + EB + SBUS->Screen) Physical e-stop interface input activated
(SI0 + SI1 + SBUS) Physical s-stop interface input

Page 271
Retur til index
Value CB3 e-Series

REPORT_LEVEL_DEBUG (INTERNAL USE ONLY) 0 X


REPORT_LEVEL_INFO 1 X X
REPORT_LEVEL_WARNING 2 X X
REPORT_LEVEL_VIOLATION 3 X X
REPORT_LEVEL_FAULT 4 X X
REPORT_LEVEL_DEVL_DEBUG (INTERNAL USE ONLY) 128 X

REPORT_LEVEL_DEVL_INFO 129 X
REPORT_LEVEL_DEVL_WARNING 130 X
REPORT_LEVEL_DEVL_VIOLATION 131 X
REPORT_LEVEL_DEVL_FAULT 132 X
Retur til index
Value CB3
REQUEST_VALUE_TYPE_BOOLEAN 0 X
REQUEST_VALUE_TYPE_INTEGER 1 X
REQUEST_VALUE_TYPE_FLOAT 2 X
REQUEST_VALUE_TYPE_STRING 3 X
REQUEST_VALUE_TYPE_POSE 4 X
REQUEST_VALUE_TYPE_JOINTVECTOR 5 X
REQUEST_VALUE_TYPE_WAYPOINT (UNUSED) 6 X
REQUEST_VALUE_TYPE_EXPRESSION (UNUSED) 7 X
REQUEST_VALUE_TYPE_NONE (*) 8 X

(*) If the 'requestedType' is set to the value 8, then it is a 'PopupMessage' type.


e-Series
X
X
X
X
X
X
X
X
X
Retur til index

Up to software 3.2 From software 3.3/


'NONE_VAL' NONE_VAL = 0; NONE_VAL = 0,
// No content -> has not been initialized yet STRING_VAL = 3; CONST_STRING_VAL = 3,
LIST_VAL = 4; VAR_STRING_VAL = 4,
'CONST_VAR_STRING_VAL' POSE_VAL = 9; LIST_VAL = 5,
int16_t valueLength BOOL_VAL = 11; POSE_VAL = 10,
charArray value NUM_VAL = 12; BOOL_VAL = 12,
INT_VAL = 13; NUM_VAL = 13,
'VAR_STRING_VAL' FLOAT_VAL = 14; INT_VAL = 14,
int16_t valueLength FLOAT _VAL= 15,
charArray value
Data sizes
'LIST_VAL' int16_t
int16_ listLength int32_t
For each item: float
uint8_t valueType double
DataValueType bool
end uint8_t

'POSE_VAL'
float X
float Y
float Z
float Rx
float Ry
float Rz

'BOOL_VAL'
bool value

'NUM_VAL'
float value

'INT_VAL'
int32_t value

'FLOAT_VAL'
float value
From software 3.3/5.0
NONE_VAL = 0,
CONST_STRING_VAL = 3,
VAR_STRING_VAL = 4,
LIST_VAL = 5,
POSE_VAL = 10,
BOOL_VAL = 12,
NUM_VAL = 13,
INT_VAL = 14,
FLOAT _VAL= 15,
Data sizes
2 bytes
4 bytes
4 bytes
8 bytes
1 byte
1 byte
Return to Index
Meaning Type Number ofSize in bytGnuplot coNotes
Message Size integer 1 4 Total message length in bytes
Time double 1 8 1 Time elapsed since the controller was started
q target double 6 48 2 - 7 Target joint positions
qd target double 6 48 8 - 13 Target joint velocities
qdd target double 6 48 14 - 19 Target joint accelerations
I target double 6 48 20 - 25 Target joint currents
M target double 6 48 26 - 31 Target joint moments (torques)
q actual double 6 48 32 - 37 Actual joint positions
qd actual double 6 48 38 - 43 Actual joint velocities
I actual double 6 48 44 - 49 Actual joint currents
Tool Accelerometer values double 3 24 50 - 53 Tool x,y and z accelerometer values (software ve
Unused double 15 120 54 - 67 Unused
TCP force double 6 48 68 - 73 Generalised forces in the TCP
Tool vector double 6 48 74 - 79 Cartesian coordinates of the tool: (x,y,z,rx,ry,rz),
TCP speed double 6 48 80 - 85 Speed of the tool given in cartesian coordinates
Digital input bits double 1 8 86 Current state of the digital inputs. NOTE: these ar
Motor temperatures double 6 48 87 - 92 Temperature of each joint in degrees celcius
Controller Timer double 1 8 93 Controller realtime thread execution time
Test value double 1 8 94 A value used by Universal Robots software only
Robot Mode double 1 8 95 Robot control mode (see PolyScopeProgramServ
Joint Modes double 6 48 96-101 Joint control modes (see PolyScopeProgramServe
TOTAL 96 764 96 values in a 764 byte package (In software vers

If it is experienced that less than 756 bytes are received, the protocol for the actual received bytes also follows the structure li
h in bytes
the controller was started
ns
es
ations
s
ts (torques)
ns
es
s
erometer values (software version 1.7)

n the TCP
es of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation
ven in cartesian coordinates
digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 set high
h joint in degrees celcius
thread execution time
versal Robots software only
e (see PolyScopeProgramServer on the"How to"page
(see PolyScopeProgramServer on the "How to" page) (only from software version 1.8 and on)
yte package (In software version there will be 101 values and 812 bytes)

es also follows the structure listed above, only not containing the entries at leading up the 756th byte.
Return to Index
Meaning Type Number of values Size in bytes Gnuplot col.
Message Size integer 1 4
Time double 1 8 1
q target double 6 48 2-7
qd target double 6 48 8 - 13
qdd target double 6 48 14 - 19
I target double 6 48 20 - 25
M target double 6 48 26 - 31
q actual double 6 48 32 - 37
qd actual double 6 48 38 - 43
I actual double 6 48 44 - 49
I control double 6 48 50 - 55
Tool vector actual double 6 48 56 - 61
TCP speed actual double 6 48 62 - 67
TCP force double 6 48 68 - 73
Tool vector target double 6 48 74 - 79
TCP speed target double 6 48 80 - 85
Digital input bits double 1 8 86
Motor temperatures double 6 48 87 - 92
Controller Timer double 1 8 93
Test value double 1 8 94
Robot Mode double 1 8 95
Joint Modes double 6 48 96-101
Safety Mode double 1 8 102
double 6 48 103 - 108
Tool Accelerometer values double 3 24 109 - 111
double 6 48 112 - 117
Speed scaling double 1 8 118
Linear momentum norm double 1 8 119
double 1 8 120
double 1 8 121
V main double 1 8 122
V robot double 1 8 123
I robot double 1 8 124
V actual double 6 48 125 - 130
TOTAL 131 1044

If it is experienced that less than 1044 bytes are received, the protocol for the actual received bytes also follows the structure
Notes
Total message length in bytes
Time elapsed since the controller was started
Target joint positions
Target joint velocities
Target joint accelerations
Target joint currents
Target joint moments (torques)
Actual joint positions
Actual joint velocities
Actual joint currents
Joint control currents
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Actual speed of the tool given in Cartesian coordinates
Generalised forces in the TCP
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Target speed of the tool given in Cartesian coordinates
Current state of the digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 set
Temperature of each joint in degrees celsius
Controller realtime thread execution time
A value used by Universal Robots software only
Robot mode RobotModes
Joint control modes ControlModes
Safety mode SafetyModeTypes!A1
Used by Universal Robots software only
Tool x,y and z accelerometer values (software version 1.7)
Used by Universal Robots software only
Speed scaling of the trajectory limiter
Norm of Cartesian linear momentum
Used by Universal Robots software only
Used by Universal Robots software only
Masterboard: Main voltage
Masterboard: Robot voltage (48V)
Masterboard: Robot current
Actual joint voltages
131 values in a 1044 byte package

tes also follows the structure listed above, only not containing the entries at leading up the 1044th byte.
r representation of the tool orientation

r representation of the tool orientation

orresponds to bit 0 and bit 2 set high


Return to Index
Meaning Type Number of values Size in bytes Gnuplot col.
Message Size integer 1 4
Time double 1 8 1
q target double 6 48 2-7
qd target double 6 48 8 - 13
qdd target double 6 48 14 - 19
I target double 6 48 20 - 25
M target double 6 48 26 - 31
q actual double 6 48 32 - 37
qd actual double 6 48 38 - 43
I actual double 6 48 44 - 49
I control double 6 48 50 - 55
Tool vector actual double 6 48 56 - 61
TCP speed actual double 6 48 62 - 67
TCP force double 6 48 68 - 73
Tool vector target double 6 48 74 - 79
TCP speed target double 6 48 80 - 85
Digital input bits double 1 8 86
Motor temperatures double 6 48 87 - 92
Controller Timer double 1 8 93
Test value double 1 8 94
Robot Mode double 1 8 95
Joint Modes double 6 48 96-101
Safety Mode double 1 8 102
double 6 48 103 - 108
Tool Accelerometer values double 3 24 109 - 111
double 6 48 112 - 117
Speed scaling double 1 8 118
Linear momentum norm double 1 8 119
double 1 8 120
double 1 8 121
V main double 1 8 122
V robot double 1 8 123
I robot double 1 8 124
V actual double 6 48 125 - 130
Digital outputs double 1 8 131
Program state double 1 8 132
TOTAL 133 1060

If it is experienced that less than 1060 bytes are received, the protocol for the actual received bytes also follows the structure
Notes
Total message length in bytes
Time elapsed since the controller was started
Target joint positions
Target joint velocities
Target joint accelerations
Target joint currents
Target joint moments (torques)
Actual joint positions
Actual joint velocities
Actual joint currents
Joint control currents
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Actual speed of the tool given in Cartesian coordinates
Generalised forces in the TCP
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Target speed of the tool given in Cartesian coordinates
Current state of the digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 set
Temperature of each joint in degrees celsius
Controller realtime thread execution time
A value used by Universal Robots software only
Robot mode RobotModes
Joint control modes ControlModes
Safety mode SafetyModeTypes!A1
Used by Universal Robots software only
Tool x,y and z accelerometer values (software version 1.7)
Used by Universal Robots software only
Speed scaling of the trajectory limiter
Norm of Cartesian linear momentum
Used by Universal Robots software only
Used by Universal Robots software only
Masterboard: Main voltage
Masterboard: Robot voltage (48V)
Masterboard: Robot current
Actual joint voltages
Digital outputs
Program state
133 values in a 1060 byte package

bytes also follows the structure listed above, only not containing the entries at leading up the 1060th byte.
r representation of the tool orientation

r representation of the tool orientation

orresponds to bit 0 and bit 2 set high


Return to Index (The RealTime interface has been deprecated since version 3.5. It is recommended to use the RTDE In
Meaning Type Number of values Size in bytes Gnuplot col. Notes
Message integer 1 4 Total message length in bytes
Size
Time double 1 8 1 Time elapsed since the controller w
q target double 6 48 2-7 Target joint positions
qd target double 6 48 8 - 13 Target joint velocities
qdd target double 6 48 14 - 19 Target joint accelerations
I target double 6 48 20 - 25 Target joint currents
M target double 6 48 26 - 31 Target joint moments (torques)
q actual double 6 48 32 - 37 Actual joint positions
qd actual double 6 48 38 - 43 Actual joint velocities
I actual double 6 48 44 - 49 Actual joint currents
I control double 6 48 50 - 55 Joint control currents
Tool double 6 48 56 - 61 Actual Cartesian coordinates of the
vector
TCP speed double 6 48 62 - 67 Actual speed of the tool given in Ca
actual
actual
TCP force double 6 48 68 - 73 Generalised forces in the TCP
Tool double 6 48 74 - 79 Target Cartesian coordinates of the
vector
TCP speed double 6 48 80 - 85 Target speed of the tool given in Ca
target
target
Digital double 1 8 86 Current state of the digital inputs. N
input bits
Motor double 6 48 87 - 92 Temperature of each joint in degre
temperatu
Controller double 1 8 93 Controller realtime thread executio
res
Timer
Test value double 1 8 94 A value used by Universal Robots so

Robot double 1 8 95 Robot mode


Mode
Joint double 6 48 96-101 Joint control modes
Modes
Safety double 1 8 102 Safety mode
Mode
double 6 48 103 - 108 Used by Universal Robots software
Tool double 3 24 109 - 111 Tool x,y and z accelerometer values
Accelerom double 6 48 112 - 117 Used by Universal Robots software
eter
Speed
values double 1 8 118 Speed scaling of the trajectory limit
scaling
Linear double 1 8 119 Norm of Cartesian linear momentu
momentu
m norm
double 1 8 120 Used by Universal Robots software
double 1 8 121 Used by Universal Robots software
V main double 1 8 122 Masterboard: Main voltage
V robot double 1 8 123 Masterboard: Robot voltage (48V)
I robot double 1 8 124 Masterboard: Robot current
V actual double 6 48 125 - 130 Actual joint voltages
Digital double 1 8 131 Digital outputs
outputs
Program double 1 8 132 Program state
state
Elbow double 3 24 133 - 135 Elbow position
position
Elbow double 3 24 136 -138 Elbow velocity
velocity
TOTAL 139 1108 139 values in a 1108 byte package

If it is experienced that less than 1108 bytes are received, the protocol for the actual received bytes also follows the structure
nded to use the RTDE Interface, instead)

age length in bytes

ed since the controller was started


t positions
t velocities
t accelerations
t currents
t moments (torques)
t positions
t velocities
t currents
ol currents
esian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation
ed of the tool given in Cartesian coordinates
d forces in the TCP
tesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation
ed of the tool given in Cartesian coordinates
ate of the digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 set high

re of each joint in degrees celsius


realtime thread execution time

ed by Universal Robots software only

RobotModes
ControlModes

SafetyModeTypes!A1
niversal Robots software only
d z accelerometer values (software version 1.7)
niversal Robots software only
ng of the trajectory limiter

artesian linear momentum

niversal Robots software only


niversal Robots software only
rd: Main voltage
rd: Robot voltage (48V)
rd: Robot current
t voltages
puts

tion

in a 1108 byte package

lso follows the structure listed above, only not containing the entries at leading up the 1108th byte.
entation

entation

t high
Return to Index (The RealTime interface has been deprecated since version 3.5. It is recommended to use the
Meaning Type Number of values Size in bytes Gnuplot col.
Message Size integer 1 4
Time double 1 8 1
q target double 6 48 2-7
qd target double 6 48 8 - 13
qdd target double 6 48 14 - 19
I target double 6 48 20 - 25
M target double 6 48 26 - 31
q actual double 6 48 32 - 37
qd actual double 6 48 38 - 43
I actual double 6 48 44 - 49
I control double 6 48 50 - 55
Tool vector actual double 6 48 56 - 61
TCP speed actual double 6 48 62 - 67
TCP force double 6 48 68 - 73
Tool vector target double 6 48 74 - 79
TCP speed target double 6 48 80 - 85
Digital input bits double 1 8 86
Motor temperatures double 6 48 87 - 92
Controller Timer double 1 8 93
Test value double 1 8 94
Robot Mode double 1 8 95
Joint Modes double 6 48 96-101
Safety Mode double 1 8 102
double 6 48 103 - 108
Tool Accelerometer values double 3 24 109 - 111
double 6 48 112 - 117
Speed scaling double 1 8 118
Linear momentum norm double 1 8 119
double 1 8 120
double 1 8 121
V main double 1 8 122
V robot double 1 8 123
I robot double 1 8 124
V actual double 6 48 125 - 130
Digital outputs double 1 8 131
Program state double 1 8 132
Elbow position double 3 24 133 - 135
Elbow velocity double 3 24 136 -138
TOTAL 139 1108

If it is experienced that less than 1108 bytes are received, the protocol for the actual received bytes also follows the structure
s recommended to use the RTDE Interface, instead)
Notes
Total message length in bytes
Time elapsed since the controller was started
Target joint positions
Target joint velocities
Target joint accelerations
Target joint currents
Target joint moments (torques)
Actual joint positions
Actual joint velocities
Actual joint currents
Joint control currents
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Actual speed of the tool given in Cartesian coordinates
Generalised forces in the TCP
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Target speed of the tool given in Cartesian coordinates
Current state of the digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 set
Temperature of each joint in degrees celsius
Controller realtime thread execution time
A value used by Universal Robots software only
Robot mode RobotModes
Joint control modes ControlModes
Safety mode SafetyModeTypes!A1
Used by Universal Robots software only
Tool x,y and z accelerometer values (software version 1.7)
Used by Universal Robots software only
Speed scaling of the trajectory limiter
Norm of Cartesian linear momentum
Used by Universal Robots software only
Used by Universal Robots software only
Masterboard: Main voltage
Masterboard: Robot voltage (48V)
Masterboard: Robot current
Actual joint voltages
Digital outputs
Program state
Elbow position
Elbow velocity
139 values in a 1108 byte package

es also follows the structure listed above, only not containing the entries at leading up the 1108th byte.
ntation of the tool orientation

entation of the tool orientation

nds to bit 0 and bit 2 set high


Return to Index (The RealTime interface has been deprecated since version 3.5. It is recommended to use the
Meaning Type Number of values Size in bytes Gnuplot col.
Message Size integer 1 4
Time double 1 8 1
q target double 6 48 2-7
qd target double 6 48 8 - 13
qdd target double 6 48 14 - 19
I target double 6 48 20 - 25
M target double 6 48 26 - 31
q actual double 6 48 32 - 37
qd actual double 6 48 38 - 43
I actual double 6 48 44 - 49
I control double 6 48 50 - 55
Tool vector actual double 6 48 56 - 61
TCP speed actual double 6 48 62 - 67
TCP force double 6 48 68 - 73
Tool vector target double 6 48 74 - 79
TCP speed target double 6 48 80 - 85
Digital input bits double 1 8 86
Motor temperatures double 6 48 87 - 92
Controller Timer double 1 8 93
Test value double 1 8 94
Robot Mode double 1 8 95
Joint Modes double 6 48 96-101
Safety Mode double 1 8 102
double 6 48 103 - 108
Tool Accelerometer values double 3 24 109 - 111
double 6 48 112 - 117
Speed scaling double 1 8 118
Linear momentum norm double 1 8 119
double 1 8 120
double 1 8 121
V main double 1 8 122
V robot double 1 8 123
I robot double 1 8 124
V actual double 6 48 125 - 130
Digital outputs double 1 8 131
Program state double 1 8 132
Elbow position double 3 24 133 - 135
Elbow velocity double 3 24 136 -138
TOTAL 139 1108

If it is experienced that less than 1108 bytes are received, the protocol for the actual received bytes also follows the structure
s recommended to use the RTDE Interface, instead)
Notes
Total message length in bytes
Time elapsed since the controller was started
Target joint positions
Target joint velocities
Target joint accelerations
Target joint currents
Target joint moments (torques)
Actual joint positions
Actual joint velocities
Actual joint currents
Joint control currents
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Actual speed of the tool given in Cartesian coordinates
Generalised forces in the TCP
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Target speed of the tool given in Cartesian coordinates
Current state of the digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 set
Temperature of each joint in degrees celsius
Controller realtime thread execution time
A value used by Universal Robots software only
Robot mode RobotModes
Joint control modes ControlModes
Safety mode SafetyModeTypes!A1
Used by Universal Robots software only
Tool x,y and z accelerometer values (software version 1.7)
Used by Universal Robots software only
Speed scaling of the trajectory limiter
Norm of Cartesian linear momentum
Used by Universal Robots software only
Used by Universal Robots software only
Masterboard: Main voltage
Masterboard: Robot voltage (48V)
Masterboard: Robot current
Actual joint voltages
Digital outputs
Program state
Elbow position
Elbow velocity
139 values in a 1108 byte package

es also follows the structure listed above, only not containing the entries at leading up the 1108th byte.
ntation of the tool orientation

entation of the tool orientation

nds to bit 0 and bit 2 set high


RealTime 3.10 -> 3.14
Return to Index (The RealTime interface has been deprecated since version 3.5. It is recommended to use the
Meaning Type Number of values Size in bytes Gnuplot col.
Message Size integer 1 4
Time double 1 8 1
q target double 6 48 2-7
qd target double 6 48 8 - 13
qdd target double 6 48 14 - 19
I target double 6 48 20 - 25
M target double 6 48 26 - 31
q actual double 6 48 32 - 37
qd actual double 6 48 38 - 43
I actual double 6 48 44 - 49
I control double 6 48 50 - 55
Tool vector actual double 6 48 56 - 61
TCP speed actual double 6 48 62 - 67
TCP force double 6 48 68 - 73
Tool vector target double 6 48 74 - 79
TCP speed target double 6 48 80 - 85
Digital input bits double 1 8 86
Motor temperatures double 6 48 87 - 92
Controller Timer double 1 8 93
Test value double 1 8 94
Robot Mode double 1 8 95
Joint Modes double 6 48 96-101
Safety Mode double 1 8 102
double 6 48 103 - 108
Tool Accelerometer values double 3 24 109 - 111
double 6 48 112 - 117
Speed scaling double 1 8 118
Linear momentum norm double 1 8 119
double 1 8 120
double 1 8 121
V main double 1 8 122
V robot double 1 8 123
I robot double 1 8 124
V actual double 6 48 125 - 130
Digital outputs double 1 8 131
Program state double 1 8 132
Elbow position double 3 24 133 - 135
Elbow velocity double 3 24 136 -138
Safety Status double 1 8 139
TOTAL 140 1116

Page 297
RealTime 3.10 -> 3.14

If it is experienced that less than 1108 bytes are received, the protocol for the actual received bytes also follows the structur

Page 298
RealTime 3.10 -> 3.14
is recommended to use the RTDE Interface, instead)
Notes
Total message length in bytes
Time elapsed since the controller was started
Target joint positions
Target joint velocities
Target joint accelerations
Target joint currents
Target joint moments (torques)
Actual joint positions
Actual joint velocities
Actual joint currents
Joint control currents
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orie
Actual speed of the tool given in Cartesian coordinates
Generalised forces in the TCP
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orie
Target speed of the tool given in Cartesian coordinates
Current state of the digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 se
Temperature of each joint in degrees celsius
Controller realtime thread execution time
A value used by Universal Robots software only
Robot mode RobotModes
Joint control modes ControlModes
Safety mode SafetyModeTypes!A1
Used by Universal Robots software only
Tool x,y and z accelerometer values (software version 1.7)
Used by Universal Robots software only
Speed scaling of the trajectory limiter
Norm of Cartesian linear momentum
Used by Universal Robots software only
Used by Universal Robots software only
Masterboard: Main voltage
Masterboard: Robot voltage (48V)
Masterboard: Robot current
Actual joint voltages
Digital outputs
Program state
Elbow position
Elbow velocity
Safety status SafetyStatusTypes!A1
140 values in a 1116 byte package

Page 299
RealTime 3.10 -> 3.14

tes also follows the structure listed above, only not containing the entries at leading up the 1108th byte.

Page 300
RealTime 3.10 -> 3.14

ector representation of the tool orientation

ector representation of the tool orientation

f 5 corresponds to bit 0 and bit 2 set high

Page 301
Return to Index (The RealTime interface has been deprecated since version 3.5. It is recommended to use the
Meaning Type Number of values Size in bytes Gnuplot col.
Message Size integer 1 4
Time double 1 8 1
q target double 6 48 2-7
qd target double 6 48 8 - 13
qdd target double 6 48 14 - 19
I target double 6 48 20 - 25
M target double 6 48 26 - 31
q actual double 6 48 32 - 37
qd actual double 6 48 38 - 43
I actual double 6 48 44 - 49
I control double 6 48 50 - 55
Tool vector actual double 6 48 56 - 61
TCP speed actual double 6 48 62 - 67
TCP force double 6 48 68 - 73
Tool vector target double 6 48 74 - 79
TCP speed target double 6 48 80 - 85
Digital input bits double 1 8 86
Motor temperatures double 6 48 87 - 92
Controller Timer double 1 8 93
Test value double 1 8 94
Robot Mode double 1 8 95
Joint Modes double 6 48 96-101
Safety Mode double 1 8 102
double 6 48 103 - 108
Tool Accelerometer values double 3 24 109 - 111
double 6 48 112 - 117
Speed scaling double 1 8 118
Linear momentum norm double 1 8 119
double 1 8 120
double 1 8 121
V main double 1 8 122
V robot double 1 8 123
I robot double 1 8 124
V actual double 6 48 125 - 130
Digital outputs double 1 8 131
Program state double 1 8 132
Elbow position double 3 24 133 - 135
Elbow velocity double 3 24 136 -138
TOTAL 139 1108

If it is experienced that less than 1108 bytes are received, the protocol for the actual received bytes also follows the structure
s recommended to use the RTDE Interface, instead)
Notes
Total message length in bytes
Time elapsed since the controller was started
Target joint positions
Target joint velocities
Target joint accelerations
Target joint currents
Target joint moments (torques)
Actual joint positions
Actual joint velocities
Actual joint currents
Joint control currents
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Actual speed of the tool given in Cartesian coordinates
Generalised forces in the TCP
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Target speed of the tool given in Cartesian coordinates
Current state of the digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 set
Temperature of each joint in degrees celsius
Controller realtime thread execution time
A value used by Universal Robots software only
Robot mode RobotModes
Joint control modes ControlModes
Safety mode SafetyModeTypes!A1
Used by Universal Robots software only
Tool x,y and z accelerometer values (software version 1.7)
Used by Universal Robots software only
Speed scaling of the trajectory limiter
Norm of Cartesian linear momentum
Used by Universal Robots software only
Used by Universal Robots software only
Masterboard: Main voltage
Masterboard: Robot voltage (48V)
Masterboard: Robot current
Actual joint voltages
Digital outputs
Program state
Elbow position
Elbow velocity
139 values in a 1108 byte package

es also follows the structure listed above, only not containing the entries at leading up the 1108th byte.
ntation of the tool orientation

entation of the tool orientation

nds to bit 0 and bit 2 set high


Return to Index (The RealTime interface has been deprecated since version 3.5. It is recommended to use the
Meaning Type Number of values Size in bytes Gnuplot col.
Message Size integer 1 4
Time double 1 8 1
q target double 6 48 2-7
qd target double 6 48 8 - 13
qdd target double 6 48 14 - 19
I target double 6 48 20 - 25
M target double 6 48 26 - 31
q actual double 6 48 32 - 37
qd actual double 6 48 38 - 43
I actual double 6 48 44 - 49
I control double 6 48 50 - 55
Tool vector actual double 6 48 56 - 61
TCP speed actual double 6 48 62 - 67
TCP force double 6 48 68 - 73
Tool vector target double 6 48 74 - 79
TCP speed target double 6 48 80 - 85
Digital input bits double 1 8 86
Motor temperatures double 6 48 87 - 92
Controller Timer double 1 8 93
Test value double 1 8 94
Robot Mode double 1 8 95
Joint Modes double 6 48 96-101
Safety Mode double 1 8 102
double 6 48 103 - 108
Tool Accelerometer values double 3 24 109 - 111
double 6 48 112 - 117
Speed scaling double 1 8 118
Linear momentum norm double 1 8 119
double 1 8 120
double 1 8 121
V main double 1 8 122
V robot double 1 8 123
I robot double 1 8 124
V actual double 6 48 125 - 130
Digital outputs double 1 8 131
Program state double 1 8 132
Elbow position double 3 24 133 - 135
Elbow velocity double 3 24 136 -138
TOTAL 139 1108

If it is experienced that less than 1108 bytes are received, the protocol for the actual received bytes also follows the structure
s recommended to use the RTDE Interface, instead)
Notes
Total message length in bytes
Time elapsed since the controller was started
Target joint positions
Target joint velocities
Target joint accelerations
Target joint currents
Target joint moments (torques)
Actual joint positions
Actual joint velocities
Actual joint currents
Joint control currents
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Actual speed of the tool given in Cartesian coordinates
Generalised forces in the TCP
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orien
Target speed of the tool given in Cartesian coordinates
Current state of the digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 set
Temperature of each joint in degrees celsius
Controller realtime thread execution time
A value used by Universal Robots software only
Robot mode RobotModes
Joint control modes ControlModes
Safety mode SafetyModeTypes!A1
Used by Universal Robots software only
Tool x,y and z accelerometer values (software version 1.7)
Used by Universal Robots software only
Speed scaling of the trajectory limiter
Norm of Cartesian linear momentum
Used by Universal Robots software only
Used by Universal Robots software only
Masterboard: Main voltage
Masterboard: Robot voltage (48V)
Masterboard: Robot current
Actual joint voltages
Digital outputs
Program state
Elbow position
Elbow velocity
139 values in a 1108 byte package

es also follows the structure listed above, only not containing the entries at leading up the 1108th byte.
ntation of the tool orientation

entation of the tool orientation

nds to bit 0 and bit 2 set high


RealTime 5.4 -> 5.9
Return to Index (The RealTime interface has been deprecated since version 3.5. It is recommended to use the
Meaning Type Number of values Size in bytes Gnuplot col.
Message Size integer 1 4
Time double 1 8 1
q target double 6 48 2-7
qd target double 6 48 8 - 13
qdd target double 6 48 14 - 19
I target double 6 48 20 - 25
M target double 6 48 26 - 31
q actual double 6 48 32 - 37
qd actual double 6 48 38 - 43
I actual double 6 48 44 - 49
I control double 6 48 50 - 55
Tool vector actual double 6 48 56 - 61
TCP speed actual double 6 48 62 - 67
TCP force double 6 48 68 - 73
Tool vector target double 6 48 74 - 79
TCP speed target double 6 48 80 - 85
Digital input bits double 1 8 86
Motor temperatures double 6 48 87 - 92
Controller Timer double 1 8 93
Test value double 1 8 94
Robot Mode double 1 8 95
Joint Modes double 6 48 96-101
Safety Mode double 1 8 102
double 6 48 103 - 108
Tool Accelerometer values double 3 24 109 - 111
double 6 48 112 - 117
Speed scaling double 1 8 118
Linear momentum norm double 1 8 119
double 1 8 120
double 1 8 121
V main double 1 8 122
V robot double 1 8 123
I robot double 1 8 124
V actual double 6 48 125 - 130
Digital outputs double 1 8 131
Program state double 1 8 132
Elbow position double 3 24 133 - 135
Elbow velocity double 3 24 136 -138
Safety Status double 1 8 139
TOTAL 140 1116

Page 308
RealTime 5.4 -> 5.9

If it is experienced that less than 1108 bytes are received, the protocol for the actual received bytes also follows the structur

Page 309
RealTime 5.4 -> 5.9
is recommended to use the RTDE Interface, instead)
Notes
Total message length in bytes
Time elapsed since the controller was started
Target joint positions
Target joint velocities
Target joint accelerations
Target joint currents
Target joint moments (torques)
Actual joint positions
Actual joint velocities
Actual joint currents
Joint control currents
Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orie
Actual speed of the tool given in Cartesian coordinates
Generalised forces in the TCP
Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orie
Target speed of the tool given in Cartesian coordinates
Current state of the digital inputs. NOTE: these are bits encoded as int64_t, e.g. a value of 5 corresponds to bit 0 and bit 2 se
Temperature of each joint in degrees celsius
Controller realtime thread execution time
A value used by Universal Robots software only
Robot mode RobotModes
Joint control modes ControlModes
Safety mode SafetyModeTypes!A1
Used by Universal Robots software only
Tool x,y and z accelerometer values (software version 1.7)
Used by Universal Robots software only
Speed scaling of the trajectory limiter
Norm of Cartesian linear momentum
Used by Universal Robots software only
Used by Universal Robots software only
Masterboard: Main voltage
Masterboard: Robot voltage (48V)
Masterboard: Robot current
Actual joint voltages
Digital outputs
Program state
Elbow position
Elbow velocity
Safety status SafetyStatusTypes!A1
140 values in a 1116 byte package

Page 310
RealTime 5.4 -> 5.9

tes also follows the structure listed above, only not containing the entries at leading up the 1108th byte.

Page 311
RealTime 5.4 -> 5.9

epresentation of the tool orientation

epresentation of the tool orientation

responds to bit 0 and bit 2 set high

Page 312

You might also like