All commands described below use the TCP/IP Dashboard server protocol to remote control the robot.
Every command returns a CommandResponse
object that describes the success of the request.
For more information about Dashboard server protocol, see : https://www.universal-robots.com/articles/ur/dashboard-server-cb-series-port-29999/
Members of Dashboard.CommandResponse :public class CommandResponse {// A message that described the error or the action donepublic string Message// The command as succeededpublic bool Succeed// A human readable answerpublic override string ToString()}
In particular, for request that have a returned value, a CommandResponse<t>
object is returned with an additional public T Value
member that contains the returned value.
By default, the Connect function of the UR class activates the Dashboard protocol.
// Create a new robot instancevar robot = new UR();// Setup connection to the robotvar param = new ConnectParameters();param.IP = "192.168.0.1";// Optional : dashboard server is enabled by default in ConnectParametersparam.Dashboard.Enable = true;//...// Access all commandsrobot.Dashboard.PowerOn();robot.Dashboard.ReleaseBrake();robot.Dashboard.Play();//...// Close connection to the robotrobot.Dashboard.Disable();
It is possible to create a client Dashboard outside an instance of UR
.
To do this, you just need to instantiate a DashboardClient object
// Create a dashboard client alone, outside any UR instancevar client = new DashboardClient();// Set robot IPclient.Enable("192.168.0.1");//...// Access all commandsclient.PowerOn();client.ReleaseBrake();client.Play();//...// Close connection to the robotclient.Disable();
// Returns the current robot state. (From FW 1.6)public CommandResponse<RobotModes> GetRobotMode()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.GetRobotMode();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);// Get returned valueRobotModes robotMode = response.Value;}
public enum RobotModes {// The robot is hand guided by pushing teached buttonBackDrive = 6// The robot controller is bootingBooting = 2// Robot has stopped due to a Safety StopConfirmSafety = 1// Robot is not connected to its controllerDisconnected = 0// Power is on but breaks are not releasedIdle = 5// Robot is in an obsolete CB2 modeOther = -1// The robot is powered offPowerOff = 3// The robot is powered onPowerOn = 4// Robot is in normal modeRunning = 7// Firmware is upgradingUpdatingFirmware = 8}
// Powers on the robot arm. (From FW 3.0)public CommandResponse PowerOn()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.PowerOn();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Powers off the robot arm. (From FW 3.0)public CommandResponse PowerOff()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.PowerOff();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Releases the brakes. (From FW 3.0)public CommandResponse ReleaseBrake()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.ReleaseBrake();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Closes the current popup and unlocks protective stop. (From FW 3.1)public CommandResponse UnlockProtectiveStop()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.UnlockProtectiveStop();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Shuts down and turns off robot and controller. Closes the connection. (From FW 1.4)public CommandResponse Shutdown()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.Shutdown();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// 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)
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.LoadProgram("prg1.urp");if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Returns the path of the loaded program. If not program is loaded, Value member is null. (From FW 1.6)public CommandResponse<string> GetLoadedProgram()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.GetLoadedProgram();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);// Get returned valuestring loadedProgram = response.Value;}
// 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()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.Play();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Stops running program. (From FW 1.4)Returns failure if the program fails to stoppublic CommandResponse Stop()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.Stop();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Pauses the running program . (From FW 1.4)Returns failure if the program fails to pausepublic CommandResponse Pause()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.Pause();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Returns a True value is a program is running. (From FW 1.6)public CommandResponse<bool> IsProgramRunning()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.IsProgramRunning();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);// Get returned valuebool isProgramRunning = response.Value;}
// Returns the state of the active program and path to loaded program file, or STOPPED if no program is loadedpublic CommandResponse<ProgramState> GetProgramState()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.GetProgramState();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);// Get returned valueProgramState state = response.Value;}
public class ProgramState {// Name of the loaded programpublic string Name// Running state of the loaded programpublic ProgramStates Statepublic override string ToString()}
// Returns the save state of the active program and path to loaded program file. (From FW 1.8.11997)public CommandResponse<ProgramSaveState> IsProgramSaved()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.IsProgramSaved();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);// Get returned valueProgramSaveState state = response.Value;}
public class ProgramSaveState {// Is the program savedpublic bool IsSaved// Name of the loaded programpublic string Namepublic override string ToString()}
// 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)
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.ShowPopup("This is a popup message !");if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Closes the popup (From FW 1.6)public CommandResponse ClosePopup()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.ClosePopup();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Adds log-message to the Log history. (From FW 1.8.11657)public CommandResponse AddToLog(string message)
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.AddToLog("This is a log message !");if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Returns the version of the Polyscope software (From FW 1.8.14035)public CommandResponse<PolyscopeVersion> GetPolyscopeVersion()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.GetPolyscopeVersion();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Loads the specified installation file (From FW 3.2.18654)public CommandResponse LoadInstallation(string installation)
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.LoadInstallation("default.installation");if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Returns serial number of the robot (FW 3.12 and from FW 5.6)public CommandResponse GetSerialNumber()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.GetSerialNumber();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// Returns the robot model (UR3, UR5, UR10 or UR16). (FW 3.12 and from FW 5.6)public CommandResponse<RobotModels> GetRobotModel()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.GetRobotModel();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);// Get returned valueRobotModels model = response.Value;}
public enum RobotModels {UR10 = 2UR16 = 4UR3 = 3UR5 = 1}
// Returns the operational mode. (From FW 5.6)public CommandResponse<OperationalModes> GetOperationalMode()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.GetOperationalMode();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);// Get returned valueOperationalModes mode = response.Value;}
public enum OperationalModes {// Loading and editing programs and installations is not allowed, only playing programsAutomatic = 1// Loading and editing programs is allowedManual = 0// The password has not been set.None = 2}
// The operational mode can again be changed from PolyScope, and the user password is enabled. (From FW 5.0.0)public CommandResponse ClearOperationalMode()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.ClearOperationalMode();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// 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)
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.SetOperationalMode(OperationalModes.Manual);if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
public enum OperationalModes {// Loading and editing programs and installations is not allowed, only playing programsAutomatic = 1// Loading and editing programs is allowedManual = 0// The password has not been set.None = 2}
// 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()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.IsInRemoteControl();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);// Get returned valuebool isRemoteControl = response.Value;}
// Returns the current safety status. (From FW 3.11 to 3.12 and from FW 5.5)public CommandResponse<SafetyStatus> GetSafetyStatus()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.GetSafetyStatus();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);// Get returned valueSafetyStatus status = response.Value;}
public enum SafetyStatus : byte {AutomaticModeSafeguardStop = 10// Safety is in fault modeFault = 9// Safety is in normal operating conditionsNormal = 1// 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.ProtectiveStop = 3// When a safety limit is violated, the safety system must be restarted.Recovery = 4// Speed is reducedReduced = 2// (EA + EB + SBUS->Screen) Physical e-stop interface input activatedRobotEmergencyStop = 7// (SI0 + SI1 + SBUS) Physical s-stop interface inputSafeguardStop = 5// (EA + EB + SBUS->Euromap67) Physical e-stop interface input activatedSystemEmergencyStop = 6SystemThreePositionEnablingStop = 11// Safety is in violation mode (for example, violation of the allowed delay between redundant signals)Violation = 8}
// Closes a safety popup. (From FW 3.1)public CommandResponse CloseSafetyPopup()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.CloseSafetyPopup();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}
// 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()
private UR ur;private void Start() {ur = new UR(); // Create a new UR instanceur.Connect("192.168.0.1"); // Connect to the robot// ...// Call the commandvar response = ur.Dashboard.RestartSafety();if(response.Succeed) Console.WriteLine("Succeed");else Console.WriteLine("Command failed");Console.WriteLine(response.Message);}