Speaker
Description
The driver linac of the Facility of Rare Isotope Beams (FRIB) contains 332 cavities which are controlled by individual FPGA-based low-level RF controllers. Due to limited hardware resources the EPICS IOCs cannot be embedded in the low-level RF controllers but are running on virtual machines communicating with the devices over Ethernet. An EPICS support module communicating with the devices over UDP has been developed based on the Asyn library. It supports efficient read and write access for both scalar and array data as well as support for triggering actions on the device. Device-related parameters like register addresses and data types are configurable in the EPICS record database making the support module independent of the hardware and the application. This also allows engineers to keep up with evolving firmware without recompiling the support library. The implementation of the support module leverages modern C++ features and relies on timers for periodic communication, timeouts, and detection of communication problems. The latter allows the communication code to be tested separately from the timers keeping the run time of the unit tests short.