Hi. I am trying to calculate the SOC during a 1C battery charging starting from 0.2 SOC. I tried calculating using both nominal cell capacity and the last discharge capacity value. However, I am not getting the expected SOC value in either case.
I am expecting the final SOC value to be 1. However, with nominal cell capacity, I am getting 0.7 SOC and the last discharge capacity value, I am getting 1.2 SOC.
I am adding my code and the result for reference. Am I missing something here? How can I obtain the accurate SOC calculation?
The gap between the two also decreases as the charging rate is decreased, leading me to think that the high C-rate does not accurately capture the true capacity. As for why the SOC for discharge capacity goes to 1.2, my guess is that it is because at the final iteration you are dividing the final discharge capacity by itself (1) and then adding it to the iniSOC (0.2)
Thank you for sharing the code. Cade has already answered your query correctly. The SOC for discharge capacity goes up to 1.2 because it is being added to the initial SOC of 0.2.
To obtain the true capacity from the model, always use a low C-rate (C/10, C/20, or lower). Once you have the true capacity, you can define SOC in a way similar to the nominal capacity definition, but replace the nominal capacity with the true capacity. In most cases, both values are close, but it is always more accurate to use the true capacity.
So the definition would be:
SOC=iniSOC−discharge capacity/true capacity
where true capacity is the final discharge capacity i.e., discharge capacity[−1] obtained under low C-rate conditions.
If you want SOC to strictly go from 0 to 1, you can instead define it as: