Bühler Holding AG is an internationally active technology group with over 12,000 employees in 140 countries. Billions of people come into contact with Bühler technologies every day. Its technologies are in smartphones, solar panels, nappies, lipstick and banknotes. They are found in the food we eat and the vehicles we drive. Bühler's goal is to develop innovations for a better world that are healthy, safe and sustainable.
One of Bühler's fields of activity is the manufacture of equipment for the production of lithium-ion batteries. The core piece for the electrode paste production required for this is a twin-screw extruder. Paste production is monitored in real time with the QuaLiB quality control system. This leads to higher product quality, less waste and better process understanding.
We accompany and support Bühler in the development of the underlying software. This is based on Python and Docker, uses OPC Unified Architecture (OPC UA) for communication with the hardware, InfluxDB to persist the measurement data, Redis for caching and Dash / Plotly for the user interface. Our work consists of ensuring a clean and secure state of the code and thus guaranteeing continuous maintainability. Furthermore, we support the development of new features and the correction of bugs.
When we took on this project, setting up the software, both locally for development and in the final product, consisted largely of manual processes with little automation.
A first major challenge was to achieve sufficient test coverage without changing the code more than necessary. The difficulty was that the existing code was not built to be testable. We therefore first relied on comprehensive end-to-end testing to avoid regressions. Based on this, we carried out refactorings to make the software more testable and achieved a test coverage of around 90% of the critical components by means of automated unit and integration tests.
For the project setup, we used the modern Python package and dependency manager Poetry. Poetry makes it possible to create reproducible Python environments and helps to keep the dependencies up-to-date.
In addition to development, the further collaboration also includes a lot of knowledge transfer regarding Python, a programming language we have relied on for several years in the context of Machine Learning.
What we particularly appreciate about this project, apart from the software engineering, is the close collaboration with Bühler, which is very uncomplicated and efficient despite the size of the group, the complex organisation and the diversity of areas of activity.