0fa9a15c17b08485c9e5071bcde46f1e.ppt
- Количество слайдов: 13
TANGO Collaboration Meeting. September 5, 6 2006 The Device Pool TANGO Collaboration Meeting September 5, 6 2006 Tiago Coutinho - ALBA
TANGO Collaboration Meeting. September 5, 6 2006 Agenda 1. Problem 2. One Solution: Device Pool 3. Guidelines 4. Device Pool Structure 5. Example use case
TANGO Collaboration Meeting. September 5, 6 2006 Problem Control Room ? Experiment Room Motor Controllers Counters MCAs CCDs . . . • 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?
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 • Allowingcreation of of Easy creation and Efficient, remote time Enables reliable, user Runtime add/update access. features SW deployment consistent of new lightweight, platform rich new SW information • The right to the user features feedback SW component client interfaces: in the right place • Java/ATK • Easy to add/replace IPython components • Py. QT • C++/QT, C++/MFC • etc 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 Device Pool Structure Configuration Tool Pool HW Configuration API Motor Pseudo Motor Client Applications Controller Motor Group Counter . SO Pseudo Motor Lib Controller Lib … Lib
TANGO Collaboration Meeting. September 5, 6 2006 Example use case Scenario • 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 motor 1 Blade 1 beam offset gap Blade 2 • 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) • … motor 2
TANGO Collaboration Meeting. September 5, 6 2006 Example use case ”Pipeline” move read Client Application Gap move read Offset Motor 1 Motor Group Motor 2 Motor Controller Pseudo Motor Lib Pool 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 Usage time • Read/Move gap • Read/Move offset • Read/Move gap and offset • Loop (scan): Move offset Read data • … HW
TANGO Collaboration Meeting. September 5, 6 2006 Example use case read operation sequence Motor Group Gap read motorpos 1&2 Motor 1 Pseudo Controller Python Object read motorpos 1 read motorpos 2 calc_pseudo gap Motor 2 gap calc_pseudo
TANGO Collaboration Meeting. September 5, 6 2006 Example use calculate pseudo position [in]: m “physical” motor positions n last known “pseudo” motor positions [out]: n “pseudo” motor positions double pos “Pseudo” motor position Parameters k p 1 p 2. . . “physical” motor context Motor 1 Motor 2 Python Pseudo Calc . . . pk Motorm Pseudo Motor double pos 1 double pos 2. . . calc_pseudo m double posm “physical” motor positions m
TANGO Collaboration Meeting. September 5, 6 2006 Example use case move operation sequence Motor Group Gap move(new gap) read motorpos 1&2 Motor 1 Motor 2 Python Object read motorpos 1 read motorpos 2 calc_all_pseudo gap & offset replace(gap, new gap) calc_all_physical move Pseudo Controller motorpos 1&2 calc_pseudo calc_physical
TANGO Collaboration Meeting. September 5, 6 2006 Example use case move pseudo motor double pos 1 double pos 2 [in]: n “pseudo” motor positions m last known “physical” motor positions [out]: m “physical” motor positions . . . “Pseudo” motor position k . . . “physical” motor context Motor 1 Motor 2 Python Pseudo Calc . . . pk Motorm Pseudo Motor calc_physical m double pos Parameters p 1 p 2 Last known “physical” motor positions double pos 1 double pos 2. . . double posm m m
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
0fa9a15c17b08485c9e5071bcde46f1e.ppt