Control Interfaces

From Wiki

Oftentimes robots need to controlled by a master controller, usually a PLC or PC. This article compares the available interfaces of our robots:

General control functions:

PLC Interface

The PLC Interface is a very basic interface that can also be used as a human machine interface. Digital inputs are connected to a PLC or push buttons to send commands to enable the robot and start the program. Digital outputs provide status information like whether the robot got an error or if the program is running. They can also be connected to the PLC or to status lights.

The following features are available:

  • Enabling/Disabling the robot
  • Referencing
  • Starting/Stopping/Pausing the program
  • Shutting down the embedded robot control
  • Initializing the robot and starting the program with a single input (e.g. a single push button)
  • Add motion commands to the program via push button (only if a PC with iRC/CPRog is connected)
  • Status outputs for error, referencing and program running


Modbus is a common and relatively easy to use protocol. Data and command access is done via numbered registers. Data is transmitted as 1 bit or 16 bit values, some parameters combine registers for more precision. Modbus is supported by most or all PLCs, libraries for PC applications are available.

The following features are available:

  • Reading basic configuration info
  • Reading status info (errors, temperatures, program etc).
  • Enabling, disabling, referencing the robot
  • Transmitting program variables
  • Starting, stopping, loading a different robot program
  • Moving to positions

The following features are not available:

  • Changing configuration
  • Defining robot programs
  • Jog motion

A license is required to use the Modbus interface. For testing purposes it is available without license for 30 minutes after each startup.

See also remote variable access for a short explanation on how to access program variables.

App Interface

The App Interface is intended for extending the robot control with new and custom features. Apps can access the robot's status, change program variables etc. They can provide functions that can be called by robot programs, e.g. to write values received from a camera to variables. Apps can also provide a graphical user interface that integrates into iRC/CPRog.

Unlike CRI we provide an API and example code for C++ and Python that can be used as a base for your own applications. Since the app interface is based on GRPC many popular programming languages can be used with some extra effort. App binaries can either run on the embedded control computer (automatically started by the robot control) or on a separate computer if more performance is required.

The following features are available:

  • Integration in robot programs
  • Integration into the graphical user interface
  • Reading/writing program variables
  • Reading the position of the robot
  • Accessing the robot status (work in progress!)

Note that this interface is quite new and therefore more limited than CRI and Modbus. More features will be added in the coming months.


The CRI Ethernet Interface is a proprietary, text-based (i.e. mostly human-readable) protocol that iRC/CPRog uses to communicate with the embedded robot control. It is more powerful than the Modbus interface but a little more complex to implement since no libraries are available (a developer with some TCP/IP programming knowledge should be able to create an implementation, examples are available for C# and Python).

The following features are available:

  • Accessing all info available in iRC/CPRog
  • Using all control functions available in iRC/CPRog
  • Configuring the robot (as in iRC/CPRog)
  • Transmitting programs, creatiing programs on the fly (not all commands available)
  • Moving the robot to positions or by jog

Camera Interface

The camera interface can be used to provide simple position data to a robot program (X, Y, Z, rotation and a number). While it is intended for cameras it can be used as a simple alternative to the more complex protocols mentioned above. To use it a simple TCP server needs to be set up that repeatedly sends the position data. The robot connects to this server once the connection is set up in the camera configuration.

The following features are available:

  • Sending a position (X, Y, Z, 1 rotation axis) and a number variable