The Sardana device pool A strange “future” demonstration A Talk given by and at the Hamburger Tango Meeting 17/18 th September 2010 Authors: Emmanuel Taurel,

Slides:



Advertisements
Similar presentations
Network II.5 simulator ..
Advertisements

Touchsquid Technology Inc. Setting up the TouchSquid Remote App.
Microsoft Virtualization Last Update Copyright 2011 Kenneth M. Chipps Ph.D.
Software Frame Simulator (SFS) Technion CS Computer Communications Lab (236340) in cooperation with ECI telecom Uri Ferri & Ynon Cohen January 2007.
Multi Instruments Data Acquisition Software Evolution
Advanced Workgroup System. Printer Admin Utility Monitors printers over IP networks Views Sharp and non-Sharp SNMP Devices Provided Standard with Sharp.
VxWorks Real-Time Kernel Connectivity
Tango at Petra III Teresa Núñez Hasylab-DESY Tango Meeting ESRF,
Calendar Browser is a groupware used for booking all kinds of resources within an organization. Calendar Browser is installed on a file server and in a.
Two main requirements: 1. Implementation Inspection policies (scheduling algorithms) that will extand the current AutoSched software : Taking to account.
Software Frameworks for Acquisition and Control European PhD – 2009 Horácio Fernandes.
 Monday, 9/30/02, Slide #1 CS106 Introduction to CS1 Monday, 9/30/02  QUESTIONS (on HW02, etc.)??  Today: Libraries, program design  More on Functions!
Palletizing the Easy Way
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
Proxy Design Pattern Source: Design Patterns – Elements of Reusable Object- Oriented Software; Gamma, et. al.
DEMONSTRATION FOR SIGMA DATA ACQUISITION MODULES Tempatron Ltd Data Measurements Division Darwin Close Reading RG2 0TB UK T : +44 (0) F :
Concordia University Department of Computer Science and Software Engineering Click to edit Master title style ADVANCED PROGRAMING PRACTICES API documentation.
TrendReader Standard 2 This generation of TrendReader Standard software utilizes the more familiar Windows format (“tree”) views of functions and file.
Arc: Programming Options Dr Andy Evans. Programming ArcGIS ArcGIS: Most popular commercial GIS. Out of the box functionality good, but occasionally: You.
Starting Chapter 4 Starting. 1 Course Outline* Covered in first half until Dr. Li takes over. JAVA and OO: Review what is Object Oriented Programming.
6/1/2001 Supplementing Aleph Reports Using The Crystal Reports Web Component Server Presented by Bob Gerrity Head.
WorkPlace Pro Utilities.
The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 The Sardana device pool for SPEC lovers BLISS Seminar January 15, 2007 Tiago.
M i SMob i S Mob i Store - Mobile i nternet File Storage Platform Chetna Kaur.
Dessy, 17 september 2007 Tango Meeting Development of Tango Client Applications in Python Tiago Coutinho and Josep Ribas.
Upgrade to Real Time Linux Target: A MATLAB-Based Graphical Control Environment Thesis Defense by Hai Xu CLEMSON U N I V E R S I T Y Department of Electrical.
Chapter 2: Operating-System Structures. 2.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Jan 14, 2005 Operating System.
Module 7: Fundamentals of Administering Windows Server 2008.
JavaDoc1 JavaDoc DEPARTMENT OF COMPUTER SCIENCE AND SOFTWARE ENGINEERING CONCORDIA UNIVERSITY July 24, 2006 by Emil Vassev & Joey Paquet revision 1.2 –
Software Development Software Testing. Testing Definitions There are many tests going under various names. The following is a general list to get a feel.
Interfaces to External EDA Tools Debussy Denali SWIFT™ Course 12.
V. Serbo, SLAC ACAT03, 1-5 December 2003 Interactive GUI for Geant4 by Victor Serbo, SLAC.
Tool Integration with Data and Computation Grid GWE - “Grid Wizard Enterprise”
Challenges in KeyStone Workshop Getting Ready for Hawking, Moonshot and Edison.
"Witness of a new dancer". 14 October TANGO at ALBA Alba team: Presented by DFC. Witness of a new dancer.
Slide: 1 ICEPAP ICEPAP Software Status Presented by Manuel Perez Member of BLISS group.
Petra III Status Teresa Núñez Hasylab-DESY Tango Meeting DESY,
The EDGeS project receives Community research funding 1 Porting Applications to the EDGeS Infrastructure A comparison of the available methods, APIs, and.
INFSO-RI Enabling Grids for E-sciencE Ganga 4 – The Ganga Evolution Andrew Maier.
Online Simulation Creation Wizard Introduction to Project
EPICS to TANGO Translator Rok Šabjan on behalf of Rok Štefanič Presented at ICALEPCS, Knoxville, October.
Source Controller software Ianos Schmidt The University of Iowa.
Réunion Contrôle Expérience 28/03/ Experiments Controls Vision, ideas, tasks to begin with … Alain Buteau Andy Götz.
1 FESA architecture v.1.0 Framework Configuration & Data-entry Tool 5 th December 2003.
TDAQ Experience in the BNL Liquid Argon Calorimeter Test Facility Denis Oliveira Damazio (BNL), George Redlinger (BNL).
FlowLevel Client, server & elements monitoring and controlling system Message Include End Dial Start.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
1 G4UIRoot Isidro González ALICE ROOT /10/2002.
windows
111 State Management Beginning ASP.NET in C# and VB Chapter 4 Pages
Fermilab Scientific Computing Division Fermi National Accelerator Laboratory, Batavia, Illinois, USA. Off-the-Shelf Hardware and Software DAQ Performance.
“This improved a lot since I started using Tango (three years ago) from scratch so I'm happy to see the efforts from the developers. Still there is room.
Tango Collaboration Meeting May 13 th 2009Sardana Status Report Sardana Status Report Tango Collaboration Meeting May 13 th, 2009 Tiago Coutinho - ALBA.
Windows Communication Foundation and Web Services
Operations Machine Simulator.
The BLISS Framework 4.
Advanced Programing practices
Intro CS – Screens and Variables
The software side of the moon
Device Pool Status Report TANGO Collaboration Meeting April 17, 2008
NUUO Tools Welcome to NUUO general education service. This session allows users to have the overview of NUUO tools for system design. (Click)
PyBAR Firmware Structure and Operation Experience
Controlling a large CPU farm using industrial tools
Tau: PyQT GUI for Tango TANGO Collaboration Meeting April 18, 2008
The BLISS Framework 4.
Functions CIS 40 – Introduction to Programming in Python
Windows Communication Foundation and Web Services
Advanced Programing practices
Web AppBuilder for ArcGIS
LO4 – New This Year and Find Out More
Presentation transcript:

The Sardana device pool A strange “future” demonstration A Talk given by and at the Hamburger Tango Meeting 17/18 th September 2010 Authors: Emmanuel Taurel, Alejandro Homs, Vicente Rey, Pep Ribas, and more Jörg Klora Tiago Coutinho

Hamburger Tango Meeting 18/9/2007 Get an overview about the flow of the demonstration to come Our Sardana “Demonstration” Get the sardana system and install it on this PC Add some hardware: –Two motors –A counter, multimeter, and a communication channel –Pseudo motor gap and offset Use the CLI (and understand the role of the macro server) Write your own macro Look at a motor controller code Understand pseudo motor code

Hamburger Tango Meeting 18/9/2007 Introduce the different roles of the users of the sardana pool Installation Back to the future Main Screen Back to the future Main Screen

Hamburger Tango Meeting 18/9/2007 Understand the different roles to not confuse the changing viewpoints throughout the demonstration POINTS Different roles: –Developer of the core system (few) –Developer of add-ons (many) –Software support –Expert users –End user

Hamburger Tango Meeting 18/9/2007 See how easy it is to install the whole system from scratch Prepare for installation Prepare for Installation Result Prepare for Installation Result

Hamburger Tango Meeting 18/9/2007 Make the points about the need for easy installation POINTS Special care for easy installation on a single PC or in a complicated beamline scenario All necessary packages will be downloaded – otherwise there are too many dependencies!

Hamburger Tango Meeting 18/9/2007 Start to add hardware to an empty system to see the system from the point of view of the technician Add two motors Add motors

Hamburger Tango Meeting 18/9/2007 Use the generic configuration GUI as a mean to understand the underlying server Historical Movie from 2007

Hamburger Tango Meeting 18/9/2007 Explain the details of the configuration GUI and the server to clearly see the difference Behind the scenes Sardana Device Pool Pool Device sup sdown POOL> wa POOL> mv th 2.3 POOL> Controller Huber Controller Huber

Hamburger Tango Meeting 18/9/2007 See the result of our efforts from the role of the end user of the CLI CLI demo IPython

Hamburger Tango Meeting 18/9/2007 Make the points to clearly explain what the functionallity of the Sardana pool is POINTS Standard tango device are created Different hardware will always produce the same standard motor device A specific client has only knowledge about the simple motor devices not the pool device Multi clients because of use of events (as far as possible with current version of TANGO!!) The motor interface is for high level access – think of it as the user commands (mv, set, setdial …) in SPEC

Hamburger Tango Meeting 18/9/2007 Add more hardware to see who powerful the system already is Add more hardware Add a counter, multimeter and measurement groupAdd a counter, multimeter and measurement group

Hamburger Tango Meeting 18/9/2007 Add a counter controller with the low level generic configuration GUI Create counter controller

Hamburger Tango Meeting 18/9/2007 Add the well known 3 standard channels to compare the concepts with existing solutions Create counter channels sec mon det

Hamburger Tango Meeting 18/9/2007 Add an integrating electrometer to see that standard macro solution are already included Add pico ampermeter channel

Hamburger Tango Meeting 18/9/2007 Introduce the concept of a measurement group even with the GUI for didactic purposes Create measure ment group

Hamburger Tango Meeting 18/9/2007 Further explain the pool POINTS High performance core (C++, python) The pool knows about motors, counters, and lots of other devices and provides a simple, standard and unique interface to them The pool synchronizes the measurement, minimizes hardware access and allows different users to use the hardware together The pool is a client software where the standard interface has been replaced by a series of TANGO devices

Hamburger Tango Meeting 18/9/2007 Demonstrate the actions so far from the users point of view CLI demo IPython IPython with scanning and more hardware

Hamburger Tango Meeting 18/9/2007 Explain the macro server and its relation to a command line interface Macro Server Behind the scenes – CLI and Macros Sardana Device Pool Pool Device sup sdown POOL> wa POOL> mv th 2.3 POOL> Controller Jorg Mymv Door Macro mymv sup sdown Pool Device Macro Device Pool Device

Hamburger Tango Meeting 18/9/2007 Write a simple macro to understand the concept of a macro and the distinction to python functions Write a macro Create new macro file

Hamburger Tango Meeting 18/9/2007 Explain the edit process and show how the internal processes are hidden from the macro programmer Behind the scenes – Editing Macros POOL> wa POOL> mv th 2.3 POOL> POOL> wa POOL> mv th 2.3 POOL> Mymv Sardana Device Pool sup sdown Controller Huber Pool Device CVS Server Macro Server Door sup sdown Macro Device Door Step 1 When a client starts it gets the macro list with its arguments from the server Step 2 A new macro file is created from the template Step 3 The macro is sent to the CVS Server and the Macro Server is informed Step 4 The macro file is loaded from the CVS Server and into memory Step 5 An event is sent with the new macro list Mymv

Hamburger Tango Meeting 18/9/2007 Make the points about the macro server and the edit process POINTS Macros are global to all clients of the macro server The internal structure is hidden from the user (i.e. CVS) Macros are commands in the CLI (i.e. wa mv) The current threading model is that macros are serialized Every client uses at least one “mostly private” door

Hamburger Tango Meeting 18/9/2007 Explain the simple macro to understand further what a macro is Move macro class mymv(Macro): """Move motor to position""" param_def = [ ['motor', Type.Motor, None, 'Motor to move'], ['pos', Type.Float, None, 'Position to move to'] ] def run(self, motor, pos): motor.startMove(pos) motor.waitMove() POINT 1 A macro is a class which inherits from Macro POINT 2 A macro has a description of itself and its parameters POINT 3 A macro has a method run which will be started in a separate thread

Hamburger Tango Meeting 18/9/2007 Hint on many more advanced points in the macro server we have no time to treat here Macros A macro is a class which inherits from Macro A macro has a description of itself and its parameters A macro has a method run which will be started in a separate thread The macro server knows also about: –Macros i.e. macros call macros –Parameters i.e. add new type of parameters –Output through logging framework i.e. wa –Dataflow with different file formats and online plotting

Hamburger Tango Meeting 18/9/2007 Show the controller code to allow to grasp the concept of device specific plug-ins Write a controller edit a motor controller

Hamburger Tango Meeting 18/9/2007 Insist on the very well defined structure of a controller and the supervisor role of the pool Controller Code start_one state_one prestart_one start_all abort_one Serial line channel Features (i.e. backlash) …. Extra Parameters Extra Attributes

Hamburger Tango Meeting 18/9/2007 Repeat the important points of the controller and try to make the distinction to device servers POINTS Controllers are easy to write and include only code specific the device (i.e. no backlash capacity in the controller and the pool will simulate this feature) One can not write an “incompatible” controller Maximum performance through minimum number of hardware calls (i.e. if move multiple exists it will be used) Controllers can talk to the hardware by communication channels or device servers

Hamburger Tango Meeting 18/9/2007 Explain communication channels to access devices in a simple, configurable and controlled way Use our controller Add the communication channel to the hardwareAdd the communication channel to the hardware

Hamburger Tango Meeting 18/9/2007 Insist on the points before with the generic configuration GUI Creation of a commun ication channel

Hamburger Tango Meeting 18/9/2007 Explain pseudo motor as advanced plug-ins for this common functionality Pseudo Motors are an example of specialized plug-ins (pseudo counters, constraints, file formats, logging destinations, …..)

Hamburger Tango Meeting 18/9/2007 Show how easy it is to define the pseudo motors even in the very generic configuration GUI Create pseudo motor slit

Hamburger Tango Meeting 18/9/2007 Explain in detail the pseudo motor code to proof how simple it is to add to the system Pseudo controller code from PseudoMotorController import PseudoMotorController class Slit(PseudoMotorController): """A Slit pseudo motor system “”” gender, model, organisation = "Pseudo motor“, "Slit“, "CELLS - ALBA" image, logo = "slit.png“, "ALBA_logo.png" pseudo_motor_roles = ("Gap", "Offset") motor_roles = (“top blade", "bottom blade") class_prop = { ‘resolution' : { 'Description' : ‘The encoder resolution', 'Type' : 'PyTango.DevFloat, ‘DefaultValue' : 1.0 }, } def calc_physical(self,index,pseudo_pos): half_gap = pseudo_pos[0]/2.0 if index == 0: return pseudo_pos[1] - half_gap else: return pseudo_pos[1] + half_gap def calc_pseudo(self,index,physical_pos): if index == 0: return physical_pos[1] - physical_pos[0] else: return (physical_pos[0] + physical_pos[1])/2.0 from PseudoMotorController import PseudoMotorController class Slit(PseudoMotorController): """A Slit pseudo motor system “”” gender, model, organisation = "Pseudo motor“, "Slit“, "CELLS - ALBA" image, logo = "slit.png“, "ALBA_logo.png" pseudo_motor_roles = ("Gap", "Offset") motor_roles = ("top blade", "bottom blade") class_prop = { ‘resolution' : { 'Description' : ‘The encoder resolution', 'Type' : 'PyTango.DevFloat, ‘DefaultValue' : 1.0 }, } def calc_physical(self,index,pseudo_pos): half_gap = pseudo_pos[0]/2.0 if index == 0: return pseudo_pos[1] - half_gap else: return pseudo_pos[1] + half_gap def calc_pseudo(self,index,physical_pos): if index == 0: return physical_pos[1] - physical_pos[0] else: return (physical_pos[0] + physical_pos[1])/2.0 A class inheriting from PseudoMotorControllerSome information i.e. for GUI beautificationThe roles of the real and pseudo motorsA method to calculate real positions from pseudoA method to calculate pseudo positions from realSome extra properties

Hamburger Tango Meeting 18/9/2007 Further insist on the points of specific plug-ins POINTS Pseudo motors are generic to the system and not inside a specific client Very simple to write all the details are taken care of by the pool (events when finished, update intervals, ….) Specific plug-ins for specific purpose..

Hamburger Tango Meeting 18/9/2007 Make it clear that we are talking about the hidden part of the iceberg less supported by our users The most important is …

Hamburger Tango Meeting 18/9/2007 Give a short overview about the current status Old Problems (from 2007) Still too unstable (pre alpha) Some features missing MCA, CCD, hkl Ease of installation and use not there yet Older problems: –TANGO Events are too specific and not adapted for these type of IPC –Tango Servers in Python were not possible

Hamburger Tango Meeting 18/9/2007 Resume in "one" sentence and cry for help Conclusion Machine and Experiments need a generic client (i.e currently SPEC and Middle Layer) The device pool aims to be this tool – A generic client in the center of data acquisition and control The client can be “easily” adapted to other synchrotrons with all kind of plug-ins PLEASE HELP