EPICS has a long and proven track record as a versatile framework for developing distributed control systems. But engineers and developers usually meet the first challenge way before they write the first line of code. First, they need to collect information about signals, input and alarm limits, archiving rules, etc. from all the parties involved in the development of the machine.
In the ideal world all the specifications and interfaces would be well defined and finalized before the first record is configured in the database, but in reality, it is rarely so. Progress is happening in the parallel threads, forcing an early start of tasks and ongoing modifications of existing software to stay in touch with the latest updates. Keeping track of changes, modifying databases, alarm and archiver configurations by hand with each new update is a great source of errors and mistakes in the final software and can cause a lot of frustration for developers.
We have gathered a lot of experience working on projects with such a work dynamic. We figured out that providing a standardized template (such as an Excel spreadsheet) with clear instructions about how to fill it works really well. We use that structured data as an input for Python scripts that automatically generate EPICS database.
In this lecture we will present the mentioned workflow and the tools we use.