Skip to main content
Visitor II
April 21, 2025
Solved

Basic SOC & SOH values ​​via CAN

  • April 21, 2025
  • 2 replies
  • 1907 views

Hello,

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

Best answer by Max VIZZINI

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

2 replies

Max VIZZINI
Technical Moderator
May 28, 2025

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
July 1, 2025

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

Max VIZZINI
Technical Moderator
July 1, 2025

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
July 3, 2025

alfonso_mauro_1-1751529901645.jpeg

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