-
Notifications
You must be signed in to change notification settings - Fork 2
Battery Management
This page provides notes on batteries, parameters that control charge and discharge and maintenance.
Each battery has a rated capacity, given in the data sheet. The names are only an approximation to the actual rated capacity:
- HV2600 = 2.56 kWh
- Mira HV25 = 2.45 kWh
- ECS2900 = 2.88kWh
- ECS4100 = 4.03 kWh
- ECS4300H = 4.14 kWh
- ECS4800 = 4.66 kWh
To get higher capacities, a number of batteries are connected in series, so 4 x HV2600 = 4 x 2.56 = 10.24 kWh. This integration calls this the Battery Specification.
The capacity of a battery reduces with use so the current capacity is always the same or less than the rated capacity. The ratio of current capacity to rated capacity is called the State of Health (SoH - see below).
The minimum amount of charge that should be retained for the health of the batteries. Completely discharging the batteries can lead to damage and render the battery unusable. So, there is a nominal level or minimum state of charge where the batteries stop being used / discharged. Fox batteries have a recommended DoD of 90%, meaning that 90% of the current capacity is available and 10% is reserved.
SoC shows the amount of energy held in the batteries, calculated as the % of current battery energy divided by the current capacity.
The BMS monitors the batteries and tracks the maximum and current energy stored in order to calculate SoC. As this calculation depends on both values, the BMS periodically updates it's view of the current energy stored and capacity, a process referred to as recalibration. Normally, this results in small changes, but larger changes can happen, especially if the batteries are subject to temperature swings as well.
Also called 'System Min SoC'. This is normally set to the minimum value of 10% to provide 90% depth of discharge. If you system is operating normally, setting this higher than 10% is generally not recommended as it means the battery capacity you have paid for will not be available to use.
Once the batteries get to Min Soc, the inverter will stop discharging the batteries. However, the BMS is powered by the batteries and draws up to 50w so SoC will continue to drop over time. When SoC gets to around 4% below the minimum, the BMS will request a 'float charge' from grid to top the battery back up to Min Soc. This is perfectly normal, so do not be alarmed if you see the battery showing 6% or 7% after setting min_soc to 10%.
If your inverter is off-grid or has a fault for a period of time, the BMS can completely discharge the batteries and damage them. If you have a fault, turn off the BMS to preserve the minimum charge level in the batteries.
Also called Battery Reserve Capacity and normally set to 10% unless you have EPS.
This is a secondary setting for the minimum state of charge when grid power is present. For the most part, this is the setting that determines when the batteries will stop being used. Setting this higher than Min SoC will reserve battery power for a grid outage. For example, if you set Min Soc On Grid to 20%, the inverter will stop supplying power from the batteries at 20% and the house load will be supplied from the grid. If there is a grid outage, the batteries will be used (via EPS) to supply emergency power until the battery charge drops to 10%. At 10%, the inverter will cut off the EPS power.
Battery charge times are available in the Fox Apps and Fox Cloud, either directly from Quick Settings or under Battery Settings. The charge times allow you to set up to 2 time periods when the battery will be charged from the grid or where discharge is disabled (Force Charge). These are explained below.
As an alternative, you can use schedules to set up to 8 time periods, including Force Charge and Force Discharge Work modes. Use either charge times or schedules to manage your battery charge as the 2 schemes are mutually exclusive and setting one will disable the other. If you try to set Charge times when schedules are enabled, you will get the error 'unsupported function code'.
Switching 'Enable Charge from Grid' to on in the battery settings causes the inverter to charge the batteries from the grid during the associated time window e.g. Charge from grid 02.00 - 04.55. During the time window, the inverter will not supply the house load, but will instead draw power from the grid to charge the batteries. Once the battery is charged, the inverter will maintain the level of charge and will not supply the house load from the battery until the time window ends. This is useful if, for example, you wish to charge an EV, as the power will come from the grid while the batteries are held at the charge level set by Max SoC.
If 'Enable Charge from Grid' is off in the battery settings, and you set a time window, the inverter will not charge or discharge the batteries and the house load will be met from the grid. This is useful if, for example, you have a cheap rate tariff that you wish to use to run appliances or charge an EV but do not wish to charge (or discharge) the batteries, such as during summer when all charging might be done during the day from PV.
To disable this, set both time windows start and end times to the same value e.g. 00:00 - 00:00.
Note that in Fox App v2, the way you configure Charge Times has changed and you can also enable / disable a time period. How to set the times is explained here
With newer inverter firmware (H1 v1.70 and later, for example), there are options to schedule work modes that provide another way to charge and discharge your batteries. See Inverter Work Modes for more information.
This setting can be changed via the inverter front panel or, with newer inverter firmware, as part of a schedule.
This probably should be called Max Soc On Grid, as this sets the maxiumum state of charge when the batteries are being charged from the grid. Normally, this is set to 100% so that, when you charge from grid, the batteries are charged to 100%. Lowering this value allows you to part charge the batteries to reduce the amount of grid power you consume, such as during summer, leaving space to top your battery to 100% from solar.
Note: it seems that lowering this value from 100% may also allow the battery to discharge down to Max SoC when the battery is on hold. In order to hold the batteries at Max Soc over a time period, enable charge from grid.
By default, the battery charge current will be set to allow the inverter to deliver it's maximum power output when charging the batteries. For example, with a 6kW inverter and 4 x HV2600 with a nominal battery voltage of 52v, the overall battery voltage is 208v and the charge current is around 28A (208v x 28A = 5.8kW). This means the battery will add around 5.8kWh per hour of charging.
The maximum charge current can be changed via the inverter front panel or Modbus. Reducing this limits the current (and hence power) that the inverter is allowed to use when charging the batteries. Charging the batteries at maximum current may lead to cell imbalance, higher temperatures (which means greater losses) and a reduction in battery capacity and performance. Limiting the battery charge current means the batteries get a more gentle charge (referred to as trickle charging).
The downside to doing this is a longer charge time. Taking the example above and limiting the charge current to 13A, the charge power is 2.7kW and it will only add 2.7kWh per hour of charging.
Limiting the power used for charging can also enhance the amount of power available for export, although this could also lead to clipping if the inverter also has an export limit set.
If you want to charge your battery over a longer period of time, by reducing the maximum charge current, you need to work out the amount of energy you want to add. For example, if you want to add 6kWh to a battery, over 3 hours, you want to limit the charge power to around 2kW or 2,000 watts. If your battery voltage is 210v, the charge current needs to be 9.5A (2000w/210v). Round up to maximum charge current of 10A or 11A to make sure the battery charges in the 3 hour window.
The BMS tracks the amount of energy in the battery, known as Residual. Exactly what this provides depends on the BMS firmware. With older firmware, this value is the Residual Energy in the battery i.e. the amount of energy stored now. With newer firmware, this value is the Residual Capacity of the battery i.e. the maximum amount of energy that can be stored. This value is available in the Fox cloud data and via Modbus for some inverter models.
In Home Assistant integrations, this is called 'BMS kWh Remaining'. In Energy Stats, tap the battery SoC % to see the Residual kWh.
In this integration, there is a setting 'Residual Handling' that sets how Residual should be managed. If the BMS returns Residual Energy, set this value to 1. If the BMS returns Residual Capacity, set this value to 2. The integration will then adjust the Battery Capacity and Battery Energy values appropriately.
Most batteries are specified with a life of between 4,000 and 6,000 cycles. The BMS keeps track of the amount of charge and discharge energy passing through the batteries and works out how many cycles are being consumed from this. This integration uses this data to calculate 2 properties:
- Battery Life Remaining: this is calculated using the date your system was installed and the BMS cycle count to estimate the number of years of battery life remaining. It looks at the number of cycles used since your system was installed and works out the number of days remaining until your cycle count will reach 6,000. This is displayed as the number of years of battery life remaining.
- Battery Energy per Cycle:: this is calculated using the total battery charge and discharge energy recorded by the inverter and the number of cycles consumed. The total energy is divided by the number of cycles to give an average battery energy per cycle. This is useful as it allows you to estimate the impact on battery life of recycling energy through your batteries using force charge / discharge.
- Battery Warranty Remaining: this is calculated using the Energy Throughput to date and the energy allowance given in the Fox ESS Battery Warranty Policy
Battery SoH or State of Health shows how much the battery capacity degrades over time, referred to as Calendar Ageing. When the battery is new, this value should be 100% but it will reduce with the amount of charge and discharge energy passed through the battery (Energy Throughput).
SoH = Residual Capacity in kWh / Battery Specification in kwH x 100
Fox provides a battery performance warranty. This varies across products but typically the SoH is guaranteed to be 70% or more after 10 years, subject to a maximum Energy Throughput.
Although calendar ageing implies a linear reduction in capacity over time, this is not the case. The capacity of a new battery falls in relation to Energy Throughput. The rate of decline is highest in the first 12 months and tends to flatten after this. The rate of decline is also determined by the size and the way the battery is used. A small battery that is fully charged and discharged every day has a higher relative energy throughput than a larger battery that is only partially charged and discharged every day. The regular use of Force Discharge also accelerates the fall in SoH as it directly adds to the Energy Throughput.
Cell temperature is critical to battery performance and capacity. The BMS monitors the temperature of each cell. If the batteries are too cold, the BMS will try to charge them to keep them at an optimal temperature. If the batteries are too warm or too cold, the BMS will also restrict the charge / discharge current to avoid damaging the cells.
The BMS reports the temperature of each cell and the maximum and minimum temperatures. The cell temperatures should not be confused with the BMS electronics temperature (incorrectly called Battery Temperature by Fox). This integration calculates the average cell temperature and the temperature imbalance from the maximum and minimum temperatures. The lowest cell temperature is now displayed on the Battery screen in Fox App v2.0.
When the cell temperature is too high or too low, the BMS will limit the charge rate (current) according to this chart:
This chart was produced in 2023 and there is evidence to suggest that it has been updated with the latest BMS firmware. It looks like the cell temperatures have been raised. We are now seeing de-rating to 15A when the cell temperature is below 21C.
The effect of current limiting on battery charging depends on the inverter power rating and the number of batteries. For example, if you have a 5kW inverter and 4 x HV batteries, the battery voltage is around 212v. The normal charge power is 4.85kW and the charge current is 22A (97% of 5kW / 212v). The battery charge rate will be reduced when the lowest cell temperature drops below 21C and the charge power will be reduced to 3.18kW (212 x 15)
The same inverter with 2 x HV batteries has a battery voltage around 108v. The inverter has a 35A current limit, so the 'normal' charge power is 3.78kW (108 x 35). When the lowest cell temperature drops below 21C, the current limit is reduced to 15A and the charge power drops to 1.6kW (108 x 15).
With a Modbus connection to the inverter, you can see BMS sensors that monitor the battery cell voltages and temperatures. Cell data can also be accessed via Advanced / Remote Settings in Fox App v2.0 and web site via this battey script.
Each cell is approx. 3.3v and there are 16 cells in series per HV2600 battery (16 x 3.3 = 53v per battery). The BMS reports the highest and lowest cell voltages (sensor.bms_cell_mv_high and sensor.bms_cell_mv_low). The values of the cell voltages vary with the level of charge but the difference between the highest and lowest cell voltages indicates how well balanced the cell (and batteries) are. To make it easier to monitor this, I calculate the cell imbalance as a % with this template:
# calculate cell imbalance as % using the difference between min and max cell voltage
- name: "Battery Cell Imbalance"
unique_id: foxess_inv1_battery_cell_imbalance
unit_of_measurement: "%"
state: >
{% set cell_high = states('sensor.bms_cell_mv_high') | float(default=-1) %}
{% set cell_low = states('sensor.bms_cell_mv_low') | float(default=-1) %}
{% set imbalance = ((cell_high - cell_low) | abs) / (cell_high + cell_low) * 200 %}
{% set imbalance = 'Unavailable' if cell_high <= -1 or cell_low <= -1 else imbalance | round(2) %}
{{ imbalance }}
When there are significant charge or discharge currents through the batteries, the cell imbalance can peak in the region of 2% to 3% for a short time, but then generally settles to around 0.2%.
If you think you have a problem with your batteries, you can do some simple diagnostics if you run this battery script.
You can also use a multimeter if are comfortable working with DC voltages and connecting / disconnecting the battery cables when the system is switched off.
Fox ESS specifies a test as part of the installation of the batteries: measuring the overall battery voltage prior to system switch on. The expected range of the battery voltage is 52v x n +/- 10v. For example, if you have 4 x HV2600, this means a typical battery voltage of 208v with a range between 198v and 218v. If you have 6 x HV2600, the typical battery voltage is 312v with a range of 302v to 322v.
If you need to delve deeper into battery performance and capacity, you can split the stack apart and check / charge specific batteries:
- To help track your batteries, number the packs starting from the BMS, 1 to 4 going top to bottom and then 5 to 8 going bottom to top, depending how many you have.
- You can now switch off, break the stack apart and measure the voltage presented by each battery, record it and track it against the level of charge. A fully charged HV2600 battery is expected to present a voltage between 53.1v and 53.4 volts.
- If you find batteries with a significantly lower voltage, you can manually balance the batteries by connecting them to the BMS (minimum of 2 batteries), setting the DIP switch correctly (n-2) and charging / checking until they show the same voltage as the others.
- Once the batteries all measure the same voltage, you can rebuild the stack and charge / discharge them together.
Each time you make a change, it may take a while for the BMS SoC to recalibrate as it works out the capacity of the attached batteries. Monitoring the battery current can help you work out when the BMS is charging the batteries.
With Soc around 97% (state of discharge or SoD 3%), the cell voltages start to rise rapdily, cell imbalance increases and cell temperatures rise as they are no longer able to absorb the energy being pushed through them:
The BMS controls the current coming from the inverter, progressively reducing the charge current until this goes to zero:
After reaching 100% SoC, the BMS draws a small current from the cells and cell imbalance reduces.