My battery (48V Fogstar) is connected over CAN to a cerbo GX. The lowest and highest voltage and cell temp info (found under Devices→Fogstar battery→Details) says ‘Pack-01#’ for the ID-part in all 4 cases. Clearly there should be an actual cell number on the end but it’s getting lost/truncated.
The ‘BMS min/max voltages’ widget in VRM similarly displays “Pack-01#” for ‘Maximum/Minimum Cell Voltage ID” when one hovers over the graph. This is very annoying as I’d really like to know which cells were higest and lowest and whether it is always the same ones.
Is there a way to fix this (on the Victron end - there is no easy way to change what the pack (Seplos v3.0 BMS in this case) is sending SFAIK)?
If I log onto the Cerbo and look with dbus-spy, and look under com.victronenergy.battery.socketcan_can0 we find:
System/MaxTemperatureCellId
System/MaxVoltageCellId
System/MinTemperatureCellId
System/MinVoltageCellId
and they are all showing “Pack-01#”
What controls how these dbus parameters get assigned from can messages? Can it be changed to take more characters?
OK. so lets go look at the underlying can messages.
If I run
candump -c can0 -c -a
then I get
can0 370 [8] 42 4D 53 31 36 53 32 30 ‘BMS16S20’
can0 371 [8] 30 41 2D 53 50 31 31 32 ‘0A-SP112’
can0 372 [8] 01 00 00 00 00 00 00 00 ‘…’
can0 373 [8] 36 0D 3D 0D 26 01 27 01 ‘6.=.&.’.’
can0 374 [8] 50 61 63 6B 2D 30 31 23 ‘Pack-01#’
can0 375 [8] 50 61 63 6B 2D 30 31 23 ‘Pack-01#’
can0 376 [8] 50 61 63 6B 2D 30 31 23 ‘Pack-01#’
can0 305 [8] 00 00 00 00 00 00 00 00 ‘…’
can0 307 [8] 12 34 56 78 56 49 43 00 ‘.4VxVIC.’
can0 377 [8] 50 61 63 6B 2D 30 31 23 ‘Pack-01#’
can0 378 [8] EF 02 00 00 E1 02 00 00 ‘…’
can0 379 [8] 22 01 00 00 00 00 00 00 ‘"…’
can0 35A [8] AA AA AA 02 AA AA AA 06 ‘…’
can0 351 [8] 40 02 00 00 08 07 D0 01 ‘@…’
can0 355 [8] 63 00 61 00 E8 26 00 00 ‘c.a..&..’
can0 356 [8] 29 15 F7 FF DE 00 00 00 ‘)…’
can0 35E [8] 56 69 63 74 72 6F 6E 20 'Victron ’
can0 35F [8] 00 00 00 01 22 01 00 00 ‘…"…’
Which I think is a whole frame? Does that mean that the ID is truncated in the original CAN message, so the cell ID is simply never being sent to the Victron system (and this can only be fixed at the BMS end? Does candump show every byte (I presume so)?
The BMS in this case is a Seplos BMS v3.0
Are there other things I can do to understand what is going on here?
I would actually really like to track all 16 cell voltages and log them in a widget. They are certainly being sent out over Bluetooth BLE and over the RS485 serial interface, as they can be viewed in the Seplos software. But maybe they are not in the CAN data. How do I check? Does the Victron comms protocol dictate that only min+max IDs are sent?