# Battery Energy Storage System (BESS): How It Works and What Software It Needs

Source: https://ordergroup.co/resources/article-business-and-technical/battery-energy-storage-system/
Last updated: 2026-10-08

> What a BESS is, its components (cells, PCS, BMS, EMS) and what the control software has to handle, with examples from real EMS deployments.

![Battery Energy Storage System (BESS): How It Works and What Software It Needs](https://og-websitev3-dep.s3.amazonaws.com/media/images/bess-utility-scale-containers.width-2850.format-webp.webp)

[technical](https://ordergroup.co/resources/article-business-and-technical/tag-technical)
[energy](https://ordergroup.co/resources/article-business-and-technical/tag-energy)

Battery Energy Storage System (BESS): How It Works and What Software It Needs

[Maciej Sułek](https://ordergroup.co/authors/maciej-sulek/), Co-founder & Project Tech Leader

|
08.10.2026

| 10 min read

Table of Contents

The brief
What is a battery energy storage system (BESS)?
How does a BESS work?
What are the main components of a BESS?
BMS vs EMS vs SCADA: who controls what in a BESS?
What does BESS control software have to handle in practice?
How does a BESS make money?
Build or buy: when does a BESS need custom software?
FAQ

The brief

A battery energy storage system (BESS) is a set of batteries, a power conversion system (PCS), a battery management system (BMS) and an energy management system (EMS) that stores electricity and releases it when it is needed. The IEA counted 108 GW of new BESS capacity in 2025, up 40%. In a BESS, software decides whether storage does its job.

What is a battery energy storage system (BESS)?

A battery energy storage system is a complete installation that charges from the grid or a renewable source, holds the energy in battery cells and discharges it on command. Batteries alone do not make a BESS. Without a PCS to convert current, a BMS to protect the cells and an EMS to decide when to charge and discharge, a rack of batteries cannot serve the grid or a building.The 108 GW figure for 2025, 40% more than in 2024, comes from the [IEA Global Energy Review 2026](https://www.iea.org/reports/global-energy-review-2026/technology-battery-storage). An [IEA commentary from 29 May 2026](https://www.iea.org/commentaries/battery-storage-is-scaling-up-and-taking-on-a-larger-system-role) breaks it down:Around 87 GW of that capacity, roughly four-fifths, was utility-scale. The remaining 21 GW or so was installed behind the meter by businesses and households.China added just over 63 GW, the United States 19 GW and Europe about 6.2 GW. Europe's total was slightly lower than in 2024, yet its utility-scale additions more than doubled to about 4.6 GW.The 108 GW added in a single year beat the historical record for annual gas-fired capacity additions, about 107 GW in 2002.Why grids need storage in the first place is covered in our article on [managing surplus renewable energy](https://ordergroup.co/resources/article-business-and-technical/managing-surplus-renewable-energy/). The rest of our energy work is collected in the [Energy Hub](https://ordergroup.co/energy-hub/).MW vs MWh: power and capacityA BESS has two ratings that are easy to confuse. Power, in megawatts (MW), says how fast the system can charge or discharge. Capacity, in megawatt-hours (MWh), says how much energy it can hold. Divide capacity by power and you get the duration: a 2 MW battery with 4 MWh of capacity can discharge at full power for about two hours.Durations are getting longer. The IEA commentary reports that the average duration of projects commissioned in 2025 was about three hours, up from about two hours in 2023, with a rising share of projects offering four hours or more.

How does a BESS work?

A BESS works in a loop: it takes AC power from the grid or a solar plant, converts it to DC to charge the cells, then converts it back to AC when it discharges. The PCS does the conversion in both directions. Each layer has its own job in that loop:The BMS watches the cells: voltage, temperature and state of charge (SoC). It can stop the system if a cell goes out of its safe range.The EMS decides when to charge, when to discharge and at what power, based on prices, site load, grid operator requests and the limits the BMS reports.The PCS carries out the EMS setpoint and handles the actual flow of power.Most systems also expose an operating mode that a person can switch. In the EMS we built for zeronest's prosumer storage, for example, storage control has three modes: Off, Manual and Automatic. Off parks the battery, Manual lets an engineer set charge and discharge by hand, and Automatic hands the decisions to the EMS logic.

What are the main components of a BESS?

The main BESS components are battery cells grouped into modules and racks, a container or enclosure, the PCS, the BMS, the EMS, energy meters and a SCADA and communication layer. The term "BESS battery" usually refers to the cells and racks.Cells, modules and racks: cells are assembled into modules, and modules into racks. The rack is the unit you see in photos of a BESS.The BESS container: utility-scale systems usually ship in containers with racks, fire protection and HVAC that keeps the cells in their temperature window.PCS (inverter): converts AC to DC and back, and executes the power setpoint.BMS: protects the cells and reports their state.EMS: makes the charge and discharge decisions for the whole site.Meters: measure what the site, the solar plant and the battery actually produce and consume. The EMS can only control what it can measure.SCADA and communication: collect data, show it to people and pass commands between the site, the cloud and the grid operator.Which battery chemistry do BESS projects use?Most new BESS projects use lithium iron phosphate (LFP) cells. According to the IEA Global Energy Review 2026, LFP accounts for around 90% of deployments, while five years earlier its share was well below 50%. LFP cells are less energy-dense than the chemistries common in electric vehicles, but they are cheaper and better suited to frequent cycling, and a storage system cycles every day. The IEA commentary also notes that battery costs fell by more than 90% between 2010 and 2025.

BMS vs EMS vs SCADA: who controls what in a BESS?

The BMS protects the cells, the PCS moves the power, the EMS decides what the battery should do and SCADA lets people see and supervise all of it. The layers work on different time scales and usually come from different suppliers, so the interfaces between them have to be designed and tested together. Our article on [what BMS means](https://ordergroup.co/resources/article-business-and-technical/what-does-bms-mean/) covers the BMS layer in more detail.BESS control layers compared:BMS: protects cells (voltage, temperature, SoC, balancing). Time scale: milliseconds to seconds. Usually supplied by the battery manufacturer.PCS: converts AC/DC and executes power setpoints. Time scale: milliseconds. Usually supplied by the inverter manufacturer.EMS: decides when to charge and discharge, within site, market and grid limits. Time scale: seconds to hours. Supplied by an integrator, a software house or the battery vendor.SCADA and monitoring: collects data, shows it to people, logs alarms and passes commands. Time scale: seconds to days. Supplied by the asset owner's platform or an integrator.![BESS control stack: BMS, PCS, EMS, SCADA](https://og-websitev3-dep.s3.amazonaws.com/media/images/bess-control-stack.width-800.png)For Skyfri, a solar and battery asset management platform, Order Group designed the architecture and built the whole EMS. You can read more in [the EMS we built for Skyfri](https://ordergroup.co/case-studies/skyfri-solar-asset-management-platform/). The EMS has been in production since June 2024 and controls 7 plants, with more than 4 MW of battery power and more than 5 MWh of battery capacity. The largest single battery is over 2 MW.The Skyfri EMS:connects to many types of batteries and inverters and handles several batteries and inverters on one site,runs fully offline, with no internet connection required to keep controlling the battery,covers site-level logic: a maximum site load limiter, peak shaving, energy trading and requests from the distribution system operator (DSO).Its stack is a Python asyncio backend, a React frontend and Azure IoT Edge with IoT Hub, and it was validated at the Socomec battery laboratory in Strasbourg. The monitoring layer above it, SolarSCADA and Skyfri Intelligence, is Skyfri's own product.

What does BESS control software have to handle in practice?

BESS control software has to keep the battery inside its physical limits, follow grid operator commands and still do what the owner bought it for. A CTO evaluating an EMS can check it against the functions below. They come from EMS projects we have worked on, including one for a PV and battery operator with sites in Germany and Canada (15 MWh of BESS, 5 MW of PV). The last three are in progress on that project.SoC limits: the battery should never be pushed above or below the state-of-charge band the owner and the warranty allow.Deep discharge protection: a separate guard that stops discharging before the cells reach a damaging level, even if a trading or peak shaving rule asks for more.Active power range: the battery has to stay within the active power range that the PCS and the grid connection allow.DSO commands and limits: the grid operator can send a direct command or a power limit, and those override trading and peak shaving logic.Standby loss coverage: a battery that sits idle still loses energy, and the EMS has to cover those losses so the SoC does not drift.Safety controller: a controller that throttles battery power when measurements leave the safe range.Site load limiter: the EMS caps the total site load so the connection is never overloaded.Manual and direct control: engineers need to take over by hand during commissioning and faults.Simulator: a simulator with manual BESS control lets the team test the logic before it touches a real site.PID correction of battery power: real batteries do not hit their setpoint exactly, so a PID controller corrects the inaccuracy in delivered power.Edge plus cloud: the EMS runs on site on edge hardware (a Revolution Pi industrial computer, RevPi) and sends its data to the cloud.Separate BESS and meter views: web monitoring shows the battery and the meters as separate items.An off-the-shelf EMS may cover some of these functions and leave out the rest, which is where the build or buy question below starts.

How does a BESS make money?

A BESS earns money by shifting energy in time, cutting peaks and selling flexibility to the grid. According to the IEA commentary, energy shifting was the main application in more than 90% of new projects in 2025, compared with around 40% in 2015.Energy shifting (arbitrage): charge when electricity is cheap or abundant, discharge when it is expensive. Our [guide to energy trading platforms](https://ordergroup.co/resources/article-business-and-technical/guide-to-energy-trading-platforms/) explains the market side.Peak shaving: discharge during the site's highest demand to lower capacity charges.Demand side response (DSR): change consumption or discharge on request in exchange for payment.Balancing services: the frequency containment reserve (FCR) and the automatic and manual frequency restoration reserves (aFRR, mFRR) that the grid operator buys to keep frequency stable.Co-location with renewables: about 24 GW of new utility-scale storage in 2025, just under 30%, was built alongside renewable plants, according to the IEA.

Build or buy: when does a BESS need custom software?

A BESS can run on the manufacturer's EMS when it has one battery brand, one inverter brand, standard operating modes and a stable internet connection. A custom or extended EMS becomes necessary when any of those assumptions breaks.Several battery and inverter brands on one site or across a portfolio.A requirement to keep working offline.Integration with energy markets and with DSO commands.Your own control logic, such as a site load limiter or PID power correction.Your own platform for end customers, with monitoring and reporting on top of the EMS.Across two clients, software we have built and support controls about 45 MWh of storage. 30 MWh is zeronest's prosumer storage, and the EMS behind it supports 16 confirmed inverter brands. The other 15 MWh is the BESS of the PV and battery operator mentioned above. Talk to us about [custom software development](https://ordergroup.co/services/software-development/custom-software-development/) for your storage project, or see the rest of our energy work in the [Energy Hub](https://ordergroup.co/energy-hub/).

FAQ

What does BESS stand for?BESS stands for battery energy storage system. The term covers the whole installation: battery cells, the power conversion system, the battery management system and the energy management system that controls charging and discharging.What is the difference between MW and MWh in a battery storage system?MW is power: how fast the battery can charge or discharge. MWh is capacity: how much energy it holds. A 2 MW battery with 4 MWh of capacity can discharge at full power for about two hours.How does a BESS container work?A BESS container holds battery racks together with fire protection and HVAC that keeps the cells at the right temperature. It connects to a PCS, and the BMS and EMS control it from inside or next to the container.What is the difference between BMS and EMS?The BMS protects the battery cells by watching voltage, temperature and state of charge. The EMS decides what the battery does: when to charge, when to discharge and at what power, within the limits the BMS reports.How long can a BESS discharge?It depends on the ratio of capacity to power. The IEA reports that projects commissioned in 2025 had an average duration of about three hours, and a growing share of projects offer four hours or more.Can a BESS work without an internet connection?Yes, if its EMS runs locally. The EMS we built for Skyfri runs fully offline and keeps controlling batteries and inverters without an internet connection.Is energy storage only about batteries?No. Energy can also be stored as heat. Our [KYOTO case study](https://ordergroup.co/case-studies/kyoto-digital-twin-software/) describes Industrial IoT and a digital twin for a thermal energy storage system.

Building software for battery storage?
[Talk to our energy team](https://ordergroup.co/estimate-project/?utm_source=blog&utm_medium=referral&utm_campaign=content_marketing)

Read more articles about Energy

[Energy
|

24.07.2026 |

6 min read

What Does BMS Mean? Battery & Building Management Systems Explained](https://ordergroup.co/resources/article-business-and-technical/what-does-bms-mean/)
[Technical
|

09.04.2025 |

4 min read

Supercharging PoC Development with AI: A Smarter, Faster Approach](https://ordergroup.co/resources/article-business-and-technical/supercharging-poc-development/)
[Technical
|

18.11.2024 |

5 min read

Backend Development in Python. When to Use Django?](https://ordergroup.co/resources/article-business-and-technical/backend-development-in-python-when-to-use-django/)
