130 likes | 230 Views
Explore the journey of XAL at SNS, from its origins and guiding principles to what worked and what didn't. Discover the development process, key decisions, challenges faced, successful strategies, and collaborative efforts that shaped the accelerator control system. Reflect on the evolution of XAL and its impact on accelerator physicist programmers, application GUI framework, scripting, online model, database utilization, and more.
E N D
A Brief History of XAL at SNS - What went right / wrong J. Galambos XAL Workshop at the 2007 EPICS / ICALEPS meeting Knoxville TN.
XAL – The Origins Guiding Principles: • Wanted an Accelerator Hierarchy • Hide the control system from the developer • A single point accelerator configuration • “Online” beam model Excuses: • Had a hard deadline – beam commissioning • Really did not understand much about control systems and accelerators in the beginning – good thing we did not write detailed requirements More-or-less right
XAL – The Origins • Circa 1999 – Started worrying about “Application Programs” • Had a workshop to evaluate options • SDDS, Cdev, UAL, FORTRAN examples • Database! • Need an internal “champion” • 2000 • Evaluated the SDDS, Cdev • Started populating database • 2001 • Started collaboration with UAL which morphed into XAL
Accelerator Hierarchy being defined Basic Architecture of the model Notes from June 14, 2001
History II Spring 2002: Test XAL app in control room at ORNL – MEBT at LBNL • 2002 – wrote first few apps, virtual accelerator, scripting, commissioned the Front End at ORNL • 2003: Application Framework, 10 apps, commissioned DTL1 • 2004: commissioned DTL – CCL, too many apps
2003 2002 2004 2006 2005 Front-End DTL/CCL SCL DTL Tank 1 Ring DTL Tanks 1-3 Target Commissioning Schedule – Staged Approach - Useful • SNS was an entirely new facility – “green-field” • Staged commissioning approach with early deployment gave XAL development time to test approaches and adjust afterwards. This was critical.
What Did Not Work • Keep it pure • Almost all applications have SNS specific idiosyncrasies • Some of the Node implementations have idiosyncrasies (e.g. wire-scanner) • Driven in large part by schedule • Parts written by physicists (e.g. me) • Documentation • apologies
What Worked • Database • Absolutely recommend to any new project for all the usual database reasons • Also use it for measured data • Accelerator hierarchy / hide the control system • Allows for transparent code • Opened the door for neophyte physicist programmers + generic apps
Odds & Ends – Right Choices • Online model: • Need it to unravel beam observations • Same model - entire accelerator – generic apps • Same model - different data sources (design, machine, pv-logger) • Separate “view” than the device “view” • Virtual Accelerator • Debug apps before beam time – good for neophyte real-time programmers to learn with • Java • Never want to go back to C++ • GUI, Swing, database connectivity, ~ no memory leaks • Speed no problem for us
Save/open app setup Error logging Html help Toolbar for common actions Accelerator navigating What Worked • The “Application GUI Framework” • A common starting point to create new apps • Good for neophyte physicist programmers • Good for neophyte physicist commissioners
What Worked • Accelerator Physicist Programmers • Good for writing apps – 1 person responsible for making a beam commissioning activity happen • Bad for infrastructure development • Also need good software developers for this (which we were fortunate to have)
What Worked • Scripting • Absolute necessity for commissioning • Good for algorithm testing (and examples) • Java makes this very easy (no glue code). Trivial python / XAL interface. • Good for high level studies, but you need a robust control system (MPS) to protect equipment
Collaboration • Success and Failures • XAL was born from a failed collaboration with UAL • Our lack of precise requirements made collaboration non-trivial • The online model was developed at LANL, and used during commissioning at ORNL • At SNS there was a tremendous amount of “internal collaboration” • Need to trust each other and share components