Inhaltsverzeichnis

Victron Cerbo GX – dbus-serialbattery für JK-BMS (RS485)

Victron unterstützt nur wenige Batterien. Um Batterien mit JK-BMS betreiben zu können ist dieser Treiber erforderlich.

Installation

Voraussetzungen:

Aktuelle Version installieren:

wget -O /tmp/install.sh https://raw.githubusercontent.com/mr-manuel/venus-os_dbus-serialbattery/master/dbus-serialbattery/install.sh
 
bash /tmp/install.sh

Im Installationsmenü Latest Release auswählen.

Anschließend den Cerbo neu starten:

reboot

Prüfen ob der RS485-Adapter erkannt wurde:

ls -l /dev/serial/by-id/

Beispiel:

usb-FTDI_FT232R_USB_UART_BG03Z45C-if00-port0 -> ../../ttyUSB1

Konfiguration bei DJ0ABR und DL1EV

Diese Konfiguration ist für einen Verbund aus Pylontech Batterien und DIY Batterien (beide 15 Zellen) ausgelegt. Die Pylontech Batterien sind via BMS_CAN am Cerbo angeschlossen. Die DIY (JK-BMS) Batterien via RS485/USB Adapter.

Die Datei config.ini überschreibt die Standardwerte aus config.default.ini.

Datei anlegen oder bearbeiten:

nano /data/etc/dbus-serialbattery/config.ini

Inhalt:

[DEFAULT]
 
BMS_TYPE = Jkbms_pb
BATTERY_ADDRESSES = 0x00
BATTERY_CAPACITY = 324
 
MAX_BATTERY_CHARGE_CURRENT = 150.0
MAX_BATTERY_DISCHARGE_CURRENT = 150.0
 
MIN_CELL_VOLTAGE = 2.850
MAX_CELL_VOLTAGE = 3.490
FLOAT_CELL_VOLTAGE = 3.410
 
SOC_RESET_CELL_VOLTAGE = 3.490
SOC_RESET_AFTER_DAYS = 30
 
CELL_VOLTAGES_WHILE_CHARGING   = 3.550, 3.520, 3.500, 3.470, 3.430
MAX_CHARGE_CURRENT_CV_FRACTION = 0.000, 0.005, 0.050, 0.250, 1.000
 
CELL_VOLTAGES_WHILE_DISCHARGING   = 2.800, 2.850, 3.000, 3.100, 3.190
MAX_DISCHARGE_CURRENT_CV_FRACTION = 0.000, 0.005, 0.050, 0.250, 1.000
 
TEMPERATURES_WHILE_CHARGING   =    0,    5,   10,   45,   50
MAX_CHARGE_CURRENT_T_FRACTION = 0.00, 0.50, 1.00, 1.00, 0.00
 
TEMPERATURES_WHILE_DISCHARGING   =  -35,  -30,    0,   10,   55,   60
MAX_DISCHARGE_CURRENT_T_FRACTION = 0.00, 0.25, 1.00, 1.00, 1.00, 0.00
 
MOSFET_TEMPERATURES_WHILE_CHARGING   =   70,   75
MAX_CHARGE_CURRENT_T_MOSFET_FRACTION = 1.00, 0.00
 
MOSFET_TEMPERATURES_WHILE_DISCHARGING   =   70,   75
MAX_DISCHARGE_CURRENT_T_MOSFET_FRACTION = 1.00, 0.00
 
USE_BMS_DVCC_VALUES = False

Erläuterung der Parameter

Parameter Beschreibung
BMS_TYPE = Jkbms_pb Verwendeter Batterietreiber. Für JK Inverter BMS mit RS485.
BATTERY_ADDRESSES = 0x00 RS485-Adresse des BMS. Standardmäßig Adresse 0.
BATTERY_CAPACITY = 324 Nennkapazität des Akkus in Ah. Wird für SoC-Berechnungen verwendet.
MAX_BATTERY_CHARGE_CURRENT = 150.0 Maximal erlaubter Ladestrom in Ampere.
MAX_BATTERY_DISCHARGE_CURRENT = 150.0 Maximal erlaubter Entladestrom in Ampere.
MIN_CELL_VOLTAGE = 2.850 Untere Zellspannungsgrenze. Unterhalb dieses Wertes wird die Entladeleistung reduziert.
MAX_CELL_VOLTAGE = 3.490 Obere Zellspannungsgrenze. Oberhalb dieses Wertes wird die Ladeleistung reduziert.
FLOAT_CELL_VOLTAGE = 3.410 Zellspannung während der Erhaltungsladung.
SOC_RESET_CELL_VOLTAGE = 3.490 Zellspannung ab der der Ladezustand auf 100 % zurückgesetzt werden darf.
SOC_RESET_AFTER_DAYS = 30 Erzwingt spätestens nach 30 Tagen eine erneute Kalibrierung des SoC.
CELL_VOLTAGES_WHILE_CHARGING Spannungsstützpunkte für die Ladeleistungsbegrenzung.
MAX_CHARGE_CURRENT_CV_FRACTION Faktor des maximalen Ladestroms für die jeweiligen Spannungen.
CELL_VOLTAGES_WHILE_DISCHARGING Spannungsstützpunkte für die Entladeleistungsbegrenzung.
MAX_DISCHARGE_CURRENT_CV_FRACTION Faktor des maximalen Entladestroms für die jeweiligen Spannungen.
TEMPERATURES_WHILE_CHARGING Temperaturstützpunkte für die Ladeleistungsbegrenzung.
MAX_CHARGE_CURRENT_T_FRACTION Faktor des maximalen Ladestroms abhängig von der Batterietemperatur.
TEMPERATURES_WHILE_DISCHARGING Temperaturstützpunkte für die Entladeleistungsbegrenzung.
MAX_DISCHARGE_CURRENT_T_FRACTION Faktor des maximalen Entladestroms abhängig von der Batterietemperatur.
MOSFET_TEMPERATURES_WHILE_CHARGING Temperaturgrenzen der BMS-MOSFETs beim Laden.
MAX_CHARGE_CURRENT_T_MOSFET_FRACTION Ladestrombegrenzung in Abhängigkeit der MOSFET-Temperatur.
MOSFET_TEMPERATURES_WHILE_DISCHARGING Temperaturgrenzen der BMS-MOSFETs beim Entladen.
MAX_DISCHARGE_CURRENT_T_MOSFET_FRACTION Entladestrombegrenzung in Abhängigkeit der MOSFET-Temperatur.
USE_BMS_DVCC_VALUES = False Verwendet die Werte aus dieser Konfiguration und nicht die vom BMS gemeldeten DVCC-Werte.

Konfiguration (DH5RAE Version)

Diese Konfiguration ist für einen Verbund aus zwei JK-BMS Batterien ausgelegt. Die Kommunikation erfolgt wahlweise über CAN oder RS485. In der hier gezeigten Konfiguration wird CAN verwendet.

[DEFAULT]
LOGGING = INFO
; can0=VE-CAN, can1=BMS-CAN
CAN_PORT = can0, can1
BMS_TYPE = Jkbms_Can
BATTERY_ADDRESSES = 0x00, 0x01
MAX_BATTERY_CHARGE_CURRENT    = 120.0
MAX_BATTERY_DISCHARGE_CURRENT = 120.0
MIN_CELL_VOLTAGE   = 3.00
MAX_CELL_VOLTAGE   = 3.46
FLOAT_CELL_VOLTAGE = 3.41
 
SOC_RESET_CELL_VOLTAGE = 3.445
;SOC_RESET_AFTER_DAYS = 1
CURRENT_REPORTED_BY_BMS  = -300, 300
CURRENT_MEASURED_BY_USER = -300, 300
 
CELL_VOLTAGES_WHILE_DISCHARGING   = 3.0, 3.050, 3.10, 3.15, 3.2
MAX_DISCHARGE_CURRENT_CV_FRACTION =    0, 0.1, 0.5, 1, 1
 
BLOCK_ON_DISCONNECT = True
CHARGE_MODE = 1
CVCM_ENABLE = True
 
CVL_CONTROLLER_MODE = 1
CVL_ICONTROLLER_FACTOR = 0.2
 
TEMPERATURES_WHILE_CHARGING	 =    0,    2,    5,   10,   40,   45,   50,   55
MAX_CHARGE_CURRENT_T_FRACTION    = 0.00, 0.25, 0.50, 1.00, 1.00, 0.50, 0.25, 0.00
 
TEMPERATURES_WHILE_DISCHARGING   =  -10,    0,    5,   10,   40,   45,   50,   55
MAX_DISCHARGE_CURRENT_T_FRACTION = 0.00, 0.25, 0.50, 1.00, 1.00, 0.50, 0.25, 0.00
 
MOSFET_TEMPERATURES_WHILE_CHARGING	=   70,   80,   90
MAX_CHARGE_CURRENT_T_MOSFET_FRACTION    = 1.00, 0.25, 0.00
 
MOSFET_TEMPERATURES_WHILE_DISCHARGING   =   70,   80,   90
MAX_DISCHARGE_CURRENT_T_MOSFET_FRACTION = 1.00, 0.25, 0.00
 
HISTORY_ENABLE = True
BATTERY_CELL_DATA_FORMAT = 1
TEMPERATURE_SOURCE_BATTERY = 1, 2, 3, 4 

Erläuterung der Parameter

Parameter Beschreibung
LOGGING = INFO Standard-Loglevel. Zeigt wichtige Status- und Fehlermeldungen an ohne die Logdatei unnötig aufzublähen.
CAN_PORT = can0, can1 Überwachte CAN-Interfaces. can0 entspricht dem VE.Can-Port des Cerbo GX, can1 einem zusätzlichen BMS-CAN-Interface.
BMS_TYPE = Jkbms_Can Auswahl des verwendeten Treibers. Für JK-BMS über CAN. Bei RS485 stattdessen Jkbms_pb verwenden.
BATTERY_ADDRESSES = 0x00, 0x01 Zu überwachende Batterien. Adresse 0 ist der Master, Adresse 1 der Slave. Beide Batterien werden zu einem gemeinsamen Speicher zusammengefasst.
MAX_BATTERY_CHARGE_CURRENT = 120.0 Maximal zulässiger Ladestrom für den gesamten Batterieverbund.
MAX_BATTERY_DISCHARGE_CURRENT = 120.0 Maximal zulässiger Entladestrom für den gesamten Batterieverbund.
MIN_CELL_VOLTAGE = 3.00 Untere Zellspannungsgrenze. Unterhalb dieses Wertes wird die Entladeleistung reduziert.
MAX_CELL_VOLTAGE = 3.46 Obere Zellspannungsgrenze für die Ladeleistungsregelung.
FLOAT_CELL_VOLTAGE = 3.41 Zellspannung für die Erhaltungsladung.
SOC_RESET_CELL_VOLTAGE = 3.445 Ab dieser Zellspannung darf der SoC auf 100 % synchronisiert werden.
CURRENT_REPORTED_BY_BMS Referenzpunkte für die vom BMS gemeldeten Ströme.
CURRENT_MEASURED_BY_USER Tatsächlich gemessene Ströme. Kann zur Kalibrierung der Strommessung verwendet werden.
CELL_VOLTAGES_WHILE_DISCHARGING Zellspannungsstützpunkte für die Entladestrombegrenzung.
MAX_DISCHARGE_CURRENT_CV_FRACTION Faktor des maximalen Entladestroms an den jeweiligen Spannungsstützpunkten.
BLOCK_ON_DISCONNECT = True Sperrt Laden und Entladen bei Kommunikationsverlust zum BMS.
CHARGE_MODE = 1 Aktiviert die dynamische Ladebegrenzung durch dbus-serialbattery.
CVCM_ENABLE = True Aktiviert die dynamische Regelung der maximalen Ladespannung (CVL).
CVL_CONTROLLER_MODE = 1 Aktiviert den erweiterten CVL-Regler.
CVL_ICONTROLLER_FACTOR = 0.2 Verstärkungsfaktor des CVL-Reglers. Kleinere Werte reagieren langsamer, größere aggressiver.
TEMPERATURES_WHILE_CHARGING Temperaturstützpunkte für die Ladeleistungsbegrenzung.
MAX_CHARGE_CURRENT_T_FRACTION Zulässiger Anteil des Ladestroms in Abhängigkeit von der Batterietemperatur.
TEMPERATURES_WHILE_DISCHARGING Temperaturstützpunkte für die Entladeleistungsbegrenzung.
MAX_DISCHARGE_CURRENT_T_FRACTION Zulässiger Anteil des Entladestroms in Abhängigkeit von der Batterietemperatur.
MOSFET_TEMPERATURES_WHILE_CHARGING Temperaturgrenzen der Leistungsmosfets beim Laden.
MAX_CHARGE_CURRENT_T_MOSFET_FRACTION Ladestrombegrenzung abhängig von der MOSFET-Temperatur.
MOSFET_TEMPERATURES_WHILE_DISCHARGING Temperaturgrenzen der Leistungsmosfets beim Entladen.
MAX_DISCHARGE_CURRENT_T_MOSFET_FRACTION Entladestrombegrenzung abhängig von der MOSFET-Temperatur.
HISTORY_ENABLE = True Aktiviert die Speicherung historischer Batteriedaten im Venus OS.
BATTERY_CELL_DATA_FORMAT = 1 Überträgt Einzelzellinformationen im erweiterten Format an das Victron-System.
TEMPERATURE_SOURCE_BATTERY = 1, 2, 3, 4 Verwendet alle vier vom JK-BMS gemeldeten Temperatursensoren für die Berechnung der Batterietemperatur.

Treiber neu starten

Nach Änderungen an der Konfiguration:

svc -t /service/dbus-serialbattery.ttyUSB1

Alternativ kompletten Cerbo neu starten:

reboot

Fehlersuche

Laufendes Log anzeigen

tail -f /data/log/dbus-serialbattery.ttyUSB1/current

Letzte 100 Logzeilen anzeigen

tail -100 /data/log/dbus-serialbattery.ttyUSB1/current

Letzte 200 Logzeilen anzeigen

tail -200 /data/log/dbus-serialbattery.ttyUSB1/current

Prüfen ob der Dienst läuft

svstat /service/dbus-serialbattery.ttyUSB1

Prüfen welche USB-Geräte erkannt wurden

ls -l /dev/serial/by-id/

Prüfen welche serielle Schnittstelle verwendet wird

ls -l /dev/ttyUSB*

Bootmeldungen filtern

dmesg | grep ttyUSB

Alle Logdateien von dbus-serialbattery finden

find /data/log -name "*serialbattery*"

Häufige Fehlermeldung

Testing Jkbms_pb at address "\x00" with 115200 baud
No battery recognized

Mögliche Ursachen: