Software controller

Energy Storage Systems

Developing the software controller for large Energy Storage Systems

The Dutch government strives for a more sustainable energy supply system, capable of integrating new energy sources, to reduce the load on the electricity grid and to support CO2 reduction. By storing energy in batteries at times of abundant energy production, such as the production of renewable energy sources, and using this stored energy when demand is high, the electricity grid is relieved. This reduces peak loads, which improves the stability of the grid and saves cost for organizations with a PV system. Such Energy Storage System (ESS) can operate on-grid as well as off-grid. Traditional connections at construction sites often rely on fossil fuels, which leads to CO2 emissions. A portable or temporary battery system can help reduce the impact on the environment.

Supporting the startup company Big Ass Battery, Nobleo is co-developing a large (container sized 1MWh capacity ) battery storage system or ESS. In this project, the Nobleo team is contributing its experience in electronic and control software engineering to create such a ESS from scratch. Contrary to what might be expected, developing a controller to monitor and steer all internal modules is not about developing just the software or a state machine for it. A lot of electronics, sensors, actuators, safety- and thermal management systems have to be integrated and work together where most of the off-the-shelf components do not have a 100% fit with the desired system requirements. This resulted in constantly working together with all involved parties, to get hardware and firmware of the components adjusted in such a way that it can have an optimum and reliable performance inside the complete system. The edge cases the Nobleo team faced helped our customer and also their suppliers to reach the requirements and design level needed to build this innovative system.

Future ready to extend

The roadmap of the system included feature extensions also after the first market release, like fast charging, peak shaving, islanding etc.. This gave the challenge of building a controller architecture allowing extensions. A modular software and hardware solution was built to accommodate for these changes in existing products.

Given the set of requirements and features, and additionally the scalability and extendibility, a regular PLC, as commonly used in the industry, is not fit for purpose. Instead, a Linux based environment with extended PLC (PLCnext) features was selected.

The use of C++ as a higher level programming language offered the flexibility which is essential in this case. The software architecture has a master-slave setup where a modular approach means you can add new functions (system states) to the system without having to change the complete software. A hardware abstraction layer gives a lot of flexibility whenever hardware is out of stock or another (firmware) version is delivered by your supplier. This creates a great advantage in the production process as well if not exactly the same type of hardware is used;

The ESS automatically copes with that. At start, the system basically scans what elements the ESS consist of and automatically makes sure the configuration uses the right settings. The user just simply can push the “ON” button to generate power.

Within the project, it now was possible to make use of all facilities that come along with the C++ language. With a large amount of developers, parallel programming (continuous development) was possible. The development environment provides a lot of tools for test and validation where overnight testing gave the team a huge time advantage. Repositories, version control, all such items being used in a professional software development project could now be used. Bugs only needed to be fixed in 1 software branch instead of multiple software versions.

Development process

It was not the technical skills or the Nobleo view on the most effective system architecture only that allowed us to develop this type of a system. Our years of experience in developing solutions for high-tech customers in highly demanding environments, has led to a professional way-of-working and the Nobleo triple V-approach. In this case, the project is complex, has more uncertainties, less constraints and more variables where it is better to use an agile approach instead of the V-model (where a project is well specified and scoped upfront). Our stage gated approach is a combination of the V-model and an agile way-of-working, giving a good structure to tackle problems and risk in an early stage, shorten development cycles and include the customer in the development program at the earliest stages. Instead of developing a full product in one big cycle, the triple-V engineering method follows 3 cycle times; FUMO, POC and final product cycle. Re-using and iterating on what is already developed in each stage is a key element; as the engineering evolves, data and experiences from the previous cycles can be reused. The majority of the effort is spent on verification and improvements. The outcome of these 3-cyles is a ESS that can be considered a final product which is validated by the customer. After a successful validation period the production of the ESS started. The Nobleo team was able to start from scratch and move to a final product release extremely fast (approx. 3 months) without compromising on quality.


As a result of this project you might expect a list of released features or things like “we developed a safe and stable system”. Besides that, the result was mainly being able to integrate all kinds of off-the-shelf modules which were not 100% intended or specified for the purpose to fit in a container sized energy storage system with these high voltage specifications. Developing a ESS is not about clicking standardized blocks on top of each other, but needs a lot of exploration, constant feedback to suppliers, adjustments, co-developments, continuous consultation about customer- and system requirements with our client. That makes the development of such a new innovative product challenging to do. Together with our client, we both worked our way through the whole product lifecycle, assisting them during installation and giving feedback towards production. This way, we did not only do the development, we became part of all aspects of developing and producing this system.