Mastership
Controlling controller resources
Controller resources must be controlled by a single client at a time. Several people can be logged on to the controller, but only one person at a time can run commands or change RAPID data. This is for security reasons as well as for protecting data from being accidentally overwritten.
When logged on to a controller you can have either read-only access or write access. Read only is the default access right. To get write access the client needs to request mastership of the controller resource it wants to manipulate.
Note
In addition to the Access Right System, there is the User Authorization System, which restricts what each user is allowed to do with the robot. For more information, see User Authorization System.
Manual and automatic mode
When the controller is in manual mode, the FlexPendant has priority to write access. Mastership will not be given to a remote client unless an operator explicitly allows this through the FlexPendant. At any time, the operator can click on the FlexPendant to get the write access back.
In automatic mode, the client who first requests write access will get it. If a remote client has taken mastership of a domain other remote clients will not be allowed write access, but will get an exception if they try. For the operator, there is no way to revoke mastership to the FlexPendant, but to switch the operating mode of the controller to manual.
As for a remote client, such as a PC SDK application, however, mastership handling has to be carefully implemented by the application programmer.
Controller mastership domains
The following Controller domains require mastership:
Rapid
Configuration
For code examples, see Start program execution in the PC SDK section.
Note
For RobotWare 7 (OmniCore) mastership is not separated between domains. Taking mastership of one domain will give mastership for all others.
Note
Operations that require mastership are more resource demanding. Mastership should therefore be released as soon as an operation is completed.
Remote privilege in manual mode
Most of the time, it is inconvenient to have a PC SDK application perform operations that require mastership when the controller is in manual mode. Starting program execution, for example, is not even possible.
In manual mode when a remote client, for example RobotStudio or a PC SDK application, requests mastership, a dialog box will appear on the FlexPendant. It enables the operator to grant mastership to the requesting client.
If mastership is granted, the remote application has the privilege to access robot controller resources. Meanwhile, the FlexPendant is locked and cannot be used until the remote application releases mastership or mastership is lost for any of the reasons mentioned in Losing mastership.
Losing mastership
Remote clients lose the mastership without warning for the following reasons:
change from automatic to manual mode
controller restart
lost communication
in manual mode forced revocation of mastership by another client with higher priority - for example the FlexPendant
If mastership is lost, it has to be taken back explicitly by the client. The controller does not store the information.
Note
The FlexPendant may also lose mastership without any warning. This may happen in automatic mode, when a RobotStudio user or a PC SDK application asks for write access to the controller, for example. The status bar of the FlexPendant will then indicate Remote Access in Auto.
Heartbeat during program execution
Depending on controller version and configuration, a client that holds mastership must send a heartbeat to the controller to show presence during execution.
This is done by calling SendHeartBeat() which is supported from RobotWare 7.8.
If the client does not send a heartbeat with a specified interval, execution will stop and the controller will go to motors off.
This functionality is controlled via the configuration instance SYS/MASTER_BOOL/HeartBeat
:
- If the parameter
Select
is true, a client that holds mastership must send heartbeats or program execution will stop. - The parameter
Timeout
corresponds to the maximum heartbeat interval. The default is 2000 ms.
Note
This is required for standalone applications, but not for RobotStudio add-ins.