Monthly Archives: October 2016

PLC Factory – Automating Large-Scale PLC Development

I spent this summer working at the European Spallation Source (ESS) in Lund, Sweden. My contribution was the creation of PLC Factory, a tool that automates development for programmable logic controllers (PLCs). A paper on this project is forthcoming.

The code of PLC Factory is available on the Bitbucket account of ESS. PLC Factory was developed as FOSS. Thus, I can make the code I wrote available on my private GitLab account as well.

The draft of the PLC Factory paper is likewise available on GitLab. Here is the full title information including the abstract:


G. Ulm, D. Brodrick, N. Levchenko, F. Bellorini

At the European Spallation Source in Lund, Sweden, the entire facility including all its instruments will be controlled by a large number of programmable logic controllers (PLCs). Programming PLCs, however, entails a significant amount of repetition. It is thus an error-prone and time-consuming task. Given that PLCs interface with hardware, this involves economic aspects as well, due to the fact that programming errors may cause damage to equipment. With PLC Factory, we managed to automate repetitive tasks associated with PLC programming and interfacing PLCs from EPICS. This tool is being adopted at ESS, and has shown potential for a large increase in productivity compared to the status quo. We describe PLC Factory as well as its embedded domain-specific programming language PLCF#, which it is built upon.