Files
shaggy-solar/LVX6048/lvx-flash/profiles/eg4-lp4-v2.yaml
noise f1128e807a Record decision to keep 48.0V discharge floor (improvement #3)
Reviewed the cutoff/stop-discharge floor; deliberately kept at 48.0V (3.00
V/cell) for cycle-life margin. Lowering to 46-47V unlocks only a few % of LFP
capacity and isn't worth deeper cycling on this large, non-capacity-constrained
bank. Comment only; no value change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 12:28:44 -04:00

70 lines
3.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LVX6048 settings profile — EG4 LifePower4 v2 LiFePO4 bank, open-loop.
#
# Designed for: 6× EG4 LP4 v2 100 Ah in parallel (600 Ah, ~30.7 kWh).
# (Was 3 packs originally; 3 more added — commit 38ac9ca. Values below are
# unchanged and remain correct for 6 packs — they're only MORE conservative now.)
# Apply identically to both inverters in a parallel pair:
# sudo systemctl stop powermon.service powermon2.service
# ./flash.py apply --device /dev/lvx6048-1 --profile profiles/eg4-lp4-v2.yaml --confirm
# ./flash.py apply --device /dev/lvx6048-2 --profile profiles/eg4-lp4-v2.yaml --confirm
# sudo systemctl start powermon.service powermon2.service
# ./flash.py compare --device-a /dev/lvx6048-1 --device-b /dev/lvx6048-2
# ./flash.py sync-check --device-a /dev/lvx6048-1 --device-b /dev/lvx6048-2
#
# Voltage rationale (16S LFP, 3.2 V/cell nominal = 51.2 V pack):
# bulk 56.4 V = 3.525 V/cell — long-life sweet spot for LFP
# float 54.0 V = 3.375 V/cell — rest near mid-knee, avoid sitting on the top
# stop_charge 54.0 V — grid charges only to ~mid-knee; solar handles the bulk top-off
# stop_dis 48.0 V = 3.000 V/cell — soft "switch to grid" point
# cutoff 48.0 V = 3.000 V/cell — inverter hard shutdown floor (BMS still protects below)
# (Floor reviewed 2026-06-24: deliberately kept at 48.0/3.00 V for cycle-life margin.
# Lowering to 46-47 V would unlock only a few % of usable LFP capacity and isn't
# worth the deeper cycling on this large, non-capacity-constrained bank.)
# Conservative off-grid policy: keep grid as a soft top-up, let solar do the bulk work.
#
# Current rationale (600 Ah bank):
# 60 A/unit × 2 units = 120 A combined ≈ 0.2 C — very gentle on a 600 Ah bank.
# 30 A/unit MUCHGC keeps grid-charging conservative (60 A combined).
# NOT raised to 80 A/unit (the enum max): charging is not clipping — at solar noon
# on a clear day (2026-06-24, ~5.8 kW PV) the bank drew only 71 A of the 120 A cap.
# The real harvest limiter is PV production (~5.8 kW seen vs 14.4 kW nameplate —
# the suspected down strings), not the charge ceiling. Revisit only if PV is
# restored and midday charge current is seen pinned at ~120 A below ~90% SoC.
# enum: AGM | FLOODED | USER
# USER required to enable the per-cell custom voltages below.
battery_type: USER
# V 40.0..48.0 — hard shutdown; must be < stop_discharge_voltage.
cutoff_voltage: 48.0
# V 44.0..51.0 — switch battery→grid below this (pair: stop_charge_voltage).
stop_discharge_voltage: 48.0
# V 0 (=Full) or 48.0..58.0 — switch grid→battery above this. 0 = let bulk define.
stop_charge_voltage: 54.0
# V 48.0..58.4 — CC→CV transition (pair: float_voltage; must be >= float_voltage).
bulk_voltage: 56.4
# V 48.0..58.4 — held while on grid (pair: bulk_voltage; must be <= bulk_voltage).
float_voltage: 54.0
# A 10,20,30,40,50,60,70,80 — combined solar+AC cap, per unit.
max_charging_current: 60
# A 2,10,20,30,40,50,60,70,80 — grid-side cap, per unit.
max_utility_charging_current: 30
# enum: solar_utility_battery | solar_battery_utility
output_source_priority: solar_battery_utility
# enum: solar_first | solar_and_utility | solar_only
charger_priority: solar_first
# enum: battery_load_utility_ac | load_battery_utility
solar_power_priority: battery_load_utility_ac
# enum: enabled | disabled (PEI/PDI)
grid_tie: disabled