Regelalgoritmes
Kostoptimalisatie
Het prijsgestuurde regelalgoritme: opslaan wanneer energie goedkoop is en gebruiken of injecteren wanneer ze duur is, binnen de grenzen van batterij en aansluiting.
Kostoptimalisatie is het prijsgestuurde regelalgoritme van Voltmasters. Het houdt de energiekost van de installatie zo laag mogelijk door elke regelcyclus te beslissen hoe de batterij laadt en ontlaadt, op basis van voorspelde energieprijzen en voorspellingen van PV-productie en verbruik.
Hoe het werkt
Elke regelcyclus doet het algoritme dit:
- Vooruitkijken over de voorspellingshorizon (het tijdvenster dat het algoritme vooruit bekijkt) naar de dynamische day-aheadprijzen, de verwachte PV-productie en het verwachte verbruik.
- De batterij plannen zodat energie opgeslagen wordt wanneer ze goedkoop is (of uit PV-overschot) en gebruikt of geïnjecteerd wordt wanneer ze duur is. Dat vooruitkijkende plan is de batterijplanning.
- Alleen handelen wanneer het loont: laden en ontladen worden alleen gepland wanneer het prijsverschil groot genoeg is om de verliezen heen en terug van de batterij te overtreffen (een instelbaar minimaal prijsverschil).
- De grenzen respecteren: de minimale en maximale laadtoestand (SoC) van de batterij en de grenzen van de netaansluiting (maximale injectie en afname).
Het gedetailleerde plan, de soorten acties en een uitgewerkt voorbeeld staan op de pagina Batterijplanning. De rest van deze pagina legt uit hoe het algoritme tot die beslissingen komt.
Twee lussen: plannen en handelen
Kostoptimalisatie draait als twee samenwerkende lussen die één ding delen: de batterijplanning.
- De planningslus kijkt naar de hele voorspellingshorizon en berekent het goedkoopste laad- en ontlaadplan. Dit deel maakt het plan. Het plan wordt regelmatig herberekend, bij elk nieuw kwartier en telkens wanneer er een nieuwe voorspelling binnenkomt, zodat het altijd de laatste prijzen, productie en de echte toestand van de batterij weerspiegelt.
- De regellus draait elke regelcyclus (ongeveer één keer per seconde). Ze leest de ene regel uit de planning die nu geldt, zet die om in concrete setpoints (stuurwaarden) voor batterij, PV en EV, en past die aan aan de live metingen en de grenzen. Dit deel voert het plan uit.
flowchart LR
subgraph inputs["Voorspellingen en live toestand"]
P["Day-aheadprijzen"]
PV["Voorspelling PV-productie"]
C["Voorspelling verbruik"]
B["Laadtoestand batterij"]
end
GEN["Batterijplanning genereren<br/>planningslus"]
SCHED[("Batterijplanning")]
READ["Regel voor nu lezen<br/>regellus, ongeveer 1s"]
SET["Omzetten naar setpoints batterij / PV / EV"]
HW["Batterij, PV, netaansluiting"]
P --> GEN
PV --> GEN
C --> GEN
B --> GEN
GEN --> SCHED
SCHED --> READ
READ --> SET
SET --> HW
HW -. "gemeten waarden" .-> GEN
Door het werk zo te splitsen hoeft de dure vooruitkijkende optimalisatie niet elke seconde te draaien, terwijl de snelle regellus tussen twee plannen door toch op de werkelijkheid kan reageren.
Wat het algoritme nodig heeft
Het plan wordt opgebouwd uit een mix van voorspellingen, live metingen en projectconfiguratie:
| Invoer | Waar ze vandaan komt | Rol in het algoritme |
|---|---|---|
| Day-ahead verbruiks- en injectieprijzen (per kwartier) | Voorspellingsleverancier (dynamische day-aheadmarkt) | Vertelt het plan wanneer energie goedkoop is om te kopen en wanneer ze lucratief is om te verkopen |
| Voorspelling PV-productie | Voorspellingsleverancier (op basis van het weer) | Vertelt het plan wanneer er gratis of goedkope zonne-energie beschikbaar is om op te slaan |
| Voorspelling verbruik | Voorspellingsleverancier | Vertelt het plan wanneer de site energie nodig heeft: de tekorten die het waard zijn om te dekken |
| Laadtoestand van de batterij | Live meting per batterij | Het startpunt van het verwachte SoC-verloop |
| Grenzen en rendement van de batterij | Projectconfiguratie | Minimale en maximale SoC, laad- en ontlaadsnelheid, nominaal vermogen, rendement heen en terug |
| Grenzen van de netaansluiting | Projectconfiguratie | Maximale afname (ruimte om te laden) en maximale injectie (injectieplafond) |
| Minimaal prijsverschil | Projectconfiguratie | Het verschil dat een laad- en ontlaadpaar moet halen om het verlies en de slijtage waard te zijn |
| Verkoop via batterij-injectie | Projectconfiguratie | Of opgeslagen energie überhaupt aan het net verkocht mag worden |
| Netlading voor injectie | Projectconfiguratie | Of het algoritme ook goedkope netenergie mag kopen puur om ze bij injectiepieken weer te verkopen |
Het kernidee: prijsarbitrage binnen de grenzen
In de kern doet het algoritme aan energiearbitrage: energie opslaan zolang ze goedkoop is (uit PV-overschot of goedkope neturen) en weer vrijgeven zolang ze duur is, ofwel door het eigen verbruik van de site te dekken, ofwel door ze op het net te injecteren voor inkomsten.
Twee dingen houden dat eerlijk:
- Verliezen heen en terug. Energie die verloren gaat op weg de batterij in en uit, betekent dat een opgeslagen kilowattuur er minder dan één aflevert. Het plan berekent elke laad- en ontlaadbeweging met het rendement heen en terug van de batterij.
- Het minimale prijsverschil. Een laad- en ontlaadpaar wordt alleen gepland wanneer het prijsverschil tussen het goedkope en het dure kwartier een instelbare drempel haalt. Dat dekt het verlies heen en terug en de slijtage van de batterij, en het voorkomt dat de batterij cyclet voor een marginale winst.
Alles wat het algoritme plant moet bovendien passen binnen de grenzen van de laadtoestand en de grenzen van de netaansluiting; die beperkingen gelden voor het hele plan.
Uitgewerkt voorbeeld: hoge avondprijzen
De grafiek hieronder toont het scenario hoge avondprijzen. Elektriciteit is overdag goedkoop en zonnig, en wordt in de avondpiek veel duurder.

Overdag laadt de batterij op uit het goedkope PV-overschot, en in de avondpiek ontlaadt ze om het dure verbruik te dekken. De volledige opsplitsing van dit scenario staat op de pagina Batterijplanning.
Verhouding tot een extern signaal
Kostoptimalisatie is een lokale strategie. Stuurt een partner via een extern signaal de installatie actief aan, dan heeft die partner voorrang en stuurt kostoptimalisatie de batterij niet aan. Is er geen extern signaal actief, dan volgt de batterij de planning van de kostoptimalisatie. Staat de partner op stand-by, dus verbonden maar zonder de batterij aan te sturen, dan blijft de batterij stil en houdt ze haar laadtoestand aan. Een instelling per site laat de batterij tijdens stand-by toch de planning van de kostoptimalisatie volgen.