(D)ESS Multiphase regulation based on phase voltage levels?

Hello,

Currently in a three phase system the power regulation between phases has 2 options:

  • Total of all phases: ESS tries to get the total power to zero (L1 + L2 + L3 = 0)
  • Individual phase: ESS tries to get each phase to zero (L1 = L2 = L3 = 0)

In case of either overall high consumption or (more likely) high solar power injection to the net, the line voltages can get uneven and the grid phases get unbalanced.

For instance, L1 could be at 249V due to uneven distribution of PV inverters in the street while L2 and L3 could be at 235V.
When injecting one’s own PV surplus to the grid, it would be beneficial for the grid to inject more power into L2 and L3, thus evening out the grid inbalance.
This reduces the risk of the PV inverter to throttle down or even shut down due to an excess of feedin in to L1, whilst having plenty capacity on L2 and L3.

Would this be feasible to implement ?

Bart

This has some resemblance to this old post: https://communityarchive.victronenergy.com/questions/197457/ess-multiphase-regulation-new-mode-mixed-needed.html

I think the multiplus currently try to minimize the own inverting effort.

So, the multiphase regulation will always allow grid-pull on the phase where you have the highest consumption, and use the other two to regulate, so each multi has about the same “dc-power” / inverting effort.

That way, you could (with 3 x 5k multis) theoretically use upto 12kW on a single phase, without having to “grid pull” in a net-metering sence.

My Flow-Diagram outlines that pretty neat:

image

Adding 1 kW on Phase 3 now only causes about +330 Watts (DC) per multi:

If that multi would now be feeding in, cause Voltage of L3 would be lowest, he would almost already hit it’s inverting limit… Don’t think that is desired. If in doubt, punish the grid :smiley:

The system then would have to switch to feedin on another unit, and will be heavily limited in reaction speed due to maximum allowed ramp power.

1 Like

Hold on… This is a lot to take in. And reply isn’t short either :confused:

First of all: I agree that “punish the grid” is usually the easiest solution viewed from our side of the wire - it’s not really up to us to balance the grid. Well, ish.
I expect grid operators in the future to charge for (excessive) phase inbalances, like pushing back 4kW on L1 and L2 to compensate for an 8kW load on L3.
In the past they started giving households single phase 40A connections here, exactly for that reason.
Because then they can spread the load by connecting House1 to L1, House2 to L2, House3 to L3 andsoforth, vs the houseowners all hooking up their jacuzzi’s to L1 and the poor bloke at the end of the street his TV starts to flicker due to low line voltage :slight_smile:

Secondly, the scenario I described can pretty much occur only during a bright sunny day, not when you’re inverting from batteries to power your house or are simply running from grid.
Batteries full, no load, PV inverters pushing all they can to the grid.
And if the neighbors (or you) all connected their single phase inverters to L1, that one’s going to sweat.

The Multiphase regulation page states that in “Total of all phases” mode, excess power (from PV) will be compensated for by charging each phase equally to a total of 0 on the meter.
But when batteries are fully charged, the excess is sent out as is.

After this, the page gets a bit fuzzier.
It states that, in “Individual phase” mode, each phase will be balanced to 0 but doesn’t explain further.
What I’m assuming is that the same will happen as in a single phase system: with 7.5kW PV produced as 3x 2.5kW per phase, 3kW load on L1 & L2, 1.5kW load on L3 - Multi3 will (re-)rectify 1kW, transport it over DC to Multi 1 & 2 who will each invert 0.5kW, so each phase load is at 0.

Or in a more extreme scenario: 3kW injection on L1 and 3kW load on L2 will cause Multi1 to rectify 3kW for Multi2 to invert again.

If I understood correctly, in case of pure excess of PV power, no phase balancing will be done.
So injecting 3kW on L1 with no load on L2 or L3 will simply be injected as such.
Multi1 will not rectify 2kW for Multis 2 and 3 to invert and push back to the grid as 1kW per phase.
For the record: I totally agree that doing so would be very ineffective and a pure waste in conversions and needless wear on the Multis.
But what if, for some reason, this would exactly be what we want to do ?
Possible reasons:

  • somebody really, really, REALLY likes to see a balanced net
  • due to excessive inverters on L1 in the street, voltage on L1 is at 250V, PV inverters are shutting down and we get no injection fee.
    If L2 and L3 are still at normal voltage levels, we could rectify 2kW of the 3kW on L1 and invert it out equally as 1kW per phase.
    Or rectify the full 3kW (because L1 is not accepting any power anymore) and inject it as 1.5kW on L2 and L3.

Again: I agree that this would be A Bad Idea, but I would see some people do this.

Early PV installs here were granted “Green Energy” certificates worth up to €450/1000kWh (produced, not injected) for a period of up to 20 years (panels installed between 2006 and 2009, after that the value decreased and the system is now terminated for new home installs).
So somebody with a 10kW PV system from 2009 could earn ~€3800/year for 20 years.
But when their inverter shuts down due to too high voltage on the grid: no production, no certificates, no money.
As for myself: my install is way too recent to get any certificate or support or bonus so my interest would mostly be out of curiosity (in grid balancing).

For PV power produced by panels connected to an MPPT, Victron could check if they can shift the inverting part more to a Multi with lower line voltage.
For PV power produced by an AC PV inverter, maybe vendors like Fronius or SMA could see if they can shift the produced power more to a phase with lower voltage (if they don’t already do).
Using a Multi to rectify power from an AC inverter to re-invert it on another phase would be suboptimal and kind of silly. An easier solution there would be to re-arrange loads and/or PV inverter on other phases.

In your example you’re basically using the grid to balance the inverting power of your Multis.
That works of course, until the grid operator starts putting penalties on that :slight_smile:
Like people here with old analog grid meters who end up with zero net usage per billing year because in summer they use the grid as a battery for consumption during the winter: they are paying a fee for that now, since 2015.

On a totally unrelated note: your flow diagram is absolutely gorgeous - how did you make that ?

I absolutely understand your idea, and it would most likely be possible to implement. The Question is really about cost/usage.

Your last example - one unit taking AC-PV-Power, converting it to DC, just so another unit takes DC-Power, converting it to AC, to feedin on another phase… That is: “DC->AC; AC->DC; DC-AC” - 3 conversion of probably 90ish % so, overall 72% efficeny (or 28% loss of PV-Power) - just to act a little more Grid-Friendly?

Especially when you talk about the people who are concerned to loose some money in overload situations. Do you know what they will say?

28% less money? Fine, let the others do that, i’m sticking to feed in on whatever phase brings me the most money.

So, if that Option would be implemented, without any (external) motivation there would be very very few people utilizing it. If the provider would somehow encourage this, by paying dynamic compensation per phase based on where he wants users to feed in - then it could be a whole different story.

Also, the overall Setting would be limited to very explicit usecases. Nowadays, each provider / country has rules, which power is okay, and when a 3-phased inverter is required. In Germany, the limit is 4.6 kW for single-phased feedin. Or in other words: Every PV-System that is providing significant amounts of power [to the grid] has to be 3 phased.

So, if you want to make your system a bit more grid friendly - and NOT lose the mentioned 30% of PV-Power from your single-phased AC-Inverter: Just hook it up to the weakest phase physically. It is highly unlikely, that tomorrow another phase will be weakest, as changing inverter phases is not a daily quest of people :stuck_out_tongue:

Side-Node

That’s self designed, backend is a c# application, frontend is vanilla html + javascript. (I’m a software developer, I always have to re-write already existing software “from the scratch” because i’m unhappy with 3-4 details and think I can do that better :laughing:)

Loving it, scaling in realtime as currents are changing. Perfect replacement for sheep counting, when trying to fall asleep.

1 Like

Maybe we’ll start installing ZigZag transformers again in the future, to compensate phase inbalances :slight_smile:
Originally I’m an electric/electronics engineer but doing more network and data center engineering now, with a hobby in (Linux) system engineering.
The combination works quite well when designing (more exotic) Victron and Smart Home implementations, but unfortunately my programming skills are totally insufficient to produce a flow diagram like yours.
It does give inspiration to create something similar.
Maybe one day…

1 Like

I almost forgot to ask and since I can 't DM you I’ll ask here:
How are you reading the detailed output values of your Fronius PV inverter ?
SNMP ? Modbus ? Solar API ?

If you want to reply offline, feel free to contact me at firstname.lastname at gmail

TIA !

The cerbo does this automatically. Just hit “Search for PV-Inverters” and it will find the fronius and it’s JSON-Api and grab the values from there. (Have Modbus TCP disabled on the fronius, yet it is working, so has to be the json api)

Oh, so the backend application of your flow diagram just talks to the Cerbo ?
In the Node Red block of my Fronius I can find the AC Volts, Amps & Power per phase etc but nothing from the DC side. Was hoping to find data from each MPPT so I can check which side of my roof produces the most power :slight_smile:
It’s in the JSON data, that I know.
Will have to search around a bit to see how I can poll it.
Thanks for the info !

Ah, yeah the DC-Side is not available from cerbo.

Offtopic

Here, i’m querying the InverterStringXCurrentHistory every 5 minutes and then just calculating a relation of the string power out of the past 5 minutes - and this factor will be applied to the current-AC-Power to determine each Strings DC-Power.

Not 100%, but works out sufficent - powershell, if that’s helpfull for you:

function Get-String-3-4-Ratio(){
    $now = (Get-Date)
    $dayStart = $now.AddHours($now.Hour * -1).AddMinutes($now.Minute * -1).AddSeconds($now.Second * -1)
    $totalSeconds = $now.Subtract($dayStart).TotalSeconds
    $secondsCheckmark = $totalSeconds - ($totalSeconds % 300)

    $checkStart = $dayStart.AddSeconds($secondsCheckmark - 300)
    $checkEnd = $checkStart.AddSeconds(300)

    $qStart = $checkStart.ToString("O")
    $qEnd = $checkEnd.ToString("O")

    $jsonInverter2String1Current = (Get-CachedApiCall "InverterString1CurrentHistory" 300 ("http://10.10.20.46/solar_api/v1/GetArchiveData.cgi?Scope=System&StartDate=" + $qStart + "&EndDate=" + $qEnd +"&Channel=Current_DC_String_1"))
    $jsonInverter2String2Current = (Get-CachedApiCall "InverterString2CurrentHistory" 300 ("http://10.10.20.46/solar_api/v1/GetArchiveData.cgi?Scope=System&StartDate=" + $qStart + "&EndDate=" + $qEnd +"&Channel=Current_DC_String_2"))
    $jsonInverter2String1Voltage = (Get-CachedApiCall "InverterString1VoltageHistory" 300 ("http://10.10.20.46/solar_api/v1/GetArchiveData.cgi?Scope=System&StartDate=" + $qStart + "&EndDate=" + $qEnd +"&Channel=Voltage_DC_String_1"))
    $jsonInverter2String2Voltage = (Get-CachedApiCall "InverterString2VoltageHistory" 300 ("http://10.10.20.46/solar_api/v1/GetArchiveData.cgi?Scope=System&StartDate=" + $qStart + "&EndDate=" + $qEnd +"&Channel=Voltage_DC_String_2"))
    
    $currentString1 = $jsonInverter2String1Current.Body.Data."inverter/1".Data.Current_DC_String_1.Values."0" -as [double]
    $currentString2 = $jsonInverter2String2Current.Body.Data."inverter/1".Data.Current_DC_String_2.Values."0" -as [double]
    $voltageString1 = $jsonInverter2String1Voltage.Body.Data."inverter/1".Data.Voltage_DC_String_1.Values."0" -as [double]
    $voltageString2 = $jsonInverter2String2Voltage.Body.Data."inverter/1".Data.Voltage_DC_String_2.Values."0" -as [double]

    #Export Voltages to Mqtt.
    Set-MQTTMessage -Key "Solar/String3/PV/Voltage" -Double $voltageString1 -Retain $true 
    Set-MQTTMessage -Key "Solar/String4/PV/Voltage" -Double $voltageString2 -Retain $true

    $powerString1 = $currentString1 * $voltageString1
    $powerString2 = $currentString2 * $voltageString2
    
    if ($powerString2 -gt 0 -and $powerString1 -gt 0){
        $ratio = ($powerString1 / ($powerString1 + $powerString2))
        Write-Host ("Queried String ratio is: $ratio")
        return $ratio
    }else{
        #If error, we assume String-size-based distribution. 
        return 4340.0/(4340.0 + 3720.0)
    }
}

and then

$String_3_4_ratio = Get-String-3-4-Ratio
$powerPvCurrentString3 = [math]::Round($powerSymo * $String_3_4_ratio, 2)
$powerPvCurrentString4 = [math]::Round($powerSymo - $powerPvCurrentString3, 2)
...
Set-MQTTMessage -Key "Solar/String3/Power" -Retain $True -QoS 1 -Double $powerPvCurrentString3
Set-MQTTMessage -Key "Solar/String4/Power" -Retain $True -QoS 1 -Double $powerPvCurrentString4
1 Like

I’m more a Bash kind of guy :slight_smile: but I hugely appreciate the pointers you’re giving !

1 Like

In case somebody is looking for this kind of information - specific for use in Belgium !

In a three phase system of 30kVA or less, the maximum power unbalance between any two of the three phases is 5kVA.
This means that pulling 4kVA from the grid on L1 and compensating this by injecting 2kVA into the grid on L2 and L3 is NOT allowed !

Detailed documentation on the website of Synergrid and this document (in Dutch): https://www.synergrid.be/images/downloads/technical_prescription-c10-11-ed2-2-20210315-tekst-nl.pdf
Relevant section: 8.2.5 starting on page 54.

Currently Victron doesn’t have a setting to enforce this (except regulating each phase to 0, but a “max 5kVA unbalance” option doesn’t exist yet), but it could be useful as I expect other grid operators will start to require this as well.
And with digital power meters, they have the means to detect this.