Communication between BYD Battery and Kostal Plenticore Inverter

I already, saw this document, and if I am right it has been in this thread.
Unfortunately this description does not match to the measurements and logs I did.
Baudrate is matching but the header is differently, the CRC calculation is done in an other way and even the numbers are representated in an other format.
In my logs, the numbers are transfered as IEEE floats, in the linked document they are transfered in mV, mA oder 1/10 V, so as integers.
I contacted my electrician today and asked him to request the Modbus register list from BYD. I have a Fronius SYMO Gen24 10.0 Plus Inverter with automatic Backup funstionality in case of a power outage, but since BYD Batterypacks are currently unobtanium I want to use a different one idealls with a controller just like what you are building. the Fronius Iverter is ily certified for the BYD HVS/HVM systems. Communication is over Modbus RTU using the SunSpec registers. I have received a list of the inverter registers from Fronius, but so far lack the registers for the BYD.
There is also A guy in Finland working on basically the same thing.
View: https://www.youtube.com/watch?v=64wVE4mU1_4
and furhter Videos describe hie Progress in bringing a broken BYD batterypack back to life, his final goal is to replace it with used Nissan leaf batteries, since he refurbishes them for a living - if I understoof him correctly that is. If you get your design working I would be very interested in one for my Projects, and also more than happy to cooperate. My background is mainly in Linux system management and High availability, with some knowledge in mechanical engineering and electrical engineering (as part of my school/Uni curriculum, not as a licensed electrician).
 
Cool guy from the video!

If you get the info from Fronius this would mean my next inverter will be a Fronius one! And I am building around 5 plants per year and I will switch from Kostal to Fronius.
In the BYD you need to setup the inverter, so the infos from Fronius would not help that much for Kostal.

Setup in the BYD:
1646939022367.png


I also need to say that the guy from the video uses a BYD B-Box HVS/HVM while I am using the old series (BYD B-Box HV). But since there is no special setting in the Battery I assume that they behave the same at least for all the Kostal inverters.

I am also registered at Kostal as installer but the didn't want to give me any further details to the communication...
 
Did some more digging at SunSpec. it seems that BYD has not requested and vendor specific registers, which should be rather helpful, unless they used a different Name of course.
SunSpec Alliance Specification – Energy Storage Models should be a good starting oint for the reverse engineering of the communication. It can be downloaded from SunSpec.
 
Last edited:
But these are only the registers for the Sunspec, they are "public" at Kostal as well.
Or didn't I see any description of the battery communication?

At least with Kostal it is not ModBus...
 
For Fronius it is over modbus RTU. According to the docs I saw so far and what fronius support told me on the phone today, they basically just call the registers from the battery. You have to tell the inverter that there is a battery on the modbus, and on which of the wto modbus channels it is, but there is not much more to configure. You can set min SOC and define maximal charging/discharging power and whether or not you want to charge with power from the mains, but that is about it.
If I am not mistaken BYD supports Modbus-RTU and CAN-bus, so no idea what Kostal is using. For Fronius the whole communication should be via Modbus-RTU using the sunspec specification. The questions still to answer is which registers they actually use, an which they ignore. from my so far limited understanding they use only a very limited ammount of data from the battery. The GUI displays the SOC, Cycle count and Power in/Out. not sure if they show more data in the technicians screen. Error states most likely, so those for sure would eed to be implemented.
 
I have some great news for the project:
This week I finally managed to connect the battery to the inverter.
I still do not know all the bytes correct, but I can repeat the Init message (short, one time at startup) and send the battery status message with the allowed currents and soc. The first bytes are fixed for me as "header" and the 5 bytes around the soc are still a riddle for me. Somewhere there needs to be the request for charging from grid... But I still do not want my genue BYD bring into low voltage shutdown.

The SW quality is still bad, so I want to clean it up and then upload it to some git repo.

Unfortunately I will use SMA inverters in the future since kostal has no emergency power generation function...
But if I get one to my hand I will do the same reverse engineering for them as well. :devilish:
 

Attachments

  • IMG_20220421_211613.jpg
    IMG_20220421_211613.jpg
    4 MB · Views: 142
Hi,
I'm currently in the process of building a new house and looking to install a solar system to it, was looking to install a Fronius inverter and they state that only the BYD HVS/HVM is compatible, so I started looking for a controller that would emulate the BYD communication protocol and get LiFePo cells to make the same battery at almost have the price.

I see you have almost gotten a working system, but one thing came to mind, wouldn't it be possible to buy the BYD BCU + base unit which costs around 700e and use whatever cells you want, or at least something with around the same voltages/capacities as the separate battery modules?

From photos I can see there are 2-3 high current pins and 8-10 signal lines between the modules, I would expect there is only some basic communication from the modules to the BCU which would be the BMS of the system?
 
Hi,
I'm currently in the process of building a new house and looking to install a solar system to it, was looking to install a Fronius inverter and they state that only the BYD HVS/HVM is compatible, so I started looking for a controller that would emulate the BYD communication protocol and get LiFePo cells to make the same battery at almost have the price.

I see you have almost gotten a working system, but one thing came to mind, wouldn't it be possible to buy the BYD BCU + base unit which costs around 700e and use whatever cells you want, or at least something with around the same voltages/capacities as the separate battery modules?

From photos I can see there are 2-3 high current pins and 8-10 signal lines between the modules, I would expect there is only some basic communication from the modules to the BCU which would be the BMS of the system?

Hello, I was recently lucky enough to pick up a BYD B-Box HV 7.7 (not Premium) which had been flooded for next to nothing. Two of the battery modules would not allow the BCU to be switched on. The rest were working fine.

It turned out that because the floodwater was fresh, over the relatively long distance between individual cell connectors the current was negligible, but over the short distances on the balancer PCBs in the individual modules, the currents that flowed were high enough to kill multiple MOSFETs, diodes but particularly discharge resistors, making balancing and cell voltage measurement impossible. Because of corrosion on the connectors, the ICs were reporting error states to the BCU which is why it was shutting down and throwing an alarm.

I had to do a fair bit of reverse engineering to repair the balancers and restart the whole system with the BCU.

Each of the modules uses a balancer with a TI bq76PL455A and communicates with the BCU via a robust industrial CAN bus. The bq76PL455A ICs are programmed with specific parameters and thresholds by BYD. The build quality is excellent.

I have now replaced around 50 components (the biggest challenge was removing the conformal coating to allow measurement and soldering). The system is fully operational again, and connected to a KOSTAL Piko BA 8.0 inverter.

I also had to get a "special" file from BYD to enable me to reset a "fatal" alarm. BYD were kind enough to provide this.
 
Hi, (I hope to re-animate this thread.)
I am in Berlin area and build my high voltage Li-Battery in order to connect it to my Kostal BI. The inverter accepts the traffic I send (green light) and goes to charge/discharge mode (clicking of high voltage relays audible). However the power remains below 10 W (charge or discharge - I do not know). 10 W means close to noise. I wonder why it is not increasing the power value in order to zero out the Energy meter (KSEM) value.

What I also still do not understand is the following issues:
- What is the difference of the currents given in Byte 18-21 vs Byte 22-25
- Is the battery measuring the current too? I tend to believe so as it is in the protocol

My inverter shows the AC-power of the KSEM correctly without battery traffic.
My inverter shows the DC voltage of the battery correctly without battery traffic.
I figured out the Checksum issue. When accumulating all 64 Bytes of the live status message the LSB must be 0x3f.
I can set almost any integer value for the CycleCounter like 865 or 3855 or even 65295 (200years on daily full cycle). I can not set it to a value below 257.
I can set the SOC to any integer value between 1 and 116+ (%).

I wonder is in the 64 byte message somewhere a flag like "charge now" or similar?

thanks!
Corny
 
Back
Top