question

Alex Pescaru avatar image
Alex Pescaru asked

Pylontech (15 cells) SoC behavior and Overcharging error

Hi developers,

Below information and behaviors collected during time and also posted a couple of topics on the forum.

In dvcc.py, you have for the Pylontech batteries, the following function defined:

def _pylontech_quirk(dvcc, bms, charge_voltage, charge_current, feedback_allowed):
    if charge_voltage > 55:
        # 48V battery (16 cells.) Assume BMS knows what it's doing.
        return (charge_voltage, charge_current, feedback_allowed, False)
    if charge_voltage > 30:
        # 48V battery (15 cells)
        return (min(charge_voltage, 52.4), charge_current, feedback_allowed, False)
    if charge_voltage > 20:
        # 24V battery (8 cells). 24V batteries send CCL=0 when they are full,
        # whereas the 48V batteries reduce CCL by 50% when the battery is full.
        # Do the same for 24V batteries. The normal limit is C/2, so put the
        # limit to C/4. Note that this is just a nicety, the important part is
        # to clip the charge voltage to 27.8 volts. That fixes the sawtooth
        # issue.
        capacity = bms.capacity or 55
        return (min(charge_voltage, 27.8), max(charge_current, round(capacity/4.0)), feedback_allowed, False)

Of interest is the comments in bold above, for the 24V battery.

Only that all current Pylontech firmwares, not only the ones for 24V batteries, specify a CCL=0 when fully charged.

I am trying to suggest that also for the 48V batteries, the ones with 15 cells, to apply the same correction, in order to correct the SoC sawtooth behavior (99%-100%) and #29 Overcharge error.

    if charge_voltage > 30:
        # 48V battery (15 cells)
        capacity = bms.capacity or 55
        return (min(charge_voltage, 52.4), max(charge_current, round(capacity/10.0)), feedback_allowed, False)

I've implemented in my system the above modification and for the past months all is OK. Both above specified behaviours have been corrected.

Also other users on the community have implemented it and all is OK.

Easier for the users, instead of modifying the above script is to modify the following DBus path variable and to put there a value equivalent with approximatively battery C10.

com.victronenergy.system/Debug/BatteryOperationalLimits/CurrentOffset

The following topics also document it:

https://community.victronenergy.com/questions/254671/error-code-29-over-charge-protection-on-constant-c.html

https://community.victronenergy.com/questions/305932/no-idle-mode-for-pylontech-battery-with-victron-mu.html

Hope I am right, but if I am not, maybe I can kindly ask you to tell me why.

Many thanks,

Alex

Attn:@victron

PylontechSOCMulti RS
2 |3000

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

0 Answers

Related Resources

Victron Pylontech battery compatibility guide

Additional resources still need to be added for this topic

Mutli RS Solar Datasheet

Mutli RS Manual