NEWS
[gelöst]Wie Modbus Holding Register für Zeit verändern?
-
Ich habe über die Modbus Anbindung meines Growatt Wechselrichters u.a. ein Register, dass eine Startzeit beinhaltet. Diese Startzeit möchte ich gerne mit setState per Javascript verändern. Das klappt nur teilweise:
Das steht in der Anleitung:
The format for each byte in RTU mode is:
Coding System: 8–bit binary, hexadecimal 0–9, A–F
Two hexadecimal characters contained in each
8–bit field of the messageAusgelesen wird das selbe Holdingregister getrennt nach Stunde und Minute:
laut Anleitung ist es dieses Register (im Modbusadapter muss man 40001 dazuzählen, damit es gefunden wird)


ergibt dann diese Objekte:

setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_hour'/*41101 Bat First Start Time 1 Hour*/,10); setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_Minute'/*41101 Bat First Start Time 1 Minute*/,5);diese Javascriptbefehle ändern die beiden Objekte kurz auf die gewünschte Zeit (Zahl ist dann grün). Sobald allerdings die beiden Register aber vom Modbus Adapter neu ausgelesen werden, wird die Stundenzahl rot und dann auf 0 gesetzt. Die Minutenzahl wird akzeptiert und bleibt.
irgendwie greife ich wohl nicht sauber auf das gemeinsame Register für Minuten und Stunde zu. Fehlt da eine Bestätigung? Muss ich vielleicht die gesamte Zeit (Stunden und Minuten) mit einem setState übergeben?
Nur wie müsste der Befehl bitte richtig lauten?
Danke
-
Ich habe über die Modbus Anbindung meines Growatt Wechselrichters u.a. ein Register, dass eine Startzeit beinhaltet. Diese Startzeit möchte ich gerne mit setState per Javascript verändern. Das klappt nur teilweise:
Das steht in der Anleitung:
The format for each byte in RTU mode is:
Coding System: 8–bit binary, hexadecimal 0–9, A–F
Two hexadecimal characters contained in each
8–bit field of the messageAusgelesen wird das selbe Holdingregister getrennt nach Stunde und Minute:
laut Anleitung ist es dieses Register (im Modbusadapter muss man 40001 dazuzählen, damit es gefunden wird)


ergibt dann diese Objekte:

setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_hour'/*41101 Bat First Start Time 1 Hour*/,10); setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_Minute'/*41101 Bat First Start Time 1 Minute*/,5);diese Javascriptbefehle ändern die beiden Objekte kurz auf die gewünschte Zeit (Zahl ist dann grün). Sobald allerdings die beiden Register aber vom Modbus Adapter neu ausgelesen werden, wird die Stundenzahl rot und dann auf 0 gesetzt. Die Minutenzahl wird akzeptiert und bleibt.
irgendwie greife ich wohl nicht sauber auf das gemeinsame Register für Minuten und Stunde zu. Fehlt da eine Bestätigung? Muss ich vielleicht die gesamte Zeit (Stunden und Minuten) mit einem setState übergeben?
Nur wie müsste der Befehl bitte richtig lauten?
Danke
So das Problem ist gelöst. Man muss das Acknowledgment mitliefern. Das ist das zusätzliche "false" im Befehl.
Zusätzlich muss man in 16-bit schreiben und dabei folgende Zahl übergeben:
Stunde * 256 + Minute. Im Beispiel unten wird 10h 5min übergebensetState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_16bit'/*41101 Bat First Start Time 1 16bit*/,2565,false); -
So das Problem ist gelöst. Man muss das Acknowledgment mitliefern. Das ist das zusätzliche "false" im Befehl.
Zusätzlich muss man in 16-bit schreiben und dabei folgende Zahl übergeben:
Stunde * 256 + Minute. Im Beispiel unten wird 10h 5min übergebensetState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_16bit'/*41101 Bat First Start Time 1 16bit*/,2565,false);
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden