Blog Single Author Fullwidth

SunLith Energy Temperature gradient heat map across a BESS battery rack

Cell Temperature Gradients in BESS: Safe ΔT Limits and What Causes Uneven Heating

⚡ Quick Answer: What Is a Safe Temperature Gradient in a BESS Pack?
A temperature gradient is the difference in temperature between the hottest and coolest cells in a pack at the same moment, often written as ΔT. Many BESS specifications target a maximum gradient of around 5°C across a rack, with premium liquid-cooled systems aiming closer to 2-3°C. A larger temperature gradient does not just mean one hot spot. It means cells are aging at different rates within the same pack, which widens the performance gap that cell matching worked to close in the first place.

1. Why Temperature Uniformity Is a Different Problem Than Cooling Capacity

Choosing between air and liquid cooling answers one question: how much heat can the system remove overall. It does not answer a second, separate question, however: does that heat leave every cell at the same rate? A BESS can have more than enough total cooling capacity. Even so, it can still run a large temperature gradient, if heat leaves some cells faster than others.

This distinction matters because gradient problems do not always show up as an overheating alarm. A pack can sit comfortably within its overall safe temperature range. Meanwhile, one corner of the rack quietly runs several degrees hotter than another, cycle after cycle. Nothing trips. Nothing alarms. The pack simply ages unevenly, and nobody notices until the SOH numbers start to diverge.

2. What Counts as a Safe Temperature Gradient

Exact gradient limits vary by manufacturer, cell chemistry, and system design. As a result, treat any single number as a target to verify, not a universal rule. That said, a few reference points are commonly cited in BESS specifications.

  • Around 5°C maximum cell-to-cell gradient is a commonly specified ceiling for air-cooled and moderately cooled BESS racks.
  • 2-3°C is a tighter target that premium liquid-cooled systems often aim for, particularly at utility scale, where thousands of cells raise the stakes of even small mismatches.
  • Gradient limits typically apply within a single rack or module first. They then get checked again at the full-system level, since gradients between racks can run larger than gradients within one rack.

Ask your supplier for their specific gradient target, not just their overall operating temperature range. A wide operating range, such as -20°C to 55°C, says nothing about how tightly matched cell temperatures stay relative to each other inside that range.

3. Three Root Causes of Uneven Cell Heating

SunLith Energy Temperature gradient causes: coolant flow, cell position, busbar resistance

Temperature gradients rarely come from one single cause. Instead, three factors typically combine to create them.

Coolant Path Position

In a liquid-cooled rack, coolant usually enters at one point and exits at another, picking up heat along the way. Cells nearest the coolant inlet sit in cooler fluid. Cells nearest the outlet, by contrast, sit in fluid that has already absorbed heat from cells earlier in the path. As a result, outlet-side cells often run measurably warmer than inlet-side cells. This happens purely because of their position in the flow path, not because of anything different about the cells themselves.

Cell Position Within the Pack

Cells near the edge of a rack or enclosure sit closer to the outside walls, where some heat escapes to the surrounding air. Cells buried in the center of a dense pack, on the other hand, have neighbors on every side, so that heat has fewer places to go. Center cells, therefore, often run hotter than edge cells, even under identical cooling and identical current.

Current Path and Busbar Resistance

Current does not always split perfectly evenly across parallel cell groups. Small differences in busbar length, connection quality, or contact resistance mean some current paths carry slightly more current than others. Since heating from resistance follows I²R, even a small current imbalance produces a disproportionate heating difference. This connects directly to internal resistance variation covered in our cell matching guide: cells or groups with higher resistance generate more heat at the same current. As a result, a resistance mismatch and a temperature gradient often reinforce each other.

4. How a Temperature Gradient Accelerates Divergent Aging

Battery aging reactions speed up with heat. Researchers publishing in PMC (National Center for Biotechnology Information) found that inhomogeneous cell temperature inside a pack is a real, measurable driver of uneven degradation, not just a theoretical concern. Applied to a pack with a real gradient, this means the hottest cells are not just uncomfortable. They are quietly aging faster than their cooler neighbors, cycle after cycle.

This is where uneven heating and cell matching intersect. A pack that started out well matched, as covered in our cell matching guide, can still drift apart over time. A persistent hot zone can push those cells toward faster capacity fade. Meanwhile, cooler cells barely age at all. The BMS then has to work harder to compensate for a gap that thermal design, not manufacturing variance, actually created.

Cold cells create a different problem. Below their optimal range, cells deliver less power. They also accept slower charge rates. In practice, this means the coolest cells in a pack can become the limiting factor for dispatch power. This happens even though they are aging the slowest of anyone in the rack.

5. How the BMS Responds to What It Can Actually See

SunLith Energy Temperature gradient sensor placement comparison in a BMS module

A BMS cannot manage a gradient it cannot measure. Sensor placement, therefore, matters as much as sensor accuracy. A design with one temperature sensor per module, placed at a single convenient point, will miss gradients happening between that sensor’s location and the rest of the module.

More thorough designs, instead, place multiple sensors per module. These sit at known high-risk points — near coolant outlets, at pack centers, and at busbar connections. This ties directly into the safety diagnostic algorithms covered in our BMS algorithms guide, since a BMS can only flag a developing hot spot if a sensor actually sits close enough to detect it before the gradient becomes a real problem.

6. Questions to Ask Your Supplier

  • What is your specified maximum cell-to-cell temperature gradient, not just the overall operating temperature range?
  • How many temperature sensors does each module have, and where are they physically placed?
  • For liquid-cooled systems, what is the coolant flow path? What gradient exists between inlet-side and outlet-side cells?
  • Do you have field or test data showing SOH divergence between hot-zone and cool-zone cells over time?
  • How does the BMS respond if a persistent gradient develops? Does it just log the data, or does it adjust balancing or dispatch limits?

Conclusion: A Temperature Gradient Is a Slow Problem That Looks Like No Problem at All

Overheating alarms are easy to notice. Temperature gradients, however, are not. A pack can run entirely within its safe range. It can still age unevenly, cell by cell. Nobody measured the gradient closely enough to see it. Ask suppliers for their specific gradient limit, not just their operating range. Then ask how many sensors actually watch for it.

For the manufacturing-stage half of this problem — how mismatched cells enter a pack in the first place — see our cell matching guide. Matching and thermal design solve two different sources of the same underlying issue: cells in one pack quietly drifting apart from each other over time.

☀️ Need a Thermal Design Review for Your BESS Project?
Sunlith Energy reviews cooling architecture, sensor placement, and gradient specifications for BESS projects from 50 kWh upward. Contact us before you finalize a thermal design.

Frequently Asked Questions About Cell Temperature Gradients

What is a temperature gradient in a battery pack?

A temperature gradient is the difference between the hottest and coolest cell temperatures in a pack at the same moment, usually written as ΔT. It is a separate measurement from the pack’s overall operating temperature range. That is because a pack can sit within a safe range overall while still having a large gap between its warmest and coolest cells.

What causes temperature gradients inside a BESS pack?

Three factors typically combine to cause gradients. Coolant path position matters, since cells near a coolant outlet run warmer than cells near the inlet. Cell position within the pack matters too, since center cells trap more heat than edge cells. Finally, uneven current distribution from busbar resistance differences creates uneven I²R heating across parallel cell groups.

How does uneven heating affect cell aging?

Hotter cells within a gradient age faster than cooler cells in the same pack, since battery degradation reactions speed up with heat. Over time, this can widen the performance gap between cells, even in a pack that started out well matched. As a result, the BMS ends up compensating for a gap that thermal design created, rather than manufacturing variance.

What is a safe temperature gradient for a BESS pack?

Exact limits vary by manufacturer and system design. However, a maximum gradient of around 5°C is commonly specified for air-cooled and moderately cooled systems, while premium liquid-cooled systems often target 2-3°C. Always confirm the specific figure with your supplier rather than assuming a standard number applies.

How many temperature sensors does a BESS module need?

There is no single universal number. Still, a module with only one sensor at a single convenient location cannot detect a gradient occurring elsewhere in that module. More thorough designs, therefore, place multiple sensors at known high-risk points, such as near coolant outlets, pack centers, and busbar connections.

Further Reading

SunLith Energy Cell matching sorting line grouping battery cells by voltage and resistance

Cell Matching Before Pack Assembly: Why It Matters Before the BMS Ever Balances a Cell

⚡ Quick Answer: What Is Cell Matching?
Cell matching is the process of sorting battery cells by voltage, capacity, and internal resistance before they go into a pack, so cells with similar characteristics end up grouped together. It happens on the factory floor, before assembly. This is not the same thing as BMS balancing, which corrects drift after the pack is already built and in use. Skipping cell matching does not make a pack unsafe by itself, since the BMS still protects it. However, it does mean the BMS has to work much harder from day one. As a result, the pack’s real-world capacity and cycle life will likely fall short of what the cell datasheet promises.

1. Why Cell Matching Happens Before the BMS Gets Involved

Cell matching is a manufacturing step that happens before a single cell ever reaches a pack. Even cells from the same production batch are not identical. Small differences in electrode coating thickness, electrolyte fill, and formation cycling leave every cell slightly different. Capacity, voltage, and internal resistance all vary a little, even when the datasheet lists one number for all of them. In a single cell, this variation does not matter. Once dozens or hundreds of cells connect into a pack, though, it matters a great deal.

The BMS will eventually correct some of this drift through balancing, as covered in our complete battery management system guide. Cell matching, however, happens earlier. It is a manufacturing step, not a BMS function, and it exists to reduce how much correction the BMS has to do later.

2. Three Criteria Used to Sort Cells: Voltage, Capacity, and Resistance

SunLith Energy Cell matching criteria: voltage, capacity, and internal resistance measurement

Cell matching typically screens for three characteristics. Each one affects the pack differently. As a result, a thorough process checks all three rather than relying on just one.

  • Voltage (or SOC) matching — technicians group cells by their resting voltage after a defined charge or discharge point. This is the simplest check to run. It also catches the most obvious mismatches quickly.
  • Capacity matching — technicians charge and discharge test each cell to measure actual usable Ah, then group cells with similar capacity together. This matters most for series strings, since the lowest-capacity cell sets the ceiling for the whole string.
  • Internal resistance matching — technicians measure resistance using one of two methods, DCIR or ACIR, then group similar-resistance cells into the same parallel group. This matters most for parallel groups, since a lower-resistance cell otherwise takes more than its fair share of current.

High-volume manufacturers often combine all three, and internal resistance testing itself splits into two distinct methods worth understanding.

DCIR vs ACIR: Two Ways to Measure Internal Resistance

DCIR (DC internal resistance) testing applies a current pulse to the cell and measures the resulting voltage drop. Technicians then calculate resistance directly from Ohm’s law. This method closely reflects how the cell behaves under a real load, since it uses an actual current step rather than a small signal. The tradeoff is speed: each pulse needs time to apply and settle, which slows down high-volume sorting.

ACIR (AC internal resistance) testing instead applies a small alternating current signal, commonly at 1 kHz, and reads the resulting impedance directly. This method runs much faster than DCIR, which is why many production sorting lines use it as a first-pass screen. However, ACIR mostly captures the cell’s high-frequency ohmic resistance. It does not fully capture the slower electrochemical charge-transfer resistance that DCIR testing reveals.

In practice, many manufacturers use ACIR for fast first-pass screening across an entire incoming batch, then apply DCIR pulse testing to verify cells before they go into the same series string or parallel group. A supplier who only mentions one of these two methods is likely doing the faster, less thorough version alone.

3. Series Strings vs Parallel Groups: Different Priorities

SunLith Energy Cell matching effect on series strings and parallel groups in a battery pack

Series and parallel connections fail differently when cells are mismatched. For this reason, they need different matching priorities.

In a series string, cells share the same current, but their voltages differ based on individual state. The weakest cell — the one with the lowest capacity — reaches its low-voltage cutoff first during discharge. Likewise, it hits its high-voltage cutoff first during charge. As a result, that one weak cell limits the usable capacity of the entire string. This happens even though the other cells still have energy left. This is why capacity matching matters most for series strings.

In a parallel group, cells share the same voltage, but current splits between them based on internal resistance. A cell with lower resistance pulls more current than its neighbors. In turn, it works harder and ages faster. Over time, that uneven current sharing can widen the resistance gap further, creating a feedback loop. Left unchecked, this loop drives localized accelerated aging in the same cells, cycle after cycle. That localized wear is what leads to premature pack failure, well before the rest of the pack reaches end of life. For a buyer, that translates directly into a shorter calendar life and a worse return than the datasheet cycle life implied. This is why resistance matching matters most for parallel groups.

☀️ Resistance matching matters most for parallel groups.
💡 The Thermal Feedback Loop: Internal resistance mismatch and localized heating reinforce one another. For a deeper look at how temperature imbalances accelerate this degradation, read our guide on Cell Temperature Gradients in BESS

4. What Happens If You Skip Cell Matching

Skipping cell matching does not make a pack dangerous on its own. A properly designed BMS still enforces voltage and temperature limits, regardless of how well matched the cells are. What changes, instead, is how hard the BMS has to work, and how much capacity the pack actually delivers.

If cells arrive at noticeably different SOC and go into a pack without matching, the BMS must run a large initial balancing pass. This happens the first time the pack charges. Passive balancing currents are typically small — often just tens to a few hundred milliamps — compared to the pack’s full Ah rating. Correcting a large initial mismatch this way can take many hours. In some cases, it takes several charge cycles before the pack reaches a properly balanced state.

Beyond the slow start, an unmatched pack often never fully closes the gap. If capacity variation between cells is large enough, ongoing balancing keeps the weakest cell from falling further behind. Still, balancing cannot manufacture capacity that a weak cell simply does not have. The pack’s usable capacity, therefore, ends up set by its weakest link, cycle after cycle.

5. Top-Balance vs Bottom-Balance: Which Comes First

When manufacturers match cells by connecting them in parallel before final assembly, the SOC point at which this happens changes the outcome.

Bottom-balance matching connects cells in parallel at a low SOC, often close to how they arrive from the manufacturer. This approach is simple and fast. However, it only aligns the cells at the bottom of the charge curve. The pack will likely still need a top-of-charge balancing pass once assembled and charged for the first time.

Top-balance matching, instead, charges the parallel-connected cells to a high SOC before final assembly, typically near the top of the charge curve. This produces a better-aligned pack from the first charge. That is because the region where mismatch matters most for safety and full capacity gets addressed early. The tradeoff is time: bringing a large batch of cells to a matched high-SOC state takes more equipment and more hours before assembly can begin.

6. Cell Matching at Scale: How Manufacturers Grade Cells for Utility BESS

At utility scale, matching thousands of cells by hand is not practical. Instead, high-volume manufacturers run automated sorting lines. These measure voltage, capacity, and resistance for every incoming cell. Grading software then groups cells into matched sets before they ever reach the assembly line.

For a BESS buyer, this raises a practical question worth asking directly: does the supplier grade and match cells before assembly, or does the pack rely entirely on the BMS to fix mismatch after the fact? Independent testing resources such as Battery University document just how differently DCIR and ACIR readings can diverge on the same cell, which is exactly why asking a supplier which method they use, and at which stage, is worth doing directly.

A supplier who can show incoming cell test data is doing meaningfully more quality control than one who simply points to their BMS’s balancing feature. Look, in particular, for a specific matching tolerance — for example, a defined percentage spread in capacity, or a defined milliohm band in resistance.

7. Questions to Ask Your Cell or Pack Supplier

  • Do you test and match cells by voltage, capacity, and internal resistance before assembly, or only one of these?
  • For internal resistance, do you use DCIR, ACIR, or both — and at which stage does each method apply?
  • What matching tolerance do you use? For example, what percentage spread in capacity, or what milliohm band in resistance?
  • Do you keep incoming cell test data on file? Can you provide it for the specific batch used in our order?

For series strings, how do you decide which cells go together — capacity, resistance, or both? Our BMS algorithms guide covers how the BMS itself later measures DCIR for SOH estimation, which is a useful comparison point when you ask this question.

  • Is matching done at a low SOC, a high SOC, or both, before final assembly?

Conclusion: Matching Sets the Ceiling the BMS Can’t Raise

A BMS is very good at correcting small, ongoing drift between cells. It is not designed, however, to compensate for a pack that started out badly mismatched. Cell matching before pack assembly sets the baseline the BMS then has to maintain for the life of the system. A well-matched pack lets the BMS do its normal job: fine-tuning small differences over time. A poorly matched pack, by contrast, forces the BMS into a losing battle against a gap it cannot close, cycle after cycle.

When evaluating a cell or pack supplier, ask specifically how they match cells before assembly, including whether they use DCIR, ACIR, or both. Do not just ask how the BMS balances them afterward. For supplier evaluation more broadly, see our BESS supplier BMS evaluation guide. The cell matching answer says a lot about how much real capacity and cycle life you can expect to see in practice.

☀️ Need Help Evaluating a Cell Matching Process?
Sunlith Energy reviews incoming cell test data, matching tolerances, and pack assembly quality control for BESS projects from 50 kWh upward. Contact us before you finalize a cell or pack supplier.

Frequently Asked Questions About Cell Matching

Is cell matching the same as BMS balancing?

No. Cell matching happens before assembly. It is a manufacturing step that sorts cells by voltage, capacity, and internal resistance, so similar cells end up grouped together. BMS balancing, on the other hand, happens after assembly, correcting the small drift that develops during normal use. Matching reduces how much balancing the BMS has to do; it does not replace it.

What is the difference between DCIR and ACIR matching?

DCIR testing applies a current pulse and calculates resistance from the voltage drop using Ohm’s law, closely reflecting real load behavior. ACIR testing applies a small AC signal, commonly at 1 kHz, and reads impedance directly, which runs much faster but mostly captures high-frequency ohmic resistance rather than the full picture. Many manufacturers use ACIR for fast first-pass screening, then confirm with DCIR before final grouping.

What is the difference between capacity-based and resistance-based sorting?

Capacity-based sorting groups cells with similar usable Ah, and matters most for series strings, since the lowest-capacity cell sets the ceiling for the whole string. Resistance-based sorting, by contrast, groups cells with similar internal resistance, and matters most for parallel groups, since a lower-resistance cell will otherwise pull more than its fair share of current.

Does skipping this step make a battery pack unsafe?

Not directly. A properly designed BMS still enforces voltage and temperature limits, no matter how well the cells were matched. That said, skipping this step does mean the BMS must run a larger initial balancing pass. In turn, the pack’s real-world capacity may fall short of the datasheet value, since the weakest cell limits the whole pack.

Should I ask my BESS supplier for this test data?

Yes. Ask whether the supplier tests and matches cells by voltage, capacity, and internal resistance before assembly, and which resistance method they use. A supplier who can provide incoming cell test data for your specific batch is demonstrating a real quality control process, not just relying on the BMS to compensate after the fact.

Is top-balance or bottom-balance better?

Top-balance, which aligns cells at a high SOC before assembly, generally produces a better-aligned pack from the first charge. That is because it addresses the top-of-charge region where mismatch matters most. Bottom-balance is faster, but the pack will likely still need a top-of-charge balancing pass once assembled.

SunLith Energy BMS Functional Safety: HARA, FMEA, ASIL/SIL

BMS Functional Safety Explained: HARA, FMEA, and ASIL/SIL Behind BMS Certification

⚡ Quick Answer: What Is BMS Functional Safety?
BMS functional safety is the structured process used to find and control failure risks before a battery management system reaches the field. It centers on two core methods: HARA (Hazard Analysis and Risk Assessment), which identifies hazards and ranks their risk, and FMEA (Failure Modes and Effects Analysis), which traces specific failure modes to their effects. In automotive BMS design under ISO 26262, this risk ranking is called ASIL. For stationary BESS, the equivalent rating is SIL under IEC 61508, since ASIL itself is an automotive-only term. A supplier who can show you their HARA and FMEA documentation, not just a certificate, has done the real engineering work.

1. Why the Process Matters More Than the Certificate

Most BMS buyers ask suppliers for certifications: UL 1973, IEC 62619, sometimes UL 9540A. Those certificates matter. However, they mostly confirm the outcome, not the process behind it. BMS functional safety is that process. It is the structured method engineers use to find failure risks early. In other words, it catches problems before they become field failures or safety incidents.

For the certifications a BMS itself typically carries, see our complete battery management system guide. This article goes behind those certificates, into the HARA and FMEA process that safety engineers use to earn them in the first place.

2. HARA: How Hazards Get Identified and Ranked

HARA stands for Hazard Analysis and Risk Assessment. It is the starting point of any BMS functional safety process. First, engineers define the “item” under review — for example, the high-voltage battery pack and its BMS. Then they ask a simple question: what could go wrong, and how bad would it be?

A typical HARA example for a BMS looks at overvoltage detection during charging. If that detection fails, the battery can overcharge. In the worst case, this leads to thermal runaway. As a result, HARA ranks this kind of hazard using three factors: how severe the harm could be, how often the situation is likely to occur, and how controllable it is once it starts. Together, these three factors produce a risk classification for that specific hazard.

3. From HARA to ASIL or SIL: Why the Terms Differ Between EV and BESS

SunLith Energy BMS functional safety process flow diagram showing the transition from HARA to SIL and ASIL ratings.

Here is where a lot of BMS content gets confusing. In automotive functional safety, ISO 26262 assigns each hazard an ASIL rating. ASIL stands for Automotive Safety Integrity Level, and it ranges from ASIL A at the low end to ASIL D at the high end. Notably, ASIL is an automotive-only term. It only applies under ISO 26262.

Stationary BESS does not use ISO 26262 or ASIL at all. Instead, industrial and stationary battery systems typically reference IEC 61508, the foundational functional safety standard for industrial equipment. Under this standard, the equivalent risk rating is called SIL, or Safety Integrity Level. It ranges from SIL 1 at the low end to SIL 4 at the high end. IEC 62619, the safety standard most directly relevant to stationary lithium battery systems, builds on this same risk-based approach.

In short: if a supplier quotes an ASIL rating for a stationary BESS product, ask why. That term belongs to automotive design. For BESS, the correct reference point is SIL under IEC 61508, or the specific requirements in IEC 62619.

4. FMEA: Finding Failure Modes Before They Find You

Once HARA has ranked the hazards, FMEA takes over next. FMEA stands for Failure Modes and Effects Analysis. It works from the bottom up. First, engineers list every plausible way a component can fail. Then, they trace each failure forward to its effect on the system.

For a BMS, a typical FMEA entry might look like this: a voltage sensing connector goes loose. That failure causes a false voltage reading. In turn, the false reading could let the BMS miss a real overvoltage condition. For each entry, engineers also note a detection or mitigation mechanism. For example, this might be a redundant voltage check, or a plausibility test that catches an implausible reading before it reaches a safety-critical decision.

A properly documented FMEA does not just list failures. It also proves how each one gets prevented or caught. That proof is what an auditor or a certification body actually reviews.

SunLith Energy Comparison diagram illustrating the differences between BMS FMEA and FMEDA processes, highlighting component failure modes and diagnostic coverage.

5. FMEDA: When Hardware Diagnostics Get Quantified

FMEDA extends FMEA with numbers. It stands for Failure Modes, Effects, and Diagnostics Analysis. Rather than only describing failure modes in words, FMEDA calculates a diagnostic coverage percentage for each one. In other words, it shows what fraction of that failure mode’s occurrences the system’s safety mechanisms will actually catch.

This matters for BMS functional safety because a hardware design is only as safe as its worst-covered failure mode. A BMS might claim excellent overall diagnostic coverage. Even so, it could still leave one connector or one sensor path poorly monitored. FMEDA is what surfaces that gap before a customer, not an incident, does.

6. What a Real BMS Functional Safety Process Actually Produces

A supplier who has genuinely run this process should, therefore, be able to produce specific documents, not just a summary slide. Look for these deliverables:

  • A HARA report, listing each identified hazard with its severity, exposure, and controllability ratings, plus the resulting SIL (for BESS) or ASIL (for automotive) classification.
  • Safety goals derived from the HARA. These are stated as top-level requirements, for instance: “prevent cell overvoltage during charging under single-point failure conditions.”
  • A functional safety concept. This translates each safety goal into requirements — first functional, then technical, down to the hardware and software level.
  • An FMEA or FMEDA report, listing failure modes, their effects, and the safety mechanism that detects or prevents each one.
  • A safety case or validation report. This shows how testing confirmed the safety mechanisms actually work as designed.

These safety mechanisms must map seamlessly across the entire battery topology. For a closer look at how these safety-critical diagnostic lines and communication protocols are distributed across physical hardware layers, see our guide to centralised, modular, and wireless BMS architecture.

For the specific BMS algorithms — SOH, SoP, isolation monitoring, safety diagnostics — that these safety mechanisms often rely on, see our BMS algorithms guide. In short, functional safety analysis is the process that justifies why those algorithms exist and how thoroughly they were tested.

7. Questions to Ask Your Supplier About BMS Functional Safety

Before finalizing your procurement, it helps to have a structured framework for vetting a vendor’s safety claims. For a comprehensive breakdown of what to look for beyond documentation, review our BMS supplier evaluation checklist.

  • Can you show me the HARA report for this BMS, including the hazards identified and their risk ratings?
  • Is your safety rating expressed as SIL under IEC 61508, or ASIL under ISO 26262? Does that match whether this is a stationary or automotive product?
  • Can you provide the FMEA or FMEDA report showing diagnostic coverage for each major failure mode, not just one overall percentage?
  • What safety goals came out of your HARA? How do they map to the BMS features you actually ship?
  • Has an independent third party reviewed this functional safety process, or is it entirely self-assessed?

Conclusion: Ask for the Process, Not Just the Certificate

A certification number tells you a BMS passed a test. BMS functional safety documentation tells you why it should pass. It also shows what specific hazards the engineering team found and controlled along the way. For BESS projects, insist on SIL ratings under IEC 61508 or IEC 62619 evidence. Do not accept an automotive ASIL number instead, since it simply does not apply. Ask to see the HARA and FMEA reports directly. After all, a supplier with nothing to show beyond a certificate has likely skipped the part of the work that actually keeps a battery pack safe.

☀️ Need a BMS Functional Safety Review for Your BESS Project?
Sunlith Energy reviews BMS functional safety documentation — HARA reports, FMEA coverage, and SIL classification — for BESS projects from 50 kWh upward. Contact us before you finalize a supplier.

Frequently Asked Questions About BMS Functional Safety

What is the difference between HARA and FMEA in BMS functional safety?

HARA identifies hazards at the system level and ranks their risk using severity, exposure, and controllability. FMEA, on the other hand, works at the component level. It traces specific failure modes up to their effects on the system. Typically, HARA comes first and sets the risk target. FMEA then verifies the design meets that target.

Why doesn’t ASIL apply to stationary BESS?

ASIL, or Automotive Safety Integrity Level, is defined specifically within ISO 26262, an automotive functional safety standard. Stationary BESS does not fall under that standard. Instead, it typically references IEC 61508, whose equivalent risk rating is called SIL, or Safety Integrity Level.

What is FMEDA and how is it different from FMEA?

FMEDA, or Failure Modes, Effects, and Diagnostics Analysis, extends FMEA by adding a quantified diagnostic coverage percentage for each failure mode. Standard FMEA describes failure modes and their effects in words. FMEDA, by contrast, calculates how much of each failure mode the system’s diagnostics will actually catch.

What documents should a BMS supplier provide as proof of functional safety work?

At minimum, ask for the HARA report and the safety goals derived from it. Also request the FMEA or FMEDA report, plus a safety validation document showing that testing confirmed the safety mechanisms work as intended. If a supplier can only provide a certificate, with none of these underlying documents, they have likely not completed a full functional safety process.

Does IEC 62619 replace the need for a HARA and FMEA process?

No. IEC 62619 sets safety requirements specifically for stationary lithium battery cells and systems. However, it does not replace the underlying HARA and FMEA process used to design and verify BMS safety mechanisms. Instead, the two work together: IEC 62619 sets the target, and the functional safety process is how a supplier gets there and proves it.

SunLith Energy BMS Architecture Centralised vs Modular (Master-Slave) vs Wireless BMS for BESS

BMS Architecture Explained: Centralised vs Modular (Master-Slave) vs Wireless BMS for BESS

⚡ Quick Answer: Which BMS Architecture Is Right for a BESS?
BMS architecture comes in three main types: centralised (one controller handles all cells directly), modular master-slave (each module has its own slave BMS reporting to a master), and wireless BMS (modules communicate without a physical data harness). Centralised suits small residential systems. Modular master-slave is the standard for commercial and utility-scale BESS. Wireless BMS is maturing fast in EVs but remains early-stage for grid-scale BESS, mainly due to EMI risk in high-power environments and a 25-40% cost premium.

1. Why BMS Architecture Matters Beyond Just System Size

Most guides treat BMS architecture as a simple size question: small systems get one BMS, big systems get many. That is true as a starting point. But the choice also decides how a fault in one module affects the rest of the pack, how much wiring a technician has to run and maintain, and how easily the system scales later without a redesign.

For the basics of what a BMS does — monitoring, protection, balancing, and communication — see our complete battery management system guide. This article goes one level deeper: the wiring topology inside modular designs, and the wireless BMS option now entering the market.

2. Centralised BMS: How a Single Controller Works

In a centralised design, one controller connects directly to every cell in the pack. It handles voltage monitoring, balancing, and protection for all cells from a single board. There is no master-slave hierarchy here, simply because there is only one controller.

This setup keeps cost and complexity low. As a result, it works well for residential systems under roughly 100 kWh. Cell counts here typically stay in the range of a few dozen to a few hundred. Beyond that range, though, the wiring harness needed to connect every single cell to one board becomes heavy, expensive, and hard to service.

A centralised design also has a single point of failure built in. If the central controller fails, the entire pack loses monitoring and protection at once. For small systems, this risk is usually acceptable, given the lower stakes and lower cost. For larger systems, however, it is not.

3. Modular (Master-Slave) BMS Architecture: How It Works

SunLith Energy BMS Architecture  Master-Slave Daisy Chain Diagram

A modular design, often called master-slave, splits the job across many controllers instead of one. Each battery module gets its own slave BMS board. That slave handles local cell monitoring and balancing for its own module only. In turn, all slave boards report up to a central master BMS, which coordinates the full pack and talks to the inverter and EMS.

This setup scales far better than a centralised design. For instance, adding another module usually means adding another slave board to the daisy chain, not redesigning the whole harness. As a result, it is the standard choice for commercial and utility-scale BESS today.

The real engineering decision here, though, is not whether to use master-slave. Most large systems already do. Instead, it comes down to which wiring protocol connects the slaves to the master. It also depends on how much independence each slave keeps if it loses contact with the master.

4. Wiring Protocols in Modular Designs: isoSPI vs CAN vs LIN

SunLith Energy BMS isoSPI vs CAN vs LIN protocol Comparison

Three communication protocols dominate the physical link between slave boards and the master. Each one makes a different tradeoff between speed, noise immunity, and cost. For a deeper look at how these networks manage data across the entire system, read our guide on BESS communication protocols.

  • isoSPI — an isolated version of SPI (Serial Peripheral Interface), built specifically for daisy-chaining BMS slave boards. It runs over a simple twisted pair. It tolerates the electrical noise inside a battery pack well, and it supports fast data rates. As a result, many premium BMS platforms use isoSPI for the slave-to-slave and slave-to-master link inside one rack.
  • CAN bus — the same protocol widely used in automotive and industrial systems. CAN is robust, well standardized, and easy to integrate with third-party inverters and EMS platforms. Because of this, it is common for the master-to-inverter and master-to-EMS link, and sometimes for slave-to-master links in simpler designs.
  • LIN bus — a lower-cost, lower-speed protocol used for less time-critical links, such as temperature sensor networks within a module. In short, it trades speed for lower wiring and component cost.

In practice, many BESS platforms combine protocols. isoSPI handles fast, noise-resistant slave communication within a rack. CAN bus then takes over at the master level for system-wide integration. Ask your supplier which protocol handles which link. Otherwise, a design built entirely on one lower-speed protocol may struggle to keep up with fast balancing or protection response at scale.

5. Wireless BMS Architecture: How It Works and Where It Stands Today

SunLith Energy Wireless BMS Concept diagram

Wireless BMS removes the physical data harness between modules entirely. Instead of isoSPI or CAN wiring, slave boards communicate with the master using Bluetooth Low Energy, Zigbee, or a proprietary 2.4GHz radio protocol. Cell voltage, temperature, and balancing commands all travel wirelessly instead of over copper.

Why Wireless BMS Is Appealing

The appeal is real. Going wireless removes the weight, cost, and failure points of a physical wiring harness. It also simplifies manufacturing, since there are fewer connectors to install and fewer wiring faults to test for. This matters most where running a wired harness is expensive or awkward. Second-life BESS built from repurposed EV modules, for example, often have mismatched connector layouts that make wiring harder than usual.

Why Utility-Scale BESS Isn’t There Yet

That said, wireless BMS is not yet the default choice for grid-scale BESS, and current research explains why. A peer-reviewed review of wireless BMS technology, published in MDPI Energies, notes that wireless systems remain at an early stage of maturity. This is especially true for high-power settings, where electromagnetic interference from PCS switching can disrupt the link.

Three practical concerns keep wireless BMS out of most utility-scale BESS today. First, EMI susceptibility: high-power switching from inverters and PCS equipment can interfere with the wireless signal. That kind of interference in a safety-critical monitoring link is a serious risk, not a minor inconvenience. Second, cost: wireless hardware currently runs 25-40% more than equivalent wired systems, which matters a great deal at grid scale. Third, standardization: there is no universal wireless protocol yet. As a result, mixing components from different makers is harder than it is with wired isoSPI or CAN systems.

For now, wireless BMS is furthest along in electric vehicles, where weight savings translate directly into range. It is also gaining ground in residential solar-plus-storage products, where simple assembly and remote installation flexibility matter more than they do at utility scale. For grid-scale BESS specifically, expect wired modular designs to stay the standard for the next several years. Wireless will likely enter first through pilot projects and second-life storage deployments.

6. Comparing Centralised, Modular, and Wireless BMS Architecture Options

FactorCentralisedModular (Master-Slave)Wireless
Typical system sizeUnder 100 kWh100 kWh to multi-MWhEVs, residential ESS today; utility-scale still early
Wiring complexityHigh at scale — every cell wired to one boardModerate — daisy-chained per moduleMinimal — no data harness
Failure isolationPoor — single point of failureGood — slave boards can protect locallyDepends on link redundancy design
CostLowModerate, scales predictably25-40% premium over wired today
Maturity for BESSProven, residential standardProven, commercial/utility standardEarly-stage for grid-scale

7. Failure Isolation: The Real Safety Question Behind the Design

The most important question about any BMS design is not which protocol it uses. Instead, it is what happens when one part of the system fails. In a well-designed modular setup, each slave board keeps protecting its own module even if it loses contact with the master. This relies heavily on the local execution of core BMS algorithms
to calculate state-of-charge (SOC) and state-of-health (SOH) independently. In a poorly designed system, however, the whole pack’s protection depends entirely on the master controller.

Evaluating these single points of failure is a core part of rigorous risk assessment. For a deeper look at how engineers map out these risks and establish safety goals, see our guide on BMS functional safety, HARA, and FMEA.

So ask your supplier directly: if the master BMS fails or loses communication, does each module still enforce its own voltage and temperature limits? If the answer is no, that design has a hidden single point of failure, no matter how many slave boards it has.

8. Choosing the Right BMS Architecture for Your BESS Project

For residential and small commercial systems under 100 kWh, a centralised design is usually the right call, since it is simpler, cheaper, and proven. For commercial and utility-scale BESS, on the other hand, modular master-slave is the standard. Here, the real decision is choosing a supplier whose wiring protocol and failure-isolation design hold up under real-world conditions. Wireless BMS, meanwhile, is worth watching, and worth specifying for second-life or hard-to-wire retrofit projects today. Still, it is not yet the safe default for new utility-scale BESS.

9. Questions to Ask Your Supplier About BMS Architecture

  • Is the design centralised or modular master-slave, and does that match our system size?
  • What wiring protocol connects slave boards to the master — isoSPI, CAN, or a mix?
  • If the master fails or loses communication, does each slave module still enforce its own protection limits independently?
  • If any wireless components are proposed, what EMI testing has been done in a real high-power switching environment, not just a lab bench test?
  • How does the system scale if we add modules later — does it require a wiring redesign, or just an extension of the existing daisy chain?

Conclusion: BMS Architecture Shapes Reliability as Much as Chemistry Does

Cell chemistry gets most of the attention in a BESS purchase decision. However, the design behind the cells deserves the same scrutiny. A centralised setup suits small systems. Modular master-slave is the proven standard for commercial and utility-scale BESS. Wireless BMS is real, growing, and worth watching, but for grid-scale projects today, it remains an early-stage option, not a default choice.

Whatever design a supplier proposes, ask the failure-isolation question directly. After all, a pack with excellent cells and a poorly isolated BMS is still a fragile system.

☀️ Need a BMS Architecture Review for Your BESS Project?
Sunlith Energy reviews BMS architecture proposals — wiring topology, failure isolation, and protocol choice — for BESS projects from 50 kWh upward. Contact us before you finalize a supplier.

Frequently Asked Questions About BMS Architecture

What is the difference between centralised and modular BMS architecture?

A centralised design uses one controller connected directly to every cell in the pack. A modular design, also called master-slave, works differently. It splits monitoring across multiple slave boards — one per module — that report to a central master controller. As a result, modular designs scale better for larger systems.

Is wireless BMS ready for utility-scale BESS?

Not yet, as a default choice. Wireless BMS works well in electric vehicles and is gaining ground in residential storage. However, electromagnetic interference from high-power switching, a 25-40% cost premium, and a lack of standard protocols keep it early-stage for grid-scale BESS today.

What is isoSPI and why does it matter for battery pack wiring?

isoSPI is an isolated communication protocol built for daisy-chaining BMS slave boards. It runs over a simple twisted pair, resists the electrical noise inside a battery pack, and supports fast data rates. For this reason, it is common in modular designs for grid-scale BESS.

Why does failure isolation matter more than the design type?

A modular design only delivers its safety benefit under one condition: slave boards must keep protecting their own modules when they lose contact with the master. Otherwise, that modular design still depends entirely on the master controller. In that case, it has the same single point of failure as a centralised system, just with extra hardware.

Can I mix wired and wireless BMS in one BESS?

In principle, yes, and this is already happening in some second-life storage projects that use repurposed EV modules with mismatched wiring. In practice, though, mixing protocols adds integration complexity. So confirm with your supplier how a hybrid design handles failure isolation and data sync between the wired and wireless segments.

SunLith Energy Comparison chart showing a jagged real-world BESS SOC trace against a clean lab-test 100-0% charge discharge cycle

BMS Cycle Counting Explained: EFC vs. Rainflow Algorithms

⚡ Quick Answer: What Is BMS Cycle Counting?
BMS cycle counting turns raw current and SOC data into a wear metric. First, most systems track Ah/kWh throughput and convert it into Equivalent Full Cycles (EFC). Next, advanced platforms run a rainflow algorithm that splits a messy SOC trace into discrete, depth-weighted cycles. Finally, premium BMS platforms add a stress-weighted layer for C-rate and temperature. As a result, BMS cycle counting feeds SOH and RUL models, not just a simple warranty odometer.

BMS cycle counting sounds simple. In reality, it is one of the least understood functions inside a Battery Management System. Every BESS datasheet shows a number like “6,000 cycles to 80% SOH.” Few buyers ask the obvious follow-up question: how does the BMS actually reach that count in the field? A grid-connected battery rarely swings cleanly from 100% to 0% and back. Instead, it moves up 12%, down 4%, up 20%, down 7%, dozens of times a day. Dispatch signals, solar variability, and frequency-regulation events all drive this pattern. Because of this, converting a noisy trace into one clean cycle number is a genuinely hard firmware problem.

This guide explains exactly how BMS cycle counting works today. First, we cover why simple threshold counting fails for BESS. Next, we break down the rainflow algorithm, borrowed from mechanical fatigue analysis. Then, we show how it solves the partial-cycle problem. Finally, we explain why the datasheet number rarely matches what your BMS reports in the field. For the state-estimation layer this article builds on, see our guides to BMS SOC estimation methods and BMS algorithms explained.

1. Why BMS Cycle Counting Is Harder Than It Sounds

A cycle sounds easy to count: full charge, full discharge, done. However, “one cycle” has no single agreed definition outside the lab. A cell tested for its datasheet rating runs controlled, repeatable 100%–0% swings at a fixed C-rate and temperature. However, a cell inside a grid-connected BESS does nothing of the sort.

In practice, real-world SOC traces look like a jagged mountain range. Hundreds of small reversals happen every day. A dispatch instruction, a passing cloud, or a short frequency-regulation event can each trigger one. If BMS cycle counting logged every reversal as a cycle, one day of frequency regulation could register thousands of cycles. That would badly overstate wear. On the other hand, a threshold-only method misses just as much. A peak-shaving BESS that stays within the 20–80% band could show almost zero full cycles. Yet it may still have years of hard use behind it.

Neither outcome helps warranty tracking or SOH modelling. For this reason, BMS and EMS firmware rely on purpose-built cycle-counting algorithms instead of simple threshold logic. According to Energy-Storage.News, the industry still lacks one universal definition of a cycle. That gap is exactly why several competing counting methods exist side by side today.

2. Method 1: Simple Threshold-Based BMS Cycle Counting

The most basic form of BMS cycle counting sets two SOC thresholds, typically near 95% and 5%. Firmware then adds one to a counter each time the pack completes a full traverse between them. This approach is cheap to build and easy to explain. As a result, it shows up often in low-cost consumer BMS platforms.

For stationary BESS, though, this method falls short. Most BESS installations rarely complete a true top-to-bottom swing. Dispatch strategies deliberately avoid the SOC extremes to protect cycle life (see our guide on the 20/80 rule for batteries). Consequently, a system cycling between 20% and 80% SOC may never trigger a single “full cycle” under this method. That can happen even after years of heavy use. This undercount is precisely why the industry moved toward throughput-based BMS cycle counting instead.

3. Method 2: BMS Cycle Counting With Ah-Throughput (EFC)

SunLith Energy Diagram showing BMS dividing cumulative Ah throughput by rated battery capacity to calculate Equivalent Full Cycles

This method sits behind almost every commercial BESS warranty. Rather than watching for full swings, the BMS integrates current over time. It uses the same Coulomb-counting math built for SOC estimation. In other words, it adds up every amp-hour that flows in or out of the pack, in either direction. The BMS then divides that cumulative throughput by the pack’s rated capacity. The result is Equivalent Full Cycles, or EFC.

EFC=Cumulative Throughput (Ah or kWh)Rated Capacity (Ah or kWh)EFC = \frac{\text{Cumulative Throughput (Ah or kWh)}}{\text{Rated Capacity (Ah or kWh)}}

For example, a 500 kWh BESS that has processed 1,000 kWh of cumulative throughput has logged 2 EFC. This version of BMS cycle counting is simple. In addition, it is cheap to run continuously. And it works no matter how the pack is actually cycled, since it never requires a full 100–0% swing.

The Core Blind Spot of EFC Tracking

EFC has one well-known limitation: it treats every amp-hour the same, no matter how deep the swing was. As Energy-Storage.News notes, EFC alone cannot tell one cycle at 100% depth of discharge apart from two cycles at 50% DoD, or ten cycles at 10% DoD. Yet these three patterns stress the cell chemistry quite differently. So, shallow frequent cycling and deep infrequent cycling can log an identical EFC number. Even so, they age the pack at very different rates.

Many BMS platforms partly correct for this. They re-base the EFC denominator against current estimated capacity instead of nameplate capacity. That keeps the figure accurate as the pack fades. Even so, the core blind spot remains. This gap is exactly what rainflow-based BMS cycle counting was built to close.

4. Method 3: Rainflow-Based BMS Cycle Counting for Partial Cycles

SunLith Energy  Illustration of the rainflow counting algorithm decomposing an irregular battery SOC trace into discrete depth-of-discharge cycles

Rainflow counting began as a tool for mechanical fatigue analysis. Engineers used it to turn a noisy load history into a clean set of discrete stress cycles. Battery researchers later adapted the same logic for SOC traces. A peer-reviewed ScienceDirect study on grid-integrated BESS cycle counting confirms it as the most widely used cycle-counting algorithm in the field today. Rainflow-based BMS cycle counting solves what EFC cannot: it identifies the depth of every individual swing, not just the running total.

How the Rainflow Algorithm Works Step-by-Step

  1. The BMS records every local extremum in the SOC trace. In other words, it logs every point where the pack switches from charging to discharging, or back again.
  2. It then calculates the SOC delta between each set of three consecutive extrema.
  3. Consequently, If the middle delta is smaller than or equal to both neighbours, that segment counts as one closed, complete cycle at that specific depth.
  4. The BMS removes those two points. Then it repeats the comparison on the remaining trace — much like water draining off a stepped rooftop, which is where the algorithm gets its name.
  5. The output is a list of discrete cycles, each tagged with its own depth of discharge. For example: “47 cycles at ~80% DoD, 1,200 cycles at ~15% DoD,” instead of one flattened EFC figure.

One detail matters here: rainflow-based BMS cycle counting applies to depth of discharge, not absolute SOC. A swing from 80% down to 70% and a swing from 20% down to 10% both register as the same 10%-DoD event. Both count as equivalent stress. This lines up with how degradation models actually work, since most treat wear as a function of cycle depth, not the absolute SOC band it happens in.

Because rainflow output preserves depth data, it feeds straight into the DoD-weighted models used by SOH and RUL algorithms. That is the same layer we cover in our guide to BMS algorithms explained.

5. Method 4: Stress-Weighted BMS Cycle Counting

The most advanced BMS and EMS platforms push rainflow-based BMS cycle counting one step further. Instead of tallying cycles by depth alone, each identified cycle passes through a stress function. That function also factors in the C-rate and cell temperature present during that specific cycle. For instance, a 60%-DoD cycle at 0.2C and 25°C is far gentler than the same 60%-DoD cycle at 1.5C and 40°C. A stress-weighted counter reflects that difference clearly.

Rather than reporting a raw cycle count, this method builds a running “degradation” or “aging” score. That score, not the raw EFC number, feeds the most accurate RUL models. This is also why two BESS units with an identical EFC count can end up with very different projected remaining life.

SunLith Energy Diagram showing a BMS combining depth of discharge, C-rate, and temperature into a stress-weighted battery degradation score

6. How Firmware Filters Noise Before BMS Cycle Counting Begins

Raw current-sensor data is noisy. Grid-frequency jitter, brief EMS corrections, and normal sensor tolerance all create tiny, meaningless direction reversals in the SOC trace. Sometimes there are hundreds per hour. Feed that data straight into a rainflow algorithm, and the result is an explosion of trivial micro-cycles. Those micro-cycles overstate wear.

To prevent this, production BMS cycle counting firmware applies a minimum-delta, or hysteresis, threshold. A direction reversal only counts as a genuine local extremum once SOC has moved by some minimum amount, commonly 1–2%. Only then does it enter the counting algorithm. Firmware treats smaller reversals as noise and ignores them.

This single design choice separates a BMS that produces warranty-defensible cycle data from one that does not. Set the threshold too low, and cycle counts inflate from sensor noise. Set it too high, and the BMS misses genuine shallow cycling that still adds to ageing. Therefore, always ask your BMS supplier what hysteresis threshold their firmware applies. Datasheets rarely publish this figure. Yet it directly shapes every downstream SOH and warranty number.

7. Comparing the Four Cycle-Tracking Methods

MethodWhat It CapturesDoD-Aware?Best ForMain Limitation
Threshold countingFull 95%–5% traverses onlyNoSimple consumer packsBadly undercounts partial-cycling BESS
Ah-throughput (EFC)Cumulative current throughputNoWarranty reporting, simple dispatchCannot distinguish deep vs. shallow cycling
Rainflow countingEach discrete swing, by depthYesSOH modelling, mixed dispatch profilesMore compute-intensive; needs clean extrema
Stress-weighted countingDepth + C-rate + temperatureYesRUL prediction, warranty defensibilityRequires a validated stress model per cell type
SunLith Energy Bar chart comparing accuracy and depth-of-discharge awareness of four BMS cycle counting methods

Most premium BMS platforms do not rely on just one method. Instead, they report EFC for simple dashboards and warranty tracking. Meanwhile, they run rainflow and stress-weighted BMS cycle counting in the background to feed SOH and RUL models. If a supplier says their BMS “counts cycles” without naming a method, ask directly. The gap between threshold counting and stress-weighted rainflow counting can differ by an order of magnitude in reported wear.

8. Why Datasheet Numbers Rarely Match Real-World Wear

A supplier’s “6,000 cycles to 80% SOH” claim is almost always a lab-derived EFC figure. Labs measure it under fixed, controlled conditions. That means a specific depth of discharge, often 80–90%, a specific C-rate, often 0.5C–1C, and a specific ambient temperature, often 25°C. Change any one of these variables in the field, and the real cycle-life outcome shifts. Sometimes it shifts substantially. We cover this relationship in detail in our guide to how temperature affects LFP battery cycle life. You can also model your own scenario with our battery cycle life calculator. For a broader reference on stationary lithium battery testing conditions, see IEC’s battery safety and performance standards.

In practice, your BMS’s in-field EFC or rainflow-weighted count measures a different operating profile than the datasheet number. A BESS running frequent shallow cycles at moderate temperature may outlive its rated cycle count in calendar terms. Meanwhile, one running deep cycles at high ambient temperature may fall short of it. Neither outcome means the datasheet number was wrong. It simply means BMS cycle counting and lab-rated cycle life measure two related, but distinct, things.

9. Questions to Ask About Your Supplier’s BMS Cycle Counting Method

  • Which cycle-counting method does the firmware run: threshold, raw EFC, rainflow, or stress-weighted? A BMS that only reports raw EFC cannot show how deep-cycling patterns affect real degradation.
  • What minimum-delta, or hysteresis, threshold filters noise before a reversal counts as a cycle? An unpublished or unreasonably low threshold can quietly inflate cycle counts.
  • Is the EFC denominator based on nameplate capacity or current estimated capacity? Using nameplate capacity for the pack’s whole life understates EFC as the cell ages.
  • Does the cycle-counting output feed the SOH and RUL algorithms directly, or are they calculated separately? Disconnected pipelines often cause inconsistent SOH and warranty reporting.
  • What DoD, C-rate, and temperature conditions does the warranty’s rated cycle-life figure assume? This baseline is what your field cycle count should be compared against, not treated as a universal number.

For the broader procurement framework this fits into, see our guide to evaluating a BESS supplier’s BMS.

10. Worked Example: EFC vs. Rainflow Counting

SunLith Energy Worked example chart showing a single day of BESS charge and discharge events counted as 0.5 EFC versus three discrete rainflow cycles

Consider a 100 kWh BESS module running a frequency-regulation profile for one day. It discharges 8 kWh, charges 5 kWh, discharges 12 kWh, charges 10 kWh, discharges 6 kWh, and charges 9 kWh. That adds up to 50 kWh of cumulative throughput.

MethodCalculationResult
Ah-throughput (EFC)50 kWh cumulative throughput ÷ 100 kWh rated capacity0.50 EFC for the day
Rainflow (illustrative)Decomposed into 3 discrete cycles at ~8%, ~12%, ~9% DoD3 shallow cycles logged, none flattened into one number

While both numbers are technically correct, they answer different questions. The 0.50 EFC figure shows up on a simple throughput dashboard and feeds warranty-cycle tracking. The rainflow breakdown, however, is what a SOH model actually needs. Three shallow 8–12% DoD cycles age a cell differently than one 50%-DoD cycle would. That holds true even though both scenarios can produce the same EFC total.

Conclusion: BMS Cycle Counting Is a Modelling Choice, Not a Simple Tally

A BMS does not count cycles the way a person counts laps around a track. Instead, it reconstructs a cycle metric from a continuous current and SOC trace. Each method trades simplicity for accuracy differently. Threshold counting is too crude for real BESS dispatch. EFC is the industry-standard warranty metric, yet it stays blind to depth of discharge. Rainflow-based BMS cycle counting recovers that missing depth information. It breaks messy, real-world SOC traces into discrete, weighted cycles. Stress-weighted counting goes further still. It folds in C-rate and temperature to build the aging score that actually drives accurate RUL prediction.

For BESS buyers and operators, the lesson is simple. Do not take “the BMS tracks cycle count” at face value. Instead, ask which method it uses. Ask how it filters sensor noise. And ask how that number connects to the SOH and RUL figures you will eventually rely on for warranty claims and second-life valuation.

☀️ Need a BMS Cycle Counting and SOH Methodology Review?
SunLith Energy reviews BMS cycle counting implementation, EFC and rainflow methodology, and SOH-RUL linkage for BESS projects from 50 kWh upward. Contact us before you commit to a supplier.

Frequently Asked Questions

How does BMS cycle counting work?

BMS cycle counting converts raw current and SOC data into a wear metric. Most systems first calculate cumulative Ah or kWh throughput. They then convert it into Equivalent Full Cycles. More advanced platforms add a rainflow algorithm on top. It breaks the SOC trace into discrete cycles at their true depth of discharge, filtering out small reversals below a set noise threshold.

What is an Equivalent Full Cycle (EFC) in BMS cycle counting?

An EFC is the standard unit behind most BMS cycle counting for warranty purposes. The BMS sums all Ah or kWh throughput — every unit of charge or discharge, in either direction. It then divides that total by the pack’s rated or current estimated capacity. Two cycles at 50% depth of discharge, and one cycle at 100% depth of discharge, both produce 1 EFC.

Why does depth of discharge matter if EFC already tracks total throughput?

Because EFC only tracks the total charge moved, not how it was distributed. A cell that goes through one deep 100%-DoD cycle experiences different stress than one that goes through ten shallow 10%-DoD cycles. Yet both can produce the same EFC total. Rainflow-based BMS cycle counting exists specifically to preserve this depth information for accurate SOH and RUL modelling.

What is rainflow counting, and why does BMS cycle counting use it?

Rainflow counting is an algorithm first built for mechanical fatigue analysis. Applied to a battery’s SOC trace, it identifies local turning points. It then pairs them into discrete, complete cycles at their true depth of discharge, instead of one flattened throughput number. This makes it the preferred method for BMS cycle counting on BESS platforms with irregular, partial-cycling dispatch profiles.

Why doesn’t my BESS ever seem to reach the cycle count on its datasheet?

The datasheet figure is almost always measured under fixed lab conditions: a specific depth of discharge, C-rate, and temperature. If your system cycles more shallowly, at a gentler C-rate, or at cooler temperatures, its real-world BMS cycle counting output accumulates more slowly than the lab figure implies. The reverse is true under harsher conditions.

Can two BESS units show the same cycle count but have different remaining life?

Yes. Raw EFC, and even simple cycle counts, do not capture the temperature and C-rate conditions each cycle occurred under. This is why advanced BMS cycle counting adds a stress-weighted layer. It produces a degradation score rather than a plain cycle number, which feeds more accurate Remaining Useful Life predictions than cycle count alone.

SunLith Energy BMS algorithms circuit board showing SOH, SoP, and SoE data readouts for BESS

BMS Algorithms Explained: SOH Estimation, SoP, SoE, Cell Balancing, and Safety Diagnostics for BESS

⚡ Quick Answer: What Are BMS Algorithms?
BMS algorithms go far beyond SOC estimation. A production BMS runs several algorithms at once: SOH estimation, SoP, SoE, cell balancing logic, contactor sequencing, isolation monitoring, safety diagnostics, and RUL prediction. For BESS, the quality of these BMS algorithms decides dispatch reliability, warranty defensibility, and second-life value — not just SOC accuracy.

1. Beyond SOC: The Full BMS Algorithm Stack

Most talk about BMS algorithms stops at State of Charge. SOC matters. But it is only one output from a stack of six or more BMS algorithms running at once.

For a foundational breakdown of core hardware topologies and functionalities, see our comprehensive guide on how a Battery Management System (BMS) is explained.

For a deeper dive into OCV lookup, Coulomb counting, and Extended Kalman Filter SOC methods, see our dedicated guide: BMS SOC Estimation Methods Explained. This article picks up where those leave off, covering the advanced firmware algorithms that drive aging, dispatch limits, safety, and long-term asset value.

A BESS operator or EPC should understand what each BMS algorithm actually calculates. Marketing language often overstates what firmware really runs. The sections below walk through each algorithm layer in build order: health first, then power and energy limits, then balancing, then safety, then long-term prediction.

2. SOH Algorithms: How BMS Algorithms Track Battery Aging

State of Health (SOH) is the second most important number a BMS produces after SOC. It is also far harder to calculate correctly. SOH shows how much usable capacity and performance remain compared to a new cell. A cell rated at 100 Ah that now delivers 92 Ah has an SOH of roughly 92%.

Unlike SOC, SOH cannot reset with one charge cycle. The BMS must infer it from long-term trends. This makes SOH-focused BMS algorithms fundamentally different from SOC algorithms.

Capacity Fade Tracking Algorithm

The simplest SOH algorithm compares measured full-charge capacity against rated nameplate capacity. The BMS records the Ah delivered between two known SOC points, typically 100% to 0%. It then compares that figure against the original rated capacity.

This method is accurate but slow. It produces one new SOH data point per full cycle. Many BESS installations rarely complete a true 100–0% cycle. Partial-cycle capacity fade algorithms estimate the fade rate from partial cycles instead, using coulomb-counted throughput and known depth-of-discharge. These partial-cycle BMS algorithms carry more uncertainty than full-cycle measurements.

Incremental Capacity Analysis (ICA) Algorithm

Incremental capacity analysis is a more advanced SOH algorithm. It examines the shape of the voltage curve, not just its endpoints. As a cell ages, specific peaks in its incremental capacity curve (dQ/dV) shift and shrink. Each shift pattern correlates with a specific degradation mechanism: lithium plating, active material loss, or electrolyte decomposition.

ICA-based BMS algorithms can tell different aging causes apart, not just report one percentage. This matters for warranty claims and second-life valuation. A cell degrading from normal calendar aging is a very different asset than one degrading from a manufacturing defect or thermal abuse event.

The tradeoff is cost. ICA needs high-resolution voltage sampling during specific charge segments. Not every BMS platform captures this data by default.

DCIR-Based SOH Algorithm

SunLith Energy Comparison of three BMS algorithms for SOH estimation: capacity fade, ICA, and DCIR-based methods

DC internal resistance (DCIR) rises as a cell ages, mostly independent of capacity fade. A DCIR-based SOH algorithm applies a known current pulse and measures the resulting voltage drop. It then calculates internal resistance using Ohm’s law, and compares that value against a baseline resistance-versus-age curve for the specific cell model.

DCIR-based SOH algorithms run faster than capacity-fade methods, since a short current pulse is enough — no full cycle required. This makes them useful for spotting outlier cells early, often before capacity fade becomes visible.

The limitation is temperature sensitivity. DCIR shifts a lot with cell temperature. An accurate DCIR-based BMS algorithm must correct every reading against a resistance-versus-temperature-versus-age model calibrated for the exact cell in use.

SOH Algorithm Comparison

MethodWhat It MeasuresUpdate FrequencyBest For
Capacity fade trackingAh delivered vs. rated capacityOnce per full cycleSystems with regular full cycles
Incremental capacity analysis (ICA)dQ/dV curve shape and peak shiftPer qualifying charge segmentDistinguishing aging mechanisms, warranty claims
DCIR-based SOHInternal resistance rise vs. baselinePer current pulse (fast)Early outlier-cell detection, partial-cycle systems

Most premium BMS platforms combine all three algorithms: DCIR for fast, frequent checks; capacity fade tracking as the long-term anchor; and ICA for diagnostic deep-dives when a cell shows early warning signs.

3. SoP Algorithm: What BMS Algorithms Tell the Inverter

SunLith Energy Flow diagram of BMS algorithm data (SoP, SoE) feeding inverter and EMS dispatch decisions

State of Power answers a different question than SOC or SOH. It asks not “how much energy is stored,” but “how much power can this pack safely deliver or accept right now.” The SoP algorithm calculates the maximum charge and discharge power available for a set time window, typically 1, 10, or 30 seconds. It weighs current SOC, temperature, cell voltage limits, and internal resistance.

This number goes straight to the inverter or PCS and to the energy management system (EMS). Without an accurate SoP algorithm, the EMS either under-dispatches or over-dispatches. Under-dispatching leaves revenue on the table during a frequency regulation or peak-shaving event. Over-dispatching triggers a protection cutoff mid-event, which is worse for grid-service contract compliance.

SoP gets harder to calculate at temperature and SOC extremes. A pack at 10% SOC or −5°C has much lower discharge SoP than the same pack at 50% SOC and 25°C, even with similar energy content. A well-designed SoP algorithm accounts for voltage sag under load. It does not rely on static cell voltage limits alone, and it uses the same internal resistance data the SOH algorithm tracks.

4. SoE Algorithm: Usable kWh, Not Just Percentage

SOC gives you a percentage. The SoE algorithm gives you the actual usable kilowatt-hours remaining. It factors in current SOH, temperature derating, and the depth-of-discharge limits set for the system. Two BESS units showing 60% SOC can have very different SoE if one has degraded to 85% SOH and the other sits near 98% SOH.

For asset owners running dispatch contracts or virtual power plant participation, SoE is the number that actually sets revenue capacity. A BMS that only reports SOC forces the EMS to apply a separate correction factor for aging, and that workaround adds error. A BMS with a proper SoE algorithm reports usable energy directly, already corrected for real-world capacity.

5. SoR and SoF Algorithms: Diagnostic and Dispatch-Readiness Checks

Two less-discussed BMS algorithms round out the state-estimation stack.

State of Resistance (SoR) tracks internal resistance as its own diagnostic metric, separate from its role as a SOH input. Rising resistance in a single string or module is often the earliest sign of an emerging fault. It can flag a loose busbar connection or accelerated local aging before it shows up in the pack-level SOH number.

State of Function (SoF) is a composite go/no-go algorithm. It combines SOC, SOH, SoP, temperature, and active fault flags into one dispatch-readiness signal. The EMS checks this signal before committing the BESS to a grid-service event. A pack can have fine SOC and SOH individually and still fail SoF — for example, if a temperature sensor reads near its fault threshold. SoF exists to stop the EMS from dispatching a unit that has energy on paper but should not be trusted for that event.

6. Cell Balancing Algorithms: Passive vs Active Control Logic

SunLith Energy Passive vs active cell balancing algorithm comparison diagram for BESS battery packs

Cell balancing keeps every cell in a series string at a matched voltage and SOC. The control logic behind it is itself a BMS algorithm worth understanding, not just a hardware feature.

This balancing logic is especially vital—and complex—when dealing with the flat voltage plateaus of LFP chemistry; for a deeper look at hardware and balancing nuances there, read our specific guide on BMS for LiFePO4 batteries.

Passive Balancing Algorithm Logic

A passive balancing algorithm finds the highest-voltage cell in a string during charge. It then switches a bleed resistor across that cell, burning off excess energy as heat until the cell matches the pack average. The control logic usually triggers balancing only above a voltage or SOC threshold, commonly near the top of charge, where cell mismatch matters most for safety and full-charge capacity.

Design choices matter more than the hardware here. A poorly tuned threshold balances too aggressively, wasting energy and building unnecessary heat. Too conservative a threshold lets mismatch build up for many cycles.

Active Balancing Algorithm Logic

An active balancing algorithm moves charge from higher-voltage cells to lower-voltage cells, using inductors, capacitors, or switched-capacitor networks. It does not just burn off the difference as heat. The control logic is more complex: it must sequence several transfer paths at once, avoid oscillation between cells close in voltage, and decide when further balancing no longer justifies the switching losses.

For grid-scale BESS with thousands of series-parallel cells, the balancing algorithm’s efficiency affects round-trip efficiency and effective cycle life directly. A well-balanced pack ages its weakest cells more slowly, since those cells spend less time at voltage extremes.

7. Contactor and Isolation BMS Algorithms

SunLith Energy BMS pre-charge sequencing algorithm steps showing contactor closing and voltage matching

Two safety-critical BMS algorithms operate below the level most BMS content ever discusses. They matter a great deal for BESS commissioning and daily operation.

Pre-Charge Sequencing Algorithm

When a BESS connects to its inverter or DC bus, a large voltage gap between the battery and a discharged bus can spike current high enough to weld contactor contacts or blow fuses. The pre-charge sequencing algorithm closes a smaller pre-charge contactor through a current-limiting resistor first. It watches the bus voltage rise toward battery voltage, and only closes the main contactor once the gap falls within a safe threshold, typically a few percent.

The algorithm must also set a timeout and a fault response. If bus voltage fails to rise as expected in time, that signals a downstream fault. A well-designed sequence aborts the connection instead of forcing the main contactor closed anyway.

Isolation Monitoring Algorithm

High-voltage BESS strings must stay electrically isolated from chassis ground. The isolation monitoring algorithm injects a small test signal, or measures leakage current, between the HV bus and chassis ground. It then calculates an isolation resistance value. A common safety threshold is 500 ohms per volt of system voltage — a 750V BESS string needs at least 375,000 ohms of isolation resistance under this rule.

A slowly degrading isolation reading, even one still above the fault threshold, is an early warning worth flagging. It usually points to moisture ingress, insulation wear, or a developing ground fault well before it trips a hard fault.

8. Safety Diagnostic Algorithms: MAVD, RdV, and Early Fault Detection

Beyond voltage, current, and temperature thresholds, advanced BMS platforms run pattern-based diagnostic algorithms. These catch failure modes before they reach a hard safety limit.

Maximum Allowable Voltage Deviation (MAVD) algorithms compare each cell’s voltage against the pack average in real time. A cell drifting outside its expected deviation band can signal an internal short, a connection fault, or local degradation — even while it stays within absolute safe voltage limits. Because MAVD looks at relative deviation, not absolute thresholds, it often catches faults earlier than simple over-voltage or under-voltage protection.

Resistance-derivative or rate-of-change (RdV) algorithms track how fast a cell’s voltage or resistance is changing, not just its current value. A cell with rapidly climbing resistance is a different risk than one with stable but elevated resistance, even if both report the same SOH today. RdV algorithms flag the rate of change itself as its own alarm condition.

These diagnostic layers matter most for large-format BESS, where a single degrading cell among thousands can go unnoticed until it causes a string-level fault. Standards bodies such as the IEC publish safety requirements for stationary lithium battery systems that reference exactly this kind of deviation monitoring.

Furthermore, if you are deploying assets in the European market, these algorithmic diagnostics are critical for compliance; see our EU batteries regulation EU 2023 1542 complete guide for a full breakdown of the data and safety mandates.

Ask suppliers whether their BMS runs deviation and rate-of-change diagnostics on top of standard threshold protections — this is a real differentiator between a basic BMS and a genuinely safety-engineered one.

9. RUL Prediction Algorithms and Second-Life Value

Remaining Useful Life algorithms take SOH trend data and project forward. They estimate how many more cycles or years remain before the pack falls below an end-of-life threshold, commonly 70–80% of original capacity.

Three RUL Algorithm Approaches

Empirical RUL algorithms fit a degradation curve — often exponential, or a two-stage linear-then-accelerating shape — to historical SOH data for the specific chemistry and use profile. They then extrapolate forward. These are cheap to run and reasonably accurate for well-studied LiFePO4 chemistries with large datasets for a quick way to model these degradation curves yourself based on cycle depth and temperature, you can check out our interactive battery cycle life calculator. But they assume future use resembles the past.

Physics-based (electrochemical) RUL algorithms simulate the degradation mechanisms directly: lithium plating, SEI growth, active material loss. They predict RUL from first principles. These are more accurate under changing use conditions, but they need detailed cell-level parameters that cell suppliers do not always share.

Machine-learning RUL algorithms train on large fleets of historical degradation data. They predict RUL from current sensor patterns without an explicit physical or empirical formula. These can beat both other approaches when trained on a large enough fleet of the same cell type and use case. But they need a lot of historical data, and they can behave unpredictably outside the conditions they trained on.

Why RUL Algorithm Accuracy Matters for BESS Economics

RUL accuracy affects two commercial decisions directly: warranty reserve calculations for suppliers, and second-life asset valuation for owners. A BESS pack projected to hold 80% capacity for ten more years is worth much more on the second-life market than one with an uncertain or steeply declining RUL curve. Lower-demand second-life uses, like residential backup or slow-cycling grid support, depend on that projection being credible.

For utility-scale BESS operators planning eventual asset disposition, ask your BMS or EMS supplier which RUL modeling approach they use, and what fleet data backs it. Battery aging research from national labs such as NLR (National Laboratory of the Rockies) increasingly informs these models. Ask whether RUL confidence intervals are reported alongside the point estimate — a single RUL number with no range is hard to use for financial planning.

10. Questions to Ask Your BMS Supplier About Algorithms

Marketing language often claims “advanced algorithms” without saying which ones actually run in firmware. For a structured framework on auditing these capabilities during procurement, see our guide on BESS supplier BMS evaluation.

The following targeted questions will help you separate real algorithmic depth from a basic protection-only BMS with technical-sounding labels:

  • Which SOH algorithm does the BMS use — capacity fade tracking, ICA, DCIR-based, or a combination? A BMS that only runs capacity fade tracking will be slow to catch outlier cells in systems that rarely complete full cycles.
  • Does the BMS calculate SoP and SoE algorithms, or only SOC and SOH? Without SoP output, the EMS must apply conservative blanket power limits, which lowers dispatch revenue.
  • What isolation resistance threshold does the algorithm enforce, and how is it temperature- and time-compensated? A static threshold with no trend monitoring misses slow isolation decay.
  • Does the balancing algorithm run passive, active, or both, and what triggers a balancing cycle? Ask for the specific voltage or SOC threshold, not just “the BMS balances cells.”
  • What RUL algorithm approach is used, and is a confidence interval reported? A point-estimate RUL number with no uncertainty bounds has limited use for financial and warranty planning.

Conclusion: Algorithm Depth Is the Real BMS Differentiator

SOC estimation gets most of the attention in BMS marketing. But the BMS algorithms that actually protect a BESS investment over its 10–20 year life sit one layer deeper. SOH tracking catches aging mechanisms early. SoP and SoE outputs maximize safe dispatch revenue. Balancing logic gets tuned for the specific pack architecture. Safety diagnostics catch deviation before it becomes a fault. RUL models come with defensible confidence intervals.

When you evaluate a BMS or a BESS supplier, ask specifically which of these BMS algorithms are implemented, and how they were validated. Do not settle for “the BMS monitors SOC and SOH.” The answer reveals whether you are buying genuine algorithmic engineering or a basic protection circuit with confident marketing copy.

☀️ Need a BMS Algorithm Review for Your BESS Project?
Sunlith Energy reviews BMS algorithm implementations — SOH methodology, SoP/SoE accuracy, balancing logic, and RUL modeling — for BESS projects from 50 kWh upward. Contact us before you commit to a supplier.

Frequently Asked Questions About BMS Algorithms

What algorithms does a BMS run besides SOC estimation?

A production BMS runs several algorithms beyond SOC: SOH estimation (capacity fade tracking, incremental capacity analysis, or DCIR-based methods), SoP and SoE calculations, cell balancing control logic, contactor pre-charge sequencing, isolation monitoring, safety diagnostics such as voltage-deviation and resistance-rate-of-change monitoring, and often RUL prediction models.

What is the difference between the SOH and SoP algorithms in a BMS?

The SOH algorithm measures how much capacity and performance a battery has lost compared to new, shown as a percentage. The SoP algorithm measures how much power the battery can safely deliver or accept right now, based on current SOC, temperature, and internal resistance. SOH looks backward at cumulative aging. SoP looks at the immediate power ceiling for dispatch decisions.

Why does the SoP algorithm matter for BESS dispatch even if SOC looks fine?

A pack can show good SOC while still having a low SoP at cold temperatures or high internal resistance. That means it cannot deliver the power a grid-service event needs without tripping a voltage protection limit. An EMS that only checks SOC before dispatch risks committing to an event the pack cannot actually support.

How does the DCIR-based SOH algorithm work?

The BMS applies a known current pulse and measures the resulting voltage drop. It calculates internal resistance using Ohm’s law, then compares that resistance against a temperature-compensated baseline curve for the specific cell model. This algorithm runs faster than capacity-fade tracking, since it needs no full charge-discharge cycle.

What is a good RUL algorithm confidence level for a utility-scale BESS?

There is no single universal number — it depends on the modeling approach and available fleet data. What matters more is whether the supplier reports a confidence interval at all, rather than a single point estimate, and whether the model has been checked against real fleet degradation data for the same cell chemistry and use profile.

Do I need an active balancing algorithm for a grid-scale BESS, or is passive enough?

Passive balancing works fine for many commercial and lower-cycling systems. For utility-scale BESS with high cycling frequency and large series strings, an active balancing algorithm usually improves round-trip efficiency and cuts accelerated aging in weaker cells. That can justify its added cost over the system’s lifetime.