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.

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

TSpaces Services Suite: Automating the Development and Management of Web Services Presenter: Kevin McCurley IBM Almaden Research Center Contact: Marcus.
15 th Annual Tcl/Tk Conference October 2008 Timothy L. Tomkinson Fellow Software Engineer Northrop Grumman Electronic Systems Remote Control of Test Equipment.
Java Script Session1 INTRODUCTION.
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
Software Frame Simulator (SFS) Technion CS Computer Communications Lab (236340) in cooperation with ECI telecom Uri Ferri & Ynon Cohen January 2007.
The road to reliable, autonomous distributed systems
Tango at Petra III Teresa Núñez Hasylab-DESY Tango Meeting ESRF,
Technical Architectures
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Software Frameworks for Acquisition and Control European PhD – 2009 Horácio Fernandes.
Functional Simulation Overview1 OpenTV PC Simulator.
Victor Serbo, SLAC30 September 2004, Interlaken, Switzerland JASSimApp plugin for JAS3: Interactive Geant4 GUI Serbo, Victor (SLAC) - presenter Donszelmann,
Course Instructor: Aisha Azeem
Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department.
1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Meir Botner David Ben-David. Project Goal Build a messenger that allows a customer to communicate with a service provider for a fee.
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
The ALMA Common Software: a developer friendly CORBA-based framework G.Chiozzi d, B.Jeram a, H.Sommer a, A.Caproni e, M.Pesko bc, M.Sekoranja b, K.Zagar.
Adaptability for flexible mobile service provision in 3G and beyond Nikos Houssos
Multimedia Teaching Tool SimArch V1.0 Faculty of Electronic Engineering University of Nis Serbia.
Dessy, 17 september 2007 Tango Meeting Development of Tango Client Applications in Python Tiago Coutinho and Josep Ribas.
© 2006 IBM Corporation IBM WebSphere Portlet Factory Architecture.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
TANGO on embedded devices: the Bimorph Mirror application case Fulvio Billè Roberto Borghes, Roberto Pugliese, Lawrence Iviani Instrumentation & Measurement.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Open Service Gateway Initiative (OSGi) Reporter : 林學灝 侯承育 1.
V. Serbo, SLAC ACAT03, 1-5 December 2003 Interactive GUI for Geant4 by Victor Serbo, SLAC.
Distributed Objects and Middleware. Sockets and Ports Source: G. Coulouris et al., Distributed Systems: Concepts and Design.
Technical Presentation
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
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,
CSS – Control System Studio
Petra III Status Teresa Núñez Hasylab-DESY Tango Meeting DESY,
5-Oct-051 Tango collaboration status ICALEPCS 2005 Geneva (October 2005)
S O A P ‘the protocol formerly known as Simple Object Access Protocol’ Team Pluto Bonnie, Brandon, George, Hojun.
QPE A Graphical Editor for Modeling using Queueing Petri Nets Christofer Dutz.
INFSO-RI Enabling Grids for E-sciencE Ganga 4 – The Ganga Evolution Andrew Maier.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
March 19th 2007 TANGO collaboration 1 POGO-7 Pascal Verdier ESRF- Hamburg - 25 th of October 2010 A Short History of Pogo A Short History of Pogo New Technology.
CSC 480 Software Engineering High Level Design. Topics Architectural Design Overview of Distributed Architectures User Interface Design Guidelines.
EGI Technical Forum Amsterdam, 16 September 2010 Sylvain Reynaud.
Instrument Control Systems Seminar 2014, 20 th -24 th October 2014 PLC Application Development with TwinCAT 3.1 D.Popovic, ESO/DoE/CSE/ICSSW.
Data Sharing Service Kiran Devaram Samatha Gangapuram Harish Maringanti Prashant Shanti Kumar Pradeep Tallogu.
GOVERNMENT OF ROMANIA Structural Instruments Sectoral Operational Programme „Increase of Economic Competitiveness” “Investments for Your Future”
Barthélémy von Haller CERN PH/AID For the ALICE Collaboration The ALICE data quality monitoring system.
CORBA Antonio Vasquez, John Shelton, Nidia, Ruben.
Tango - Icalepcs 2009 ESRF. E Taurel - Icalepcs TANGO kernel status and evolution Brief introduction What's new since Icalepcs 2007 New projects.
1 30 th Tango collaboration meeting, June 2016 SPYC Project : CLI and scripting solution on top of Tango SPYC project : Command Line Interface and.
Re Write POGO using openArchitectureWare Technology ● Pogo History ● OpenArchitectureWare technology ● Generated code ● Project status.
Tango Collaboration Meeting May 13 th 2009Sardana Status Report Sardana Status Report Tango Collaboration Meeting May 13 th, 2009 Tiago Coutinho - ALBA.
Databases and DBMSs Todd S. Bacastow January 2005.
Object Oriented Programming in
Overview of TANGO Control system
Device Pool Status Report TANGO Collaboration Meeting April 17, 2008
Data Transport for Online & Offline Processing
Software Engineering Architectural Design Chapter 6 Dr.Doaa Sami
Tau: PyQT GUI for Tango TANGO Collaboration Meeting April 18, 2008
CMPE419 Mobile Application Development
Ch > 28.4.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Data, Databases, and DBMSs
Tango in a Nutshell 31/12/2018.
INTEGRATING THE SKA-MPI DISH INTO MEERKAT
Java Analysis Studio - Status
CMPE419 Mobile Application Development
TANGO from an EPICS perspective
Presentation transcript:

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 Coutinho - ALBA

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Agenda What is Sardana Guidelines Structure Sardana and other systems Adding new features Examples Current state Future

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Runtime add/update of new SW features Enables creation of lightweight, platform rich client interfaces: Java/ATK IPython PyQT C++/QT,C++/MFC etc Efficient, reliable, time consistent information feedback to the user Easy creation and deployment of new SW features What is Sardana? A software system for instrument control and data acquisition Client-server architecture Event driven architecture Plug-in architecture Scriptable Multi-user Open source Where have I heard this before?

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Guidelines Long lifetime usage Core is HW independent →HW specific code written as plug-ins Performance →Minimize HW calls

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Sardana Configuration API Sardana Structure Motors / Pseudo Motors MCAs Motor Groups Counters / Pseudo counters LibController LibPseudo Motor Lib … Configuration Tool Client Applications.SO CCDs Measurement Groups Controllers HW ETH GPIB CAN TANGO Device Server Remote PC... HW Remote PC SPEC HW

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Sardana / SPEC SardanaSPEC Core code (C++ Tango Device – called Pool) C code SardanaConfig tooledconf pseudo motors constraints* in python macro motors calc motors macro hooks in ‘SPEC’ language IPython CLISPEC prompt / executable Extra Server*Macros, Data files, Plot * not yet implemented

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Sardana / Tango Abstract classes SardanaAbstract classes As much code as possible ↓ interface & generic behavior No code ↓ Just interface Adapter design pattern (aka Wrapper) Union design pattern (inheritance & polimorphism) Evolution is foreseen Entire problem is well known Dynamic interfacesStatic interface

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Adding new features Controllers (motor, counter, MCA, CCD, etc.) Pseudo Motors Pseudo Counters Constraints Languages: –Python –C++ (only for controllers)

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Write a new motor controller topBlade beam Blade 1 Blade 2 bottomBlade gap offset Sardana dummy ctrl01 Motor Controller Lib topBlade bottomBlade Config Interface 1.Get the motor controller skeleton 2.Change it to your needs 3.Put it in the right place 4.Create an instance of the controller 5.Create motors 6.Enjoy class MotorControllerSkeleton(MotorController): """Insert your motor controller description here""" ctrl_extra_attributes = { # insert your extra features here } ctrl_features = [ # insert features supported by your controller here ] def __init__(self,inst,props): MotorController.__init__(self,inst,props) def PreStartAll(self): pass def PreStartOne(self,axis,pos): return True def StartOne(self,axis,pos): pass def StartAll(self): pass. class MotorControllerSkeleton(MotorController): """Insert your motor controller description here""" ctrl_extra_attributes = { # insert your extra features here } ctrl_features = [ # insert features supported by your controller here ] def __init__(self,inst,props): MotorController.__init__(self,inst,props) def PreStartAll(self): pass def PreStartOne(self,axis,pos): return True def StartOne(self,axis,pos): pass def StartAll(self): pass. IDLE : Motor Controller Skeleton.py Example class FirePapController(MotorController): ""“An IcePap controller for Sardana""" ctrl_extra_attributes = { } ctrl_features = [‘Encoder','Backlash'] def __init__(self,inst,props): MotorController.__init__(self,inst,props) self.socket_connected = False def PreStartAll(self): pass def PreStartOne(self,axis,pos): return True def StartOne(self,axis,pos): self.GOAbsolute(axis,pos) def StartAll(self): pass. class FirePapController(MotorController): ""“An IcePap controller for Sardana""" ctrl_extra_attributes = { } ctrl_features = [‘Encoder','Backlash'] def __init__(self,inst,props): MotorController.__init__(self,inst,props) self.socket_connected = False def PreStartAll(self): pass def PreStartOne(self,axis,pos): return True def StartOne(self,axis,pos): self.GOAbsolute(axis,pos) def StartAll(self): pass. IDLE : FirePapCtrl.py

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Write a new pseudo motor topBlade beam Blade 1 Blade 2 bottomBlade gap offset Sardana dummy ctrl01 Pseudo Motor Lib topBlade bottomBlade Config Interface 1.Get the pseudo motor skeleton 2.Change it to your needs 3.Put it in the right place 4.Create an instance of it 5.Enjoy class PseudoMotorSkeleton(PseudoMotor): """Insert your pseudo motor system description here""" pseudo_motor_roles = () motor_roles = () class_prop = { # insert your properties here } def calc_physical(self,index,pseudo_pos): # insert your code here pass def calc_pseudo(self,index,physical_pos): # insert your code here pass class PseudoMotorSkeleton(PseudoMotor): """Insert your pseudo motor system description here""" pseudo_motor_roles = () motor_roles = () class_prop = { # insert your properties here } def calc_physical(self,index,pseudo_pos): # insert your code here pass def calc_pseudo(self,index,physical_pos): # insert your code here pass IDLE : Pseudo Motor Skeleton.py class Slit(PseudoMotor): """A Slit pseudo motor system for controlling gap and offset pseudo motors""" pseudo_motor_roles = ("Gap", "Offset") motor_roles = ("sl2t", "sl2b") class_prop = { 'a_string' : { 'Description' : 'string property example', 'Type' : 'PyTango.DevString', 'DefaultValue' : 'something to print' } } def calc_physical(self,index,pseudo_pos): print self.a_string half_gap = pseudo_pos[0]/2.0 if index == 0: return raw_offset – half_gap else: return raw_offset + 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 class Slit(PseudoMotor): """A Slit pseudo motor system for controlling gap and offset pseudo motors""" pseudo_motor_roles = ("Gap", "Offset") motor_roles = ("sl2t", "sl2b") class_prop = { 'a_string' : { 'Description' : 'string property example', 'Type' : 'PyTango.DevString', 'DefaultValue' : 'something to print' } } def calc_physical(self,index,pseudo_pos): print self.a_string half_gap = pseudo_pos[0]/2.0 if index == 0: return raw_offset – half_gap else: return raw_offset + 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 IDLE : Slit.py gap offset Example # ipython Welcome to the IPython Sardana CLI SPEC emulator 1.ISardana> wa Current Positions (user, dial) topBlade bottomBlade gap50.00 offset ISardana> mv gap 10 3.ISardana> wa Current Positions (user, dial) topBlade bottomBlade gap10.00 offset ISardana> # ipython Welcome to the IPython Sardana CLI SPEC emulator 1.ISardana> wa Current Positions (user, dial) topBlade bottomBlade gap50.00 offset ISardana> mv gap 10 3.ISardana> wa Current Positions (user, dial) topBlade bottomBlade gap10.00 offset ISardana> IPython By the way: This is a 300 line of code example!

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007

Current state Server –Multi-threaded Pool core –Motor Controller –Motor –Pseudo Motor –Motor Group –Counter Controller* –Counter, Timer* Client –IPython (not up to date) –Java ATK configuration (up to date) Simulators –Motor Controller –Counter Controller Motor Controllers: –IcePap *Early development stage

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Future data acquisition –counter –timer –pseudo counter –multimeter –MCA –CCD –data storage –... scan operations data acquisition simulator geometry library safety –static pre-conditions –dynamic limit check –... IPython client GUI Plotting Macros windows platform SPEC interaction …

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Thank you for your time Questions

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Nice Features # ipython Welcome to the IPython Sardana CLI SPEC emulator 1.ISardana> wa Current Positions (user, dial) topBlade bottomBlade gap50.00 offset ISardana> mv gap 10 3.ISardana> # ipython Welcome to the IPython Sardana CLI SPEC emulator 1.ISardana> wa Current Positions (user, dial) topBlade bottomBlade gap50.00 offset ISardana> mv gap 10 3.ISardana> IPython Sardana Add/modify features without havingAdd/modify features without having restart the server Multiple clientsMultiple clients Copy/paste beamlineCopy/paste beamlineconfigurations

The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 Sardana Layer CORBA Sardana Tango motors, counters, scans, procedures, data files IPythonATK SPEC BLISSFramework Network Abstraction Layer Devices, commands, attributes, properties CLI user interface