System description
The system includes one assembly with a 3-phase power supply, ABB robot controller, the ABB IRB6620 robot, and three posts.
Let’s download the diagrams and take a look at the configuration of the system.

The port connections are very simple. The robot controller is connected to the three-phase supply and then each axis mechanical port is connected to the corresponding robot axis on the robot component.
The posts are placed around the robot and our final goal will be to teach those positions to the robot and create a path so it moves from one to the other in a loop.
Robot controllers and robots
Industrial robots are very common in many manufacturing processes, 6-axes robots being the most used ones nowadays. Automated systems are usually controlled using PLCs, but robots can be integrated into them to create more flexible and sophisticated solutions.
A robot arm has built-in actuators and sensors to allow accurate control of each axis position, but the robot program execution, forward/inverse kinematics calculations, communication with other devices, and other algorithms are executed on the robot controller. We can say that a robot controller is just a special industrial computer for such an application, being the brain of the robot arm. Usually, industrial robot manufacturers develop robot controllers that are compatible with several robot arms of the same family, allowing using the same controller for different robot arm models. Finally, the most common configuration is that a robot controller can command a single robot arm.

With this idea in mind, we have modeled several robots from different manufacturers and even different robot controllers separately, to provide some examples, trying to mimic this equipment as close as possible to the reality.
As you have seen, in this tutorial we have introduced as an example an ABB Robot and an ABB robot controller to show how robots can be used in our platform.
Robot controller
The robot controller components created for the next tutorials are quite similar to the PLC component (8IO OPCUA) used on the PLC tutorials. The program for the robot is executed on a soft-controller or simulated controller depending on the third-party software, and the Simumatik component will just read and write variables from it, mapping IO signals. In addition to that, the component will read even each axis position of the robot arm, to mirror it in real-time, so the robot can move and physically interact with other elements inside the model. This way, the native robot program can be used when emulating the robots in our platform, and there is no need to make any advanced calculations inside the model.


Another difference with the PLC is that instead of using the OPCUA driver to communicate with the third-party software, the robot controllers use specific API, SDK, or native communication protocols.
We have included 8 electric input ports (In_0..7) and 8 electric output ports (Out_0..7) on all example robot controllers so it is even possible to control other devices such as grippers, directly from the robot controller. Similar to the PLC, the user just need to decide a name for an input and output variable that will map all these signals to the robot program. The variable names can be adjusted in the public variable panel. Furthermore, the robot controllers have 6 mechanical output ports to be connected to the robot components, to send the actual robot axes positions (axis1..6). Finally, the power feeding ports (l1..3) are included.

Robot

Robot arms are quite easy to model in Simumatik OEP. Based on our data-model, ideal robot components are multi-body components with several links and joints, that will follow the given position and therefore the trajectory commanded by the controller. Robots can be modelled with more detail, but for basic applications such as this demo, this is a good approach. There is not much to configure on the example robot components we provide, they just have one mechanical input port for each axis. This way, switching robots between each other becomes a trivial thing as it is shown below.

Change a robot controller or robot arm
If you want to use this or other tutorial or demo system with another robot arm rather than the given one, you just need to follow the next steps.
Change robot controller
Right-click on the ‘robot’ assembly and select ‘Add component’. This will open the component selection window. You can type some text to filter the components by their name (‘controller’ in the example below) so it is easier to find them. Explore the public component libraries to find another robot controller you may want to use. Once you find it, just click on the add button (‘+’) and give it a name.

Now the new robot controller probably is hidden under the robot arm, at the center of the assembly. To relocate the new robot controller select it and then use the arrows in ‘Move’ mode.

To remove the original robot controller right click on the component name on the left panel and select ‘Remove’. Then confirm with ‘Yes’ when the pop-up window appears.

Now you have to connect all ports back to the robot controller. Start connecting the supply ports:

Finally, connect the robot arm axes back to the controller.

The new robot controller should be ready to go now!
Change robot arm
Right-click on the ‘robot’ assembly and select ‘Add component’. This will open the component selection window. You can type some text to filter the components by their name (‘kuka’ in the example below) so it is easier to find them. Explore the public component libraries to find another robot arm you may want to use. Once you find it, just click on the add button (‘+’) and give it a name.

Now the new robot arm probably appeared on top of the existing one like in the picture below.

To remove the original robot arm right click on the component name on the left panel and select ‘Remove’. Then confirm with ‘Yes’ when the pop-up window appears.

Finally, connect the new robot arm axes to the controller.

The new robot arm should be ready to go now!
Activate the Gateway
The connection to third-party software or hardware controllers is done using the Gateway. The Gateway allows some components loaded on the server to communicate with third-party software or hardware on your machine or network.
Click on the workspace menu button on the toolbar (‘?’) and open the Gateway tab.
If the Gateway is properly installed it will display the version and the status ‘STANDBY’. Click on the switch and if everything is working as expected, it should become green and the status ‘connected’ should be displayed, as seen below.

The connection with the Gateway is now done, and as soon as the emulation is started, the gateway will be available for the components that require it, so they can communicate with third-party software or hardware devices.
Connect to a robot controller
Depending on the robot controller you want to use (RobodK in the example below), you may need to make some setup on the third-party software to allow the robot controller connection. After that, with the gateway connected, just click on the start button.

The ‘status’ variable on the robot controller should show ‘RUNNING’ and if you move the robot arm on the third-party software, the movement should be mirrored by the robot in Simumatik.