the device pool tango collaboration meeting september 5, 6 2006
DESCRIPTION
The Device Pool TANGO Collaboration Meeting September 5, 6 2006. Tiago Coutinho - ALBA. Agenda. Problem One Solution: Device Pool Guidelines Device Pool Structure Example use case. Problem. How to control the experiment? Without caring for the HW specifics - PowerPoint PPT PresentationTRANSCRIPT
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
1.Problem2.One Solution: Device Pool3.Guidelines4.Device Pool Structure5.Example use case
TANGO Collaboration Meeting. September 5, 6 2006
ProblemExperiment Room
Control Room
?...
CCDsMCAs
Counters
Motor Controllers
•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
Runtime add/update of new SW featuresEnables 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
A solutionA software system for instrument control A software system for instrument control
and data acquisitionand data acquisition• Distributed• Client-server network architecture• Event driven architecture• Plug-in architecture• Scriptable• Multi-user• Open source
We called it Device PoolWe called it Device Pool
•Allowing remote user access. •The right SW component in the right place•Easy to add/replace components
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
PoolPool
Configuration API
Device Pool Structure
MotorMotor
Pseudo MotorPseudo Motor
Motor GroupMotor Group
CounterCounter
ControllerController
LibController
LibPseudo Motor
Lib…
HWConfigurationTool
ClientApplications
.SO.SO
TANGO Collaboration Meeting. September 5, 6 2006
Example use caseScenario
motor 1
beam
Blade 1
Blade 2
motor 2
gap
offset
•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)•…
TANGO Collaboration Meeting. September 5, 6 2006
Usage time• Read/Move gap• Read/Move offset• Read/Move gap and offset• Loop (scan):
Move offsetRead data
• …
Pool
Example use case”Pipeline”
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
GapGap
move
read
move
read
Motor 1Motor 1
Motor 2Motor 2
MotorGroupMotorGroup
MotorController
MotorController
HW
Pseudo MotorLib
OffsetOffset
ClientApplication
TANGO Collaboration Meeting. September 5, 6 2006
Example use caseread operation sequence
Gap MotorGroup
read
Motor 1 Motor 2
read
read
PseudoController
PythonObject
read
calc_pseudocalc_pseudo
motorpos1
motorpos2motorpos1&2
gapgap
TANGO Collaboration Meeting. September 5, 6 2006
Example use casecalculate pseudo position
double pos
Pseudo MotorPseudo Motor
Python PseudoCalc
Python PseudoCalc
double posm
double pos1
double pos2
.
.
.
m
Motorm
Motor1
Motor2
.
.
.
m
“Pseudo” motor position
“physical” motor context
“physical” motor positions
pk
p1
p2
.
.
.
k
[in]: m “physical” motor positions n last known “pseudo” motor positions[out]: n “pseudo” motor positions
Parameters
calc_pseudocalc_pseudo
TANGO Collaboration Meeting. September 5, 6 2006
Example use casemove operation sequence
Gap MotorGroup
read
Motor 1 Motor 2
read
read
PseudoController
PythonObject
move(new gap)
calc_all_pseudocalc_pseudo
motorpos1
motorpos2motorpos1&2
gap & offsetcalc_pseudo
replace(gap, new gap)calc_all_physical
calc_physical
calc_physicalmotorpos1&2
move
TANGO Collaboration Meeting. September 5, 6 2006
Example use casemove pseudo motor
double pos
Pseudo MotorPseudo Motor
Python PseudoCalc
Python PseudoCalc
Motorm
Motor1
Motor2
.
.
.
m
“Pseudo” motor position
“physical” motor context
pk
p1
p2
.
.
.
k
Parameters
[in]: n “pseudo” motor positions m last known “physical” motor positions[out]: m “physical” motor positions double posm
double pos1
double pos2
.
.
.
m
Last known “physical”motor positions
calc_physicalcalc_physical
double posm
double pos1
double pos2
.
.
.
m“physical”motor positions
TANGO Collaboration Meeting. September 5, 6 2006
Thank you• Jörg Klora [email protected]
• David Fernández [email protected]
• Randolf Butzbach [email protected]
• Emmanuel Taurel [email protected]
• Tiago Coutinho [email protected]