question

pripp avatar image
pripp asked

CAN-BMS Protocol specification

I want to implement my own Battery Management System which should be connected over the CANBUS CAN-BMS protocol to the cerbo gx.


I found out so far that the BMS to need transmit the following CAN IDs to the cerbo gx.
0x351, 0x355, 0x356, 0x35A, 0x35B, 0x35E, 0x370

I'm not sure about CAN ID 0x35E. I guess this frame is used by the cerbo gx to identify the type of battery manufacturer. Can the Manufacturer Name freely chosen or is there any generic name I can use?

May I can receive a full specification of the protocol?

Regards,

Pascal

battery chargingBMSprotocol
can-snippet.png (69.1 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

10 Answers
jbakuwel avatar image
jbakuwel answered ·

Hi @pripp. I have the same need (for VenusGX). I'd also like to monitor the individual cell voltages as reported by the BMS I'm using, perhaps by an external monitoring system (but retrieved via VenusOS) as I don't think VenusOS will be able to do anything with those.

I might be able to talk the manufacturer of the BMS into allowing me to update the firmware of the BMS but it could well be easier to do the translation somewhere in VenusOS. There is something called /opt/victronenergy/dbus-systemcalc-py/scripts/dummycanbus.py that could possibly be used as a starting point.

The CAN interface on the VenusGX, as far as I can tell, is compatible with socket-can so in theory it should be possible to write a driver in Python.

Hopefully someone from Victron will reply to this post with some pointers to get started.

Jan


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Daniël Boekel (Victron Energy Staff) avatar image
Daniël Boekel (Victron Energy Staff) answered ·

Hi @jbakuwel, @pripp

Unfortunately we cannot disclose the BMS protocol due to NDA contracts, but we can tell that there are some open source project on Github that have everything working...

for example search for simpbms

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Mike Dorsett avatar image Mike Dorsett commented ·
Hi Daniel, on a very similar topic, by BMS has a Modbus Server (Tcp/Ip), but can also connect to another Modbus slave on TCP/Ip Is it possible to use this method to communicate BMS information to the Venus operating system?
0 Likes 0 ·
jbakuwel avatar image
jbakuwel answered ·

Hi @Daniël Boekel (Victron Energy Staff),

Thanks for the pointers. I have one other question for you. I would like to use a VenusGX to physically interface with the BMS (produced by a local supplier downunder) and intend to use a Python script to communicate with the BMS via the CANbus. That Python script would present itself as a BMS (using the dummycanbus.py as a starting point).

Is that a straight forward approach or is there something smart in VenusOS that sits on the CANbus/interface so I can't use it?

Last but not least and assuming my approach doesn't raise any objections I would be most obliged if you could consider including the python-can package in the repository so I can install it with opkg.

regards,
Jan

5 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Hi @jbakuwel

I don't know the OS details.

But: why not use the standard CANbus BMS route?

0 Likes 0 ·
jbakuwel avatar image jbakuwel Daniël Boekel (Victron Energy Staff) ♦♦ commented ·

Hi @Daniël Boekel (Victron Energy Staff),

Thanks for the quick reply :-)

I haven't been able to find documentation how I can integrate a custom BMS into VenusOS. The BMS (from a local supplier "down under") has it's own protocol, which is fully documented.

I'm looking for a way to integrate that BMS with VenusOS. I'll use VenusGX hardware for that as it has a built-in CANbus interface. If I can do that the standard CANbus BMS route, then by all means I'll happily do it that way.

Please let me know.

met vriendelijke groet,
Jan

0 Likes 0 ·
Show more comments
ryanalexander avatar image
ryanalexander answered ·

I'm trying to send SOC to a Cerbo GX via CAN-BMS with the following message from the Simp BMS manual.

The Cerbo GX doesn't seem to be registering it. Where should I be looking?

The end objective here is for the Quattro connected to it to receive the SOC and trigger the grid connection with it as a condition.


1626449483100.png

I've also attached the REC bms manual for reference.UserManual_REC_Victron_BMS.pdf


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

henry99 avatar image
henry99 answered ·

Hi, I checked the Simp BMS Docu: Some Can signals in the Simp BMS Setup manual (Page 41) are not correct . Some are unclear. I put my notices at the end of each row:

Maybe someone can help and post the correct meaning and Byte order?

Regards Henry


Message ID 0X351

Byte Bit Signal Scale unit

0 Charge Voltage LSB 0.1 A Byteorder Voltage or Current Mistake? What is correct?

1 Charge Voltage MSB 0.1 A Byteorder Voltage or Current Mistake? What is correct?

2 Charge Current LSB 0.1 V Byteorder Voltage or Current Mistake? What is correct?

3 Charge Current MSB 0.1 V Byteorder Voltage or Current Mistake? What is correct?

4 DisCharge Current LSB 0.1 A

5 DisCharge Current MSB 0.1 A

6 DisCharge Voltage LSB 0.1 V

7 DisCharge Voltage MSB 0.1 V

Message ID 0X373

Byte Bit Signal Scale unit

0 Min Cell Voltage LSB 1 V - Unit 1 V doesnt make sense: is it Millivolt LSB+MSB*256 ?

1 Min Cell Voltage MSB 1 V - Unit 1 V doesnt make sense: is it Millivolt LSB+MSB*256 ?

2 Max Cell Voltage LSB 1 V - Unit 1 V doesnt make sense: is it Millivolt LSB+MSB*256 ?

3 Max Cell Voltage MSB 1 V - Unit 1 V doesnt make sense: is it Millivolt LSB+MSB*256 ?


Message SOC

Message ID 0X355

Byte Bit Signal Scale unit

0 SOC LSB 1 %

1 SOC MSB 1 %

2 SOH LSB 1 % - What does SOH mean ?

3 SOH MSB 1 % What does SOH mean ?

4 SOC LSB 0.01 % Why SOC in Byte 4,5 with 0,01% and Byte 0,1 with 1% ?

5 SOC MSB 0.01 % Why SOC in Byte 4,5 with 0,01% and Byte 0,1 with 1% ?





2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Mike Dorsett avatar image
Mike Dorsett answered ·

soh is battery state of health. All batteries have a design throughput limit in kWh, this is an indicator of how much of that has been used.

The soc in 1% is usually used for fast updates, and decision on low / high SOC cut off, the 0.1% is used for display, usually with slower update.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

stanhausc avatar image
stanhausc answered ·

Hi @Stojan Nejkov, @Daniël Boekel (Equipe da Victron Energy), @pripp.

Any progress on the script? I have the same need, I managed to make a modbus communication with a battery from a local manufacturer with the help of @Louis van der Walt. Now I need to send this data that I receive via BMS-Can or Ve.CAN to the CERBO GX interface. Any suggestions where to start? Documents?

whatsapp-image-2022-12-01-at-152122-1.jpeg



2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

sgrigor1 avatar image
sgrigor1 answered ·

I what to trigger on VECAN the full charge of battery. I found the message from pylontech 0x35C but no reaction from my EasySolar-II GX inverter. I sent two bytes with id =0x35C, byte0= 0xC8, byte1=0x00. Can someone point me to the right CAN message to force full charge. I would like to force the full charge from grid after 30days with SoC < 97%.

Thanks.


Byte0:

Bit7 - Charge enable

Bit6 - Discharge enable

Bit5 - Request force charge I*

Bit4 - Request force charge II*

Bit3 - Request full charge**

Bit2

Bit1

Bit 0

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

tuxedo0801 avatar image
tuxedo0801 answered ·

Protocol seems to be very simple, at least for the basic stuff: https://github.com/Tom-evnut/VEcan/blob/master/VEcan.ino

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Mike Dorsett avatar image
Mike Dorsett answered ·

I now have a working (mostly) interface to Venus OS reading BMS data over modbus TCP/IP. It should be easy enough to modify this to red data from the CAN Bus. Still working on getting the script to auto start, the Victron doc's on this appear to need updating, but there are other clear examples available.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Related Resources

Additional resources still need to be added for this topic

Victron VE.Bus BMS product page

Victron 3rd party BMS compatibility page