TANGO

**Tango** (en inglés "TAco Next Generation Objects") é un sistema libre e aberto de control orientado a obxectos que ofrece ferramentas  para o control de calquera tipo de hardware e software nun sistema SCADA. O seu uso principal é o control de aceleradores de partículas tipo sincrotrón e dos experimentos levados a cabo neses aceleradores, pero tamén pode ser utilizado para outros experimentos científicos ou, en xeral, para calquera tipo de programa e/ou maquinaria, xa que se atopa en desenvolvemento activo por un consorcio composto por diversos institutos de investigación.

É un sistema distribuído de control que funciona tanto nunha máquina illada como sobre centos delas conectadas. Tango emprega dous protocolos de comunicación: omniorb, como implementación de CORBA como protocolo de rede, e Zeromq. A comunicación básica segue o modelo cliente-servidor. A comunicación entre clientes e servidores pode ser síncrona, asíncrona ou dirixida por eventos. Omniorb emprégase para a comunicación síncrona e asíncrona, mentres que Zeromq utilízase para a comunicación de eventos (dende a versión 8 de TANGO).

Está baseado no concepto de orientación a obxectos e orientado a servizo. O obxecto modelo soporta métodos, atributos e propiedades. Dentro de TANGO todos os obxectos veñen representados por dispositivos (devices).

## Servidores de dispositivos 
Tango emprégase como Middleware para proporcionar acceso remoto a maquinaria. Esta maquinaria pode ir dende bits dixitais de entrada/saída ata sofisticados sistemas de detección ou sistemas de control completos. O acceso á maquinaria prográmase a través dun proceso chamado *Servidor de dispositivos*. Este servidor de dispositivos pon en funcionamento clases de dispositivos que ó mesmo tempo permiten o acceso real  á máquina. En tempo de execución o servidor de dispositivos xera os dispositivos que son a representación lóxica das instancias hardware. O cliente importa os dispositivos, por medio dunha base de datos, e mándalles peticións usando o protocolo TANGO. Estes dispositivos poden almacenar valores de configuración nunha base de datos MySQL de forma permanente.

## Linguaxes soportadas 
TANGO ten soporte completo en tres linguaxes: C++, Python e Java.

## Desenvolvemento 
TANGO desenvólvese en aberto empregando subversion e a plataforma SourceForge e Github.

A librarías de TANGO libérase en dous lanzamentos e con dobre licenza libre: unha coa GPL e a LGPL. As ferramentas de servidores de dispositivos (agás que se especifique o contrario) atópanse baixo a licenza GPL.

## Consorcio 
Tango comezou como un proxecto xeral para controlar aceleradores e experimentación científica. O apoio da industria plasmouse nun consorcio de desenvolvemento aberto.

O consorcio é o grupo de institucións e empresas que participan activamente no desenvolvemento de TANGO. O obxectivo do consorcio é garantir o desenvolvemento de TANGO. No consorcio están algunhas como Petra III Synchrotron (Hamburgo, Alemaña), Fonte de neutróns FRMII (Múnic, Alemaña), sincrotrón ANKA (Karlsruhe, Alemaña), European Synchrotron Radiation Facility (Grenoble, Francia), Soleil Synchrotron (París, Francia), Alba Synchrotron, (Barcelona, España), Elettra Synchrotron (Trieste, Italia), Sincrotrón Solaris (Cracovia, Polonia), Sincrotrón MAX-lab (Lund, Suecia).

## Exemplos de uso 
Unha breve lista de proxectos que usan Tango (ademais dos que forman parte do consorcio):

# Prototipo C3 da European Mars Analog Station 
# As diagnoses do Laser_Mégajoule 
# O equipamento láser  CILEX_APOLLON
# A fonte compacta de luz ThomX 

## Notas
## Véxase tamén
### Bibliografía 
* 
* 

### Outros artigos
* EPICS—en inglés Experimental Physics and Industrial Control System (Sistema de control industrial e de experimentación física),
* SCADA—en inglés Supervisory Control And Data Acquisition (Control supervisor e adquisición de datos),

### Ligazóns externas 
* openSCADA - implementación en Java de código aberto.
* *TANGO - an object oriented control system based on CORBA*
* ICALEPCS 1999, Trieste (Italia)
* *TANGO a CORBA based Control System*
* ICALEPCS 2003, Gyeongju (Corea do Sur)
*TANGO papers presented at ICALEPCS 2009, Kobe (Xapón)
*TANGO papers presented at ICALEPCS 2011. Grenoble (Francia)