Victron ESS: MPPT throttling relief via Node-RED AcPowerSetPoint control

**Setup:** 3× MultiPlus-II 48/3000/35, 3× Victron MPPT (7.5 kWp DC), Sungrow 12kW (12.75 kWp AC-coupled), 72 kWh LiFePO4, Cerbo GX, Lithuania grid (individual phase metering, 13.6 kW export limit).

-–

**The problem**

In AC+DC hybrid ESS systems, when battery reaches ~100% SOC and absorption voltage (RCV), Victron MPPTs throttle to near zero — an off-grid firmware behaviour that persists even when grid export is available. Meanwhile the AC-coupled Sungrow inverter exports freely. Result: 3–5 kW of DC solar wasted during every absorption phase.

Critical finding: throttling begins at battery *voltage*, not when BMS reports SOC=100%. With RCV=56.0V, MPPT output dropped from ~3500W to ~9W while SOC still showed 99%. BMS only reports 100% after 30 minutes at RCV. Using SOC as the trigger misses the entire throttling window.

-–

**Detection**

Since all panels face the same direction (165° SSE), DC and AC output should be proportional. Normal DC:AC ratio ≈ 7470W / 12750W ≈ 0.586. We detect throttling when DC falls below 30% of AC output:

```

mpptThrottling = (SOC >= 100 OR DC_voltage >= 56.0V)

             AND SungrowW > 2000W

             AND MPPTonly < SungrowW × 0.3

```

This handles partial throttling (where only some MPPTs are affected) and catches throttling before BMS reports 100%.

-–

**Relief logic (Node-RED, runs every 2 seconds)**

When throttling detected → increase AcPowerSetPoint export by +100W per cycle.

When throttling clears → decrease by −100W every 10 seconds (slow, to prevent oscillation).

When SOC drops below 100% → reset to 0.

The asymmetric ramp (fast up, slow down) is intentional — MPPTs need time to recover after export pressure is released.

--

**Results**

- Throttling detected within 2–4 seconds

- MPPTs recover from ~9W to ~3500W within ~2 minutes

- On good days (~115 kWh generation), saves ~3–5 kWh per absorption phase

- Cell balancing completes normally — battery holds at absorption voltage throughout

-–

**Note:** We did not use /MppOperationMode DBUS register — the ratio method was sufficient. Using the operation mode register would be a more “official” detection approach and may work better in non-hybrid setups.

Happy to share the full Node-RED function code if useful.