File Exchange

image thumbnail

Design and Test Lithium Ion Battery Management Algorithms

version 1.0.2 (8.89 MB) by Chirag
This example project can be used as a reference design to get started with designing Battery Management System with MATLAB and Simulink.


Updated 12 Nov 2019

View License

This example project can be used as a reference design to get started with designing Lithium Ion Battery Management System (BMS) with MATLAB and Simulink.

Project includes Simulink models for BMS Algorithms such as:

1. State of Charge estimation using Extended Kalman Filter, Unscented Kalman Filter
2. Passive Battery Cell Balancing
3. State Machine for Pre-charging and Contactor Management
4. Fault Management - Over/Under Voltage, Over Current, Over Temperature etc.
5. Charge and Discharge Current Limit Calculations

To design and test these algorithms, project also includes files for
1. Li-ion Battery Cell Parameter Estimation
2. Battery Pack with 6 cells in series and 96 cells in series
3. Simulink Test files with test cases to test State Machine Logic
4. Linking requirements to Models

Cite As

Chirag (2020). Design and Test Lithium Ion Battery Management Algorithms (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (36)


How to solve "The function'Balancing_Logic_sfun' corresponding to the input parameter of type'int16' is not defined."


Hello, I encountered many errors in the automatic code generation. How did you solve it?

jien bruce

Hello, Sir. May I ask which part of the program should be clicked in the interface of the last simulation result in the video? I haven't found it yet.Please give me some guidance. Thank you

jien bruce


@tain qi: Thank you so much. If you are not comfortable asking questions here, please feel free to contact

tian qi

You have done an excellent job. I feel happy for you. I also have a lot of confusion, can I get your guidance?

@chirag thanks for the support, its working fine now :)


@Kavuri, what is your final embedded target processor? For code generation, you need to change your System Target File to "ert.tlc" and then select right toolchain.

Make sure you have installed required tools for selected toolchain. If you are generating code for:

Texas Instruments: Make sure you have installed supported version of Code Composer Studio (C2000). and Target Support Package for C2000.

ARM Processor: Make sure you select "GNU Tools for ARM Embedded Processors" and have all the tools installed.

@Chirag, iam getting error while generating the code. But i installed the ARM toolbox but still getting the same error


Jerry Gu

Hi @Chirag, thank you for developing this model. Currently, the model cannot find the variable 'BattCrnt,' claiming that it does not exist. Do you have any tips on what I can do to fix this?


@Kavuri, Are you getting this error while simulation this model or generating c code? If you are getting this error while simulating, please change code generation setting, System Target File to "grt.tlc". >>set_param('modelname','SystemTargetFile','grt.tlc')

Iam getting this error even after adding ARM toolbox
"The selected toolchain ('TI ARM Code Generation Tools | gmake') is not registered. It must be in the Toolchain registry in order to be valid. Check if this toolchain is supported".


@SIVA, thanks for the question. Yes, SOC Algorithm (as implemented in the example) only calculates soc for single cell. To perform this calculation for each cell, this becomes expensive in microcontrollers. Do you want to estimate SOC using EKF/UKF for each cell? How many cells do you have in your applications? For smaller pack size, this can be done.


@Chirag The model has 96 cells, for SoC computation, the EKF/UKF model has considered only the first cell voltage (via indexing). Does this mean that the model is computing SoC only for the first cell? Else is there any internal index incrementing code which can lead to computation of Individual SoC for all cells.

Raman Nain


Hi Kavuri, the download files are packaged as Simulink Project. For future releases, I can package the project as Toolbox if preferred.

iam not able add this model to my add-on tool box

Ian Alferez

Raman Nain

@Chirag, In HIL testing you showed in the video, Does the "FaultPresent" lamp work in real-time(external mode)? I mean to say that does it take the input from the main controller?

apei zou

代码生成的时候谁解决了这个错误啊: The selected toolchain ('TI ARM Code Generation Tools | gmake') is not registered. It must be in the Toolchain registry in order to be valid. Check if this toolchain is supported. For a list of supported factory toolchains refer to


Hi Apei Zou, what are you trying to debug?

apei zou

@Chirag Is there debug this model's video?

Please, if there is somebody out there with R2019b should load this project and export to previous versions and then upload here. I need 2019a version please.

Afsher P A

hello sir

@Chirag... would be great if you can export the model to a previous version. Thanks.

@Rajeev: You will have access to 2019b. Kindly let me know if you have any challenge.


Hi Rajeev, Hi Vikram, This project has more than 100 files to cover all aspects of Model Based Design and different steps of designing BMS. Due to number of models involved, it is difficult for me to export each model to previous release and make sure it works. You can always reach out to your MathWorks Account Manager to get trail for latest release if you don't have access to it.

Rajeev G

Hi Chirag, I am encountering the same problem as @Vikram, I have a R2018a version and I am unable to open the .mlproj file, is there a way to open it in earlier versions?

Vikram Jain

@Aldo/Chirag, in this case since I don't have te license for 2019b version how can I use this ? can you post the same files for 2018b version ?

@Chirag , I have no problem to open the MATLAB project file and extract all the contained files. Thanks for the submission!
@Vikram, remember MATLAB Projects, files with .mlproj extension, were introduced in release R2019a.
See here for more information.

Vikram Jain

I am using 2018b


@Vikram, Which MATLAB version are you using? The example is developed in R2019b, most recent.

Vikram Jain

Hi Chirag, I was trying to open this in MATLAB but it doesn't seems to open, it opens as garbage file. Can you help me figure out how to load/open this file in MATLAB ?



Download file is now .zip folder instead of MATLAB project package.


Changed Description

MATLAB Release Compatibility
Created with R2019b
Compatible with any release
Platform Compatibility
Windows macOS Linux