130 likes | 146 Views
This software solution offers efficient instrument control and data acquisition with a distributed, event-driven, and plug-in architecture. It enables easy deployment of new features, lightweight interfaces, and reliable user feedback. Guidelines include user-level abstraction, robust operations handling, and runtime plug-in availability. The system allows users to control experiment configurations without hardware specifics and expert programming skills.
E N D
TANGO Collaboration Meeting. September 5, 6 2006 The Device PoolTANGO Collaboration Meeting September 5, 6 2006 Tiago Coutinho - ALBA
TANGO Collaboration Meeting. September 5, 6 2006 Agenda • Problem • One Solution: Device Pool • Guidelines • Device Pool Structure • Example use case
TANGO Collaboration Meeting. September 5, 6 2006 Problem • How to control the experiment? • Without caring for the HW specifics • Using customized coordinate systems • Receiving constant reliable feedback • How to collect data? • In multiple formats • Automated way • How to configure new experiments? • Without having to switch the on/off button • Without being an expert SW developer • How to share configurations with different BMs? Control Room Experiment Room Motor Controllers ? . . . Counters MCAs CCDs
TANGO Collaboration Meeting. September 5, 6 2006 A solution A software system for instrument control and data acquisition • Distributed • Client-server network architecture • Event driven architecture • Plug-in architecture • Scriptable • Multi-user • Open source • Allowing remote user access. • The right SW component in the right place • Easy to add/replace components 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 We called it Device Pool
TANGO Collaboration Meeting. September 5, 6 2006 Guidelines • User level abstraction • Simple client side applications • Notification based • Robust • Performance critical set of operations • Best effort approach to handle error scenarios • Script extensions • Runtime availability of new installed plug-ins • Code to handle specific HW should not be built in the system • Multiple user configurations
TANGO Collaboration Meeting. September 5, 6 2006 Configuration Tool Pool Configuration API Client Applications .SO Device Pool Structure HW Motor Pseudo Motor Controller Motor Group Counter Pseudo Motor Lib Controller Lib Lib …
TANGO Collaboration Meeting. September 5, 6 2006 beam motor 1 Blade 1 offset gap Blade 2 motor 2 Example use caseScenario • User doesn’t want to know about motors • 1 and 2 • He just wants to control de gap and offset • Move both at the same time • Change gap maintaining a constant offset • Change offset maintaining a constant gap • Abort movement • Control more than one motor at the same time • Provide a gap and offset motor interface • Feedback gap and offset state/status changes • Security • Prevent blades from intersecting the beam • Prevent blades from crushing to each other • Prevent blades from crushing other obstacles (ex: walls) • …
Usage time Read/Move gap Read/Move offset Read/Move gap and offset Loop (scan): Move offset Read data … Configuration time Write python/.so controller Create controller in DP Crete Motor 1 and Motor 2 in the DP Write python Pseudo Motor controller Create Gap/Offset Pseudo Motor in the DP TANGO Collaboration Meeting. September 5, 6 2006 Client Application Example use case”Pipeline” move Pool Gap Motor 1 read Motor Group Motor Controller HW move Offset Motor 2 read Pseudo Motor Lib
TANGO Collaboration Meeting. September 5, 6 2006 Example use caseread operation sequence Gap Motor Group Motor 1 Motor 2 Pseudo Controller Python Object read read read motorpos1 read motorpos2 motorpos1&2 calc_pseudo calc_pseudo gap gap
TANGO Collaboration Meeting. September 5, 6 2006 Example use casecalculate pseudo position [in]: m “physical” motor positions n last known “pseudo” motor positions [out]: n “pseudo” motor positions “Pseudo” motor position double pos Parameters “physical” motor context Pseudo Motor p1 Motor1 Python Pseudo Calc p2 Motor2 k m . . . . . . pk Motorm double pos1 double pos2 m . . . double posm calc_pseudo “physical” motor positions
TANGO Collaboration Meeting. September 5, 6 2006 Example use casemove operation sequence Gap Motor Group Motor 1 Motor 2 Pseudo Controller Python Object move(new gap) read read motorpos1 read motorpos2 motorpos1&2 calc_all_pseudo calc_pseudo calc_pseudo gap & offset replace(gap, new gap) calc_all_physical calc_physical calc_physical motorpos1&2 move
TANGO Collaboration Meeting. September 5, 6 2006 Example use casemove pseudo motor Last known “physical” motor positions double pos1 double pos2 m [in]: n “pseudo” motor positions m last known “physical” motor positions [out]: m “physical” motor positions . . . “Pseudo” motor position double posm double pos Parameters “physical” motor context Pseudo Motor p1 Motor1 Python Pseudo Calc p2 Motor2 k m . . . . . . pk Motorm double pos1 calc_physical double pos2 m “physical” motor positions . . . double posm
TANGO Collaboration Meeting. September 5, 6 2006 Thank you • Jörg Klora jorg.klora@cells.es • David Fernández dfernandez@cells.es • Randolf Butzbach rbutzbach@cells.es • Emmanuel Taurel etaurel@cells.es • Tiago Coutinho tcoutinho@cells.es