Export from DC-side PV stops when battery is full

We’ve just gone away for a few days and have been able to confirm that our ESS does not behave as expected when the battery fills up but it’s still sunny. The AC PV continues exporting but the DC side stops when the battery gets full.

System:
Multiplus II 5kW
2.9kWp AC-coupled PV
4.2kWp DC-coupled PV into smartsolar 250/70
16kWh LFP battery (Fogstar with Seplos BMS)

We are using ESS and DVCC.
The issue seems to be the same as this post (another AC+DC+batt ESS system):
Problem with SmartSolar MPPT operation which didn’t reach a conclusion

ESS settings:
AC coupled PV - feed in excess
DC coupled PV - feed in excess
(we also have a feed-in limit of 5kW)
Grid metering ‘Inverter/charger’ (CT clamp plugged in)

DVCC settings:
Battery connected over CAN
SVS, STS and SCS are on.

So the batt charges to 100% as you would expect, but then the MPPT essentially turns off, (70-150W), rather than continuing to export the ~2kW it’s capable of with current sunshine. I can manually change the setpoint to -3.6kW and then the MPPT wakes up and goes to ~2kW, so we export ~3.5kW in total, and the battery stays at ~99%, because input and output are more-or-less balanced.

I was hoping that “DC coupled PV - feed in excess” meant this would happen automatically, as it does on the AC-side.

The topology is http://wookware.org/files/DC-coupled-parallel.svg
So the AC-PV is not through the multiplusII, but the multiplusII is running with a CT clamp on the exit from the building.

System setup:
AC Input 1: Grid
AC Input 2: Not available
Position of AC loads: AC input & output
Batt Monitor: BMS16S200A-SP112 on CAN-bus
Has DC system: No

The BMS does correctly turn down the max charge current from 180A to 10A at 98.5% then to 0A when the 1st cell reaches 3.60V, so that’s all working as expected.
I must admit that I’m not quite sure how the DC current/voltage control is done when the system wants the MPPT to send power straight to the Multiplus but not to the battery. The voltage still has to be controlled to be nice to the battery, but presumably the MPII draws current and the MPPT responds. Which box is in control of what out of the batt+BMS, cerboGX, MPII and MPPT when doing this balancing act of not battery overvolting, but not really discharging either, whilst shifting several kW from DC to AC sides? It works fine when I change the setpoint manually and the export is recorded as ‘Solar to Grid’ rather than ‘Solar to battery’ on the VRM charts so they system knows what’s going on.

What do I need to change to make the MPPT keep supplying power and the MPII move to exporting any available DC PV after the battery is full?

I can help you, but you will need to disable communication from the battery and rely on the MultiPlus to estimate the SOC. Don’t worry, some may tell you this is bad, but it is not.

Let me know if you want help. I only work with ESS and Node-RED, and I have some experience with boat installs.

Right, I saw your posts on ESS continous switching between charge/discharge when battery full and negative grid power - #21 by owenb79
which is discussing a very similar issue.

I did run for a while using the Multiplus SOC estimation and it is very innacurate, fairly quickly getting more than 10% off, although I take your point that what really matters is battery voltage so the MPII SOC estimation is not that important (and you can still display the CAN-bus reported SOC level, even if the MPII is using its own estimated one). And it did seem to work fine in terms of charge-termination.

I do prefer to have charge termination controlled by the BMS as that will turn down when any cell gets near termination voltage, not just when the whole pack gets high enough. For a new, balanced, pack this doesn’t make any difference, but over time it seems that using DVCC should give better results. (Optimum charge-termination algorithms is a big subject - see massive, but fascinating, thread here, for example: GUIDE to properly Top-Balance and Charge a LFP Battery: Part 1 | DIY Solar Power Forum ) But I’m not totally averse to not using DVCC if there are advantages to doing it the other way.

Last time I switched DVCC off the MPII had to reset which resulted in a power cut (and some corresponding device reprogramming) which was tiresome. Switching it on was fine. I’m not sure if it always does that, but it’s a disincentive to just testing. Should I be able to turn it on/off normally without a reset?

I was struggling a little to interpret your charts on that thread. Are you saying that if one isn’t using DVCC, but charging/discharging controlled by the Multiplus/GX instead, then the ‘DC coupled PV - feed in excess’ works as as expected, and just automatically switches over? Then, of course, the question is ‘why’?

I have sized my system specifically to charge the battery bank. I use a mix of grid-tied solar and MPPT. The MPPT is there for grid outages that are uncommon. I don’t have an issue with MPPT charging because the array for the MPPT is east-facing and the charge current when the battery is nearly full is quite small. I do usually only have one string into a 450/100 and can unplug an east-facing one from the grid-tied PV if the battery is at 0% and I want to charge it fully.

This is what an east-facing array looks like. The current drops off in the afternoon and is minimal when the battery is near 100% and ideal for balancing.

Without a shunt and using the multiplus to estimate the charge DVCC will only change the internal charge current. I use this flow to reduce DVCC when the voltage gets high. I try and aim for 70-80% SOC every night which is what I generally need and run the battery down to 30-40%. This flow adjusts DVCC from 50A to 10A between 53V and 56.5V

This is what I do in the morning and I have not seen anyone try this or figure out how to do it. I have this node red flow which is an algorithm to check the SOC between 7am and 10am. This will export the MPPT power if the SOC is above 60% by setting the grid setpoint based on MPPT and the actual grid. I have 2 phases which makes it a bit tricky but not impossible. It essentially sets the export grid setpoint and keeps looping exporting the MPPT power.

Later this year we will be going to TOU tariffs so I will change everything and export between 4 pm and 9 pm to take advantage of the high export tariff.

In the morning, between 7 AM and 10 AM, the system charges at 50A, bringing the battery up to 60%, and starts exporting MPPT power.

From 10 AM to 3 PM, charging continues using:

The MPPT at approx 30 - 40 up to 50A
The internal charger, which adds another 10-20A as needed from excess grid-tied solar to maintain 50A

Since the battery is 720Ah, the remaining 40% charge (to reach 100%) would require 57.6A over 5 hours. However, by capping the charge rate at 50A, the battery won’t reach full capacity, typically stopping at 80-90%—depending on cloud cover.

The large north-facing PV arrays on the grid-tied inverters provide a lot of excess solar, allowing the internal charger to maintain 50A until the voltage rises and the charge current is throttled.

That is how I run ESS. I dont stress the battery and dont keep it full have the charging managed and sized the system twice to 3 times my overnight use. And of course have the ability to charge quickly if needed at 170A using both strings on the MPPT and internal charger.

This is what it looks like after 10am. Charging starts 60% and chargers all afternoon.

As the voltage rises DVCC is reduced and the internal charger will charge when the solar drops off due to clouds or sun angle.

Reading the ESS manual it says

4.3.5. Feed-in excess solar charger power

Set to ‘On’ to make the solar charger always operate at its maximum power point. The first priority is powering the loads, and the second priority is to charge the battery. If more power is available when those two priorities are met, then that power will be fed to the utility grid.

Please note that when enabling this option, the DVCC charge current limit configured under Settings → Limit charge current won’t be active. The solar charger will operate at full power for maximum feed-in into the grid. It’s advisable to configure a safe limit on the solar chargers when used with a small battery bank.

and

4.3.13. Grid feed-in

The grid feed-in can be controlled via this menu. It enables the AC and/or DC-coupled PV feed-in to be completely deactivated or the maximum feed-in power to be limited.

Feed-in will only occur if there is sufficient surplus PV production to fully supply the loads, and the battery is charged (or at it’s charge current limit).

Now I have
ESS->Grid Feed-in->DC-coupled PV - feed in excess’ set ‘On’
and
DVCC-> ‘Limit Charge Current’ set ‘Off’
So according to the ESS manual the MPPT should continue running at full available power, but it doesn’t. So what is it being inhibited by?

Have you tried a full reset of the cerbo and firmware? I dont know if there is a grid code that will not let you export.

I’m currently trying to investigate a similar issue - I was able to keep the MPPT running at full power by switching off the DVCC-SVS setting (I don’t have any of the other Shared settings active either). I think the reason is that the BMS was setting the voltage for the MPPT to use and so throttling it back; something like that anyway.
But now I get into this bouncing/toggling mode when the battery is full.

Thanks for the clues and flows Owen. It took me a while to get round to testing, but yes, if I turn of DVCC and go back to using the ESS Assistant/ESS on GX, then the behaviour is all as expected/detailing in the ESS docs. i.e. when the battery gets to 100% SOC the MPPT stays at the MPPT point and excess power is exported. Also the ESS ‘Limit feed-in’ setting is respected. Neither of these work when the system is running with DVCC.

I still don’t understand why this happens. It seems to me that DVCC is only controlling battery charge parameters, so shouldn’t be inhibiting export. Someone must understand what’s going on here. I presume it’s something to do with ‘who is in charge’?

I now have a time-of-day tariff (Octopus Flux) and have enabled DESS which basically works (but does occasionally do perverse things, but that should go in another thread.) So everything is working ‘well-enough’.

It would be nice if the system was not bumping up against the 100% SOC so much of the time, as a lower voltage is generally reckoned to improve battery longevity. I will look into the scripts Owen posted above. So far as I can see DESS does not have a mechanism to say ‘only fill up to X%’, nor the slightly more sophisticated ‘only fill up to X%, except for periodic battery conditioning charge’. Is there such a mechanism?

The only way to not be at 100% all the time was to use the Node-RED flow that exports in the morning, up to 10 am if the battery is over a certain %. I know I will get 12-17kWh a day and my battery is 36kWh. So in the morning, I will let it charge to 60% then export the MPPT solar by setting the grid setpoint to a negative value to maintain minimal charge.

The only way I could do that was with the algorithm to set the export as a percentage of the general house load, scaled power based on the MPPT. It’s not perfect but dumps a lot of power that will normally go into the battery and charge it quickly.

Without battery communication and a shunt, DVCC works on the internal charger, not the MPPT. This allows me to charge from excess grid-tied solar.

I’ve implemented a flow that constantly tweaks the Grid Setpoint - seems to work quite well and coincidently always seems to be slightly ahead of ACLoad so the battery very slowly drains during the day

It should ‘just work’, but as @wookey observes, there does seem to be a bit of a conflict between DVCC and ESS.

DESS does it’s own thing and should learn that you’re going to get more sun tomorrow and so not charge up as much overnight. I was using it before we got sunshine, but have now switched from Agile to Go, so I also switched my strategy to a charge up fully at night then export a load of solar.