Jump to content

Why your BMS is not an optional extra


SiliconKid
 Share

Recommended Posts

I've new to this game and I've been doing a lot of research lately and I'm concerned about one specific topic that keeps on coming up and seems to be causing a lot of confusion:

Why the BMS (Battery Management System) that is built into your expensive new Lithium battery should ALWAYS be connected to your inverter via a comms cable, properly, unless its physically not possible.

I'm seeing a lot of information about how BMS's are being bypassed completely and effectively ignored and inverters are being put into non Lithium specific modes (User mode) and configured manually so that they monitor the Lithium batteries using voltage monitoring only, as if they are the old Lead Acid or Gel type batteries.

And there seems to be a lot of acceptance that it's perfectly ok to do that and that the BMS really makes no real difference and it doesn't matter if your inverter is communicating with the BMS over a comms cable.

I have a real problem with that philosophy for a few reasons, and if you understand what actually happens when you connect your inverter to the BMS properly and proper comms is established, it becomes very clear why that is always a far better option.

Things to know and understand:

1. The reason you paid so much money for your new Lithium battery with a built in BMS is because that battery is not like the old Lead Acid or Gel batteries which are literally just a group of cells joined together with a positive and negative terminal.

The BMS built into Lithium batteries is a computer and is monitoring the internal state of your battery down to cell level micro voltages. It is aware of everything going on inside that battery and it knows when the battery needs to be charged, how much current it needs to draw, exactly what the current SOC (state of charge) is (as an extremely accurate % value).

2. When inverters are only connected to a Lithium battery via the voltage leads, and ignore the BMS, they can only use the voltage level they are monitoring across those voltage leads to make any decisions related to discharging the battery or trying to show you the current SOC of your battery (which they have to attempt to calculate based on voltage floor and ceiling values that you've manually configured and the voltage they are currently seeing across the battery terminals).

That does work, but it's not nearly as accurate as the BMS is.

The problem is that:

       a. Most inverters, particularly cheaper ones (under 20K ZAR as a generalisation) don't seem to be able to detect very fine grained changes in the voltage across the battery leads. And consequently they aren't able to give you a SOC value that is dead on accurate to what is actually going on with your battery. Depending on how coarse grained the voltage monitoring of your specific inverter is, the changes in charge level that you will see displayed will vary all over the place and it will not change by 1% at a time, it will jump values (random example: It might drop from 95% straight down to 90%).

       b. Lithium batteries have a narrower voltage range between fully discharged and fully charged, than the other types of batteries, and that makes the situation even worse for inverters that can't pickup small voltage changes because smaller changes in voltage now mean bigger changes in SOC.

3. If you get your inverter to talk to the BMS correctly, as intended by the battery manufacturer, the following happens:

     a. You have what we refer to in the software industry as an "inversion of control".  This is very important to understand. When the BMS establishes proper comms with your inverter the BMS TAKES OVER responsibility for what happens to the battery. In that scenario the BMS is now in control and NOT the inverter. That is why an inverter that is properly connected to an Li BMS, and is put into a proper Li mode, LOCKS multiple settings related to voltage floor and ceiling, charging current limits, and some other things. The reason is because the inverter is no longer responsible for deciding those values, and neither is the user (which is why you can't set them), the BMS is. 

The BMS now constantly reports it's SOC and other relevant information to the inverter AND it will tell the inverter when it needs to be charged etc. The inverter just does what it's told, how it's told, when it's told.

The inverter will also now display real time, extremely accurate SOC values and real time charge current values etc., because those values are constantly being sent to it by the BMS.

    b. If you have multiple batteries stacked, then one of those batteries is the master and the BMS will act on behalf of all of the batteries in that stack and make sure that charge is evenly distributed to all batteries and that things are always in balance across the stack.

 

The bottom line is that if you have Li batteries with a BMS, you should always want your inverter connected to that BMS properly, and using the old voltage monitoring approach is NOT the same thing.

I fully understand that if you have an older inverter you may be in a position where there is no new firmware available and it doesn't have an Li profile and can't communicate with a BMS, in which case you have no choice but to rely on voltage monitoring, and you still get multiple benefits from using Li batteries.

My problem is with brand new inverters being setup to willfully bypass the BMS on expensive new Li batteries and being configure to run in USE (User mode) and use voltage monitoring and that being considered perfectly acceptable and ok.

I've personally just spent 80K ZAR on a new battery backup system with a 5Kva Growatt inverter and 2 x Pylontech US3000 batteries and it took me a week of communicating with Growatt in China and doing my own research to figure out why my new inverter would not communicate with the BMS correctly (during which time I had USE mode and voltage monitoring active as temporary workaround). But I refused to accept that the inverter would not connect to the BMS properly and eventually I resolved the issue, upgraded the firmware, and got it right.

And now my system is far more accurate and I know that those very expensive Li batteries I bought are being managed properly and not abused, and I know that the information I'm seeing in the monitoring app and on the inverter display is dead on real time accurate.

If your new inverter is not connecting to your BMS properly then in my opinion that's a problem and needs to be addressed. New firmware must be provided if necessary to upgrade the inverter to be properly compatible with your batteries, and proper documentation must provided explaining exactly what type of cable needs to be used for BMS comms in your specific case, what dip switches need to be set on the battery (if applicable) and what mode the inverter must be put into to trigger proper BMS comms and run in a proper Li profile.

There is a reason we are paying 20K per battery for Li batteries with fancy BMS's built in.

Please use them.

Link to comment
Share on other sites

1 hour ago, SiliconKid said:

2. When inverters are only connected to a Lithium battery via the voltage leads, and ignore the BMS, they can only use the voltage level they are monitoring across those voltage leads to make any decisions related to discharging the battery or trying to show you the current SOC of your battery (which they have to attempt to calculate based on voltage floor and ceiling values that you've manually configured and the voltage they are currently seeing across the battery terminals).

There is inverters (like Goodwe) who have current measuring capability on the battery input and do not rely on the voltage to determine the SOC of the batteries. 

Link to comment
Share on other sites

16 minutes ago, Fuenkli said:

There is inverters (like Goodwe) who have current measuring capability on the battery input and do not rely on the voltage to determine the SOC of the batteries. 

Even so, why would you rely on that, rather than communicating with the BMS and getting the actual 100% correct real time data directly from the BMS?

If it's a new inverter, it should be capable of doing that?

Any method of managing the battery that does not involve the BMS is a fallback and workaround for the fact that the inverter is not communicating with the BMS natively.

Link to comment
Share on other sites

6 minutes ago, SiliconKid said:

Even so, why would you rely on that, rather than communicating with the BMS and getting the actual 100% correct real time data directly from the BMS?

I agree. If the inverter has the capability to communicate with the specific BMS you obviously want to make use of it. But there is a lot of inverter/Battery combination out there who can not communicate with each other at the moment. But (based on my experience) If the inverter has accurate SOC calculation and is programmed in line with the appropriate battery charge and discharge parameters the system will work well even without a direct communication link between the inverter and the battery.       

Link to comment
Share on other sites

48 minutes ago, Fuenkli said:

I agree. If the inverter has the capability to communicate with the specific BMS you obviously want to make use of it. But there is a lot of inverter/Battery combination out there who can not communicate with each other at the moment. But (based on my experience) If the inverter has accurate SOC calculation and is programmed in line with the appropriate battery charge and discharge parameters the system will work well even without a direct communication link between the inverter and the battery.       

I'm with you as far as inverters that are either old and cannot be upgraded, or simply do not support BMS connectivity with a certain battery.

I was not aware of the current measuring capabilities of some inverters that you mentioned above, so that's some more useful information, thanks for that. 

I also don't dispute that the systems will work in User mode with manual config, and you can do that, but I'm still very skeptical about it working optimally and batteries being managed the best they could be if the BMS is not involved.

My real issue is with new inverters being sold with Li batteries that have a BMS, and then not working properly with those batteries, and then the supplier or installers tells the customer its not necessary and proceeds to work around the BMS by using a User profile.

That is not acceptable to me. If the inverter is not capable of BMS comms and cannot be upgraded with new firmware to support BMS comms, then it shouldn't be sold with those batteries.

That's exactly what happened to me recently and if it wasn't for the fact that I'm very technical, very persistent, not afraid of deploying firmware to anything, and refused to accept the 2nd prize solution, I would also now probably be running this inverter in User mode, and that would be a great shame because the whole system works far better and is far more accurate with the BMS active and in control.

Obviously if people are buying inverters and Li batteries privately and not through an installer, they also have a responsibility to do their homework properly and make sure they are buying an inverter that IS compatible with the BMS of the batteries they choose. But even then, the suppliers they buy from need to be responsible and tell customers when an inverter is not going to work with a certain BMS and warn them that combination they've chosen is not going to run optimally, using the BMS.

 

 

 

 

Edited by SiliconKid
Link to comment
Share on other sites

Allow me to disagree, mostly because there are a LOT of systems out there that rely on a simple two-signal BMS. These are analog signals, usually dry contacts. One is closed when you want to signal the inverter/charger to stop charging. The other is closed when you want the inverter to stop discharging. The BMS also has a good old clunky contactor, or maybe a more modern FET, and that forms the last line of defence: Should you not heed its requests to stop charging or discharging, it will disconnect and leave you in the dark.

Furthermore, and here I actually have some experience, the best BMSes out there are the ones that don't apply charge current limits. There are a number of them that implement some kind of fancy "ramp" system that works well with one inverter (SMA usually), but completely sucks with another inverter. Current limits will lose PV production, because there is almost always periods of time when the MPPT could have done more if some current limiter wasn't interfering with things.

I've also done tests on batteries where we attempt to overcurrent them, either on discharge or on charge... and it takes a heck of a lot of effort. I've never managed to get one to actually switch off. We charged the living daylights out of one, raising the temperature to 42°C, and that was the worst we could do. On the Discover AES we blew the internal fuse without the BMS batting an eyelid.

It is far better to size the bank such that your PV will never exceed C/2, and set safe voltage, and then rely on dry contacts, then to deal with a fancy smanchy BMS that attempts to do current control.

The best BMS though, is the one that knows how to do voltage control. It can accommodate a low cell by lowering the charge voltage, and then adding a slight offset to facilitate balancing. Very few BMSes get this level of sophistication right. The best one I've seen is made by MGE, and the Discover AES is not bad either. For DC tied systems, you do far better by using a lower charge voltage and then ignoring the charge current control, because the most commonly used batteries (Pylontech, BYD) tend to set charge voltages that are way too high.

The way I see it, the BMS comms is makes it possible to do certain things you otherwise cannot. It adds an extra layer of protection, in the sense that high temperatures, high discharge currents, and so on can be avoided, and that can extend the battery life (but mostly... it means less warranty claims for the manufacturer). It also means the inverter can avoid a hard switch-off that might leave you in the dark. But I would not say a managed BMS is the be-all and end-all... simply because there are many many more systems out there without it, and they work just fine. If you design the system in proportion, a BMS should never have to intervene in any case.

Edited by plonkster
Link to comment
Share on other sites

@plonkster

That's excellent input on this subject. Some very interesting information in that post.

Thanks for taking the time to type out an informed opinion based on technical facts and address the topic properly.

I don't necessarily agree with everything you say, but you clearly have hands-on experience and understand these systems well. 

More input from people like you, backed up with technical detail like that, is what we need.

Thanks

 

Link to comment
Share on other sites

@plonkster

Your very last comment in your post above is interesting to me:  "If you design the system in proportion, a BMS should never have to intervene in any case."

My understanding is that the way I have things configured right now, where my inverter is communicating with the Pylontech batteries via BMS, and is using a Li profile specifically for the Pylontechs, the BMS is always is control and the inverter is merely taking instructions from the BMS, hence all the settings that are locked on the inverter and no longer editable.

I'm therefore confused by your assertion above that "a BMS should never have to intervene". Or did you just mean that there's really no reason to even connect to the BMS and involve it all if you design the system right?

 

Link to comment
Share on other sites

23 minutes ago, SiliconKid said:

My understanding is that the way I have things configured right now, where my inverter is communicating with the Pylontech batteries via BMS, and is using a Li profile specifically for the Pylontechs, the BMS is always is control and the inverter is merely taking instructions from the BMS, hence all the settings that are locked on the inverter and no longer editable.

That is true, but the values it sends are practically static. It sends a static 53.2V as a charge voltage (and 52.5V is a better alternative), and the charge current limit (CCL) is 25A per brick, which it lowers to 12A when it gets to 99% full. If you exceed the 12A... nothing happens. The battery is pretty forgiving about everything except voltage: If you exceed 54V, it switches off.

In other words, there is almost no difference between following the instructions of the BMS... and just setting 53.2V and a 25A (per brick) limit in your inverter config. The latter will work just as well as the former in the vast majority of cases.

23 minutes ago, SiliconKid said:

BMS should never have to intervene

It is a good thing to connect whatever means of control the BMS has, but what I mean is that the BMS should not have to send CCL=0 to tell me to stop charging, unless it's an emergency. Ideally the BMS should only send CCL=0 when it's absolutely imperative, in other words, when damage will result if I don't, and then it should activate its own self-protection if the inverter/charger does not comply.

A two-signal analog BMS can send a CCL=0 (and DCL=0, discharge current limit) just as effectively without the cost of the CAN-bus electronics.

There are many BMSes that send CCL=0 when the battery is full (and it is my opinion that they should not, they should not intervene in this way). This includes BYD B-Box pro as well as the new 24V Pylontech batteries. If you do that, you get a sawtooth voltage and SOC chart, because the charger stops charging at 100%... then starts again at 99%, causing these little micro-cycles at the top. Voltage control is better. Once you reach the target voltage, current automatically stops flowing because there is no potential difference.

So don't get me wrong, I do like the CAN-bus bmses and the communications. It is a good idea. You get SOC tracking from the horses mouth, you get information about cell temperatures, some BMSes can even tell you the bitmask of the balancer (which cells it's bleeding off), and of course it can communicate alarm conditions. But it's not like you cannot live without it.

On my system I have Victron LiFePO4 batteries with a VE.Bus BMS. This is essentially a two-signal BMS. Not a day's trouble...

Edited by plonkster
Link to comment
Share on other sites

@plonkster

I see you also refer to the CAN-bus as if it's the defacto communications port that's used to communicate with BMS's.

With my new Growatt SPF5000 inverter the whole problem I had was that it actually will NOT communicate with the battery via the CAN-bus. You have to connect the comms cable to the RS485 port on the master battery to get comms with the BMS working properly (and you also have to set the dipswitches on the master battery to set RS485 baud rate to 9600).

Is that significant in any way? Or in your opinion does it no matter which port is used for the comms, only that comms works?

 

 

 

 

Link to comment
Share on other sites

Just now, SiliconKid said:

I see you also refer to the CAN-bus as if it's the defacto communications port that's used to communicate with BMS's.

There is a CAN-bms protocol, a simple thing based on simple CAN 2.0A (11 bit, 500kbaud), which was designed by a German company, then made it into the first LG batteries, got copied by others, and now it is used by almost any battery with a CAN-bms. This has become the defacto standard (aka in practice).

I know Revov has interface hardware that talks to the BMS using RS485, then talks to the Victron stack using VE.Direct, thereby making the BMS look like a BMV-7xx. This way you can communicate SOC, voltage and current, but you cannot do voltage and current control (not implemented in VE.Direct).

Technically all of this is just software, and if you're inverter has an RS485 port and the relevant software to talk to the battery, it will work just fine. The thing is that few inverters do it this way. On a Victron system we actually have the best chance at making it work natively. You could use the existing RS485 cable, and then develop a driver for it. See for example this driver, which is for IMT solar irradiation sensors, which also connect via RS485.

So it doesn't really matter what interface you use. What matters is what the manufacturer requires for warranty purposes 🙂

 

Link to comment
Share on other sites

3 minutes ago, plonkster said:

There is a CAN-bms protocol, a simple thing based on simple CAN 2.0A (11 bit, 500kbaud), which was designed by a German company, then made it into the first LG batteries, got copied by others, and now it is used by almost any battery with a CAN-bms. This has become the defacto standard (aka in practice).

Fair enough.

It looks like Growatt opted to ignore that simple CAN-Bus protocol and have implemented something else in their firmware to talk to the Pylontech BMS via the RS485 port.

I suspect they may be doing more that way, and possibly making better use of the BMS by implementing support for the Pylontech protocol in their firmware themselves.

I wish I could get my hands on that comms protocol and see exactly what packets are moving over that wire and what the battery is sending to the inverter, just to properly understand how good the integration between this Growatt inverter and the Pylontechs is, purely out of interest.

 

Link to comment
Share on other sites

7 minutes ago, SiliconKid said:

It looks like Growatt opted to ignore that simple CAN-Bus protocol and have implemented something else in their firmware to talk to the Pylontech BMS via the RS485 port.

Yup. They RS485 port yields way more info about what is going on on a cell level. But on the other hand, the CAN-bms protocol was also extended so that info can also be communicated over CAN-bus. Some of the latest Pylontech and BYD models already implement this on CAN-bus as well.

Serial and/or RS485 is often cheaper too, which may be why some manufacturers would opt for that instead.

Link to comment
Share on other sites

13 hours ago, Fuenkli said:

There is inverters (like Goodwe) who have current measuring capability on the battery input and do not rely on the voltage to determine the SOC of the batteries. 

So I'm told. But recall the problems I had with the batteries turning off all the time. The moment a properly cabled BMS was put in place the system became way more stable.

Link to comment
Share on other sites

1 hour ago, Bobster said:

So I'm told. But recall the problems I had with the batteries turning off all the time. The moment a properly cabled BMS was put in place the system became way more stable.

I recall your problem. Did you ever get an answer from Revov why the battery would sometimes disconnect without a communication link? 

Link to comment
Share on other sites

11 hours ago, plonkster said:

In other words, there is almost no difference between following the instructions of the BMS... and just setting 53.2V and a 25A (per brick) limit in your inverter config. The latter will work just as well as the former in the vast majority of cases.

Some feedback on the above. I just checked the values on the inverter itself and this Growatt SPF5000 of mine, communicating with the BMS via RS485, not CAN-bus, is actually setting the values as:

Setting 19 : 53.0 volts   (Bulk charging voltage)

Setting 20:  53.0 volts    (Floating charging voltage: Does this even matter for Li ? information online seems to say not)

Setting 21:  20% floor    (Low DC cut-off voltage)

So it's actually setting the charging voltage to 53.0, not 53.2.

I realize that might sound like ridiculous nitpicking but when the voltage range on Li is so narrow, 0.2 does makes a difference.

My understanding is that this is different to what the various Axpert clones are doing, and they ARE setting those values to 53.2 volts as you said.

It looks like Growatt decided to drop it a bit in the protocol implementation they did over RS485.

 

 

Edited by SiliconKid
Link to comment
Share on other sites

51 minutes ago, Fuenkli said:

I recall your problem. Did you ever get an answer from Revov why the battery would sometimes disconnect without a communication link? 

No. The local Revov guy was very helpful and offered a site visit to see if everything was installed and configured correctly. I had no problem with him not wanting to diagnose over the phone.  But the installers came up with a solution. The last piece of the puzzle was the comms cable itself. Since that was rectified the system has been reliable.

Link to comment
Share on other sites

24 minutes ago, SiliconKid said:

I realize that might sound like ridiculous nitpicking but when the voltage range on Li is so narrow, 0.2 does makes a difference.

Again, I disagree. At the higher end of the voltage range, preciously little energy is needed to raise the voltage, and conversely, preciously little extra energy is stored by pushing the voltage up. Once you go above 3.45V per cell, little extra energy is stored, and above 3.55V per cell the battery itself can be pushed overvoltage with as little as 50mA. The balancers in the Pylontech can't pass a lot of current either, so where other batteries can bleed off a couple hundred milliamps this one can't.

There is a thread here on the forum where someone explains the guts of the Pylontech battery. The battery considers the cell full at 3.48V per cell. That's a total of 52.2V for a 15s battery. Adding an additional few hundred millivolts -- and again I tested and verified this myself -- gives the balancers something to work with and the SOC levels off at 100% instead of jittering between 99 and 100.

My theory is that the 53.2V limit advertised by the Pylontech BMS is as high as marketing could push it without engineering complaining too much 🙂

 

Link to comment
Share on other sites

51 minutes ago, plonkster said:

Again, I disagree. At the higher end of the voltage range, preciously little energy is needed to raise the voltage, and conversely, preciously little extra energy is stored by pushing the voltage up.

You make perfect sense and I actually agree with you. I just thought it was interesting to note what the Growatt is setting it to specifically.

All I actually meant by my comment about 0.2 difference was that it's less than 53.2, and closer to your preferred 52.5, and anything less than 53.2 is a good thing in this case.

And 53.0 does put us 0.25 volts below your stated over voltage threshold (15 x 3.55 = 53.25), so that's a bonus 😀

The manual that comes with the Pylontech US3000 battery specifies the Charge Voltage as: 52.5 - 53.5

Clearly the Growatt engineer who implemented their RS485 BMS protocol chose 53.0 because it's slap bang in the middle of that range. I would have done the same thing in absence of more detailed information to work with, like the info you've provided above.

I just realised  that last comment is nonsense because the 53.00 is coming from the BMS and would be decided by the Pylontech BMS firmware, not the Growatt firmware, obviously.

So it looks like the firmware on the new Pylontech US3000s has been updated to set 53.00, not 53.20. So it was a Pylontech engineer who picked the middle of the stated range value.

Edited by SiliconKid
Link to comment
Share on other sites

57 minutes ago, SiliconKid said:

I just realised  that last comment is nonsense because the 53.00 is coming from the BMS and would be decided by the Pylontech BMS firmware, not the Growatt firmware, obviously.

But does it come from the BMS or is it just hardcoded as part of the Growatt L02 profile? L01 for instance sets this at 54V and Growatt confirmed that this is the profile for Dyness. 54V being the upper limit in the 52.5V - 54V range for Dyness as per battery B4850 specs. 

Link to comment
Share on other sites

1 hour ago, Tsa said:

But does it come from the BMS or is it just hardcoded as part of the Growatt L02 profile? L01 for instance sets this at 54V and Growatt confirmed that this is the profile for Dyness. 54V being the upper limit in the 52.5V - 54V range for Dyness as per battery B4850 specs. 

Good question.

After that last post I thought about it more and the same thing occurred to me.

It could just be that the Growatt engineer who implemented that BMS protocol put an override in that firmware that sets it to 53.0 no matter what the BMS tells it to do.

I need to ask @Coulomb to check the firmware code and confirm or deny for us. I gave him the firmware and I know he's already had a preliminary look at the code.

Link to comment
Share on other sites

3 hours ago, SiliconKid said:

It could just be that the Growatt engineer who implemented that BMS protocol put an override in that firmware that sets it to 53.0 no matter what the BMS tells it to do.

Incidentally that is precisely what happens in a Victron system. The BMS says 53.2V... Venus says... I reject your reality and substitute my own... 🙂

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...