Open dmachadol opened 4 months ago
Check the code to evaluate the DesignCapacity and RemainingCapacity uint16 data. Sample debug data for a JBD BMS 22SP 250A. Large capacity BMS are affected
0000: DD 03 00 26 17 3C 00 00 36 C5 90 24 00 00 2E 9C ...&.<..6..$.... 0010: 00 00 00 00 00 00 24 26 03 10 03 0B 91 0B 98 0B ......$&........ 0020: 97 00 00 00 90 24 36 C5 00 00 F9 1E 77 .....$6.....w jbd.c(55) jbd_verify: start bit: dd jbd.c(58) jbd_verify: register: 3, wanted: 3 jbd.c(61) jbd_verify: status: 0 jbd.c(66) jbd_verify: data_length: 38, len - 7: 38 jbd.c(37) jbd_crc: len: 40 jbd.c(38) jbd_crc: crc: 0 jbd.c(40) jbd_crc: crc: f91e jbd.c(73) jbd_verify: my_crc: f91e, pkt_crc: f91e jbd.c(81) jbd_verify: stop bit: 77 jbd.c(84) jbd_verify: good data! jbd.c(319) jbd_rw: returning: 38 jbd_info.c(198) jbd_std_get_info: voltage: 59.48 jbd_info.c(199) jbd_std_get_info: current: 0.00 jbd_info.c(200) jbd_std_get_info: capacity: 140.21 jbd_info.c(205) jbd_std_get_info: fullcap: -286.36 jbd_info.c(206) jbd_std_get_info: cycles: 0 jbd_info.c(207) jbd_std_get_info: pctcap: 26 jbd_info.c(222) jbd_std_get_info: balance: 0000000000000000 jbd_info.c(238) jbd_std_get_info: protect: 0000000000000000
The value -286.36 is wrong when interpreted with a signed 16byte, these bytes are not signed and the correct value (and programmed in bms) is 369.00
I send a PR to your porject.
Check the code to evaluate the DesignCapacity and RemainingCapacity uint16 data. Sample debug data for a JBD BMS 22SP 250A. Large capacity BMS are affected
The value -286.36 is wrong when interpreted with a signed 16byte, these bytes are not signed and the correct value (and programmed in bms) is 369.00