Speaker
Description
The power supplies used for FOFB correctors at SIRIUS expose only electrical current values, making it necessary to perform conversions to and from beam kick values. To take advantage of the canonical Python implementation of this conversion, a separate IOC was developed using pyEPICS and PCASPy. This technology stack imposed some limitations, making it necessary to limit the update rate, and, even then, requiring one independent instance of the IOC per ring sector (20 in total) to avoid PV timeouts and disconnects; disconnection events when one of the power supplies was down also had cascading issues with reconnection and memory corruption.
This motivated us to pursue more modern alternatives for integrating Python code into an IOC, specifically one that could take advantage of the Channel Access (CA) integration already present in EPICS databases, avoiding any of the bridges between CA and Python. We evaluated the pythonSoftIOC project and the pyDevice and pyDevSup support modules, which we present in this work. We settled on pyDevSup due to the development experience it provided.
This work also presents benchmarks comparing the performance gains with the new IOC and aims to explore the architecture differences that enabled them.