NEWS
Modbus - holding register als hex schreiben
-
Hallo Ihr,
ich würde gerne über den modbus adapter die historischen Daten meines Stromzählers zurücksetzen. Das soll gehen. Leider bekomme ich es nicht hin. vielleicht habt ihr ja eine Idee oder einen Hinweis für mich.
Der Holding-Register im Modul sieht bei mir so ausMein JavaScript Code zum setzen des Wertes im Object so:
reset2 = Math.abs(0003).toString(16); setState("modbus.0.holdingRegisters.3.461457_Reset_historical_data",reset2);
und die Doku des Herstellers definiert den zu setzenden Punkt so..
Wenn ich das Objekt über das Skript setze bekommen ich im Log diesen Hinweis:
modbus.0 2025-01-12 15:29:53.102 error Cannot write single register [421456]: {"err":"timeout","timeout":5000} modbus.0 2025-01-12 15:29:53.101 error Client in error state. modbus.0 2025-01-12 15:29:53.100 error Request timed out. modbus.0 2025-01-12 15:29:53.098 warn Error: undefined
MOD-EDIT: Code in code-tags gesetzt!
Ich bin mit meinem Latein am Ende. Es wäre toll, wenn mir jemand helfen könnte.
Danke & VG
-
@tri-tom sagte in Modbus - holding register als hex schreiben:
sieht bei mir so aus
und bei mir so
bitte keine 4k ultrawide Mikrofilme
-
sorry...
ist das besser?
Es geht um den ersten Slave (Slave 3)
-
@tri-tom sagte in Modbus - holding register als hex schreiben:
ist das besser?
ja!
ist denn der Typ passend?
(un)signed Integer 32 scheint mir nicht zu Hex zu passen -
ich habe im Augenblick auch "nur" den Slave 3 mit 16 (signed und unsigned) ausprobiert.
16 Bit sollte passen bei 2 Byte.. -
@tri-tom sagte in Modbus - holding register als hex schreiben:
16 Bit sollte passen bei 2 Byte..
als INTEGER?
-
@homoran
Gute Frage...also lieber "string 16 bit (little endian)"? -
@tri-tom sagte in Modbus - holding register als hex schreiben:
@homoran
Gute Frage...also lieber "string 16 bit (little endian)"?klingt besser!
big Endian wäre wahrscheinlich noch treffender.Irgendwo gab es hier im Forum mal einen Thread zum zusammensetzen von Bitfolgen.
Müsstest du mal suchen -
@homoran
ok, danke. Bin mir mit der Funktion toString(16) schon sicher.
Leider geht es trotzdem nicht..2025-01-12 16:59:28.097 error Cannot write multiple registers [421456]: "errorCode":144,"exceptionCode":1,"message":"ILLEGAL FUNCTION"}
MOD-EDIT: Code in code-tags gesetzt!
-
@tri-tom Da stimmt aber was nicht!
@tri-tom sagte in Modbus - holding register als hex schreiben:
421456
das ist doch nicht das Register!
@tri-tom sagte in Modbus - holding register als hex schreiben:
Cannot write multiple registers
kannst du sonst mehrere Register schreiben?
oder ist
@tri-tom sagte in Modbus - holding register als hex schreiben:
Funktion toString(16)
doch falsch?
da bin ich jetzt wahrscheinlich raus