Hi @mnizamudeen
There are readily accessible variables as defined in the OPC Robotics 40010 companion specification. You can monitor the actual joint positions and speed, emergency stop and protective stop state, program running state, etc. The refresh rate is 10Hz.
OPC Robotics
The URCap conforms to the OPC VDMA 40010 Robotics Companion Specification v1.0. Objects and variables of the OPC Robotics Information Model are automatically published when the server is enabled. No additional configuration is required.
Currently the following objects and variables are available.
The root object
The root object is a MotionDeviceSystemType object that is called “Robot” and is located under the “Objects” node in the server. The Robot object contains the following 3 folders:
- MotionDevices
- Controllers
- SafetyStates
Each folder will be described in the next sections.
MotionDevices
This folder contains one MotionDeviceType object that is called “RobotArm”. It corresponds to the physical robot arm connected to the controller that runs the URCap.
Here you can find basic information about the robot arm:
- Manufacturer: “Universal Robots”
- Model: value depends on the actual robot model as derived from the serial number e.g. “UR10e 10Kg”
- MotionDeviceCategory: 1 (ARTICULATED_ROBOT)
- ProductCode: value depends on the actual robot model as derived from the serial number e.g. “UR10e”
- SerialNumber: the serial number of the robot e.g. “20185099999”
- ParameterSet:
- SpeedOverride: position of the speed slider in Polyscope as a percentage
Axes
This folder contains 6 AxisType objects that correspond to the axes of the robot arm:
- Base
- Shoulder
- Elbow
- Wrist1
- Wrist2
- Wrist3
Each entry contains the following variables:
- MotionProfile: 1 (ROTARY)
- ParameterSet:
- ActualPosition: position of the corresponding joint in radians
- ActualSpeed: speed of the corresponding joint in rad/sec
PowerTrains
This folder contains 6 MotorType objects that correspond to the motors in the robot arm:
- Base
- Shoulder
- Elbow
- Wrist1
- Wrist2
- Wrist3
Each entry contains the following parameters:
- Manufacturer: “Universal Robots”
- Model: text “Size 0” to “Size 5” depending on the motor size
- ProductCode: part number as specified in the Universal Robots Service Manual
- SerialNumber: unique identifier, obtained from joint-serial.txt or generated by appending a 4-digit counter at the end of the robot serial number, e.g. “201850999990002”
- ParameterSet:
- MotorTemperature: temperature of the corresponding motor in Cesius
Controllers
This folder contains one ControllerType object that is called “ControlBox”. It corresponds to the controller that runs the URCap.
Here you can find basic information about the robot arm:
- Manufacturer: “Universal Robots”
- Model: value depends on the actual controller as derived from the serial number e.g. “Control Box for UR5e/UR10e/UR16e”
- ProductCode: part number as specified in the Universal Robots Service Manual e.g. “102400”
- SerialNumber: the serial number of the controller e.g. “20185099999”
- CurrentUser:
- Level: a string returned by the Dashboard Server
Software
This folder contains 3 SoftwareType objects that correspond to the software components of the controller:
- Backend
- Frontend
- OperatingSystem
Each entry contains the following variables:
- Manufacturer
- Model
- SoftwareRevision
The data is filled automatically by executing various low-level system commands.
TaskControls
This folder contains one TaskControlType object that is called “RobotProgram” with the following variables:
- ComponentName: a user-writable string as required by the standard, currently empty
- ParameterSet:
- TaskProgramLoaded: true if a program is loaded in Polyscope, otherwise false
- TaskProgramName: full path of the program name currently loaded in Polyscope, e.g. “/programs/palletizer.urp”
SafetyStates
This folder contains one SafetyStateType object that is called “SafetyState” with the following variables:
- ParameterSet:
- EmergencyStop: true if the robot is emergency stopped, otherwise false
- ProtectiveStop: true if the robot is protective stopped, otherwise false
- OperationalMode: 3 while the robot program is running, 2 when not running, 0 when the robot state is unknown (e.g. during system startup, etc.)