# TANGO

TANGO (en inglés "TAco Next Generation Objects") es un sistema de control libre y abierto de control orientado a objetos, que ofrece herramientas para el control que cualquier tipo de hardware y software, que constituye un sistema SCADA. Su uso principal es el control de aceleradores de partículas tipo sincrotrón, pero también otros experimentos científicos y, en general, puede ser utilizado en cualquier tipo de programa y/o maquinaria ya que se encuentre en desarrollo activo por el consorcio, compuesto por diversos institutos de investigación.
Es un sistema distribuido de control. Funciona tanto en una máquina aislada como sobre centenares de ellas conectadas. Tango utiliza dos protocolos de comunicación: omniorb como implementació de CORBA como protocolo de red y también Zeromq. La comunicación básica sigue el modelo cliente-servidor. Así como la comunicación entre clientes y servidores puede ser síncrona, asíncrona o dirigida por eventos. CORBA se utiliza para la comunicación síncrona y asíncrona, mientras que Zeromq se utiliza para la comunicación de eventos (desde la versión 8 de TANGO).
Está basado en el concepto de orientación a objetos y orientado a servicio. El objeto modelos soporta métodos, atributos y propiedades. Dentro de TANGO todos los objetos vienen representados por dispositivos (devices).

## Servidores de dispositivos

Se usa como Middleware para proporcionar acceso remoto a maquinaria. La respuesta de esta maquinaria puede resultar sencilla con unos bits digitales de entrada/salida hasta sofisticados sistemas de detección o completos sistemas de control. El acceso a la maquinaria se programa a través de un proceso llamado Servidor de dispositivos. Este servidor de dispositivos implementa clases de dispositivos que a la vez implementan el acceso real a la máquina. En tiempo de ejecución el servidor de dispositivos genera los dispositivos que son la representación lógica de las instancias hardware. El cliente importa los dispositivos, por vía una base de datos, y les envía peticiones usando el protocolo TANGO. Estos dispositivos pueden almacenar valores de configuración en una base de datos MySQL de forma permanente.

## Lenguajes soportados

* C
* C++
* Java
* Python
* MATLAB
* LabVIEW
* Igorpro

## Licencia

Se distribuye bajo dos licencias. Las librerías se encuentran bajo la licencia GNU pública general menor o LGPL. Las herramientas y servidores de dispositivos (salvo manifestación expresa) se encuentran bajo licencia GNU pública general o GPL.

## Código Abierto

Es un proyecto de código abierto. Cualquiera que quiera puede descargarse y usar TANGO. El código fuente se encuentra guardado en dos repositorios de subversion en SourceForge.
* código fuente del núcleo
* código fuente de servidores
Se pueden realizar cambios locales o correcciones de errores sobre los ficheros fuente, pero el envío de cambios al repositorio requiere autorización.

## Proyectos que usan TANGO

Una breve lista de proyectos que usan Tango (además de los que forman parte del consorcio):
* C3 Prototype Archivado el 2 de febrero de 2014 en Wayback Machine. de la European Mars Analog Station
* Los diagnósticos del Laser_Mégajoule Archivado el 30 de julio de 2013 en Wayback Machine.
* El equipamiento laser CILEX_APOLLON
* La fuente compacta de luz ThomX

## Consorcio

El consorcio es el grupo de instituciones que participan activamente en el desarrollo de TANGO. Para entrar a formar parte, una institución debe firmar el memorándo de comprensión (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). y activamente enviar contribuciones al desarrollo. Actualmente el consorcio lo forman las siguientes instituciones:
* ESRF - European Synchrotron Radiation Facility, Grenoble, Francia
* SOLEIL - SOLEIL, París, Francia
* ELETTRA - Elettra Synchrotron, Trieste, Italia
* ALBA - ALBA, Barcelona, España
* DESY - PETRA III, Hamburgo, Alemania
* MAX-lab - sincrotrón MAX-lab, Lund, Suecia
* FRMII - Fuente de neutrones FRMII, Munich, Alemania
* Solaris - Sincrotrón Solaris, Cracovia, Polonia
* ANKA - sincrotrón ANKA, Karlsruhe, Alemania
El objectivo del consorcio es garantizar el desarrollo de TANGO.