-
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 data sheet capacity. These are probably not what you think, as the names are only an approximation to the actual capacity:
- HV2600 = 2.56 kWh
- HV2500 = 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.
The BMS manages batteries to ensure are not damaged by over charging or over discharging. As a result of this, in typical use with BMS v2, the maximum energy in a battery may be around 90% to 95% of it's data sheet capacity. With 4 x HV2600, this means a maxiumum stored energy of 9.22 kWh. BMS v1 is more aggressive and can deliver 100% of the cell capacity (10.24kWh). It isn't clear which is better in terms of the long term health of the batteries.
Note: from now on, when referring to battery capacity, I mean the maximum energy that can be stored (typically 90% to 95% of the data sheet capacity) when the batteries are new and operating at their nominal cell temperature of around 20C.
The BMS presents the amount of energy held in the batteries, calculated as the % of battery energy divided by the current battery 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.
The inverse of State of Charge, State of Discharge (SoD) is also calculated. This is % of the current battery capacity that is empty.
When connected via RS485, you can read the amount of energy in kWh the BMS thinks is stored in the batteries, using the sensor 'BMS kWh Remaining'. This reading allows you to understand the battery capacity better as you can see the value in kWh when the battery state of charge is reading 100%.
In the Fox cloud data and Energy Stats app, the same value is called Residual. In Energy Stats, tap the battery SoC % to see the battery residual kWh.
Normally set to 10%.
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. Note that for 4 x HV2600 with a nominal capacity of 10.24 kWh, 90% usable and 10% minimum state of charge, the effective usable capacity is 80% or 8.34 kWh.
Related to Min SoC, Depth of Discharge (DoD) is the maximum amount the battery can be discharged without causing permanent damage. Typically, this is specified as 90%, corresponding to a Min Soc of 10%.
Once the batteries get to Min Soc, the inverter will stop using the batteries. However, the BMS is powered by the batteries and draws around 30w so SoC will continue to drop over time. Once SoC gets to around 3% below the minimum you have set, the BMS will request charge from grid via the inverter 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%.
Also normally set to 10%.
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 10% 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 could be used (via an EPS switch) to supply emergency power until the battery charge drops to 10%.
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 work mode periods, including Force Charge and Force Discharge Work modes. It is recommended to use either charge times or strategy periods to manage your battery charge as the 2 schemes are mutually exclusive and setting one will disable the other.
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 (known as 'Force Charge'). 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 Force Charge, set both time windows, set the start and end times to the same value e.g. 00:00 - 00:00.
With H1 inverter firmware v.170, there are now 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 made via the inverter front panel. More correctly, it probably should be called Max Soc On Grid, as this sets the maxiumum state of charge when the batteries are being charged from 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% allows the batteries to discharge down to Max SoC when force charge is enabled. In order to hold the batteries at Max Soc over a time period, set 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). With around 8.3 kWh usable battery capacity, the charge time at 5.8kW is around 90 minutes.
The maximum charge current can be changed via the inverter front panel. Reducing this setting 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 longer 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. With 8.3 kWh usable capacity, the charge time increases to around 3 hours.
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.
With an RS485 connection to the inverter modbus, you can see BMS sensors that monitor the battery cell voltages. Cell data can also be accessed via Settings in Fox App v2.0 and 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%.
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 also 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:
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 not be reduced until the lowest cell temperature drops below 10C, when 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. The normal charge power is now 3.78kW, even with a 5kW inverter as it is limited at 35A (108 x 35). When the lowest cell temperature drops below 20C, the current limit is reduced to 25A and the charge power drops to 2.7kW (108 x 25). When the lowest cell temperature drops below 10C, the charge power drops to 1.62kW (108 x 15).
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 battery energy throughput to date and the energy allowance given in the Fox ESS Battery Warranty Policy
The reduction in battery capacity with age can be monitored and used to calcualte:
- Battery SoH (State of Health): this is the ratio of the current battery capacity divided by the battery capacity when new, expressed as %.
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% (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.