Speaker
Description
Karabo is a device-based distributed control system toolkit used to implement the control and data acquisition systems of European XFEL.
A feature of Karabo is its middlelayer (MDL) API - a powerful, flexible and easy-to-use asynchronous Python API which can be used to implement Karabo devices. Such devices may interface hardware directly, or they may communicate with other Karabo devices to provide coordination between them or derive functionality from them. Lightweight middlelayer devices, called macros, allow routines for coordinating or monitoring Karabo devices to be quickly created. A command-line interface using the MDL API is provided by the iKarabo utility.
In this contribution an overview of the Karabo middlelayer is given, presenting key parts of the API, and macros and iKarabo are introduced. Examples of MDL devices are presented, with an emphasis on motion systems. A framework for multi-axis motion, virtual motor base, and the scan tool, Karabacon, are described. The Karabo MDL API is compared to EPICS solutions, including pythonSoftIOC and asyn, and to BlueSky.