Intended audience: all

Tango Controls

Tango Controls is an object oriented, distributed control system framework which defines communication protocol and API as well as provides a set of tools and libraries to build software for control systems, especially SCADA.

Tango Core

Tango Core is a set of main tools, libraries and specifications of the Tango Controls framework. It consists of libraries and API definitions for C++, Java and Python as well as tools to manage the system: Astor, Jive, etc.


It is an abbreviation standing for Supervisory Control and Data Acquisition.

device server

A Device Server is a program (executable) which is able to create devices of certain classes. A Device Server may implement one or multiple classes and instantiate one or more devices. A running device server is called a device server instance.

device server instance

A running device server is called a device server instance. So it means, it is a process. Every device server instance has an unique name in Tango Controls by which it can be referenced. The name is built as {DeviceServerName}/{instanceName}. For each running device server the system creates a special device of DServer class: dserver/{DeviceServerName}/{instanceName}. This device provides a management facility for the corresponding device server instance (see DServer class device commands).

device class

A Device Class is an abstraction of a device’s interface. It defines attributes, pipes, commands and properties which a device of the class provides to users and to other components of a Tango system. A device class ofter relates to a specific kind of equipment it allows to interface with like a SerialLine class defines interface to communicate with serial line equipment.


A device is a key concept of Tango Controls. It is an object providing access to its attributes, pipes and commands. The list of attributes, pipes and commands available for a certain device is defined by its device class. The device may be related to a hardware device it interfaces with or it may be a kind of a logical device providing some functionalities not directly related to hardware.


An attribute represents a process value (or values) in the system. It may have different formats or dimensions like scalar(0D), spectrum(1D) or image(2D). The attribute allows to read and/or write these values depending on programmer-defined access. The values may have different data types. In addition, an attribute provides some metadata like attribute quality, timestamp or configuration properties. For a complete list please refer to the manual. A list of attributes available for a certain device is defined by its class.

attribute quality

A value returned by an attribute has a runtime quality facotr which is an enumeration describing the state of the read value (one of VALID, INVALID, ALARM, CHANGING, WARNING).

dynamic attribute

A device may create attributes which configration is determined during device initialization or even at runtime. This kind of attributes is called dynamic.


A command is an operation a user may invoke on a device (eg. SwitchOn, SwitchOff). It also relates to a specific method in OOP (Object-Oriented Programming). Tango Controls allows a command to get input argument (argin) and to return a value (argout). List of available commands for a certain device is defined by its device class.


A pipe allows to read and/or write a structured data from and/or to a device. The data may be built out of several basic Tango datatypes. The structure of data is defined by a device class and is not fixed. It may be changed at runtime by the device itself or modified upon request from a client according to set_pipe_config operation provided by pipe. List of pipes available for a device is defined by its device class.

device state

A device may be in a certain state determined at runtime. State of a device may reflect state of a piece of equipment it interfaces with or be determined in other way. The behaviour is defined by the device class which implements a state machine. The state may define attributes’, commands’ and pipes’ operations available at the moment. Tango Controls limits a set of states the device may be in to 14: ON, OFF, CLOSE, OPEN, INSERT, EXTRACT, MOVING, STANDBY, FAULT, INIT, RUNNING, ALARM, DISABLE, and UNKNOWN.

state machine

A state machine for a device class defines operations (commands’, attributes’ and pipes’ access) available in different states of a device.

Tango Host

Each Tango Controls system/deployment has to have at least one running DataBaseds device server. The machine on which DataBaseds device server is running has a role of a so called Tango Host. DataBaseds is a device server providing configuration information to all other components of the system as well as a runtime catalog of the components/devices. It allows (among other things) client applications to find devices in distributed environment.

Tango Database

A database providing configuration and some runtime information about Tango Controls components in so called Tango System instance or deployment. It is used by Databaseds device server and constitutes Tango Host.


A configuration parameter stored in the Tango Database. Properties can be assigned to a device class, device or elements of device interface (attributes, commands, pipes). Properties can be also not related to device - such properties are called free properties. Property values are often used by elements of Tango Controls system during its startup. These usually provides information required to configure things like connections to hardware or to adjust to user preferences.