ABB Robot Connectivity Plugin

About the plugin

The ABB Robot plugin, allows you to connect to an ABB robot controller during simulation, and exchange data. For example, a program running in a virtual or physical ABB controller, can drive the joints of an ABB robot in a simulation, read data from sensors, and set outputs for picking and placing products.

The plugin is associated with the Connectivity feature of Visual Components Premium 4.9 and can connect to one or more ABB robot controllers. The simplified workflow is the following:

  1. Add server
  2. Connect to the server
  3. Map variables
  4. Run the simulation

Terminology

  • RobotWare – ABB robot controller software.
  • PC SDK – SDK to communicate with ABB robots, used to develop the plugin.
  • RobotStudio – ABB tool for offline programming and simulation.
  • FlexPendant – handheld tablet used to operate the robot.

Read and Write Support

Read and Write table

Type Read Write Notes
Robot controller digital inputs and outputs

Yes

Yes Signals
Current joint values from any mechanical unit

Yes

No  


Paired variables in Simulation to Server direction:

The values written through the API, are applied and visible in the I/O system of the robot controller. When setting up an I/O in the I/O system of the robot controller, keep in mind the type of signal and the access level needed for that signal. Both digital inputs and outputs are accepted, even if they might not be logically correct, and the access level should be set to “All”.

Paired variables in Server to Simulation direction:

Event-based update mode is possible only with signals. In this case, the variable group should only include paired variables for signals. If joints paired variables are in the same variable group, no joints data will be read.

It is recommended to either use cyclic-based update mode when reading both signals and joints data, or create separate variable groups - one event-based for signals, and another cyclic-based for joints data.

Requirements

The connection requires Visual Components Premium 4.9 Premium and ABB Robot Communication Runtime to be installed on the same machine. See the following options:

Option 1 - Visual Components Premium 4.9 Premium + ABB Robot Communication Runtime

Option 2 - Visual Components Premium 4.9 Premium + ABB PC SDK

  • ABB PC SDK includes Robot Communication Runtime

Option 3 - Visual Components Premium 4.9 Premium + ABB RobotStudio

  • ABB RobotStudio includes Robot Communication Runtime

On the host machine, both the services “ABB Industrial Robot Communication Server” and “ABB Industrial Robot Discovery Server” need to be running.

Note: A real ABB robot controller requires a PC interface option to support the connection with the plugin. In the virtual environment, a PC interface is not required.

Setup

  1. Check that your host machine meets the requirements.
  2. Access the ABB robot controller.
    1. The plugin connects to the robot controller, so the virtual or physical robot controller should be accessible via a direct network connection (IP address). For example, it is enough to have a project open in ABB RobotStudio and the virtual controller running.
  3. In Visual Components Premium 4.9, add a new server with the plugin and connect to the controller.
    1. If you are using a virtual robot controller running in RobotStudio, by default it will have the IP address of the host machine of RobotStudio.
  4. Map the variables.
    1. For example, map the VALUE property of each degree of freedom (DOF)/Joint of the robot component to a joint of the corresponding mechanical unit in the controller. This way, the controller drives the robot in the 3D world.
    2. For simulating actions such as grasp/release, map the outputs of the robot component for those actions to the I/O of the controller you will use for those actions.
  5. Run the simulation.
    1. Simulate to start the exchange of data. Note that in the Connected Variables panel, the Prepared Values column can be used to set values for testing.

Capabilities

You can verify the capabilities of the ABB Robot plugin and subsequent server connections in the Properties panel.

Plugin

  1. In the Connectivity Configuration panel, select ABB Robot.
  2. In the Properties panel, expand Connection Plugin Capabilities.

Server

  1. In the Connectivity Configuration panel, expand ABB Robot, and then select an active server connection.
  2. In the Properties panel, expand Server Capabilities.

Connection Settings

An ABB Robot plugin connection requires the IP address and name of the robot controller. By default, it is the host machine (localhost). There is also a “Find Controllers” function that can be used to find controllers on the local network (physical controllers only). It also requires the authentication type (DefaultUser or another user defined in the UAS (User Authorization System) of the physical robot controller).

To define a new server connection:

  1. In the Connectivity Configuration panel, click ABB Robot.
  2. On the Connectivity tab, in the Server group, click Add Server.
  3. In the Edit Connection tab, set Server URL and Controller Name. An item from Available Controllers can also be selected. Set Authentication, and then click Test Connection.
  4. If the connection succeeded, click OK, and then click Apply.

Address Space

The ABB Robot controller does not have a very well-defined structure to access data. For example, the joints data of a mechanical unit is contained in a JointTarget structure.

The browsing functionality presents the variables in a convenient hierarchical folder structure, and creates child variable nodes for each signal and for each joint value of all mechanical units in a controller.

Mastership handling on write operations

In order for the plugin to write values to the ABB robot controller, the controller either needs to be in auto operating mode, or mastership is required.

If the operating mode is Manual, then persistent mastership is required, meaning that the mastership is requested at the first write operation, then released only when the server is disconnected. Signals require mastership in manual mode for writing operations.

The user is prompted with a Mastership request dialog, informing that the controller needs to either be switched to auto operation mode, or grant write access from the FlexPendant.


After the dialog, a similar message as below will appear on the FlexPendant, so to grant write access.

If the operating mode is Auto, mastership is not needed.

The above logic is shown here:

Error handling

  • If the requirements are not met (e.g. Robot Communication Runtime is not installed), attempting to add a server will fail.
  • If the connection to the controller is lost, the exchange of data will stop. The plugin expects an event to be received from the controller in such cases. It will attempt to reconnect, but it will give an error, if it fails.
  • When connected to a physical robot controller, failing to authenticate with the provided user will give an error.
  • When writing values to signals, if the plugin loses mastership (e.g. a user revokes write access from the FlexPendant in manual operating mode), then the user is prompted with the Mastership request dialog, and needs to grant access again using the FlexPendant.

Limitations

  • Event-based update mode works only for signals.
  • Joint values cannot be written to the robot controller.
  • Write operations require Mastership. To get Mastership when the robot controller is in Manual mode, the operator has to approve this on the robot controller's FlexPendant. Only one client can have Mastership at any time.

Compatibility

PC SDK is usually compatible with newer ABB RobotWare versions. However, Robot Communication Runtime version should match the ABB RobotWare version.

If you have a physical or virtual robot including a specific ABB RobotWare (ABB robot controller software) version, then the you must install a compatible version of the Robot Communication Runtime.

Performance

The communication delay is mostly defined by the fixed update rate of the ABB robot controller and the PC SDK.

Using event-based update mode is recommended for variable groups with data flow from server to simulation, in the case of signals.

Supported data types

The ABB Robot plugin supports access to digital signals and mechanical units joint data.

ABB Robot Type .NET Type
DigitalInput System.Boolean
DigitalOutput System.Boolean
Single System.Single

Other Notes

In order to pair mechanical unit joints data, ABB’s JointTarget structure is used. RobJoint contains the six joints values, whereas ExtJoint contains the external joints values.

In the case of seven-axis robots, the seventh axis can be found in a separate mechanical unit (usually named *7), and its value can be found in the first joint value of ExtJoint (ExtAx.Eax_a).