How much control do you
need to dance TANGO?
Juande Santander-Vela
SDP/TM Element Systems Engineer
TANGO: SCADA for SKA
SCADA: Supervisory Control And Data Acquisition
TANGO: TAco Next Generation Object-oriented
(control system)
➥ TACO: Telescope and Accelerator Control Objects
Not that foreign
to astronomy!
TACO @ Hartebeesthoek Radio
Astronomy Observatory
Why TANGO for SKA?
Need for a common control middleware across the SKA
Need for industrial-strength SCADA
Open Source, very large, vibrant community
Some experience in astronomy: TANGO is TACO++
Preferred to ALMA Common Software & EPICS
Very successful in
synchrotron world
How do you TANGO?
The TANGO Control System Manual
Version 9.2
The TANGO Control System Manual
Version 9.2
RTFM!
Looks easy!
Tango & Control
There’s a leader
There’s a follower
Tango & Control
Inputs (follower)
• Torso orientation
• Distance between chests
• Centre of gravity
• Pressure on the back
• Distance to other dancers
• …

Outputs (follower)
• Leg movement
• Arm movement
• Hip position
• Centre of gravity
Needs constant
attention
Refined with
experience
TANGO & Control
There’s a leader → Device Client
There’s a follower → Device Server
additional information to send on the wire, TANGO version control etc. These details can and should be
wrapped in TANGO Application Programmer Interface (API). The API is implemented as a library in C++
and as a package in Java. The API is what makes TANGO clients easy to write. The API’s consists the
following basic classes :
• DeviceProxy which is a proxy to the real device
• DeviceData to encapsulate data send/receive from/to device via commands
• DeviceAttribute to encapsulate data send/receive from/to device via attributes
• Group which is a proxy to a group of devices
In addition to these main classes, many other classes allows a full interface to TANGO features. The
following figure is a drawing of a typical client/server application using TANGO.
Client
Database
TANGO
TANGO
ServerTANGO
Cmd Attrib
CORBA
attrib
CORBA
opera
API
API
Devices
CORBA
CORBACORBA
OK for one couple
What about ballrooms?
Control Strategy: Startup, Dance, Stop
Distributed,
autonomous
control
What about systems?
Leaders are many times followers of other leaders
(military hierarchy)
Anyone could be a follower of anyone (swarms)
Strategy allows for clear decision and action at the
different levels
Think
hierarchically
These are
modes!
(of the dancers)
Or are they
attributes?
A TANGO Device Server
Device server
Instance Name
State
Attribute_1
Attribute_2
Attribute_3
Attribute_4
Command_1
Command_2
Command_3
Class-dependent
Think
hierarchically
A TANGO Device Server
Device server
Instance Name
State
Attribute_1
Attribute_2
Attribute_3
Attribute_4
Command_1
Command_2
Command_3
Think inheritance
Class-dependent
A TANGO Hierarchy
Device1 Device2 Device3 Device4
A TANGO Hierarchy
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
A TANGO Hierarchy
TEL-
MGT
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
A TANGO Hierarchy
TEL-
MGT
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
A TANGO Hierarchy
TEL-
MGT
Client1
Client2
Client3
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
A TANGO Hierarchy
Client1
Client2
Client3
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
A TANGO Hierarchy
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
Generic
Client
This is the
power of TANGO
A TANGO Hierarchy
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
Generic
Client
A TANGO Hierarchy
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
Generic
Client
A TANGO Hierarchy
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
Generic
Client
Generic
Client
Each one
for each
specialist
A TANGO Hierarchy
TEL-
MGT
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
A TANGO Hierarchy
Proxy1
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
Proxy2
Device
Server4
Device
Server3
Device5 Device6 Device7 Device8
TEL-
MGT
A TANGO Hierarchy
Proxy1
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
Proxy2
Device
Server4
Device
Server3
Device5 Device6 Device7 Device8
TEL-
MGT
DB
A TANGO Hierarchy
Proxy1
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
Proxy2
Device
Server4
Device
Server3
Device5 Device6 Device7 Device8
TEL-
MGT
DB
DB
A TANGO Hierarchy
Proxy1
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
Proxy2
Device
Server4
Device
Server3
Device5 Device6 Device7 Device8
TEL-
MGT
DB
DB
Can be
scaled
easily
A TANGO Hierarchy
Proxy1
Device
Server1
Device
Server2
Device1 Device2 Device3 Device4
DB
Proxy2
Device
Server4
Device
Server3
Device5 Device6 Device7 Device8
TEL-
MGT
DB
DB
Allows for
bottom-up
building
Not talking about…
Commonality of attributes (LMC harmonisation)
Having similar interfaces for similar devices
(inheritance, device libraries, software harmonisation)
Archiving and logging
Time-stamping
Synchronous vs. asynchronous
And many others,
included in TANGO
How much control do you need
to dance TANGO?
Ability to keep track of own status (state, attributes),
and perform “moves” (commands)
Ability to measure attributes in others (read attributes)
Signal others what is going to happen (write
attributes), ask directly (command)
Let others define the higher-level of control
TANGO rules are embedded throughout
Thank you!
Questions?
TANGO & SKA

How much control do you need to dance TANGO?