Skip to main content
Visitor II
Apr 21, 2025 8:33 AM UTC
Solved

Basic SOC & SOH values ​​via CAN

Hello,

I want to see basic SOC & SOH values ​​via CAN to PCAN using aek-pow-bmslv. Is there any way to do this?

This topic has been closed for replies.
Max VIZZINI
Max VIZZINIBest answer
ST Technical Moderator
Jul 3, 2025 5:44 PM UTC

Hi,

No, our battery holder does not work with 4 cells, so keep yours. What is key is that you follow the correct IC wiring specified in the user manual on st.com or the system will not work.

I am not sure about your cell characteristics, if they are different from the one used in our model, the resulting SoC estimation might be poor.

The extended Kalman filter used for the calculation can be found in standard Matlab toolbox.

Our implementation can be extracted from Single_access_CHAIN_GUI demo.

Please understand that we cannot follow all single steps of a project in here. Community is for key points clarification not for step-by-step development consultancy.

Best Regards,

AutoDevKit Team

11 replies

Max VIZZINI
ST Technical Moderator
May 28, 2025 4:19 PM UTC

Hi,

Yes, it is possible to extend the CAN messages to send SoC and SoH just by defining dedicate functions in the function below.

As the code does not include SoC and SoH calculation, you should add the calculation routine based on voltage, current and temperatures read from the cells.

Best Regards,

AutoDevKit Team

 

----

void AEK_POW_BMSLV_can_send_all(void){
AEK_POW_BMSLV_l9963e_can_current(L9963E_CURRENT_ID);
AEK_POW_BMSLV_l9963e_can_vcell_01_04(L9963E_VOLTAGE_01_04_ID);
AEK_POW_BMSLV_l9963e_can_vcell_05_08(L9963E_VOLTAGE_05_08_ID);
AEK_POW_BMSLV_l9963e_can_vcell_09_12(L9963E_VOLTAGE_09_12_ID);
AEK_POW_BMSLV_l9963e_can_vcell_12_14(L9963E_VOLTAGE_13_14_ID);
AEK_POW_BMSLV_l9963e_can_tcell_01_04(L9963E_TCELL_01_04_ID);
AEK_POW_BMSLV_l9963e_can_tcbal_01_02(L9963E_TBAL_01_02_ID);
AEK_POW_BMSLV_l9963e_can_gpio_03_05(L9963E_GPIO_03_05_ID);
AEK_POW_BMSLV_l9963e_can_gpio_06_09(L9963E_GPIO_06_09_ID);
AEK_POW_BMSLV_can_adc_supply(ADC_SUPPLY_ID);
AEK_POW_BMSLV_can_adc_temp(ADC_TCELL_05_08_ID);
AEK_POW_BMSLV_can_adc_voltage(ADC_VOLTAGE_ID);
AEK_POW_BMSLV_can_hsd_diag(DEV_VNQ7050_DIAG_ID);
AEK_POW_BMSLV_can_hsd_current(DEV_VNQ7050_DATA_mA_ID);
AEK_POW_BMSLV_can_hsd_voltage(DEV_VNQ7050_DATA_mV_ID);
AEK_POW_BMSLV_can_sbc_sr1_sr2(SPSB100_SR1_SR2_ID);
AEK_POW_BMSLV_can_sbc_sr3_sr4(SPSB100_SR3_SR4_ID);
AEK_POW_BMSLV_can_sbc_sr5_sr6(SPSB100_SR5_SR6_ID);
AEK_POW_BMSLV_can_sbc_sr7_sr8(SPSB100_SR7_SR8_ID);
AEK_POW_BMSLV_can_send_timer(TIMER_DATA_ID);
}

Associate III
Jul 1, 2025 2:47 PM UTC

so, if i put this on the main, i am able to read the SOC and SOH?

Max VIZZINI
ST Technical Moderator
Jul 1, 2025 3:40 PM UTC

Hi,

The answer is NO.

As clearly said in the below post:

           "the code does not include SoC and SoH calculation"

Best Regards,

AutoDevKit Team

Associate III
Jul 3, 2025 8:05 AM UTC

alfonso_mauro_1-1751529901645.jpeg

where i have to connect the positive of battery pack? cause the negative is J5 pin 7