Slave BMS modules from a 2021 120Ah Battery pack use different CAN messages?
Posted: Mon Sep 25, 2023 8:18 pm
Hello,
I have a complete BMW i3 120Ah battery pack made in 2021, and I try to communicate with the slave modules, using the knowledge from Tom's code: https://github.com/Tom-evnut/BMWI3BMS .
The "triggering" of the communication works, because I do receive response CAN frames.
But the ID of them is 106, 1C6 and 1D6 (I am connected to only 1 module now)
There is absolutely no response about the cell voltages nor the temperatures.
The code has this line:
msg.buf[3] = 0x50; // 0x00 request no measurements, 0x50 request voltage and temp, 0x10 request voltage measurement, 0x40 request temperature measurement.
I realized, that I do receive valid CAN frames with the voltages, if I use "0x10" (request voltage measurement).
But none of the other "commands" are working,
I can't get the temps at all.
Not all my modules behaves like this!!
There are modules, which does not respond to 0x10 requests, but they reply to the 0x90 (not written in the original code, but I made a loop, to send out differrent commands, trying all values from 0x00-0x10 and up to 0xF0, and 0x90 do receive response with voltage info.
Unfortunately this is still a bad situation, because when I send out the command with 0x90 (or the 0x10 for those modules, which reply to that command), then I receive oonly 1x response with the 6 needed CAN frames. And after approxiamtely 1 minute (uninterrupted asking), I receive an other reply.
So the "resolution" of the data is 1 minute...
What can be the cause of my problem?
Does anybody has 120Ah / made in 2021 packs working with the original code working?
Thanks in advance,
Norbert
Note1: I am using a DUE.
I have a complete BMW i3 120Ah battery pack made in 2021, and I try to communicate with the slave modules, using the knowledge from Tom's code: https://github.com/Tom-evnut/BMWI3BMS .
The "triggering" of the communication works, because I do receive response CAN frames.
But the ID of them is 106, 1C6 and 1D6 (I am connected to only 1 module now)
There is absolutely no response about the cell voltages nor the temperatures.
The code has this line:
msg.buf[3] = 0x50; // 0x00 request no measurements, 0x50 request voltage and temp, 0x10 request voltage measurement, 0x40 request temperature measurement.
I realized, that I do receive valid CAN frames with the voltages, if I use "0x10" (request voltage measurement).
But none of the other "commands" are working,
I can't get the temps at all.
Not all my modules behaves like this!!
There are modules, which does not respond to 0x10 requests, but they reply to the 0x90 (not written in the original code, but I made a loop, to send out differrent commands, trying all values from 0x00-0x10 and up to 0xF0, and 0x90 do receive response with voltage info.
Unfortunately this is still a bad situation, because when I send out the command with 0x90 (or the 0x10 for those modules, which reply to that command), then I receive oonly 1x response with the 6 needed CAN frames. And after approxiamtely 1 minute (uninterrupted asking), I receive an other reply.
So the "resolution" of the data is 1 minute...
What can be the cause of my problem?
Does anybody has 120Ah / made in 2021 packs working with the original code working?
Thanks in advance,
Norbert
Note1: I am using a DUE.