Tango Controls

Tango is an Open Source solution for SCADA (Supervisory Control and Data Acquisition) and DCS (Distributed Control Systems ).

Overview of Tango Controls

What is Tango Controls?

Tango Controls

Tango Controls is an object-oriented, distributed control system framework which defines a communication protocol, an Application Programmers Interface (API) and provides a set of tools and libraries to build software for control systems, especially SCADA.

Tango Controls has been designed to manage small and large systems.
It is built around concept of devices and device classes. This is unique feature of Tango Controls and make it different to other SCADA software which usually treats a controls system as a set of signals and read and write of process values.

Devices are created by device server. Device servers are processes implementing set of
device classes. Device classes implement a state machine, command (actions or methods),
pipes and attributes (data fields) for each class. Each device therefore has state, zero or more commands, zero or more pipes and zero or more attributes. Device classes are responsible for translating hardware communication protocols into Tango Controls communication. This way you may control and monitor all your equipment like motors, valves, oscilloscopes, etc. Device classes can be used to implement any algorithm or act as a mailbox to any other software program or system.

Each system has a centralised database which stores configuration data used at the initialisation of a device server, and acts as name server by storing
the dynamic network addresses. The database acts also as permanent store of dynamic settings which need to be memorised.

Each Tango Control system is identified by its Tango Host. A large system can be made up of tens of thousands or devices (the limit has not been reached yet) and there is no limit on the number of Tango Control systems running at the same time. The Tango protocol i.e. the API supports transparent access to devices from multiple systems.

Tango Controls communication protocol defines how all components of the system communicates with each other. Tango uses CORBA for synchronous communications and ZeroMQ for asynchronous communication. The detail of these protocols are hidden from the developer and user of Tango by the API and high level tools.

Tango Technologies

TANGO is based on the 21st century technologies :

  • CORBA and ZMQ to communicate between device server and clients
  • C++, Python and Java as reference programming languages
  • Linux, Windows and MacOS as operating systems
  • Modern object oriented design patterns
  • Naturally implements a microservices architecture
  • Unit tested, continuous integration enabled
  • Hosted on Gitlab (https://gitlab.com/tango-controls)
  • Extensive documentation + tools, large community

Tango Controls Community

Since the creation of Tango, over 40 small and large facilities (see http://www.tango-controls.org/partners/)
have adopted Tango for their control system.
Tango is now used to control not only accelerators but also experimental lasers (ELI),
wind tunnels (Onera), and most recently has been adopted by the world's largest
radio telescope observatory as its core control system (Square Kilometre Array Observatory (SKAO)).

Project Homepage

https://www.tango-controls.org/

Participating organisations

European Synchrotron Radiation Facility
Deutsches Elektronen-Synchrotron DESY

Output

Team

YM
Yury Matveyev
Deutsche Elektronen-Synchrotron DESY

Related software

cppTango

CP

Tango Distributed Control System - C++ library TANGO is an object-oriented distributed control system. In TANGO all objects are representations of devices, which can be on the same computer or distributed over a network. Communication between devices can be synchronous, asynchronous or event driven.

Updated 4 days ago
27 1

PyTango

PY

PyTango is a python module that exposes to Python the complete Tango C++ API. This means that you can write not only Tango applications (scripts, CLIs, GUIs) that access Tango device servers but also Tango device servers themselves, all of this in pure python.

Updated 4 days ago
1