TANGO

Last updated
TANGO
Developer(s) TANGO Consortium
Initial releaseApril 19, 2001 (2001-04-19)
Stable release
9.3.4 / Sep 15, 2020
Repository
Operating system Cross-platform
License LGPLv3, GPLv3
Website TANGO website

The TANGO control system is a free open source device-oriented controls toolkit for controlling any kind of hardware or software and building SCADA systems. It is used for controlling synchrotrons, lasers, physics experiments in over 20 sites. It is being actively developed by a consortium of research institutes.

Contents

TANGO is a distributed control system. It runs on a single machine as well as hundreds of machines. TANGO uses two network protocols - the omniorb implementation of CORBA and Zeromq. The basic communication model is the client-server model. Communication between clients and servers can be synchronous, asynchronous or event driven. CORBA is used for synchronous and asynchronous communication and Zeromq is used for event-driven communication (since version 8 of TANGO).

TANGO is based on the concept of Devices. Devices implement object oriented and service oriented approaches to software architecture. The Device model in TANGO implements commands/methods, attributes / data fields and properties for configuring Devices. In TANGO all control objects are Devices.

Device Servers

All solutions in TANGO can be reduced to 3 processes TANGO 3 process.png
All solutions in TANGO can be reduced to 3 processes
TANGO uses hierarchies of devices to manage complexity simply TANGO hierarchy.png
TANGO uses hierarchies of devices to manage complexity simply

TANGO is a software for building control systems which need to provide network access to hardware. Hardware can range from single bits of digital input/output up to sophisticated detector systems or entire plant control systems (SCADAs). Hardware access is managed in a process called a Device Server. The Device Server contains Devices belonging to different Device Classes which implement the hardware access. At Device Server startup time Devices (instances of Device Classes) are created which then represent logical instances of hardware in the control system. Clients "import" the Devices via a database and send requests to the devices using TANGO. Devices can store configuration and setup values in a Mysql database permanently.

Hundreds of Device Classes have been written by the community.

TANGO manages complexity using hierarchies.

Bindings

TANGO supports bindings to the following languages :

 C, C++, Java, Python, MATLAB, LabVIEW, IGOR Pro 

Licensing

TANGO is distributed under 2 licenses. The libraries are licensed under the GNU Lesser General Public License (LGPLv3). Tools and device servers are (unless otherwise stated) under the GNU General Public License (GPLv3). The LGPL licence allows the TANGO libraries in products which are not GNU GPL.

Projects using TANGO

Some of the projects using TANGO (in addition to the consortium) :

  1. the diagnostics of the Laser Mégajoule

Consortium

The consortium is a group of institutes who are actively developing TANGO. To join the consortium an institute has to sign the Memorandum of Understanding [ dead link ] and actively commit resources to the development of TANGO. The consortium currently consists of the following institutes :

  1. ESRF - European Synchrotron Radiation Facility, Grenoble, France
  2. SOLEIL - Soleil Synchrotron, Paris, France
  3. ELETTRA - Elettra Synchrotron, Trieste, Italy
  4. ALBA - Alba Synchrotron, Barcelona, Spain
  5. DESY - PETRA III Synchrotron, Hamburg, Germany
  6. MAXIV - MAXIV Synchrotron, Lund, Sweden
  7. FRMII - FRMII neutron source, Munich, Germany
  8. SOLARIS - National Synchrotron Radiation Centre SOLARIS, Kraków, Poland
  9. ANKA - ANKA Synchrotron, Karlsruhe, Germany
  10. INAF - Istituto Nazionale di Astrofisica, IT

The goal of the consortium is to guarantee the development of TANGO.

See also

Related Research Articles

<span class="mw-page-title-main">Microkernel</span> Kernel that provides fewer services than a traditional kernel

In computer science, a microkernel is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms include low-level address space management, thread management, and inter-process communication (IPC).

In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space, which is written as if it were a normal (local) procedure call, without the programmer explicitly writing the details for the remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. This is a form of client–server interaction, typically implemented via a request–response message-passing system. In the object-oriented programming paradigm, RPCs are represented by remote method invocation (RMI). The RPC model implies a level of location transparency, namely that calling procedures are largely the same whether they are local or remote, but usually, they are not identical, so local calls can be distinguished from remote calls. Remote calls are usually orders of magnitude slower and less reliable than local calls, so distinguishing them is important.

<span class="mw-page-title-main">X Window System</span> Windowing system for bitmap displays on UNIX-like systems

The X Window System is a windowing system for bitmap displays, common on Unix-like operating systems.

The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) designed to facilitate the communication of systems that are deployed on diverse platforms. CORBA enables collaboration between systems on different operating systems, programming languages, and computing hardware. CORBA uses an object-oriented model although the systems that use the CORBA do not have to be object-oriented. CORBA is an example of the distributed object paradigm.

<span class="mw-page-title-main">Inter-process communication</span> How computer operating systems enable data sharing

In computer science, inter-process communication (IPC), also spelled interprocess communication, are the mechanisms provided by an operating system for processes to manage shared data. Typically, applications can use IPC, categorized as clients and servers, where the client requests data and the server responds to client requests. Many applications are both clients and servers, as commonly seen in distributed computing.

In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content. Group communication systems provide similar kinds of functionality.

Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple operating systems and network protocols. The middleware creates a distributed communications layer that insulates the application developer from the details of the various operating systems and network interfaces. APIs that extend across diverse platforms and networks are typically provided by MOM.

Open Platform Communications (OPC) is a series of standards and specifications for industrial telecommunication. They are based on Object Linking and Embedding (OLE) for process control. An industrial automation task force developed the original standard in 1996 under the name OLE for Process Control. OPC specifies the communication of real-time plant data between control devices from different manufacturers.

In computer science, message passing is a technique for invoking behavior on a computer. The invoking program sends a message to a process and relies on that process and its supporting infrastructure to then select and run some appropriate code. Message passing differs from conventional programming where a process, subroutine, or function is directly invoked by name. Message passing is key to some models of concurrency and object-oriented programming.

<span class="mw-page-title-main">EPICS</span> Software infrastructure for building distributed control systems

The Experimental Physics and Industrial Control System (EPICS) is a set of software tools and applications used to develop and implement distributed control systems to operate devices such as particle accelerators, telescopes and other large scientific facilities. The tools are designed to help develop systems which often feature large numbers of networked computers delivering control and feedback. They also provide SCADA capabilities.

An energy management system (EMS) is a system of computer-aided tools used by operators of electric utility grids to monitor, control, and optimize the performance of the generation or transmission system. Also, it can be used in small scale systems like microgrids.

In computer science, asynchronous I/O is a form of input/output processing that permits other processing to continue before the I/O operation has finished. A name used for asynchronous I/O in the Windows API is overlapped I/O.

Inter-Language Unification or ILU is a method for computer systems to exchange data, bridging differences in the way systems represent the various kinds of data. Even if two systems run on the same computer, or on identical computer hardware, many differences arise from the use of different computer languages to build the systems.

.NET Remoting is a Microsoft application programming interface (API) for interprocess communication released in 2002 with the 1.0 version of .NET Framework. It is one in a series of Microsoft technologies that began in 1990 with the first version of Object Linking and Embedding (OLE) for 16-bit Windows. Intermediate steps in the development of these technologies were Component Object Model (COM) released in 1993 and updated in 1995 as COM-95, Distributed Component Object Model (DCOM), released in 1997, and COM+ with its Microsoft Transaction Server (MTS), released in 2000. It is now superseded by Windows Communication Foundation (WCF), which is part of the .NET Framework 3.0.

<span class="mw-page-title-main">ChibiOS/RT</span> Real-time operating system

ChibiOS/RT is a compact and fast real-time operating system supporting multiple architectures and released under a mix of the GNU General Public License version 3 (GPL3) and the Apache License 2.0. It is developed by Giovanni Di Sirio.

EntireX DCOM is a commercial implementation of Microsoft's Distributed Component Object Model (DCOM) technology by Software AG for the Windows, AIX, HP/UX, Solaris, Linux, AS/400, z/OS, z/VM, and BS2000/OSD platforms.

<span class="mw-page-title-main">Unix</span> Family of computer operating systems

Unix is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others.

<span class="mw-page-title-main">API</span> Software interface between computer programs

An application programming interface (API) is a way for two or more computer programs or components to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation. Whereas a system's user interface dictates how its end-users interact with the system in question, its API dictates how to write code that takes advantage of that system's capabilities.

gRPC

Middleware is a type of computer software program that provides services to software applications beyond those available from the operating system. It can be described as "software glue".

References

Refer to the following publications on TANGO for more information :

  1. TANGO - an object oriented control system based on CORBA , ICALEPCS 1999, Trieste (Italy)
  2. TANGO a CORBA based Control System , ICALEPCS 2003, Gyeongju (Korea)
  3. Ubiquitous TANGO [ dead link ], ICALEPCS 2007 [ dead link ], Knoxville (USA)
  4. Future of TANGO , ICALEPCS 2007 [ dead link ], Knoxville (USA)
  5. TANGO papers presented at ICALEPCS 2009, Kobe (Japan)
  6. TANGO papers presented at ICALEPCS 2011. Grenoble (France)