1 / 15

NICOS – IBEX Interactions

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

ddoug
Download Presentation

NICOS – IBEX Interactions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NICOS – IBEX Interactions Dominic Oram – ISIS

  2. NICOS – IBEX Interactions • Overview of IBEX • Scripting in IBEX • Evaluation of different script servers • Integration of NICOS into IBEX • Future Improvements

  3. 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

  4. 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

  5. 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

  6. 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)

  7. 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

  8. 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

  9. 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

  10. 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

  11. Demo of Current Functionality

  12. 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

  13. 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)

  14. 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

  15. Thank You Any Questions?

More Related