Hi all,
Executive Summary
For some time, I’ve been scratching my head about why my (large!) ESS based systems often fail to achieve the ‘near zero’ net grid setpoint that I am asking them to achieve, during periods of battery charging from PV energy… they import significant amounts of grid energy at the same time as the battery is charging.
This post is to explain a theory I’ve come up with that could explain why this is happening.
I am posting this to see what other people think, and also to hope that some of the folk in Victron (hello Izak!) might read this and see if they agree with me about (a) the problem and (b) the solution ! ![]()
To cut to the chase:
I believe that the problem is that the ESS grid setpoint calculation - to determine battery charge rate, based on other inputs - is not taking in to account the energy consumed internally by the VE.Bus equipment in the system, when it adjusts the battery charging power level to try to achieve my desired grid setpoint (which is -100 Watts, in my case - i.e. effectively ‘zero’).
This effect is probably not very visible on small systems, but on big systems it is very visible indeed.
Detailed Example
Here is the specification of my largest system - and it is this system where this problem is the most obvious:
- 12 x Quattro 48/15000 units in a three phase cluster
- 200kWp of AC PV + 10kWp of DC MPPT PV
- 384kWh of Pylontech battery storage (80 x US5000 modules)
- A 400A three phase grid connection plus a 65KVA three phase generator
The grid energy the system imports during battery charging, every day, ‘adds up’, to the extent that this un-necessary grid energy import costs me a few hundred dollars every month (!) in grid energy bills that could instead be zero. I am tired of paying for this grid power and I would like to stop doing that ![]()
I have attached, below, some screen shots to demonstrate the problem and to also show what I think is the solution.
Amongst those images are some energy summaries for one day and for one month. You can see that in a month we imported almost 900kWh, which cost me hundreds of dollars - despite definitely not needing that grid energy!
The specific period when the system imports grid energy un-necessarily and (in my view) incorrectly is in this scenario:
- It is morning, and the PV array is generating lots of energy (but not as much as it will generate later, when the sun is higher in the sky)
- Most of this energy is going in to the battery, but the battery is capable of charging even faster (if there was more PV energy to charge with)
- The ESS code sets the battery charging level too high - so that there is around 5-6kW of energy being imported from the grid (that should not be)
- In other words, there is an error of ~5000-6000 watts in the charging rate for my Quattro array (12 x Quattro 48/15000’s) - the battery is being charged ‘too fast’!
Later each morning, when there is more PV being generated, to the extent that it exceeds the maximum charging rate of the Quattro array (around 2000 Amps in my case), then the system does start exporting the surplus to the grid, but only because there is nowhere else for is to go.
But - for a few hours each morning, I am paying for grid energy I don’t need to import.
Calculating the error
On the theory that the internal power draw (inefficiency in the electronic circuits that expresses in the real world as heat) is not being accounted for, lets work out how large that internal power draw is!
The Victron Quattro data sheets say that the maximum (best case) system efficiency is between 93% and 96% across the product range.
There are going to be other system losses too (including in the battery itself), so for the sake of this exercise it seems reasonable to start out at a rational value for efficiency of ~94%.
(This might well need some adjustment, though, and/or it might also vary somewhat between models of Victron hardware)
If charging the battery is a 94% efficient exercise, then it is going to throw off 6% as heat.
Aside: There is no question that this much energy is being turned in to heat… My room absolutely makes a lot of heat, so much so that I have got heat pump cooling in there to deal with it during these high power charging cycles.
As per the screen shots below, when the system was charging the battery at 87kW, this implies that the Quattro array is consuming 6% x 87kW = 5.2kW.
Take a look at the screen shots below.
The system is, per one of those images, importing ~6kW from the grid ( it was moving around in the 5-6kW realm at the time I took that screen shot).
So this grid import error is consistent with the theory.
As an aside: Logically, we should also see the reverse, during high discharge periods… we should see an un-necessary level of grid energy exported when the system is supporting large on-site loads at night (no PV) . And… yes… this is indeed what I do see! i.e. the error swings the other way when the battery is being discharged. This is ‘wasting’ stored battery energy by sending it to the grid when I do not want or need it to do so. However, the correction factor might well be different in this ‘direction’ because the inverter circuit is different to the charging circuit. Some experimentation may be neeed to figure out the right adjustment factor for that direction, as a result.
Proving the point
To test this theory further, I tried putting in a grid setpoint of -6500 watts.
In other words, I tried offsetting this energy draw ‘manually’ via adjusting the grid setpoint, to see if the system could operate stably with a nearly zero grid power outcome while it charges.
This … works…!
The proof is in the other screen shot , below, of the ESS page, with a -6500 grid setpoint configured - you can see the system is happily charging from PV and the grid meter value is nearly zero !
A Workaround
I am just about to implement a script that automatically calculates a value for the grid setpoint, based on this calculation, i.e. based on 6% of the observed battery power level, such that battery charging results in asking for a ‘minus 6% of battery power level’ as the grid setpoint.
During battery discharging periods I’m going to allow for different correction factor; I’ll start with the same 6% level, but I fully expect to have to re-visit whether 6% is appropriate in the discharging direction/mode, because it might not be.
Importantly, the adjustments of grid setpoint might really need to be based only on charging power from the Quattros alone (i.e. I should probably be excluding DC MPPT PV power levels from my calculation). I need to think that over a bit more, in terms of the extent to which DC MPPT PV energy modifies the outcome here.
… but for now, I’m going to just try a script that simply works from the observed total battery power, as a reasonable approximation for the work done by the Quattros… I do have DC MPPT’s on this system, but they only contribute about 5% of the solar energy coming in to the setup.
Conclusion
I think there is merit in Victron adding adjustment factors inside the ESS control loop that estimates the inefficiency in charging/discharging batteries, and that includes these adjustment factor in the calculation to determine the charging and discharging rate to command from the Quattro array over time.
The adjustment needs to ‘cut both ways’ (it needs to apply during all operations, both charging and discharging the battery)
I think it is reasonable to calculate this adjustment factor on the basis I’m suggesting - i.e. to simply calculate a rational loss of energy due to system inefficiency and use that as the multiplier against observed battery charge/discharge rate.
For small systems, this adjustment factor will, of course, automatically be small. Maybe so small that most customers will never ‘see’ it - but - it will still help every site, not just big ones, if this correction factor is added in to the calculation.
I intend to report back about whether my dynamic adjustment of grid setpoint to calculate in this error is effective across my entire daily operating cycle - but - I do hope that it will be ![]()
So my calculations are a touch ‘loose’ as a result of that, but on this system, about 5% of the total PV charging power comes from DC MPPTs.
To do this ‘properly’ I’d need to work from just the charging power of the Quattro’s in isolation (and I’ll think about how best to use that as the sole input factor here -
Thoughts welcome.



