Limits Violation Protection
The BMS shall detect any violation on any cell of the pack and react as fast as possible to protect the batteries.
It shall continuously monitor cell voltages and temperatures and act by either opening the contactor and/or reducing the power limits.
Cell Voltage Limits
- High limit (critical)
If any cell voltage (fast filtered) > V_{crit,max} (3.8 V): - Immediately set error severity = MAJOR
-
Request immediate contactor opening (critical error flag)
-
Low limit (critical)
If any cell voltage (fast filtered) < V_{crit,min} (2.3 V): - Immediately set error severity = MAJOR
-
Request immediate contactor opening (critical error flag)
-
Almost-limit (warning)
- If any cell voltage > V_{crit,max} - 0.10 V (3.7 V) or < V_{crit,min} + 0.10 V (2.4 V) the condition is marked as "almost" and latched with debounce.
- Almost-latched conditions contribute to MINOR severity and may escalate to MAJOR if persistent.
Cell Temperature Limits
- High limit (critical)
-
If any cell temperature (fast filtered) > T_{crit,max} (45 °C): set severity = MAJOR and flag a critical error.
-
Low limit (critical)
-
If any cell temperature (fast filtered) < T_{crit,min} (0 °C): set severity = MAJOR and flag a critical error.
-
Almost-limit (warning)
- If any cell temperature > T_{crit,max} - 2 °C (43 °C) or < T_{crit,min} + 2 °C (2 °C) it is treated as an "almost" condition and latched with debounce. Almost-latched temperatures contribute to MINOR severity.
Pack Current
- Overcurrent (critical/present detection)
- If |I_pack| > I_crit (550 A) the overcurrent condition is detected and latched (debounced).
-
Overcurrent latched contributes to MINOR severity as a persistent minor condition.
-
Almost-limit (warning)
-
If |I_pack| > I_crit_almost (500 A) the overcurrent-almost condition is latched and contributes to MINOR severity.
-
I_lim_chg / I_lim_dch
- The dedicated charge/discharge current limits (
I_lim_chg,I_lim_dch) remain test/config parameters (TBD). Their crossing should be treated similarly to overcurrent (latched, debounced) and may generate mild errors depending on configuration.
Cell Imbalance
- Cell imbalance is computed as (max_cell_voltage - min_cell_voltage) across all cells each cycle.
- If imbalance > 0.050 V it is treated as a latched fault (debounced) and considered a persistent minor condition.
- If imbalance > 0.040 V it is treated as an "almost" condition and contributes to MINOR severity while latched.
Debounce and Fault Clearing
- Per-fault clear debounce: a latched fault is only cleared after FAULT_CLEAR_DEBOUNCE_CYCLES (5) consecutive cycles without the violation. This prevents immediate re-clearing from transient noise.
- Almost-limit conditions use separate latch/clear counters but the same clear-debounce rule.
Severity Logic and Actions
- Immediate MAJOR: If any critical condition is present (over-voltage, under-voltage, over-temperature, under-temperature) the BMS sets
ERROR_SEVERITY_MAJOR, requests immediate contactor opening and raises a critical error flag. The minor-escalation counter is reset. - MINOR: If any almost-latched condition is present, or if a persistent minor fault exists (latched overcurrent or latched cell imbalance), the BMS sets
ERROR_SEVERITY_MINORand raises a mild error flag. - Minor -> Major escalation: A MINOR condition increments a minor-error delay counter each cycle; when the counter reaches MINOR_ERROR_DELAY_CYCLES (50 cycles) the severity is escalated to MAJOR and the counter resets.
- NONE: If no latched or present conditions exist the BMS sets
ERROR_SEVERITY_NONEand clears the minor counter.
Note: The C implementation sets severity flags (bmslv_LimitViolationErrorSeverity_Val) and latched fault booleans; contactor open/close actions and higher-level responses are handled elsewhere in the SW.
Testing Procedure
Note: Testing should be done with fake limits to avoid damaging cells.
Voltage Limits
- High Limit Test
- Set cell voltage to ~3–3.2 V
- Set
V_crit_maxto 3.5 V -
Slowly charge the cell until it reaches 3.5 V (current < 10 A)
-
Low Limit Test
- Set cell voltage to ~3–3.2 V
- Slowly discharge the cell until it crosses 2.9 V (current < 10 A)
Current Limits
- Charge Limits
-
Adjust
T_crit_minandT_crit_maxclose to actual cell temperature -
Discharge Limits
- Observe: Contactors open immediately upon crossing limits