The FAQ is work-in-progress. Many answers need polishing and mostly links need to be added


What is the Sardana SCADA and how do I get an overview over the different components?

An overview over the different Sardana components is shown in the following figure:


The basic Sardana SCADA philosophy can be found here.

How do I install Sardana?

The Sardana SCADA system consists of different components which have to be installed:

  • Tango: The control system middleware and tools

  • PyTango: The Python language binding for Tango

  • Taurus: The GUI toolkit which is part of Sardana SCADA

  • The Sardana device pool, macro server and tools

The complete sardana installation instructions can be found here.

How to work with Taurus GUI?

A user documentation for the Taurus GUI application can be found here.

How to produce your own Taurus GUI panel?

The basic philosophy of Taurus GUI is to provide automatic GUI s which are automatically replaced by more and more specific GUI s if these are found.

Refer to the user documentation on TaurusGUI for more details on how to work with panels

How to call procedures?

The central idea of the Sardana SCADA system is to execute procedures centrally. The execution can be started from either:

How to write procedures?

User written procedures are central to the Sardana SCADA system. Documentation how to write macros can be found here. Macro writers might also find the following documentation interesting:

  • Documentation on how to debug macros can be found here <LINK>

  • In addition of the strength of the python language macro writers can interface with common elements (motors, counters) , call other macros and use many utilities provided. The macro API can be found here.

  • Documentation how to document your macros can be found here

How to write scan procedures?

A very common type of procedure is the scan where some quantity is varied while recording some other quantities. See the documentation on the Sardana Scan API

How to adapt SARDANA to your own hardware?

Sardana is meant to be interfaced to all types of different hardware with all types of control systems. For every new hardware item the specific behavior has to be programmed by writing a controller code. The documentation how to write Sardana controllers and pseudo controllers can be found here. This documentation also includes the API which can be used to interface to the specific hardware item.

How to access Tango from within macros or controllers

In your macros and controllers almost certainly you will need to access Tango devices (including Sardana elements) to read or write their attributes, execute commands, etc. There exist different ways of accessing them: Sardana, Taurus or PyTango API. See more on which to choose in this chapters:

How to add your own file format?

Documentation how to add your own file format can be found here <LINK>.

How to use the standard macros?

The list of all standard macros and their usage can be found here <LINK>.

How to write your own Taurus application?

You have basically two possibilities to write your own Taurus application Start from get General TaurusGUI and create a configuration file. This approach is documented here <LINK>. Start to write your own Qt application in python starting from the Taurus main window. This approach is documented here <LINK>.

Which are the standard Taurus graphical GUI components?

A list of all standard Taurus GUI components together with screen shots and example code can be found here <LINK>

How to write your own Taurus widget?

A tutorial of how to write your own Taurus widget can be found here.

How to work with the graphical GUI editor?

Taurus uses the QtDesigner/QtCreator as a graphical editor. Documentation about QtDesigner/QtCreator. The Taurus specific parts here.

What are the minimum software requirements for sardana?

Sardana is developed under GNU/Linux, but should run also on Windows and OS-X. The dependencies for installing Sardana can be found here <LINK>.

How to configure the system?

Adding and configuring hardware items on an installation is described here <LINK>.

How to write your own Taurus schema?

Taurus is not dependent on Tango. Other control systems or just python modules can be interfaced to it by writing a schema. This approach is documented here <LINK> and a tutorial can be found here <LINK>

What are the interfaces to the macro server and the pool?

The low level interfaces to the Sardana Device Pool and the Macro server can be found here <LINK>.

What are the data file formats used in the system and how can I read them?

It is easily possible to add your own file format but the standard file formats are documented here:

  • The SPEC file format is documented here <LINK> and here is a list of tools to read it <LINK>

  • The EDF file format is documented here <LINK> and here is a list of tools to read it <LINK>

  • The NEXUS file format is documented here <LINK> and here is a list of tools to read it <LINK>

What is the file format of the configuration files?

The configuration files for the Taurus GUI are defined here <LINK>.

How to access EPICS from Sardana?

Hardware integrated in EPICS can be directly accessed from Sardana via a controller. The controller can talk to the EPICS server using the python EPICS interface or the Taurus interface to EPICS. The TaurusTimerCounterController class is distributed with sardana and allows the connection to any EPICS attribute giving the EPICS address as TaurusAttribute.

Which type of controller should I choose for integrating hardware that do not fit with any specific controller type?

Sardana controllers can be used for implementing some features that in principle do not fit with any kind of controller. In order to choose a controller class for the implementation, it is important to take into account some differences in the behaviour of the different type of controllers during an scan.

The main differences between CT, ZeroD and OneD/TwoD are:

1. The ZeroDController class is neither Startable nor Loadable, so the exposure time can not be given to the controller and no action can be performed at the start of the scan. CounterTimerController/OneDController/TwoDController classes are Startable and Loadable.

2. The output value of ZeroD and CT is continuously read during the scan (functions PreReadAll/PreReadOne/ReadAll/ReadOne of the controllers classes of these types are continuously called). OneD/TwoD read the value only at the end of the acquisition time. Slow actions (like readout of images or spectra for further calculations) in the readout functions of ZeroD and CT can affect considerably the scan performance.