NEWS
JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.
-
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?
-
@elektroniker86 kann man, wenn die Instanz im Expertenmodus ist, bei Uint32 die Länge auf 4 Stellen?
Komme gerade nicht an meine Installation zum probieren.
-
Nein, kann man nicht umstellen weder normal noch im Expertenmodus.....
Wie du sagtest u32 ist 2 nicht 4 die Spalte wird dann ausgegraut. -
@homoran du hast doch auch victron, oder?
Ich mache den Umweg über den victron-controller (raspi 4). Meine beiden JK BMS sind am raspi angeschlossen. Über modbus hole ich mir die JK BMS Daten vom Victron: -
@lobomau sagte in JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.:
du hast doch auch victron, oder?
ja, und oder
hier geht's ums Wohnmobil.
Hab da eine LiFeYPO4 "12V" Batterie mit JK-BMSDer Raspi mit Venus OS und Display ist fertig.
Genau dafür such ich was -
@elektroniker86 kannst du mal das log zeigen wenn du den haken bei Aliase draußen hast, die Device ID vorne eingetragen ist. Dann auch noch mal die Einstellungen Instanz und Konverter
-
Ich komme nicht weiter, hier die logs:
modbus.5 2025-03-06 16:23:30.302 info Disconnected from slave 192.168.1.123 modbus.5 2025-03-06 16:23:29.302 warn [DevID_1] Poll error count: 3 code: {"err":"timeout","timeout":5000} modbus.5 2025-03-06 16:23:29.302 error Client in error state. modbus.5 2025-03-06 16:23:29.302 error Request timed out. modbus.5 2025-03-06 16:23:29.301 warn Error: undefined modbus.5 2025-03-06 16:23:23.250 warn [DevID_1] Poll error count: 2 code: "ReadInputRegisters: Invalid FC 32" modbus.5 2025-03-06 16:23:23.249 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds modbus.5 2025-03-06 16:23:23.249 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds
-
@elektroniker86 Da müssen wir auch die Einstellungen zu sehen.
-
@elektroniker86 stell mal bitte auf debug
Ansonsten
@elektroniker86 sagte in JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.:
"ReadInputRegisters: Invalid FC 32"
@wendy2702 sagte in JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.:
Function Code 03H wären zum Lesen Holding Register
-
Moment da hat sich was überschnitten Das ist jetzt aktuell.
modbus.5 2025-03-06 17:10:00.444 info Disconnected from slave 192.168.1.123 modbus.5 2025-03-06 17:09:59.443 warn [DevID_1] Poll error count: 3 code: {"err":"timeout","timeout":5000} modbus.5 2025-03-06 17:09:59.443 error Client in error state. modbus.5 2025-03-06 17:09:59.443 error Request timed out. modbus.5 2025-03-06 17:09:59.442 warn Error: undefined modbus.5 2025-03-06 17:09:53.391 warn [DevID_1] Poll error count: 2 code: "ReadInputRegisters: Invalid FC 32" modbus.5 2025-03-06 17:09:53.390 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds modbus.5 2025-03-06 17:09:53.390 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds modbus.5 2025-03-06 17:09:48.990 warn [DevID_1] Poll error count: 1 code: "App Timeout" modbus.5 2025-03-06 17:09:43.902 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds modbus.5 2025-03-06 17:09:43.788 info Connected to slave 192.168.1.123 modbus.5 2025-03-06 17:09:43.634 info starting. Version 6.3.2 in /opt/iobroker/node_modules/iobroker.modbus, node: v20.18.3, js-controller: 7.0.6 modbus.5 2025-03-06 17:09:39.643 info terminating modbus.5 2025-03-06 17:09:39.159 info Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason modbus.5 2025-03-06 17:09:39.158 info terminating modbus.5 2025-03-06 17:09:39.142 info Got terminate signal TERMINATE_YOURSELF
-
@elektroniker86 sagte in JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.:
Das ist jetzt aktuell.
bitte erst einmal nur ein Register abrufen.
Input <-> Holding gilt immer noch -
So, ein Register und Debug:
modbus.5 2025-03-06 17:14:13.892 info Disconnected from slave 192.168.1.123 modbus.5 2025-03-06 17:14:13.892 debug Closing client on purpose. modbus.5 2025-03-06 17:14:12.892 debug Cleaning up request fifo. modbus.5 2025-03-06 17:14:12.892 debug Clearing timeout of the current request. modbus.5 2025-03-06 17:14:12.892 debug Socket closed with error modbus.5 2025-03-06 17:14:12.891 warn [DevID_1] Poll error count: 3 code: {"err":"timeout","timeout":5000} modbus.5 2025-03-06 17:14:12.891 error Client in error state. modbus.5 2025-03-06 17:14:12.891 error Request timed out. modbus.5 2025-03-06 17:14:12.891 warn Error: undefined modbus.5 2025-03-06 17:14:07.890 debug [DevID_1/inputRegs] Poll address 4752 - 2 registers modbus.5 2025-03-06 17:14:07.889 debug [DevID_1] Poll start --------------------- modbus.5 2025-03-06 17:14:06.839 warn [DevID_1] Poll error count: 2 code: "ReadInputRegisters: Invalid FC 32" modbus.5 2025-03-06 17:14:04.028 debug [DevID_1/inputRegs] Poll address 4752 - 2 registers modbus.5 2025-03-06 17:14:04.028 debug [DevID_1] Poll start --------------------- modbus.5 2025-03-06 17:14:02.975 warn [DevID_1] Poll error count: 1 code: "App Timeout" modbus.5 2025-03-06 17:13:57.793 warn Error in handler for 4: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds modbus.5 2025-03-06 17:13:57.776 debug [DevID_1/inputRegs] Poll address 4752 - 2 registers modbus.5 2025-03-06 17:13:57.776 debug Initialization of scale factors done! modbus.5 2025-03-06 17:13:57.775 debug [DevID_1] Poll start --------------------- modbus.5 2025-03-06 17:13:57.775 info Connected to slave 192.168.1.123 modbus.5 2025-03-06 17:13:57.721 debug Remove old object modbus.5.inputRegisters.4774_soc modbus.5 2025-03-06 17:13:57.677 debug Initialize Objects for holdingRegs: [] modbus.5 2025-03-06 17:13:57.677 debug Add inputRegisters.4752_Total_Battery_Voltage: {"_id":"inputRegisters.4752_Total_Battery_Voltage","type":"state","common":{"name":"bat vol","role":"value","type":"number","read":true,"write":false,"def":0,"unit":"mV"},"native":{"regType":"inputRegs","address":4752,"deviceId":1,"type":"uint32be","len":2,"offset":0,"factor":1}} modbus.5 2025-03-06 17:13:57.677 debug Initialize Objects for inputRegs: [{"_address":4752,"deviceId":1,"name":"Total Battery Voltage","description":"bat vol","unit":"mV","type":"uint32be","len":2,"factor":1,"offset":0,"formula":"","role":"value","room":"","cw":false,"isScale":false,"address":4752,"id":"inputRegisters.4752_Total_Battery_Voltage"}] modbus.5 2025-03-06 17:13:57.676 debug Initialize Objects for coils: [] modbus.5 2025-03-06 17:13:57.676 debug Initialize Objects for disInputs: [] modbus.5 2025-03-06 17:13:57.621 info starting. Version 6.3.2 in /opt/iobroker/node_modules/iobroker.modbus, node: v20.18.3, js-controller: 7.0.6 modbus.5 2025-03-06 17:13:57.502 debug Plugin sentry Initialize Plugin (enabled=true) modbus.5 2025-03-06 17:13:57.487 debug States connected to redis: 0.0.0.0:9000 modbus.5 2025-03-06 17:13:57.433 debug States create User PubSub Client modbus.5 2025-03-06 17:13:57.433 debug States create System PubSub Client modbus.5 2025-03-06 17:13:57.424 debug Redis States: Use Redis connection: 0.0.0.0:9000 modbus.5 2025-03-06 17:13:57.406 debug Objects connected to redis: 0.0.0.0:9001 modbus.5 2025-03-06 17:13:57.405 debug Objects client initialize lua scripts modbus.5 2025-03-06 17:13:57.376 debug Objects create User PubSub Client modbus.5 2025-03-06 17:13:57.376 debug Objects create System PubSub Client modbus.5 2025-03-06 17:13:57.375 debug Objects client ready ... initialize now modbus.5 2025-03-06 17:13:57.358 debug Redis Objects: Use Redis connection: 0.0.0.0:9001 modbus.5 2025-03-06 17:13:53.655 info terminating modbus.5 2025-03-06 17:13:53.169 info Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason modbus.5 2025-03-06 17:13:53.169 debug Plugin sentry destroyed modbus.5 2025-03-06 17:13:53.169 info terminating modbus.5 2025-03-06 17:13:53.154 debug Closing client on purpose. modbus.5 2025-03-06 17:13:53.154 info Got terminate signal TERMINATE_YOURSELF
-
@elektroniker86 sagte in JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.:
Add inputRegisters
bitte Holdingregister nehmen