230 likes | 527 Views
Tango collaboration status. ICALEPCS 2005 Geneva (October 2005). Tango collaboration status. Introduction What is Tango ? What is new since ICALEPCS 2003 ? Some words on the Tango event system Day to day life within the Tango collaboration. Introduction.
E N D
Tango collaboration status ICALEPCS 2005 Geneva (October 2005)
Tango collaboration status • Introduction • What is Tango ? • What is new since ICALEPCS 2003 ? • Some words on the Tango event system • Day to day life within the Tango collaboration
Introduction • Control system user needs always increase • Writing a full featured control system is a huge task • How one institute can develop a control system? • With limited man power and budget • In a reasonable time frame • The answer is • Create or join a multi institutes collaboration
Introduction • Tango is an example of such a collaboration including 4 institutes • ALBA • New Spanish synchrotron in Barcelona (Talk on Tuesday) • ELETTRA • Italian synchrotron in Trieste (Talk on Monday) • ESRF • European synchrotron in Grenoble (France) • SOLEIL • New French synchrotron in Paris (Talk on Thursday)
What is Tango ? • It is a distributed object oriented control system • It supports two languages (C++ and Java) and 3 OS (Linux, Solaris and Windows) • It uses CORBA for network communication • omniORB in C++ and JacORB in Java • It is a free software available from ESRF web site as • Source distribution (For UNIX like OS) • Windows binaries package
What is Tango ? • Every controlled equipment is a device belonging to a class and supporting commands (action) and attributes (data) • Tango classes are merged within process called “device server” • Each device server process has a thread and a data cache to speed-up response time in case of a slow device.
What is Tango ? • Tango has a API supporting three kinds of communication between client and server • Synchronously • Asynchronously • Using event
What is Tango ? • It comes with a set of graphical tools to : • Generate code (Pogo) • Viewing, filtering Tango device log messages (LogViewer) • Administrating a complete control system (Astor) • Viewing/Updating its database and low level device testing (Jive)
What is Tango ? • Tango has a Java GUI called ATK (Talk on Friday) • It supports bindings to commonly used commercial products • Matlab, LabView and Igor • Another binding allows client code to be written using Python language
Developments since 2003 • Tango kernel (ESRF / SOLEIL / ELETTRA) • Windows binary distribution • Events system • Group interface • Better way to code Tango device attribute • Tango archiving service (SOLEIL) based on MySQL or ORACLE
Developments since 2003 • To support new kernel features and to add their own new features, major updates of : • The Java graphical toolkit (ATK) supporting events (ESRF) • The Python binding also supporting events (ELETTRA) • The LabView and Matlab bindings which were updated recently (SOLEIL) • But also improvements of the other tools (Pogo, Jive, Astor….)
Projects started since 2003 • A WEB access to Tango device and to the Tango history database (ELETTRA) • A C++ Graphical User Interface based on Qt (ELETTRA) • A Tango alarm system (ELETTRA) • A talk this afternoon • Tango device server using Python language (ALBA)
Projects started since 2003 • Many, many new Tango classes to interface new hardware (All institutes) • Instrumentation Technology Libera beam position monitor, EPICS link, LabView data socket interface, Fire Wire camera, ADLink boards interface, GPIB interface, miscellaneous power supply or vacuum equipment interface…..
The Tango event system • A device server process thread dedicated to polling detects the event and inform clients which have subscribed to this specific event • Event propagation between device server and clients as well as filtering features are implemented using CORBA notification service • omniNotify implementation • Heartbeats detect device server or client death
The Tango event system • Tango supports events only on attributes • Five types of events • Change event • The “change” definition is defined at the device attribute level • Attribute quality factor change event • Periodic event • The period is also defined at the device attribute level • Archive event • A mix of periodic and change event • User event
Tango collaboration • In 2002, SOLEIL joined the ESRF to develop Tango • In January 2004, machine control team of ELETTRA decided to use and develop Tango • In December 2004, ALBA also joins us • An official collaboration agreement is signed by institutes management
Tango collaboration • Two or three Tango collaboration meetings organized every year • To take design decisions • To follow-up action plan • Hosted by each institute in a round-robin manner • One Tango coordinator in each institute • A mailing list dedicated to Tango problems, question and sharing (tango@esrf.fr)
Tango collaboration • Developing software within the collaboration • A complete sub-system is assigned to one institute (Archiving service developed by SOLEIL) • Sub-system developed by one institute is taken charge by another one (Python binding from SOLEIL to ELETTRA) • Sub-system development shared by two institutes at the same time (some kernel feature added by ESRF/ELETTRA) • Need CVS server
Tango collaboration • Sharing software and information • Two projects have been created on SourceForge to share sources using their CVS servers • Tango-cs dedicated to Tango kernel source • Tango-ds dedicated to Tango classes source • As soon as a new Tango class is registered in CVS repositories, a mail is sent on the mailing list • More than 200 Tango classes are now publicly available from collaborating institutes WEB pages
Tango collaboration • Increasing collaboration using software pattern • Tango uses computing language supporting the interface notion (C++ abstract class or Java interface) • Tango supports device abstract classes to define a common interface for a family of devices (All Power Supplies have ON, OFF, RESET commands….) • One application developed using interface defined via abstract classes can be shared between institutes whatever the concrete classes are • A poster (first session) was dedicated to this issue
Tango collaboration • What we share • Tango kernel • Tango classes (for similar hardware) • Bindings • What we don’t completely share • Graphical User Interface • ESRF uses pure ATK (Java), SOLEIL uses a scada system above ATK (Java), Elettra uses C++ graphical user interface. ALBA has not chosen yet
Conclusion • Thanks to the collaboration, Tango is now a mature control system • Most of the basic features for modern control system are now implemented • 200 Tango classes available • Even if collaboration is sometimes heavy (fixing meeting dates….), it is the only way to have this level of features and a large classes catalog within reasonable delay and limited man power