Course description

Title: TANGO: a popular system for controlling large scale high-tech research facilities
Title (Hungarian): TANGO: egy elterjedt rendszer kutatási nagyberendezések vezérlésére
Language: English
Neptun: IMEN003E-00003

Description: This course introduces the TANGO control system that is
widely used in large research facilities such as ESRF, Alba, Desy,
Soleil and in the C3 Prototype of the European Mars Analog Station. The
large research facility ELI-ALPS to be built in Szeged will also use
TANGO for experiment control. Students participating in the course will
learn the background, basic principles and architecture of TANGO and
they will obtain advanced knowledge in connection with cyber-physical
systems. In particular, they will learn how to implement new tools (e.g.
clients and device servers) using the TANGO API and environments tested
on microcontroller-based small physical devices.

Level: MSc

Schedule: 2 hours per week (Thursday, 11:00-12:30)

Location: IR227

Teacher: Dr. Hegedűs, Péter

Course material: here

Contact e-mail:

Exam: a home project OR presentation of a particular TANGO related topic OR written test at the end of the semester


  • History, background and basic principles of TANGO
  • High level architecture: device servers, database, clients
  • Basic tools (Astor, Jive, ATK) and example Tango programs
  • Introduction to the TANGO API
  • Commands and attributes
  • Implementing a TANGO client (events, groups, data types)
  • Implementing a device server using TANGO (startup, device pattern, logging, communication)
  • Advanced TANGO implementation techniques
  • Introduction to TANGO user environments
  • Usage of supplementary tools


Possible projects
You can implement the projects in any of the supported languages (C++, Python or Java).
Ideas for projects:

  1. Create a TANGO device that wraps an arbitrary web-service into a DeviceServer. The device should translate REST queries into TANGO commands and attributes. E.g. if you wrap a geo coordinate translateor web-service, you should have a command with an input of two double coordinate values and an output of a string, the name of the geographical name of the place. Some possible web-services to wrap:
  2. Create a TANGO device that wraps the Linux syslog. Use the syslog to get log entries of the system and map it to TANGO device commands and attributes.
  3. Create a TANGO device that wraps some statistical software package, like R or Octave.
  4. Create a TANGO device that wraps some real hardware of your machine, like a mouse, webcam or ethernet card.