Difference between revisions of "Control Interfaces"
(Added PLC interface) |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
* [[PLC Interface]] | * [[PLC Interface]] | ||
* [[Modbus Server|Modbus TCP]] | * [[Modbus Server|Modbus TCP]] | ||
+ | * [[Apps for the Robot Control|App Interface]] | ||
* [[CRI Ethernet Interface]] | * [[CRI Ethernet Interface]] | ||
* [[Remote_Variable_Access#Camera_interface|Camera interface]] | * [[Remote_Variable_Access#Camera_interface|Camera interface]] | ||
Line 39: | Line 40: | ||
See also [[Remote_Variable_Access|remote variable access]] for a short explanation on how to access program variables. | See also [[Remote_Variable_Access|remote variable access]] for a short explanation on how to access program variables. | ||
+ | |||
+ | = App Interface = | ||
+ | The [[Apps for the Robot Control|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 [https://grpc.io/ 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. | ||
= CRI = | = CRI = | ||
Line 49: | Line 64: | ||
* Transmitting programs, creatiing programs on the fly (not all commands available) | * Transmitting programs, creatiing programs on the fly (not all commands available) | ||
* [[Moving_Robots_via_CRI|Moving the robot to positions]] or by jog | * [[Moving_Robots_via_CRI|Moving the robot to positions]] or by jog | ||
+ | |||
+ | = Position Interface = | ||
+ | The [[Position Interface]] is an extension of the CRI. It allows fast streaming of the robot's current position and target positions. It is intended for very dynamic tasks. For most other tasks it is easier to use the functions provided by the CRI. This interface is available from iRC V14-003. | ||
+ | |||
+ | The following features are available: | ||
+ | * Receiving the robot's current position once it updates (each 10-20ms) | ||
+ | * Sending frequent target position updates (10-500ms) | ||
= Camera Interface = | = Camera Interface = | ||
Line 55: | Line 77: | ||
The following features are available: | The following features are available: | ||
* Sending a position (X, Y, Z, 1 rotation axis) and a number variable | * Sending a position (X, Y, Z, 1 rotation axis) and a number variable | ||
+ | |||
+ | [[Category:CPRog]][[Category:TinyCtrl]] |
Latest revision as of 14:35, 2 July 2024
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
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.
CRI
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
Position Interface
The Position Interface is an extension of the CRI. It allows fast streaming of the robot's current position and target positions. It is intended for very dynamic tasks. For most other tasks it is easier to use the functions provided by the CRI. This interface is available from iRC V14-003.
The following features are available:
- Receiving the robot's current position once it updates (each 10-20ms)
- Sending frequent target position updates (10-500ms)
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