UnderAutomation
Any question?

[email protected]

Contact us
UnderAutomation
⌘Q

Dashboard Server : Remote Commands

Remote send commands to the robot via the Legacy Dashboard Server protocol (not compatible with PolyscopeX).

The Dashboard Server provides TCP/IP-based remote control of Universal Robots. It allows you to power on/off the robot, load and execute programs, and query robot status.

Prerequisites

Enable Remote Mode

Your robot must be in Remote mode to accept commands. Toggle the switch at the top right of Polyscope:

switch remote

Enable Dashboard Server

The Dashboard Server must be enabled in Polyscope settings. See Connection Setup for details.

Quick Start

By default, Connect() enables the Dashboard protocol:

using UnderAutomation.UniversalRobots;
class Dashboard
{
static void Main(string[] args)
{
// Create a new robot instance
var robot = new UR();
// Setup connection to the robot
var param = new ConnectParameters();
param.IP = "192.168.0.1";
// Optional : dashboard server is enabled by default in ConnectParameters
param.Dashboard.Enable = true;
//...
// Access all commands
robot.Dashboard.PowerOn();
robot.Dashboard.ReleaseBrake();
robot.Dashboard.Play();
//...
// Close connection to the robot
robot.Dashboard.Disable();
}
}

Standalone Client

Create a Dashboard client independently from UR:

using UnderAutomation.UniversalRobots.Dashboard;
class DashboardDirect
{
static void Main(string[] args)
{
// Create a dashboard client alone, outside any UR instance
var client = new DashboardClient();
// Set robot IP
client.Enable("192.168.0.1");
//...
// Access all commands
client.PowerOn();
client.ReleaseBrake();
client.Play();
//...
// Close connection to the robot
client.Disable();
}
}

Windows Example

DashboardServer

Response Handling

All commands return a CommandResponse object:

Class
CommandResponse
C#Python

Generic answer returned by a command

MemberTypeDescription
CommandResponse()
Constructor
Message
Field
string
A message that described the error or the action done
Succeed
Field
bool
The command as succeeded
ToString()
Method
string
A human readable answer

Commands with return values provide CommandResponse<T> with an additional Value property containing the result.


Power Commands

GetRobotMode

Get the current robot mode.

C#
// Returns the current robot state. (From FW 1.6)
public CommandResponse<RobotModes> GetRobotMode()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.GetRobotMode();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
// Get returned value
RobotModes robotMode = response.Value;
}
Enum
RobotModes
C#Python

Robot running modes

NameValueDescription
BackDrive
6
The robot is hand guided by pushing teached button
Booting
2
The robot controller is booting
ConfirmSafety
1
Robot has stopped due to a Safety Stop
Disconnected
0
Robot is not connected to its controller
Idle
5
Power is on but breaks are not released
Other
-1
Robot is in an obsolete CB2 mode
PowerOff
3
The robot is powered off
PowerOn
4
The robot is powered on
Running
7
Robot is in normal mode
UpdatingFirmware
8
Firmware is upgrading

PowerOn

Power on the robot.

C#
// Powers on the robot arm. (From FW 3.0)
public CommandResponse PowerOn()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.PowerOn();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

PowerOff

Power off the robot.

C#
// Powers off the robot arm. (From FW 3.0)
public CommandResponse PowerOff()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.PowerOff();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

ReleaseBrake

Release the brakes after powering on.

C#
// Releases the brakes. (From FW 3.0)
public CommandResponse ReleaseBrake()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.ReleaseBrake();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

UnlockProtectiveStop

Unlock the robot from protective stop state.

C#
// Closes the current popup and unlocks protective stop. (From FW 3.1)
public CommandResponse UnlockProtectiveStop()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.UnlockProtectiveStop();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

Shutdown

Completely shut down the robot.

C#
// Shuts down and turns off robot and controller. Closes the connection. (From FW 1.4)
public CommandResponse Shutdown()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.Shutdown();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

Program Commands

LoadProgram

Load a program from the robot's file system.

C#
// Start loading the specified program. (From FW 1.4)
Returns when both program and associated installation has loaded (or failed).
The load command fails if the associated installation requires confirmation of safety.The return value in this case will be 'Error while loading program'.
public CommandResponse LoadProgram(string programName)
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.LoadProgram("prg1.urp");
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

GetLoadedProgram

Get the name of the currently loaded program.

C#
// Returns the path of the loaded program. If not program is loaded, Value member is null. (From FW 1.6)
public CommandResponse<string> GetLoadedProgram()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.GetLoadedProgram();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
// Get returned value
string loadedProgram = response.Value;
}

Play

Start executing the loaded program.

C#
// Starts program, if any program is loaded and robot is ready. (From FW 1.4)
Returns failure if the program fails to start.
public CommandResponse Play()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.Play();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

Stop

Stop program execution.

C#
// Stops running program. (From FW 1.4)
Returns failure if the program fails to stop
public CommandResponse Stop()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.Stop();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

Pause

Pause the running program.

C#
// Pauses the running program . (From FW 1.4)
Returns failure if the program fails to pause
public CommandResponse Pause()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.Pause();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

IsProgramRunning

Check if a program is currently running.

C#
// Returns a True value is a program is running. (From FW 1.6)
public CommandResponse<bool> IsProgramRunning()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.IsProgramRunning();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
// Get returned value
bool isProgramRunning = response.Value;
}

GetProgramState

Get the current program state.

C#
// Returns the state of the active program and path to loaded program file, or STOPPED if no program is loaded
public CommandResponse<ProgramState> GetProgramState()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.GetProgramState();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
// Get returned value
ProgramState state = response.Value;
}
Class
ProgramState
C#Python

Describes a program state (its running state and its name)

MemberTypeDescription
ProgramState()
Constructor
Name
Field
string
Name of the loaded program
State
Field
ProgramStates
Running state of the loaded program
ToString()
Method
string

IsProgramSaved

Check if the current program has unsaved changes.

C#
// Returns the save state of the active program and path to loaded program file. (From FW 1.8.11997)
public CommandResponse<ProgramSaveState> IsProgramSaved()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.IsProgramSaved();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
// Get returned value
ProgramSaveState state = response.Value;
}
Class
ProgramSaveState
C#Python
MemberTypeDescription
ProgramSaveState()
Constructor
IsSaved
Field
bool
Is the program saved
Name
Field
string
Name of the loaded program
ToString()
Method
string

User Interface Commands

ShowPopup

Display a popup message on the teach pendant.

C#
// Shows a popup on Polyscope with the specified message. The popup-text will be translated to the selected language, if the text exists in the language file. (From FW 1.6)
public CommandResponse ShowPopup(string message)
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.ShowPopup("This is a popup message !");
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

ClosePopup

Close any open popup message.

C#
// Closes the popup (From FW 1.6)
public CommandResponse ClosePopup()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.ClosePopup();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

AddToLog

Add a message to the robot's log.

C#
// Adds log-message to the Log history. (From FW 1.8.11657)
public CommandResponse AddToLog(string message)
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.AddToLog("This is a log message !");
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

Robot Information

GetPolyscopeVersion

Get the Polyscope software version.

C#
// Returns the version of the Polyscope software (From FW 1.8.14035)
public CommandResponse<PolyscopeVersion> GetPolyscopeVersion()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.GetPolyscopeVersion();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

GetSerialNumber

Get the robot's serial number.

C#
// Returns serial number of the robot (FW 3.12 and from FW 5.6)
public CommandResponse GetSerialNumber()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.GetSerialNumber();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

GetRobotModel

Get the robot model (UR3, UR5, UR10, etc.).

C#
// Returns the robot model (UR3, UR5, UR10 or UR16). (FW 3.12 and from FW 5.6)
public CommandResponse<RobotModels> GetRobotModel()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.GetRobotModel();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
// Get returned value
RobotModels model = response.Value;
}
Enum
RobotModels
C#Python

Model of a UR robot

NameValueDescription
UR10
2
UR16
4
UR20
7
UR3
3
UR30
8
UR5
1

LoadInstallation

Load an installation file.

C#
// Loads the specified installation file (From FW 3.2.18654)
public CommandResponse LoadInstallation(string installation)
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.LoadInstallation("default.installation");
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

Operational Mode Commands

GetOperationalMode

Get the current operational mode.

C#
// Returns the operational mode. (From FW 5.6)
public CommandResponse<OperationalModes> GetOperationalMode()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.GetOperationalMode();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
// Get returned value
OperationalModes mode = response.Value;
}
Enum
OperationalModes
C#Python

Enumerates all robot operational modes

NameValueDescription
Automatic
1
Loading and editing programs and installations is not allowed, only playing programs
Manual
0
Loading and editing programs is allowed
None
2
The password has not been set.

SetOperationalMode

Set the operational mode.

C#
// Controls the operational mode. See User manual for details. If this function is called the operational mode cannot be changed from PolyScope, and the user password is disabled. OperationalModes.None is not a valid operational mode. (From FW 5.0.0)
public CommandResponse SetOperationalMode(OperationalModes mode)
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.SetOperationalMode(OperationalModes.Manual);
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

ClearOperationalMode

Clear the current operational mode.

C#
// The operational mode can again be changed from PolyScope, and the user password is enabled. (From FW 5.0.0)
public CommandResponse ClearOperationalMode()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.ClearOperationalMode();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

IsInRemoteControl

Check if the robot is in remote control mode.

C#
// Returns the remote control status of the robot. If the robot Is In remote control it returns False And If remote control Is disabled Or robot Is in local control it returns false. (From FW 5.6)
public CommandResponse<bool> IsInRemoteControl()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.IsInRemoteControl();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
// Get returned value
bool isRemoteControl = response.Value;
}

Safety Commands

GetSafetyStatus

Get the current safety status.

C#
// Returns the current safety status. (From FW 3.11 to 3.12 and from FW 5.5)
public CommandResponse<SafetyStatus> GetSafetyStatus()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.GetSafetyStatus();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
// Get returned value
SafetyStatus status = response.Value;
}
Enum
SafetyStatus
C#Python

Safety modes

NameValueDescription
AutomaticModeSafeguardStop
10
Fault
9
Safety is in fault mode
Normal
1
Safety is in normal operating conditions
ProtectiveStop
3
Protective safeguard Stop. This safety function is triggeredby an external protective device using safety inputs which will trigger a Cat 2 stop3per IEC 60204-1.
Recovery
4
When a safety limit is violated, the safety system must be restarted.
Reduced
2
Speed is reduced
RobotEmergencyStop
7
(EA + EB + SBUS->Screen) Physical e-stop interface input activated
SafeguardStop
5
(SI0 + SI1 + SBUS) Physical s-stop interface input
SystemEmergencyStop
6
(EA + EB + SBUS->Euromap67) Physical e-stop interface input activated
SystemThreePositionEnablingStop
11
Violation
8
Safety is in violation mode (for example, violation of the allowed delay between redundant signals)

CloseSafetyPopup

Close any safety-related popup.

C#
// Closes a safety popup. (From FW 3.1)
public CommandResponse CloseSafetyPopup()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.CloseSafetyPopup();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

RestartSafety

Restart the safety system after a safety fault.

C#
// Restarts the safety. Used when robot gets a safety fault or violation to restart the safety. After safety has been rebooted the robot will be in Power Off. (From FW 3.7 to 3.12.0 and from 5.1.0)
public CommandResponse RestartSafety()
Example :
C#
private UR ur;
private void Start() {
ur = new UR(); // Create a new UR instance
ur.Connect("192.168.0.1"); // Connect to the robot
// ...
// Call the command
var response = ur.Dashboard.RestartSafety();
if(response.Succeed) Console.WriteLine("Succeed");
else Console.WriteLine("Command failed");
Console.WriteLine(response.Message);
}

Protocol Reference

PropertyValue
Port29999
ProtocolTCP/IP
DocumentationUniversal Robots Dashboard Server

Easily integrate Universal Robots, Fanuc, Yaskawa, ABB or Staubli robots into your .NET, Python, LabVIEW or Matlab applications

UnderAutomation
Contact usLegal

© All rights reserved.