NEWS
Modbus Adapter ineffizient? Abfrage parallel möglich?
-
Ich nutze den Modbus Adapter um Daten von meinem Fronius Wechselrichter abzufragen. Alles läuft wie erwartet. Ich habe jedoch festgestellt, das die einzelnen Abfragen der Register-Einträge sequentiell erfolgt, also eine nach der anderen. Die nächste Abfrage wird erst gesendet, nachdem die Antwort der vorigen Abfrage vorliegt. Das führt bei mir schon zu einer Verzögerung von 3 Sekunden zwischen der ersten und der letzten Abfrage. Was zu einer Verfälschung der Daten führt.
Ist es möglich, alle Registerabfragen auf einmal abzusenden? Ich bin mir nicht sicher, ob es das Modbus/TCP Protokoll erlaubt auch mehrere Anfragen in einem Paket zu senden, aber ich denke das geht nicht.
Scheinbar ist es sogar besser, alle Register im Modbus-Adapter zu konfigurieren, da er zusammenhängende Register als eine Anfrage absenden kann.
Ich hatte mich eigentlich für Modbus entschieden, da es weniger Ressourcen benötigt als der Adapter für die Fronius API. Der Fronius-Adapter sendet jedoch alle Anfragen zeitgleich.
Wahrscheinlich ist die einzige Möglichkeit dies zu umgehen, alle Registereinträge im Adapter zu konfigurieren. Dann kann die Abfrage als ein Paket versendet werden....Bei meinen KACOS passiert das quasi in echtzeit (gefühlt ist keine verzögerung da)...
Ich frage über Modbus aber auch nur 3 werte ab (Aktuelle Erzeugung, Gesamtertrag und Temp)...
falls du nur gewisse sachen benötigst und überhaupt die abfragemenge reduzieren kannst...
-
@wendy2702
Wenn es bewölkt ist, geht die PV-Erzeugung schonmal innerhalb einer Sekunde um +/- 2000 Watt hoch und runter. Wenn dann der Wert der Erzeugung nicht synchron mit dem Wert für den Verbrauch ist zerhaut es dir komplett die Diagramme und die Berechnung der Einspeisung etc.
Hätte selbst nicht gedacht, das so ein System so "schnell" ist, ist aber so. -
@wendy2702
Wenn es bewölkt ist, geht die PV-Erzeugung schonmal innerhalb einer Sekunde um +/- 2000 Watt hoch und runter. Wenn dann der Wert der Erzeugung nicht synchron mit dem Wert für den Verbrauch ist zerhaut es dir komplett die Diagramme und die Berechnung der Einspeisung etc.
Hätte selbst nicht gedacht, das so ein System so "schnell" ist, ist aber so.Genau das ist das Problem. Es geht vor allem um die Berechnungen wie z.B. Eigenverbrauch usw. Da ist der Fehler über den Tag summiert schon durchaus relevant. Durch die sequenzielle Abarbeitung sind die Daten vom Smartmeter (hat eine höhere ID als der Inverter) 3 Sekunden älter.
-
Ich hab das jetzt erst einmal so gelöst, indem ich die Lücken in den Abfragen einfach mit "leeren" Abfragen auffülle. Dafür habe ich dann jeweils eine Abfrage vom Typ String mit der Länge der jeweiligen Lücke dazwischen gesetzt. Im PCAP Trace sehe ich nun, dass die Anfragen in einem IP-Paket versendet werden. Dadurch konnte ich die Zeitdifferenz auf 250ms reduzieren. Die Zeitdifferenz kommt zustande, da der Inverter und das Smartmeter eine andere Modbus-Adresse haben, daher müssen zwei Pakete gesendet werden.
Ich nehme aber an, dass es bestimmt noch eine elegantere Lösung gibt.
Ich habe mir da momentan scheinbar auch noch einen kleinen Fehler eingebaut, da ich folgende Warnung im Log sehe:Poll error count: 1 code: {"errorCode":131,"exceptionCode":3,"message":"ILLEGAL DATA VALUE"} -
@wendy2702
Wenn es bewölkt ist, geht die PV-Erzeugung schonmal innerhalb einer Sekunde um +/- 2000 Watt hoch und runter. Wenn dann der Wert der Erzeugung nicht synchron mit dem Wert für den Verbrauch ist zerhaut es dir komplett die Diagramme und die Berechnung der Einspeisung etc.
Hätte selbst nicht gedacht, das so ein System so "schnell" ist, ist aber so.@badsnoopy667 sagte in Modbus Adapter ineffizient? Abfrage parallel möglich?:
Berechnung der Einspeisung
Könnte man, wenn man den Tageswert haben will,pro Tag genau mit den Zählerständen des Smartmeter Adapters für Einspeisung berechnen --> Differenz aus z.B. Wert um 23:59Uhr am 10.03. und 0:00Uhr Nachts am 10.03., also übergang vom 09.03.-10.03.. Weil auch nur das der Wert ist den das EVU, die Steuer und was weiß ich noch wen alles intererssiert. Will man den aktuellen Wert haben liefert der Smartmeter diesen besser als jeder WR.
@cyberthom sagte in Modbus Adapter ineffizient? Abfrage parallel möglich?:
Eigenverbrauch
Ist der Wert Erzeugung PV Anlage plus Bezug Netzbetreiber. Selbst wenn Modbus schneller liefert, in welchem Intervall bekommt ihr die Daten vom Zähler?
Ist also eigentlich aus meiner Sicht kein Problem des Adapters und der Poll bzw. Antwortzeiten sondern lediglich für eure Kurven ein Thema. Ihr werdet mit Sicherheit kein Gerät im Sekundentakt schalten oder Steuern bloß wenn gerade mal eine Wolke durchzieht, oder doch?
Ich kenne jetzt den Fronius Adapter nicht da ich nur SMA WRs habe, kann mir aber kaum vorstellen das er die Werte im Sekundentakt oder noch schneller liefert.
Aber das sind bloß meine Gedanken dazu und das der Adapter deshalb ineffizient sei lese ich hier zum ersten mal. Kann mich auch nicht erinnern jemals etwas negatives wegen der Zeiten gelesen zu haben.
Meine Kurven und Tabellen in Grafana sehen auf den Tag oder längere Zeiträume betrachtet Schlüssig aus.
-
@badsnoopy667 sagte in Modbus Adapter ineffizient? Abfrage parallel möglich?:
Berechnung der Einspeisung
Könnte man, wenn man den Tageswert haben will,pro Tag genau mit den Zählerständen des Smartmeter Adapters für Einspeisung berechnen --> Differenz aus z.B. Wert um 23:59Uhr am 10.03. und 0:00Uhr Nachts am 10.03., also übergang vom 09.03.-10.03.. Weil auch nur das der Wert ist den das EVU, die Steuer und was weiß ich noch wen alles intererssiert. Will man den aktuellen Wert haben liefert der Smartmeter diesen besser als jeder WR.
@cyberthom sagte in Modbus Adapter ineffizient? Abfrage parallel möglich?:
Eigenverbrauch
Ist der Wert Erzeugung PV Anlage plus Bezug Netzbetreiber. Selbst wenn Modbus schneller liefert, in welchem Intervall bekommt ihr die Daten vom Zähler?
Ist also eigentlich aus meiner Sicht kein Problem des Adapters und der Poll bzw. Antwortzeiten sondern lediglich für eure Kurven ein Thema. Ihr werdet mit Sicherheit kein Gerät im Sekundentakt schalten oder Steuern bloß wenn gerade mal eine Wolke durchzieht, oder doch?
Ich kenne jetzt den Fronius Adapter nicht da ich nur SMA WRs habe, kann mir aber kaum vorstellen das er die Werte im Sekundentakt oder noch schneller liefert.
Aber das sind bloß meine Gedanken dazu und das der Adapter deshalb ineffizient sei lese ich hier zum ersten mal. Kann mich auch nicht erinnern jemals etwas negatives wegen der Zeiten gelesen zu haben.
Meine Kurven und Tabellen in Grafana sehen auf den Tag oder längere Zeiträume betrachtet Schlüssig aus.
@wendy2702 Guten Morgen!
Ich glaube gar nicht, das der Modbus Adapter irgendwie ineffizient wäre. Meine Anwort dazu wäre: Nein, der Adapter ist gut, aber das Protokoll an sich ist vielleicht nicht das Beste, wenn man hochfrequent Daten abrufen möchte. Denn auch über node-red ist ja der Verzug da!
Das mit dem Smartmeter Adapter gucke ich mir mal an! Ich hatte es jetzt mit dem sourceanalytix Adapter versucht, aber ich versteh noch nicht, wie ich den korrekt einstellen muss. -
@badsnoopy667 Source Analytixs benötig auch Daten von Smartmeter oder ähnlichem und übernimmt nur das „Rechnen“.
-
@wendy2702 Guten Morgen!
Ich glaube gar nicht, das der Modbus Adapter irgendwie ineffizient wäre. Meine Anwort dazu wäre: Nein, der Adapter ist gut, aber das Protokoll an sich ist vielleicht nicht das Beste, wenn man hochfrequent Daten abrufen möchte. Denn auch über node-red ist ja der Verzug da!
Das mit dem Smartmeter Adapter gucke ich mir mal an! Ich hatte es jetzt mit dem sourceanalytix Adapter versucht, aber ich versteh noch nicht, wie ich den korrekt einstellen muss.@badsnoopy667 Sorry für die späte Rückmeldung, war eine Weile nicht online da Kind bekommen :-)
Ich möchte aber noch einmal kurz erklären, warum ich nach wie vor der Meinung bin, dass der Modbus Adapter sogar u.U. extrem ineffizient ist. Das Modbus Protokoll ist sogar extrem effizient. Im Vergleich zu REST API basierten Protokollen (wie z.B. Fronius Solar API), muss der Wechselrichter nicht jedes Mal die Nachricht (z.B. als JSON) zusammen bauen. Zudem ist die Datenmenge über REST und co um ein vielfaches höher als bei Modbus. Das geniale an Modbus ist ja, dass einfach nur die Registerwerte übertragen werden. Das ist sowohl für den Wechselrichter wesentlich Ressourcen-schonender als auch von den übertragenen Datenmenge nur ein Bruchteil (geringeres Sequenzialisierungs-Delay).
Der Modbus Adapter nutzt diese Stärken leider nicht ganz aus. Falls die konfigurierten Registerwerte nicht zusammenhängend sind, sendet der Adapter für jedes einzelne Register eine separate Anfrage.
Was der Adapter jedoch richtig gut macht z.B. im Vergleich zum Fronius Adapter: Es wird eine einzige TCP-Session verwendet und nicht nach jeder Anfrage eine neue TCP-Session aufgebaut (TCP-Handshake).
Ein Vorschlag zur Optimierung: Der Adapter könnte die Zwischenräume zwischen den abzufragenden Registern intelligent auffüllen und bei den Antworten dann wieder "ignorieren". Der wichtige Parameter zur maximalen Anforderungslänge ist ja schon vorhanden. -
@badsnoopy667 Sorry für die späte Rückmeldung, war eine Weile nicht online da Kind bekommen :-)
Ich möchte aber noch einmal kurz erklären, warum ich nach wie vor der Meinung bin, dass der Modbus Adapter sogar u.U. extrem ineffizient ist. Das Modbus Protokoll ist sogar extrem effizient. Im Vergleich zu REST API basierten Protokollen (wie z.B. Fronius Solar API), muss der Wechselrichter nicht jedes Mal die Nachricht (z.B. als JSON) zusammen bauen. Zudem ist die Datenmenge über REST und co um ein vielfaches höher als bei Modbus. Das geniale an Modbus ist ja, dass einfach nur die Registerwerte übertragen werden. Das ist sowohl für den Wechselrichter wesentlich Ressourcen-schonender als auch von den übertragenen Datenmenge nur ein Bruchteil (geringeres Sequenzialisierungs-Delay).
Der Modbus Adapter nutzt diese Stärken leider nicht ganz aus. Falls die konfigurierten Registerwerte nicht zusammenhängend sind, sendet der Adapter für jedes einzelne Register eine separate Anfrage.
Was der Adapter jedoch richtig gut macht z.B. im Vergleich zum Fronius Adapter: Es wird eine einzige TCP-Session verwendet und nicht nach jeder Anfrage eine neue TCP-Session aufgebaut (TCP-Handshake).
Ein Vorschlag zur Optimierung: Der Adapter könnte die Zwischenräume zwischen den abzufragenden Registern intelligent auffüllen und bei den Antworten dann wieder "ignorieren". Der wichtige Parameter zur maximalen Anforderungslänge ist ja schon vorhanden.@cyberthom
Vielleicht ein blöde Idee, aber könnte man nicht all die Werte (Register), die Du über Modbus-Adapter sequentiell ausliest unter mehreren Instanzen des Modbus-Adapters aufteilen und so quasi "parallel" diese abfragen?Ah ja,... herzlichen Glückwunsch und viel Spaß mit dem Nachwuchs :)
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

