150 likes | 158 Views
NICOS – IBEX Interactions. Dominic Oram – ISIS. NICOS – IBEX Interactions. Overview of IBEX Scripting in IBEX Evaluation of different script servers Integration of NICOS into IBEX Future Improvements. IBEX. New ISIS beamline control system
E N D
NICOS – IBEX Interactions Dominic Oram – ISIS
NICOS – IBEX Interactions • Overview of IBEX • Scripting in IBEX • Evaluation of different script servers • Integration of NICOS into IBEX • Future Improvements
IBEX • New ISIS beamline control system • Moves towards a more distributed, client/server architecture • Based on EPICS and CS-Studio • Run entirely on Windows • Now on 12/30 instruments
IBEX • IBEX has been fully functional control system for 3-4 years • Allows users to: • Configure which devices are on the beamline • Tag PVs to store in the NeXus file, set archive rates etc. on these • Set variables via CS-Studio OPIs or a scripting language • Begin/end data collection • Much more… • Work now focused on migrating new instruments and ‘would like to have’ features
Scripting Instrument Control in IBEX • Scripting is in Python (2.7) • In-house genie_python module allows instrument control • Scripting is done client side and communicates with the server via channel access • Run using pyDev in the GUI or as a standalone Python console
What do Users Want? • Accountability of who ran what when • Guarantee of what script is controlling the instrument • Be able to queue scripts overnight • A view of what line of a script is currently being run • The ability to pause/stop and edit scripts on the fly • Validation and time estimates of a script • More varied methods of creating scripts (drag-and-drop) • All this in the pre-existing IBEX client • Better separation of client and server (maybe more of a developer want)
SNS Scan Server Evaluation • Meets all user criteria • Java and Eclipse RCP based script server • Fixed set of commands that are hardcoded between client/server (or arbitrary Jython) • Easy to integrate UI • XML comms protocol
NICOS • Meets all user criteria • Python based back-end (easy to integrate genie_python) • Protocol is pickled python over sockets • Needed to write a new UI (in Java) and change protocol to better integrate with Java • Only need the daemon
First Integration Attempt - Proxy • Prototype - didn’t want to modify NICOS too much • Communicated with client using JSON over ActiveMQ queues (both already in use in IBEX) • Converted to pickled python for NICOS
A Better Integration Attempt • Met with FRM-II February 2017 • They modified NICOS to allow an option for JSON serialization over ZeroMQ • JSON and ZeroMQ have good Java support • Meant we could remove proxy and move forward with creating a prototype UI
Current Rollout Status • Have demoed functionality to about half of the IBEX users so far • NICOS is being rolled out to all IBEX instruments as we speak • Will be enabled as default but can turn it off at scientists request • Old scripting method is still available and will be for the foreseeable future • Will be gathering usage statistics and asking for feedback at the end of the month
What do Users Want? • Accountability of who ran what when • Guarantee of what script is controlling the instrument • Be able to queue scripts overnight • A view of what line of a script is currently being run • The ability to pause/stop and edit scripts on the fly • Validation and time estimates of a script • More varied methods of creating scripts (drag-and-drop) • All this in the pre-existing IBEX client • Better separation of client and server (maybe more of a developer want)
Things to do • Integrate better with NICOS repository • Improve authentication • Tie security into our EPICS security • Further UI improvements – code completion etc. • Implement dry run functionality into UI and genie_python • Think about how we want to interact with old style scripting • Minor feedback e.g. get name of current script • Look into using other NICOS features • Build a script generator that interacts with NICOS
Thank You Any Questions?