Energy 5 min read
EMS
Energy management system Also known as: energy management system, energy management software
Definition
An energy management system (EMS) is software that reads the meters, inverters and batteries on a site and sends them setpoints, deciding when to charge, discharge, curtail or trade within grid, contract and safety limits.
Cite this entry
Text
"EMS". Order Group, Software glossary, 10 October 2026. https://ordergroup.co/glossary/ems/
HTML
<a href="https://ordergroup.co/glossary/ems/">EMS</a> - Order Group
How an EMS works
An energy management system (EMS) is the control layer above a site's generation, storage and grid connection. It reads measurements from the grid meter, the inverters and the battery, combines them with outside signals such as market prices, tariff windows, grid operator limits and a weather forecast, and sends setpoints back to the hardware: charge the battery at 400 kW, cap PV output at 70%, keep grid import under the connection limit.
The loop runs on a fixed cycle; in Zeronest's home EMS the cycle is one minute, and control loops on industrial sites usually run faster. In every cycle the EMS works out what the site is doing now, what it is allowed to do, and which allowed action saves or earns the most. The allowed set comes from battery state of charge limits, connection capacity, export caps and contracts. In practice the logic is a stack of controllers with priorities: safety limits first, then commands from the grid operator, then contractual duties such as peak shaving windows, and only after that optimization such as trading or self-consumption.
The same word covers very different scales. A home EMS decides when one battery charges. An industrial energy management system manages a factory's grid connection, a battery and a PV plant behind one meter. A fleet EMS coordinates many sites and passes their flexibility to an aggregator or a trading desk. The control problem stays the same, while the number of devices, the signals and the price of a wrong decision grow.
A battery management system (BMS) sits one layer lower. It lives in or next to the battery pack, measures cell voltages and temperatures, balances cells and opens the contactors when a limit is crossed. The EMS sees the battery as a single asset with a power rating, a state of charge and the limits the BMS reports. The EMS asks the battery for 500 kW; the BMS decides whether the cells can deliver it.
What an energy management system means for your software
Most of the cost and risk in an EMS project sits in integration, timing and failure handling, and much less in the optimization algorithm. Requirements worth writing into the specification:
- Control runs locally. A decision on a live battery cannot wait for an internet connection, so the control loop and the safety limits belong on an edge device at the site. The cloud holds configuration, history and reports.
- Integration is priced per device model. Every inverter, battery and meter exposes its own register map, usually over Modbus, and a firmware update can move registers. Ask how a new model gets onboarded and who maintains the maps.
- Controllers have an explicit order. Export limits, grid operator commands, peak shaving and trading will conflict on the same battery. The system needs a written priority, a fallback mode when no controller is active, and a screen that shows which rule is in charge right now.
- Device communication is checked both ways. The EMS reads back every setpoint it writes and flags every failed read, so the control logic never acts on a value the device did not accept or on stale data. The Modbus entry lists what this takes at register level.
- Every cycle is logged. Inputs, the active rule and the resulting setpoint are stored, so a disputed invoice or a complaint from the grid operator can be replayed.
- New logic is tested on a simulator with the same interfaces as the site before it touches a production battery.
| Signal | Example | Usual source |
|---|---|---|
| Grid connection | Import and export power at the connection point | Grid meter over Modbus |
| Battery state | State of charge, available charge and discharge power, alarms | BMS and power conversion system |
| PV state | Actual output, available power | Inverters |
| Grid operator limit | Export cap or a direct command to the battery | DSO signal or controller |
| Market signal | Day-ahead and intraday prices, trading schedule | Market data or a trading partner |
| Tariff | High-load time windows, contracted capacity | Network tariff |
| Output | Charge or discharge setpoint, PV curtailment | EMS to devices |
Rules and standards
In EU law "energy management system" usually means a management process, which software only supports. Article 11 of the Energy Efficiency Directive (EU) 2023/1791 requires enterprises with an average annual consumption above 85 TJ over the previous three years to have an energy management system in place by October 11, 2027, checked by an independent body against European or international standards. Enterprises above 10 TJ that do not run one must have regular energy audits instead. If a compliance team hands over an "EMS requirement", check which of the two meanings it has before you scope software.
A site EMS has no protocol of its own. It speaks the protocols of the devices it controls, most often Modbus RTU or Modbus TCP, and takes signals from the grid operator and market partners through whatever interface they define.
From our projects
We built the EMS behind Skyfri's solar and battery platform. It went into production in June 2024 and runs on 7 plants with more than 5 MWh of battery capacity, including a single battery above 2 MW. It handles charging and discharging, peak shaving, energy trading, requests from the distribution system operator and export limits, and it runs fully offline at the site. The edge code is Python asyncIO on Azure IoT Edge. The project documentation lists what was finished by October 2024: a modular structure, the main control loop with all external signals, export curtailment on grid operator request, zero-export and zero-PV-export algorithms and a maximum site load limiter, plus on-site tests with the grid operator and the trading partner.
For Zeronest we have built a home and installer EMS since January 2024. Every minute it decides whether a battery charges, discharges or sells to the grid, using live readings, market prices, tariffs and the weather forecast, across 16 inverter brands.
For Global Green's battery storage sites in 2026 we built separate controllers for grid operator export limits, direct battery commands, PV and grid export limitation, safety curtailment and trading, with a warning when no fallback controller is set. Two defects from testing show why controller order needs its own tests: adding the trading controller once removed the deep discharge protection settings, and the safety controller throttled the battery whatever had triggered it. Both were fixed.
Read more on the blog
- Article Battery Energy Storage System (BESS): How It Works and What Software It Needs
- Article What Does BMS Mean? Battery & Building Management Systems Explained
- Article Energy Trading Platforms: How They Work, Main Types and the Software Behind Them
- Article Molten Salt Batteries - Salt in Batteries?
Sources
- Directive (EU) 2023/1791 on energy efficiency, Article 11 - EUR-Lex
- MODBUS Application Protocol Specification V1.1b3 - Modbus Organization
FAQ
-
A BMS protects the cells inside one battery: voltages, temperatures, balancing and disconnection. An EMS decides what the whole site does with that battery, the PV plant and the grid connection. The EMS takes the BMS limits as hard constraints.
-
Yes, and control should not depend on one. The control loop and safety limits run on a device at the site, and the cloud is used for configuration, data history, forecasts and reporting. Skyfri's EMS runs fully offline.
-
At minimum: import and export power at the grid connection, battery state of charge and available power, and PV output, read at least once per control cycle. For optimization it also needs prices, the network tariff and, for solar, a weather forecast.
-
SCADA collects data from field devices and lets operators watch them and send commands. An EMS decides automatically what the devices should do and sends the setpoints itself. On Skyfri's platform the two are separate layers: Skyfri SolarSCADA handles site-level hardware control, and the EMS holds the control logic for charging, discharging, peak shaving, trading and export limits.
Building a system that depends on EMS?
See how we build software for this domain, with case studies and the stack we use.