NEWS
[gelöst] Modbus Register lesen verhindern (Modbus Adapter)
-
@homoran ich hatte das so verstanden, dass er zwar /null/ zurückliefert, aber tatsäclich noch abfragt - @Manuel001, woher stammt dein 2. Screenshot?
jede Sekunde von meinem Script gesetzt wird, sondern dazwischen auch vom Modbus Adapter
ich denke nicht, dass deine Tabelle sagt, dass der Wert /null/ gesetzt wird...
-
@homoran
Wenn es den neuen Wert zurück melden würde, wäre es eh kein Problem.
Aber es meldet den alten Wert zurück:
(Ack false sind meine gesendeten Werte. Ack true sind die zurück gemeldeten Werte.) -
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):
(Ack false sind meine gesendeten Werte. Ack true sind die zurück gemeldeten Werte.)
so ist es auch richtig.
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):
Aber es meldet den alten Wert zurück:
49.315 -> 49.405 passt doch
wie schnell sendest du denn?
edit:
...und wie kurz ist dein Abfrageintervall?
Da scheinen sich die Werte zu überholen.
ein älterer Abfragewert erscheint bevor der neue bestätigt wird, dieser aber schon geschrieben wurde -
@homoran
Also 1 Sekunde.
Und ich sende auch 1x pro Sekunde. Das ist eigentlich eh schon relativ langsam um schwankende Verbraucher auszuregeln. -
@homoran sagte in Modbus Register lesen verhindern (Modbus Adapter):
49.315 -> 49.405 passt doch
49.315 schreibe ich -151W.
Das lese ich dann erst 50.569.
Dazwischen kommt noch ein alter Wert (-194W). -
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):
Das ist eigentlich eh schon relativ langsam um schwankende Verbraucher auszuregeln.
und anscheinend zu schnell für die Antwort des Geräts auf die Änderung zu reagieren
-
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):
@homoran sagte in Modbus Register lesen verhindern (Modbus Adapter):
49.315 -> 49.405 passt doch
49.315 schreibe ich -151W.
Das lese ich dann erst 50.569.
Dazwischen kommt noch ein alter Wert (-194W).Das ist doch was ich schrieb!
du änderst schon wieder, bevor der letzte Wert übernommen wurde. -
@homoran Das habe ich mir auch gerade gedacht, dass ich da an der falschen Stelle das Problem suche. Ich werde mal schauen, ob es irgendwelche Angaben diesbezüglich über den Multiplus 2 gibt.
Danke erstmal! -
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):
es irgendwelche Angaben diesbezüglich über den Multiplus 2 gibt.
muss nicht am Multiplus liegen.
Wenn zu jeder vollen Sekunde gepusht und gepollt wird, kann es nicht immer gut gehen im Sekundenabstand Änderungen zu senden.BTW
Ich hoffe der Multiplus (oder doch der Cerbo?) schreibt die Änderungen nicht jedesmal in den Flashspeicher.
Der hält nur ungefähr 100.000 Schreibvorgänge -
@homoran sagte in Modbus Register lesen verhindern (Modbus Adapter):
Ich hoffe der Multiplus (oder doch der Cerbo?) schreibt die Änderungen nicht jedesmal in den Flashspeicher.
Der hält nur ungefähr 100.000 SchreibvorgängeKann fast nicht sein, weil das ein beschriebener Betriebsmodus ist und ich jetzt bei ca. 2,5 Millionen Schreibvorgängen bin.
Cerbo GX -
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):
weil das ein beschriebener Betriebsmodus ist
schreiben im Sekundentakt?
Wo finde ich das? -
@homoran
In Mode 3 you have to create your own control loop, and update the set-point frequently.
These registers must be written once every 60 seconds, or the Multi will go into Passthru.Man muss es mindestens 1x pro Minute schreiben. Sonst ist die Doku relativ dünn.
Aber wenn man sich div. Foreneinträge ansieht, wo es darum geht, dass man die Regelung verbessern kann, wenn man Zähler verwendet, welche 250ms Intervall statt 1s haben, dann sollte klar sein, dass das im niedrigen Sekundenbereich liegen muss.
Hier ist das auch Thema: https://communityarchive.victronenergy.com/questions/246834/how-often-can-you-read-and-write-with-ess-mode-3.html
Ich werde mal ein paar Versuche machen. -
@manuel001 Danke!
wie träge ist denn deine Leitung
-
-
@manuel001 also richtig flott!
dann gibt es zwei Möglichkeiten.du müsstest dein Skript mit dem Datepunkt synchronisieren.
Wenn der neue Wert kommt müsstest du umgehend reagieren, damit der neue Wert gesetzt ist, bevor (der alte) nochmal gepollt wird.Das andere, das ich ganzvaus den Augen verloren hatte ist deine history.
ggf. kannst du dort an den Einstellungen spielen.
Hab gerade nicht alle Optionen im Kopf.
Da es auch negative Werte zu geben scheint, kann es also nicht gehen Werte <1 zu ignorieren. -
@homoran
Das mit der History ist kein Problem. Die habe ich nur aktiviert, damit ich das Verhalten hier zeigen kannVielleicht ein paar mehr Infos:
Trigger ist aktuell jeder neue Wert vom Smart Meter. (jede Sekunde)
Ich lese das oben genannte Modbus Register aus, berechne auf Basis von Smart Meter Wert, ob ich zum ESS power setpoint Wert etwas adieren oder subtrahieren muss und schreibe den neuen Wert dann wieder zurück.
Und da sieht man jetzt auch das eigentliche Problem das ich habe, wenn ich einen alten Wert zurück lese. Dann korrigiere ich nämlich falsch.
Prinzipiell funktioniert es eh ganz gut, aber es ist halt nicht ganz sauber.
Einerseits möchte ich natürlich so zeitnah wie möglich auf die Änderung vom Smart Meter reagieren, auf der anderen Seite wäre es sinnvoll, wenn ich mich auf den Datenpunkt synchronisiere.
Ich überlege gerade folgendes: Ev. sollte ich den ESS power setpoint Wert nicht auslesen, sondern als userdata objekt parallel betreiben. Und von diesem einlesen und auf das Modbus Register nur schreiben. Und ev. hin und wieder mal synchronisieren. -
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):
Trigger ist aktuell jeder neue Wert vom Smart Meter. (jede Sekunde)
und genau das ist das Problem.
Da driften die Zeiten dann auseinander.Bei einem Abfrageintervall von einer Sekunde kommt jedesmall noch die Pollzeit bis zum nächsten Poll hinzu.
Das Intervall ist die "Netto-Ruhezeit"Zeitweise passt es, zeitweise nicht.
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):
wenn ich einen alten Wert zurück lese.
mal ins unreine:
was ist wenn du den zuletzt gesetzten Wert zur Berechnung nimmst, der möglicherweise noch nicht zurückgeliefert wurde?Andererseits hat diese Änderung ggf. noch gar keine Auswirkung gehabt, wenn der Cerbo den Wert noch nicht bestätigt hatte.
-
@homoran sagte in Modbus Register lesen verhindern (Modbus Adapter):
was ist wenn du den zuletzt gesetzten Wert zur Berechnung nimmst, der möglicherweise noch nicht zurückgeliefert wurde?
Ja das habe ich eh damit jemeint, dass ich mir den Datenpunkt quasi dupliziere.
Also wenn ich den Wert sende, schreibe ich ihn auch in einen 2. Datenpunkt, den ich dann nach 1 Sekunde wieder auslese.
Das werde ich dann am Wochenende testen, wie sich das auswirkt. (bei den aktuellen Strompreisen möchte ich nicht riskieren, dass ich etwas verschlimmbessere)Danke erstmal!
-
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):
dass ich mir den Datenpunkt quasi dupliziere.
dafür eine Variable nehmen und in das Register schreiben und dann damit weiterrechnen.
[OT]
@manuel001 sagte in Modbus Register lesen verhindern (Modbus Adapter):bei den aktuellen Strompreisen
ist das in A so schlimm?
Ich zahle 25ct. das ist doch nicht viel.
da lass ich den Cerbo rechnen, dafür wird er bezahlt
[/OT] -
@homoran sagte in Modbus Register lesen verhindern (Modbus Adapter):
ist das in A so schlimm?
Gleich wie in Deutschland:
Aktuell 80ct.