Part of GNAO’s1 ”one button” approach to control requires the ability of scripting and automating a number of our high-level actions, in a way that provides repeatable and seamless operation, and error recovery without requiring the user’s input beyond the initial command. In order to achieve all these we focused on an automation solution that allowed us enough flexibility to implement our goals, without compromising the integration with the rest of our framework. Our final candidate was BNL’s Bluesky2 which covered most of our needs, was written in Python, and open-sourced, which led to its adoption as the core of our high-level command sequencing software. In order to integrate Bluesky into our framework we’ve expanded on it, including custom Ophyd components to talk to our internal database (Redis,3 instead of default EPICS4), and a number of modifications to concurrently monitor and control our commands. We present our choice for the core sequencing component and the modifications that we implemented on top of it, as well as the challenges that we faced and lessons learned.
|