NEWS
JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.
-
Hallo,
ich möchte gerne mein JK Inverter BMS mit dem ioBroker abfragen. Ich habe im Netz auch ein Modbusregister für die JK PBXX gefunden, siehe hier:https://community.symcon.de/t/modbus-vorlage-jkbms-pbxx/137989
JK RS485 Modbus Register v1.pdf
BMS.RS485.Modbus.V1.0.en-1.pdf (Original v. -deepl übersetzt)
Ich verstehe leider nicht wie die Adressen in den Modbus Adapter eingetragen werden müssen.
Im ioBroker habe ich schon einige Modbus Instanzen laufen .... SMA, Energiezähler usw. (da waren die Register für ein Laien besser zu verstehen)Kann mir vielleicht jemand ein wenig auf die Sprünge helfen? Z.B das Register für den SOC im Modbus Adapter eingetragen als Screenshot damit ich verstehe wie die Adresse eingetragen werden muss. Den Rest würde ich mir dann ableiten.
Vielen Dank im voraus!!
-
@elektroniker86 [OT]
Wie kommst du an den Bus?
Was für ein Kabel, welche Buchse? -
@homoran
Habe mir ein Kabel selbst gekrimpt, und über ein RS485 zu TCP Adapter. hier jetzt im Testaufbau.Das Blaue ist ein RS485 zu USB Adapter. Der BUS liegt an Pin 1,2 und 7,8
Ich brauch nur mal ein Beispiel wie das mit den Adressen im Modbus Adapter aussehen muss. dann sollte das laufen.
Das ist das Webif vom TCP Adapter.
-
@elektroniker86 Danke!
Schade das nutzt mir leider nichts.
Sieht bei mir so aus
-
@elektroniker86 Greift da noch was anderes auf den RS-485 Bus zu ? Sieht auf dem Bild so aus
-
@homoran
Stecker besorgen und Bus abgreifen ist keine Option? -
Am zweiten Port ist ein 2. Batteriepack angeschlossen damit die untereinander reden können.
Der RS485 zu TCP Adapter ist das rote Kabel. -
Hat jemand eine Idee wie ich die Adressen hier eintragen muss?
-
@elektroniker86 sagte in JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.:
@homoran
Stecker besorgen und Bus abgreifen ist keine Option?Doch!
Das war ja der Hintergrund meiner Frage@homoran sagte in JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.:
Wie kommst du an den Bus?
Was für ein Kabel, welche Buchse?Kabel enthält Stecker
-
@elektroniker86 sagte in JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.:
Hat jemand eine Idee wie ich die Adressen hier eintragen muss?
Wir können es mal versuchen
Adresse von Hex in Dezimal umrechnen,
Du hast mehrere Slaves angewählt, dann muss die Slave-ID deines BMS in die nächste SpalteName, Beschreibung Einheit ist selbsterklärend
Format steht ja auch in der Tabelle (U)Int16/32
Dann sollte es "nur noch" auf die Grundeinstellungen ankommen
-
@elektroniker86 Laut dem verlinkten Thread Geschwindigleit auf 115200, 8 Daten Bits, 1 Stop Bit
Function Code 03H wären zum Lesen Holding Register
Aus dem Document würde ich zum testen mal damit beginnen:
1200H + 0090H = 1290H = 4752Dez für z.B. Total Battery Voltage BatVol in "mV"
Unint32 litte oder big endian usw. muss man mal aus testen.
-
Vielen Dank erstmal für deine Hilfe!
Ich habe mal getestet, jedoch leider ohne Erfolg.
Big und little endian habe ich schon probiert.....Das sind die einstellungen, Adapter wird und bleibt grün und folgendes steht im Log:
modbus.5 2025-03-06 12:58:48.249 info Connected to slave 192.168.1.123 modbus.5 2025-03-06 12:58:48.206 info Can not execute task add for ID undefined: Parameter "id" needs to be of type "string" but type "undefined" has been passed modbus.5 2025-03-06 12:58:48.160 error Invalid object: {"type":"state","common":{"name":"bat vol","role":"value","type":"number","read":true,"write":false,"def":0,"unit":"mV"},"native":{"regType":"inputRegs","address":-25249,"deviceId":0,"type":"uint32le","len":2,"offset":"0","factor":"1"}} modbus.5 2025-03-06 12:58:48.160 error Invalid data inputRegisters/0: {"_address":"4752","deviceId":0,"name":"Total Battery Voltage","description":"bat vol","unit":"mV","type":"uint32le","len":2,"factor":"1","offset":"0","formula":"","role":"value","room":"","cw":false,"isScale":false,"address":-25249,"fullId":"modbus.5.0"} modbus.5 2025-03-06 12:58:48.160 error Invalid inputRegisters address: -25249 modbus.5 2025-03-06 12:58:48.098 info starting. Version 6.3.2 in /opt/iobroker/node_modules/iobroker.modbus, node: v20.18.3, js-controller: 7.0.6
-
Ich muss noch dazu sagen, dass es 2 Batterien sind mit den identischen JKBMS und gleiche Firmware.
Damit das mit dem Wechselrichter richtig funktioniert muss eine Batterie mit den DIP Switches auf Adresse 0 (Master) eingestellt werden und die 2. wird dann auf die Adresse 1 eingestellt.......Mit der PC Software kann ich mich verbinden, mit z.B Adresse 1, dann kann ich oben bei den Reitern Device 0 und Device 1 wählen und die Werte abrufen.
-
@elektroniker86 zwei Sachen fallen mir am Handy auf.
Haken bei Aliases verwenden raus, danach Register kontrollieren.
Testen
Wenn kein unterschied: Haken bei mehrere IDs verwenden raus und Slave ID vorne einstellen in der Instanz und nicht in den Registern.
Was ich am Dokument noch merkwürdig finde ist die Angabe von Uint32 mit Länge 4, eigentlich ist Unit 32 Länge 2.
Man könnte dann auch mal mit uint64 versuchen.
Alternativ mit externem Modbus Programm und erst wann da was kommt weiter mit iob -
So habe noch etwas rumprobiert, so wie du gesagt hast, unit 64 usw.
Jetzt bleibt der Adapter nicht grün und folgendes im Log.modbus.5 2025-03-06 13:38:51.574 error Client in error state. modbus.5 2025-03-06 13:38:51.574 error Request timed out. modbus.5 2025-03-06 13:38:51.573 warn Error: undefined modbus.5 2025-03-06 13:38:45.521 warn [DevID_1] Poll error count: 2 code: "ReadInputRegisters: Invalid FC 32" modbus.5 2025-03-06 13:38:45.521 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds modbus.5 2025-03-06 13:38:45.521 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds modbus.5 2025-03-06 13:38:41.500 warn [DevID_1] Poll error count: 1 code: "App Timeout" modbus.5 2025-03-06 13:38:36.469 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds modbus.5 2025-03-06 13:37:50.820 warn [DevID_1] Poll error count: 3 code: {"err":"timeout","timeout":5000} modbus.5 2025-03-06 13:37:50.820 error Client in error state. modbus.5 2025-03-06 13:37:50.820 error Request timed out. modbus.5 2025-03-06 13:37:50.819 warn Error: undefined modbus.5 2025-03-06 13:37:44.768 warn [DevID_1] Poll error count: 2 code: "ReadInputRegisters: Invalid FC 32" modbus.5 2025-03-06 13:37:41.418 warn [DevID_1] Poll error count: 1 code: "App Timeout" modbus.5 2025-03-06 13:37:36.407 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds modbus.5 2025-03-06 13:36:56.950 warn [DevID_1] Poll error count: 3 code: {"err":"timeout","timeout":5000} modbus.5 2025-03-06 13:36:56.950 error Client in error state. modbus.5 2025-03-06 13:36:56.949 error Request timed out. modbus.5 2025-03-06 13:36:56.949 warn Error: undefined modbus.5 2025-03-06 13:36:50.897 warn [DevID_1] Poll error count: 2 code: "ReadInputRegisters: Invalid FC 32" modbus.5 2025-03-06 13:36:46.898 warn [DevID_1] Poll error count: 1 code: "App Timeout" modbus.5 2025-03-06 13:36:41.846 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds
Welches PC Programm kannst du zum testen empfehlen?