EVolve Electrics logo
EVolve Electrics logo

All articles

Diagnosing State of Charge Calculation JumpsUpdated a year ago

Diagnosing State of Charge Calculation Jumps

IMPORTANT NOTE: The Orion BMS cannot calculate state of charge without a current sensor or if there is a current sensor fault! A current sensor fault or use without a current sensor will result in very inaccurate SOC calculations which jump rapidly.


NOTE: If current sensor fault codes are present, address the fault code since state of charge cannot be accurately calculated without a functional current sensor. Also ensure the correct polarity of the current sensor (amperage charging the battery pack should appear as NEGATIVE, and amperage discharging (leaving) the pack should appear as POSITIVE). If the current sensor polarity is incorrect, either physically flip the current sensor or “invert” the polarity in the BMS profile.


The Orion BMS and Orion BMS Jr calculate a battery pack’s state of charge (SOC) primarily by coulomb counting, or by keeping track of how much current has entered or left the battery pack. This method requires the use of a current sensor and tracks the state of charge of the battery pack quite well provided that the capacity of the battery is known and the current sensor is accurate. While coulomb counting is an accurate method, there are several things that can cause this calculation to become inaccurate. These include small measurement errors in the current sensors, cells with a different capacity than expected (e.g. from low temperature or weak cells), out of balance battery packs or the BMS memory being reset or reprogrammed.


To deal with these possibilities, the BMS has an SOC correction algorithm. This algorithm uses the calculated open circuit voltage of each cell and compares these voltages to a list of known voltages. If the calculated open circuit voltage of a cell is substantially different than expected for that particular state of charge, the BMS knows that the state of charge calculation is incorrect and that it must adjust the calculated state of charge accordingly. These known voltage points are called “correction drift points” (or drift points for short) and are programmed into the BMS when it is setup. These voltages are specific to the type of cell being used. It is very important that these correction drift points are selected appropriately for the algorithm to work correctly.


This method generally increases the accuracy of the state of charge calculation, although there are some ways in which these correction drift points can incorrectly trigger and cause the state of charge calculation to become less accurate. Those include correction drift points which are incorrectly configured for the cells being used or issues that cause the BMS to incorrectly calculate the open circuit cell voltage for any cells. These drift points may also trigger in the event of weak cells, extra resistance in cell wiring (loose or corroded busbars, the use of long cables between cells, etc). They can also trigger correctly if there is a large difference in state of charge from one cell to another (cells are out of balance) or if there is a large difference in capacity between cells in the battery pack.

Determining What Is Happening


Since SOC drifts happen over a period of time, it is almost always fastest and best to record a log file of the SOC jump to analyze it to determine the root cause. Graphing the log files often show the root cause of the issue fairly quickly. To do this, connect a computer to the BMS, open the BMS utility and go to the “Live Cell Data” tab. Click on the red record button to start recording the log file. Then perform the action that causes the drift to happen (such as driving a vehicle, charging or discharging the battery pack). After the issue happens, wait a few seconds and then stop the log file.


To display a log file, select the “Chart Recorded Logfile” from the “Data Logging” menu in the Orion BMS or Orion Jr BMS utility. Select the recorded log file and allow it to graph the log.


Determining Why SOC Correction Drifts Happen

Correction drifts generally occur for one the following reasons:

  1. A drift may occur if one or more cells within the battery pack has a lower capacity than the others. The battery pack is only as strong as the weakest cell, because the weakest cell cannot be over charged or over discharged. If a cell has a lower capacity than the rest of the pack, the weak cell will cause the BMS to correct the state of charge on the high end or on the bottom end depending on how the cell is balanced. The 2 images below show a top balanced and bottom balanced iron phosphate cell. A drift will occur at 100 amp hours in both cases since the weakest cell is only 100 amp hours. The remaining 80 amp hours is not usable since one cell’s voltage would exceed the allowable range.

    The above charts show a theoretical view of the cells, however in the real world, it is not possible to see the full chart as discharge must cease as soon as the lowest cell reaches the minimum cell voltage, as not to damage the cell. In the above case, discharge must stop when the red cell reaches the minimum voltage. This means that only the section of discharge prior to that point will be visible when plotting the discharge graph. When a low capacity cell is suspected, it is best to graph an entire charge when the red cell reaches the minimum voltage. This means that only the section of discharge prior to that point will be visible when plotting the discharge graph. When a low capacity cell is suspected, it is best to graph an entire charge and discharge cycle to determine if the cell truly has a lower capacity than the rest of the pack or if the pack is simply out of balance. The two can appear very similar if only looking at the discharge or only at the charge end. If the cell is at a lower capacity than the rest of the pack, either

    the usable capacity of the battery pack should be adjusted in the settings to account for this or the cell will need to be replaced.


  2. A drift may occur if the battery pack is out of balance. If one cell is at 70% state of charge, and another cell is at 30% state of charge, less than 50% of the battery is usable without one of the cells getting too high on the high end or too low on the low end. This limits the usable range of the battery and results in a lower capacity than the BMS is expecting, which requires the BMS to adjust the calculated state of charge. During discharge, as the BMS sees the lowest cell’s open circuit voltage drop to a known correction drift point, the BMS will correct the state of charge showing that the battery is nearly depleted. The same will happen during charge due to a high cell voltage. In the example below, while the cells are 180 amp hours in size, two cells are 40 amp hours out of balance with each other and only the middle 100Ah is usable before a cell voltage becomes too high or too low. In this example, SOC corrections would occur at the both ends of the 100Ah usable range. This would be due to the blue cell on the high voltage and the red cell at low voltage.

    The above graph shows the theoretical curves. In reality, only the middle section labeled “100 Ah” is visible since charge must stop when the blue cell reaches its maximum voltage and discharge is limited by the red cell dropping to its’ minimum voltage. It is important to graph an entire charge / discharge cycle to determine if a cell is simply out of balance or if it actually has a lower capacity than the rest of the pack.


  3. A correction drift may occur if the capacity of the cells has changed due to cold temperatures. Some cells (notably iron-phosphate cells) will exhibit a temporarily lower capacity in the cold which can be as little as 50% of the normal capacity. The Orion BMS has optional compensation for this effect to expect the lower capacity and avoid an SOC drift (programmed in under cell settings). If these settings are not configured, an SOC correction will occur due to the reduced capacity of the cells.


  4. A correction drift may occur when the BMS does not yet have enough information to calculate the state of charge and is attempting to learn the state of charge. This most frequently happens when certain settings on the BMS have been changed, when certain fault codes are cleared, if the BMS has been reset by software, or if the BMS has just been connected to the battery pack for the first time. In these cases, the BMS does not know what the state of charge of the battery is and the BMS will default to 50% state of charge, and a state of charge drift is almost certain to occur within the first cycle to correct the state of charge unless the battery happened to be at exactly 50% state of charge. When certain faults occur such as a current sensor fault, the accuracy of the state of charge calculation is compromised and the calculated state of charge will be reset to 50% when the fault is cleared.

  5. If the pack capacity is lower than the capacity programmed into the BMS unit (this is mitigated to some degree by the capacity degradation and temperature to capacity adjustment algorithms).


  6. If minimum and maximum cell voltages are restricting the usable range of the pack and the SOC settings programmed into the BMS don’t reflect the lower usable range.


  7. Inaccurate open circuit voltage calculations due to an incorrectly installed or defective current sensor. This can also be caused by excessive noise or skin effect. This can be determined by looking at a graph of the open circuit voltage for the individual cells.


IMPORTANT NOTE: The Orion BMS cannot accurately calculate state of charge without a current sensor! In the event that a current sensor is not connected or if one is connected but has an associated current sensor fault, the Orion BMS will display a very inaccurate state of charge based strictly on instantaneous cell voltages with relation to the drift points. This backup method is very inaccurate - the state of charge calculation may oscillate wildly and should not be used for any calculations. This mode exists only as a backup algorithm for specific applications and is not designed for normal use.


Application Examples

Out of Balance Cell Problem Examples


In this example, the green cell is at a slightly higher state of charge than the red and blue cells. This can be determined by the cell being the highest voltage both at the top of the state of charge and at the bottom of the state of charge (if the issue were related to cell capacity, it would be equal or high on one end and low on the other). The shape of the discharge curves are approximately the same for each cell, so the amount of imbalance can be estimated visually in the above graph (though this is far more difficult when currents are not steady.)


The above chart shows the termination of charge on a battery pack. There are 2 cells in this (purple and green) which are at a higher state of charge at the top of the battery pack, indicating they are out of balance with the rest of the pack. The exact amount the cells are out of balance is very difficult to determine, but given the top 2 cells reached full state of charge while the remainder are less than 3.37v under charge, they are likely considerably out of balance which would considerably limit the amount of usable range of the battery until the cells have been properly balanced.

Cell Resistance Problem Examples


In the above image the cells all start out at roughly the same voltage and are fairly well grouped together while the battery pack is at rest. As soon as a load is applied to the battery pack, the voltage of the light orange cell drops considerably further than the rest of the cells. When the pack returns to resting conditions, the light orange cell returns to roughly the same voltage as the rest of the pack. This indicates high resistance in the cell causing excessive voltage drop on that cell. High resistance can be caused by a bad cell, a loose terminal or bad busbar. It can also be caused by a high resistance connection between the cell and an adjacent cell, such as a long busbar or long cable that has a significantly higher resistance. A high resistance cell frequently causes jumps in state of charge as the BMS will believe the cell to be low or higher than it might actually be. If the cell is genuinely bad, it must be replaced. If the terminal is loose, corroded or oxidized, it must be repaired, tightened or replaced.

This example illustrates how an abnormally high cell resistance shows up during regular charging. Note that as soon as the charging terminates, the cell returns to a similar voltage as the rest of the pack. High resistance cells can cause pack charging to terminate prematurely because the weakest cell will hit the terminal charge voltage early.


The Orion BMS does have the ability to lower the charge current limit to reduce the impact of high resistance cells on early charge termination, however this requires a CANBUS controlled charger that supports variable output current limiting. Chargers that are either ON or OFF cannot be throttled back.

Selecting SOC Drift Points

SOC correction drift points are usually selected at locations along the cell’s discharge graph where the cell’s state of charge is obvious and in locations where there is a significant difference in cell voltage versus state of charge. This is necessary to avoid incorrect correction drifts.While every effort is made to calculate the open circuit voltages accurately, the calculation process is not perfectly precise. There is also charge polarization on the cell which is a temporary increase or decrease in the sitting cell voltage as a result of recent charge or discharge to the cell. Both of these cause some uncertainty in the open circuit voltage calculation. For this reason, the correction drift points must be chosen such that there is some overhead. The voltages used cannot be the exact voltage of the cell at that particular state of charge!


Iron phosphate cells have a very flat curve in the middle of the state of charge range. In this middle range just a 50mV difference can correspond to a 75% difference in state of charge. Since calculating the open circuit voltage isn't super precise, the drift points have to have some overhead to allow for some hysteresis. For iron phosphate, that means that voltages from about 3.15 - 3.45v are not usable for drift points since the difference in voltage vs. state of charge is too small. For other chemistries, additional points throughout the full range of state of charge may be possible, improving the accuracy of the drifting, provided that the voltages leave sufficient headroom.

Drift points are specified to only correct up or only down. The BMS will use the highest open circuit cell voltage and lowest open circuit cell voltage for these calculations such that that the pack is properly protected. Drift UP points are specified for voltages that will only cause the state of charge to correct up. When the open circuit voltage of any cell in the battery pack exceeds the correction drift voltage and the state of charge is less than the specified state of charge for the point, the BMS will increase the state of charge to the state of charge specified in the correction drift point. Drift DOWN points are specified for voltages that will only cause the state of charge to correct down. When the open circuit voltage of any cell in the battery pack drops below the specified correction drift voltage and the state of charge is above the specified value in the correction drift point, the BMS will adjust the state of charge down to the specified value.


In addition to the correction drift points that are programmed in, the BMS can also correct the state of charge when a charge cycle completes. Since the BMS is controlling the battery charger, the BMS will set the state of charge to the “Charged SOC” value to indicate a full charge whenever it turns the charger off due to a full charge. It should be noted that this only occurs when the BMS is in CHARGE mode and actually turns the charger off due to a full charge.

Was this article helpful?
Yes
No