Thank-you to everyone who contributed to and participated in the EPICS Spring Collaboration Meeting 2021.
The meeting itself was a virtual event due to COVID-19, and was run using Whova and Zoom. This site is being used for long-term accessibility of presentation materials and videos recorded during the Meeting.
Bluesky is a collection of Python libraries co-developed by a multi-facility collaboration to enable high-level experiment orchestration and data acquisition. It has growing adoption at facilities around the world. Bluesky is designed to leverage and interact with existing libraries and software in the scientific Python ecosystem. The various components of Bluesky may be used together, as a full suite, or independently, to handle specific aspects of the data collection pipeline.
This interactive presentation will provide a broad overview of the Bluesky suite, its structure and philosophy, and the purpose and function of each of its components.
Ophyd is a Python library which abstracts EPICS controls and encapsulates them behind a high-level, object-oriented interface. This enables interaction with hardware from Python in a structured, hierarchical and uniform fashion. Ophyd is part of the Bluesky software suite but may be used independently.
This interactive presentation will demonstrate how to use Ophyd to interact with EPICS-driven devices, and how to create new Ophyd wrappers for previously unsupported devices.
An introduction to the concepts of EPICS.
We would like to show you a simple installation of a small experiment. The idea here is to get as simple as possible to a Data acquisition so that the start in the EPICS world is easy.
The individual steps are:
Install all needed support modules via a script.
Download freely available drivers and IOCs from the internet, e.g. Eurotherm2k.
Get an own IOC up and running.
EPICS Tutorial with VM.
Placeholder
The CLS was announced in 1999. This is a brief description of the EPICS controls when it first started in operation to the present day.
For many years, StreamDevice is one of the most used and successful EPICS device supports, mainly because of its flexibility. But development has slowed down a bit. Does that mean, there is nothing more to do? Several recent modifications came from the EPICS community, mainly related to error message handling. What is needed for the future?
Wrapping of functions to be called from iocsh
requires writing a significant amount of boiler-plate code. We present a set of C++ templates which automates this tedious task and let the user wrap and register simple functions in a single line.
In more complex cases the templates can be extended/specialized, e.g., to convert user-defined function argument types. While the templates require c++ the wrapped function may be a plain C function. E.g., assume you want to wrap hello()
:
extern "C" void hello(const char *world);
#include <iocshDeclWrapper.h>
// add the following line to some iocsh registrar
IOCSH_FUNC_WRAP( hello );
Though the benefits of using EPICS in a brand-new system with no prior code are well known, there are many systems which carry existing codebases - which are often substantial, or have some individual quirks specific to the given system which the users have become accustomed to and would prefer to retain. This talk presents a discussion on the rapid and robust addition of the EPICS communication framework over the top of a small number of existing (C/C++) projects, and some notes on the pitfalls encountered in the completion of such an endeavour.
This will be a ten-minute presentation.
In 2008 pythonIoc
was developed, an EPICS IOC with an embedded Python interpreter to serve PVs calculated from other PVs using Python functions. Since then it has grown to provide more than 60 of the IOCs at DLS, including some that talk directly to hardware. In 2021 it was turned into Python module which embeds an EPICS IOC, which means you can now pip install softioc
and incorporate it into a standard Python application. This talk will give a brief overview of the features that pythonIoc
now offers.
This talk will focus on enhancements to the areaDetector package since it was last presented at the 2019 collaboration meeting at ICALEPCS in New York. These include:
In a collaborational effort (ITER/HZB-BESSY/ESS/PSI), a Device Support for the OPC UA industrial SCADA protocol is under development. Goals, status and roadmap will be presented.
In order to monitor Booster Ring (BR) ramping at the Canadian Light Source (CLS), ADCs were installed to measure the magnet currents.
A Python Driver was created for these ADCs to feed values into an EPICS IOC Application. A graphical interface was also created using the PyDM framework for Python-based Qt graphical interfaces.
A tool used to monitor that status of process variables and the applications that serve them
TRIUMF is preparing for the obsolescence of Motif by developing backward-compatible replacements for alh, StripTool and edm. This presentation will discuss the current state of the replacement applications TAlh, TChart and edmq which are based on the Qt system.
A new web-based EPICS alarm handler has been designed. The alarm handler GUI is built on top of the React Automation Studio (RAS) platform and the alarm and notification servers are developed in Python. The alarm handler is seeded through JSON files that populate a MongoDB database. This database is used to persist all alarm configurations, events and activity logs. At present users can be notified via email and Signal messenger. SMS and WhatsApp notifications have also been tested. A general overview of the RAS alarm handler as well as the architecture, capabilities, conventions and its implementation at iThemba LABS are presented.
A web-based system designed to record and track the weekly and summer-shutdown maintenance tasks in CSNS facility. In order to increase development effiency and improve development flexibiliy, the system is developed with MongoDB database, Node.js backend and Vue.js frontend. The backend is deployed as a REST API, and the frontend as a single page application.
The system has been online for one and a half years and become a very useful high-level application in CSNS.
Vendor-supplied diagnostic tools are often useful for configuring and troubleshooting devices. In many cases, however, these tools communicate in such a way that conflicts with IOC communication, which can be inconvenient for a number of reasons. This talk discusses some reasons to develop diagnostic tools that communicate with the device entirely by sending device-level commands through a single intermediary PV such as the Asyn PV.
This talk will discuss PyPmacTuner, a graphical diagnostic tool for the Delta Tau Turbo PMAC. PyPmacTuner communicates with the controller entirely through the Asyn PV, which allows for troubleshooting the controller while the IOC is still running. This is extremely convenient for troubleshooting axis 8 of a controller without preventing beamline users from controlling axes 1 through 7.
Additionally, going through the Asyn PV allows features to be added on the client-side rather than the IOC-side, which means the IOC does not need to be recompiled or restarted when new features are added.
Updates from EPICS facilities
The ITER control system started integration and operation of in-kind deliveries in 2018. Since then, the integrated control system has been expanded with monitoring and control of ITER buildings and utilities and is poised to receive the first contributions to the distributed real-time control of the ITER machine.
A control system integration process has been defined to address the integration and verification of in-kind deliveries. The process aims at providing a robust incremental and iterative integration mechanism to facilitate rapid deployment of fixes and features during the site acceptance and commissioning process, whilst also ensuring conformance to requirements related to enabling effective operation and maintenance of the ITER integrated control system by the ITER central team.
After three years, a large number of EPICS-based control system software components have been deployed and have also gone through perfective and adaptive maintenance. Over 100 EPICS IOC sit atop industrial automation controllers and provide configuration, control and monitoring functions. EPICS Channel Access and pvAccess gateway services provide bi-directional communication, role-based and condition-based access control capabilities to the Temporary Main Control Room (T-MCR), as well as Remote Participation Centers (RPC) located in the Russian Federation and the United States. Software application frameworks have been adopted and developed to facilitate deployment of pvAccess to support central automation and monitoring services.
The presentation will re-affirm the control system integration objectives, the integration process, summarise the status after 3 eventful years, the lessons learnt, and forecast for the short-term future.
D-TACQ produces a range of networked DAQ systems with flexible IO configuration. Each system has "EPICS Inside", running the business logic, and publishing control, diagnostic and data points on Channel Access. The talk shows an example of customising the internal IOC to fulfill a customer function that also has general use.
Beckhoff IO is economical, robust, and exceedingly diverse. Their complete EtherCAT terminal line can be utilized without a PLC, or an EtherCAT master occupying a NIC by using an EK9000 Modbus coupler. The coupler maps the PDO of EtherCAT terminals to Modbus registers and coils, in a similar fashion as the Beckhoff BK9000 (which only works with the K-bus terminals [Beckhoff proprietary]). This module enables direct EPICS integration of fairly arbitrary EtherCAT chains over Modbus TCP.
Qt has two different toolkits for creating GUIs. One is the classical widgets as we know from the beginning. It is stable, which also means it is effectively in maintenance state. Another is QtQuick/Qml, with v1 appearing in Qt4.7 and v2 in Qt5 with a complete overhaul in the backend. QtQuick/Qml promotes a new, descriptive programming paradigm. This leads to simple signal/slots/property handling and facilitates creation of dynamic UI components.
In this talk, I want to share my findings as a result of self-education. Hopefully I wish to explain what it is, demonstrate its advantages through examples, and lastly how to make it EPICS aware.
A brief update on new features in PyDM (Python Display Manager), and the roadmap for future work.
At the CLS, Beamline Scientists often ask for simple EPICS screens, or temporary screens for one time tasks. This talk presents and demonstrates a simple Rapid Screen Builder for EPICS with the goal that any Beamline Scientist can quickly create a simple screen in minutes, if not seconds, with no programming whatsoever. The Screen Builder presented here is just a simple prototype, developed as an exercise in PyQt programming.
pySTXM is a data collection application for STXM beamlines that attempts to use UI idea’s borrowed from Adobe Photoshop and Blender to create a user interface that facilitates learning and decreased data collection time by reducing users ability to make mistakes that waste “shutter time” during the average beamline shift. Among its features are tools for interactive user/data experience, an agnostic view for the underlying control system as well as a standardized data storage format via NEXUS.
Approx time: 20 – 30 minutes plus Q and A time
An update from the CS-Studio and Phoebus collaboration about recent developments in the core framework and the various applications and tools built on it.
The Phoebus Olog is an online logbook used for recording operational and experimental events by users or programmatically by other applications. The Phoebus Olog service is an evolution of the Olog web service. It uses modern nosql data stores like mondoDB and elastic which provide horizontal scalability, improved performance, and complex querying functionality like fuzzy searches. The new service is accompanied by new Phoebus, web, and mobile clients. The Phoebus clients provide integration with alarm, archiving, and OPI while the web and mobile clients provide convenient accessibility on the move.
The presentation will explain using Python to make Excel EPICS-aware. This same technique can be applied to any application that acts as an "Automation Server"; such as AutoCAD, MS Word and other programs in the Microsoft Office "Productivity" Suite.
The mechanism that exposes these "automation objects" is implemented at the O/S level, so any language that can make system calls can control these servers (e.g. VBA, .NET, Delphi, C++, Python).
The live demos will show implementations of this technique for test automation, diagnostics and PV prototyping.
IOCSee is a tool under development at the Canadian Light Source (CLS) which allows for Glass Box testing of an EPICS IOC Application during operation.
Monitoring of PV Fields is not confined to the VAL Fields, and thus support is available for more complex IOC Applications where differing fields are varied dynamically based upon calculations or conditions. A demonstration of IOC Monitor will also be shown.
Background: Setting up firewalls on EPICS IOC's are a troublesome
matter. When multiple IOC's run on a server, all but the first
one uses random port numbers to establish connections to clients,
whereas openings in firewalls tend to be defined by fixed
port numbers. Purpose: Dynamically manage firewalls as IOC
applications come and go. Method: A prototype service was
developed that detects new or lost instances of IOC applications
through Channel Access beacons and process ID's, and adds or
removes firewalls automatically, without prior knowledge of IOC
applications. There are perl and python versions (to accommodate
whichever is installed on IOC's), and works with iptables, nft,
and firewalld. Results: In multiple restarts and in a couple of
weeks of testing, firewall openings worked fine, but occasionally
some openings did not close, mostly due to timing of restarting
the service. Conclusion: The concept works on a small scale, but
it has not been tested on large servers or a production environment.
For more than ten years, NSLS-II have provided Debian packages for many EPICS parts and tools to the community as a public repository. The packaging effort is shared and hosted at GitHub's epicsdeb organization. Following recent changes at BNL and the departure of key persons, this established collaboration is at risk.
Other institutes have been packaging for RHEL, but as more or less isolated efforts and without the packages being available to the public.
Which direction should this go? How can we organize to share effort efficiently and produce more packages of higher quality?
How much work would it take to support the PV Access and/or Channel Access protocols over IPv6, and how urgently are they needed? This talk may have more questions than answers, but US DOE Laboratories are being required to adopt IPv6 or to request a waiver. It won't be too long before new experimental control systems will have to run on IPv6-only networks, so to survive in that era EPICS needs a plan.
EPICS IOCs at Diamond Light Source are built, deployed, and managed by a set of in-house tools that were implemented 15 years ago. This paper will detail a proof of concept to demonstrate replacing these legacy tools and processes with modern industry standards.
IOCs are packaged in containers with their unique dependencies included. A layered approach to container design ensures that disk space requirements are controlled. The dependency hierarchy is kept to a minimum for easy maintenance. Sources of container image builds have been chosen to maximize portability and enable collaboration.
IOC images are generic, and a single image is required for all containers that control a given class of device. Configuration is provided to the container in the form of a start-up script only. The configuration allows the generic IOC image to bootstrap a container for a unique IOC instance. This approach keeps the number of images required to a minimum.
Container orchestration for all beamlines in the facility is provided through a central Kubernetes cluster. The cluster has remote nodes that reside within each beamline network to host the IOCs for the local beamline.
All source, images and individual IOC configurations are held in repositories. Build and deployment to the production registries is handled by continuous integration.
Finally, a development container provides a portable development environment for maintaining and testing IOC code.
Recent developments and future plans for EPICS Base from the EPICS Core Developer's Group.
Presentation by City of Saskatoon Archivist
LUME-EPICS is a dedicated Python API and related server that provides an EPICS interface for machine learning and physics-based simulation models using variable representations defined in the LUME-Model package, which enforces minimal data requirements for serving model variables. The server is configurable for use with either Channel Access, pvAccess, or a synchronized dual server, accepting inputs and outputs in the form of scalars, images (e.g. areaDetector for Channel Access and NTNDarrays with attributes for pvAccess), and arrays. Features include templated variable and display generation, Bokeh client widgets, and minimal model abstraction. To illustrate LUME-EPIC's utility, we will showcase a neural network representation of the LCLS injector and a live Bmad simulation model using live process variable values from the LCLS.
PVA is started to be used by the Supervisory System to configure and monitor the numerous plant systems. The PVA structure can be very complex. Archiving this data and being able to access individual element are key requirements. In this talk, we will present the requirements, the work done on archiving and retrieving PVA data and the next steps.
React Automation Studio: A New Face to Control Large Scientific Equipment. A new software platform to enable the control of large scientific equipment through EPICS has been designed. The system implements a modern tool chain with a React frontend and a Python backend as a progressive web application. This enables efficient and responsive cross platform and cross device operation. A general overview of React Automation Studio V3.0.0 as well as the system architecture, implementation at iThemba LABs, community involvement and future plans for the system is presented.
Over the last few years, FPGA-based systems for high resolution data acquisition and high frequency control have taken significant relevance in the field of high energy physics and other associated research. When working with such varied embedded systems based on, for example, Zynq Ultrascale and Zynq-7000 series, it is necessary to create a method to build ad-hoc linux-based OS for the distinct product architectures. For this purpose, Buildroot tool is used for generating the cross-compilation toolchains needed and the related operating system. In order to carry out the task of integrating EPICS framework capabilities on the DAQ, control and synchronization products developed in Seven Solutions, EPICS base and some modules have been in Buildroot. In this way, all the custom OS built with this tool will be provided with full EPICS, either own architectures or standard architectures such as MicroTCA.
Particle accelerators are complicated scientific tools which are composed of tens to thousands of coupled components (depending on accelerator size) including accelerating RF cavities and magnets used to focus and bend charged particle beams. EPICS is one of the most useful tools in existence for accelerator component controls and for accelerator diagnostics. In this talk I present some recent results on developing and implementing adaptive machine learning controls and diagnostics for accelerators, present examples of using EPICS for accelerator controls and diagnostics, and discuss what future EPICS capabilities may be beneficial for implementing novel adaptive machine learning tools.
Archiverappliance-datasource is a Grafana plugin that connects Grafana to the EPICS Archiver Appliance with the purpose of allowing users to create visualization dashboards and alerts. We’ve added a back-end component to this plugin to allow users to create realtime, continuously monitoring alerts based upon EPICS process variables. Our work compliments the initial front-end work completed at KEK that allows users to build and save visualizations from archiver data. The notification system’s key feature is that it does not require engineering expertise to configure alerts yet still offers a high degree of customizability. Once the process variables are being archived, users are able to use Grafana’s web interface to identify their process variables, view a PV’s history, and carefully craft alerts tailored to their specific needs. These alerts can be coupled with Grafana’s support for a variety of messaging systems such as Email, Slack, Kafka, and raw HTTP POST requests to distribute these notifications in the manner of the users choice.
DevIOC is a package that enables EPICS IOC Soft Device support all within python. It allows you to define the IOC database model as a python class, and to use the model to rapidly develop dynamic, IOC servers.
The EPICS Council works to optimize the use of resources to ensure the ongoing viability of EPICS as the control system toolkit of choice for scientific facilities. This talk will give a short summary and overview of the work in the EPICS council since the last collaboration meeting.