Global overview

This chapter gives an overview of the sardana architecture and describes each of the different components in some detail. If you find this document to be to technical please consider reading the Overview guide first.

The following chapters assume a that you have a minimum knowledge of the Tango system and basic computer science.


Sardana consists of a software library which contains sardana kernel engine, a server and a client library which allow sardana to run as a client-server based distributed control system. The communication protocols between servers and clients are plug-ins in sardana. At this time, the only implemented protocol is Tango. In earlier versions, sardana was tightly connected to Tango. This documentation, is therefore centered in the Tango server implementation. When other comunication protocols become available, the documentation will be revised.

Client applications (both GUI and CLI) can connect to the sardana server through the high level sardana client API or through the low level pure Tango channels. Client applications can be build with the purpose of operating an existing sardana server or of configuring it.

Sardana server (SDS)

The sardana server consists of a sardana tango device server (SDS) running a sardana kernel engine. This server runs as an OS daemon. Once configured, this server acts as a container of device objects which can be accessed by the outside world as tango device objects. Typically, a sardana server will consist of:

  • a low level Pool object which manages all the server objects related to motion control and data acquisition (controllers, motors, counters, experiment channels, etc).

  • a Macro Server object which manages the execution of macros (procedures) and client connection points (called doors).

  • a set of low level objects (controllers, motors, counters, experiment channels, etc) controlled by the Pool object

  • a set of Door objects managed by the macro server. A Door is the preferred access point from a client application to the to the sardana server


A diagram representing a sardana server with its objects

A sardana server may contain only a Pool object or a Macro Server object or both. It may NOT contain more than one Pool object or more than one Macro Server object.

If necessary, your sardana system may be splitted into two (or more) sardana servers. A common configuration is to have a sardana server with a Pool (in this case we call the server a Device Pool server) and a second server with a Macro Server (this server is called MacroServer server).

The following figures show some of the possible alternative configurations


1 - Sardana configured to be a single Pool DS (no MacroServer present)


2 - Sardana configured to be a single MacroServer DS (no Pool present)


3 - Sardana configured with a MacroServer DS connecting to an underlying Pool DS


4 - Sardana configured with a Sardna DS connecting to another underlying Pool DS

The following chapters describe each of the Sardana objects in more detail.