NEWS
Gerät R4AVA07 Modbus mit Waveshare eibninden
-
Hallo zusammen,
habe mit Modbus noch nie etwas gemacht und bekomme es einfach nicht ans laufen...
Ich möchte das R4AVA07 in den iobroker bekommen.Ich habe eine Waveshare RS232/485 to ETH im Netzwerk.
Die Iobroker Modbus einstellung sieht so aus.
Das Gerät hat soweit eine Verbindung, habe dies auch mittels einem Modbus Tool getestet, das R4AVA07 antwortet in dem Modbus Tool auch.
Es scheitert einfach an den Eingangsregister Einstellungen im Modbus Adapter.
Vom R4AVA07 gibt es eine Anleitung, dort sind die ganzen Register wie es scheint in HEX.
Link zur AnleitungIch habe keine Ahnung was ich bei den Eingangsregistern eingeben muss.
Function code 0x03 Register address:0x0000-0x0006, Indicates 1-7 channel value Read number:0x0001-0x0007 The return of the Voltage value is two bytes,High-bit in the former and low-bit in the post,convert it to decimal and divided by 100, is the Voltage value, Unit 0.01V; for example:
Habe schon viel gelesen, gesucht und probiert.
Komme einfach nicht drauf wie man das umlegt.
Vor allem weiß ich auch nicht ob ich dann unsigned16bit (big endian), float, string,double oä. einstellen muss...Vielleicht kennt sich hier jemand mit Modbus so Gut aus dass er es einem Modbus Laien auch Laienhaft erklären kann damit ich mit komme und für die Zukunft etwas schlauer bin
Danke!
LG Alex -
Servus!
Wirklich niemand der helfen kann?
-
-
Schau mal - ich glaube ich habe hier sowas ähnliches mit NodeRed unterstützt.
Auch wenn Du den modbus Adapter verwendest - kannst Du evtl NodeRed als Logikmaschine nutzen. Ich selbst habe kein Modbus und kenne weder die Nodes noch den Modbus Adapter. Aber hier war zum Beispiel wie man einen Float Wert umwandeln muss, dass es Modbus versteht.
Ansonsten hat Steve (ist zwar Node Red Guru) auch in JS gezeigt, wie Du Werte über die Zerlegung in das high und low Array in Modbus schreibst.
Deswegen schau Dir mal diesen Thread an: https://forum.iobroker.net/topic/65273/node-red-modbus und dann das Javascript von Steve: https://stevesnoderedguide.com/modbus-writing-data
Der hat ein paar Beispiele, wie Du bestimmte Werte konvertieren musst.
Für mich sieht das so aus:
The return of the Voltage value is two bytes,High-bit in the former and low-bit in the post,convert it to decimal and divided by 100, is the Voltage value, Unit
dass Du hier genau den Weg rückwärts machen mußt.
Ich hab hier mal einen Flow der Konvertierung vor und rückwärts gemacht:
Sprich Du musst die beiden Bytes wieder in einen Buffer umwandeln.
Ich hab mal das was in dem Flow rückkonvertiert wurde in JS umgesetzt:
var highByte = 17096; var lowByte = 0; var buf0 = Buffer.alloc(2); var buf1 = Buffer.alloc(2); buf0.writeUint16BE(highByte); buf1.writeUint16BE(lowByte); var buf = Buffer.concat([buf0,buf1]); console.log (buf); var n = buf.readFloatBE(0); console.log (n);
Damit hast du dann die Dezimalzahl die Du durch 100 teilen musst - oder was auch immer.