Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ist ja erstmal egal, welches Gerät das ist. Wenn Simply Modbus wirklich 100%ig sicher immer die richtigen Werte liefert, dann hast du natürlich recht, dann kann es das Gerät nicht sein.
Bisher habe ich das immer so beobachtet.
Ab einem bestimmten Zeitpunkt vertauscht modbus_tcp plötzlich die Werte.
Frag ich im Anschluss per Simply Modbus ab, kommen die Werte richtig zurück…
Das Plugin hat den Fehler bemerkt und auch abgebrochen. Jedoch sind alle darauffolgenden Abfragen leider wieder falsch...
Ich hab dann wie angekündigt mal den RS485 to ETH Converter neu gestartet. Der erste Versuch scheitere dann bzw. es wurden wieder falsche Werte gelesen:
Meiner Meinung nach wirst Du so die Ursache nicht weiter eingrenzen können. Gerät und Dongle scheinen ja zu funktionieren, sonst würde Simply Modbus denselben Fehler liefern.
Die wahrscheinlichsten Kandidaten sind für mich das Plugin (z.B. dass sich nach einem fehlerhaften Lesezugriff die Ausleseschleife bzw. deren Index verändert - die Register werden ja nicht wirklich 'vertauscht', sondern dauerhaft 'verschoben' - das ID-Mapping ist also hinterher falsch) oder das vom Plugin benutzte pymodbus.
Ohne ein detaillierteres Logging (idealerweise durch zusätzliche Logeinträge der an pymodbus übergebenen Kommandos sowie der daraus resultierenden Empfangswerte PLUS ein separates Hex-Trace des Bus-Traffics zum Fehlerzeitpunkt) wirst Du hier vermutlich nicht weiterkommen.
Hast du die Möglichkeit, mit node-red oder einem ESP / Tasmota den RS485 to ETH Converter auszulesen? Vermutlich wird das keine Fehler aufzeigen und immer korrekte Werte liefern.
welche Baudrate verwendest du? 9600 oder?
Mal zur kurzen Info:
das Plugin läuft bei mir seit Januar 2022 (also nun 14 Monate) zwischen dem Smarthome NG und dem Fronius Wechselrichter GEN24 mit 2 Units (Wechselrichter und Zähler) in Kommunikation mit dem Modbus-TCP vom Wechselrichter absolut fehlerfrei.
Bis heute hat es keinerlei Datenprobleme gegeben - die sind nach wie vor konsistent.
Die Abfrage läuft im 15-Sekunden-Rhythmus mit 59 Variablen. Man kann sich also vorstellen, was da eine Datenmenge über die Zeit zusammengekommen ist.
Und alles Updates der Plugins sind seit dem installiert worden.
Alles ohne Fehler…
…was bedeutet; das Plugin läuft bei mir sauber ohne irgendwelche Vertauschungen von Werten o.ä.; aber bezieht sich nur auf eine Kommunikation mit dem WR. Eastron-Zähler hab ich keine, aber die Kommunikaion sollte ja genauso ablaufen.
Ich versuche, auf die einzelnen Fragen/Anmerkungen einzugehen:
Aktuell greift SmarthomeNG exklusiv auf den Converter zu. Abfragen über Simply Modbus werden nur bei Bedarf gemacht.
Ich bin gerade dabei, über Node-RED parallel eine dauerhafte Abfrage der Modbus Werte über den gleichen Converter aufzusetzen, um eine Referenz zu haben.
Auch werde ich das Logging für pymodbus aktivieren. Danke ivande für den Tipp.
Ich hab trotzdem das Gefühl, dass der Converter da irgendwie mit reinspielt...
Bis heute hat es keinerlei Datenprobleme gegeben - die sind nach wie vor konsistent.
Das allein ist ja kein Indiz dafür, dass das Plugin komplett fehlerfrei und -resistent ist. Selbst bei meinem deutlich älteren Samson-Modbus-Plugin (das in großen Teilen offensichtlich Vorlage für ivande's universelles Modbus-Plugin war), kommen bis heute immer mal wieder irgendwelche Meldungen mit Fehlern rein, die ich vorher gar nicht auf Sicht hatte - und da geht es um die Anbindung eines konkreten Gerätes.
hier sollten 2 Register gelesen werden, und es kommen viel zu viele Register an, ohne dass pymodbus einen Fehler signalisiert...
Ich halte es nach erneutem Nachdenken für gar nicht für so unwahrscheinlich, dass die Modbus-Implementierung im Endgerät fehlerhaft ist. pymodbus reicht ja im Grunde nur Anfragen und die zugehörigen Antworten durch. Dito das Dongle. Vermutlich ist dort keine Plausibilitätsprüfung hinsichtlich der Länge der Antwort implementiert. Und vermutlich ist Simply Modbus einfach 'resistenter' programmiert - z.B. 'frage 2 Register an - werte 2 Register aus'.
Ohne das jetzt in den Quellen weiter geprüft zu haben, kann eine einzelne fehlerhafte Antwort des Endgerätes bzw. die daraus resultierende Exception durchaus einen unerwarteten Abbruch von Abfrageschleifen im Plugin bzw. der darauf folgenden Auswertung zur Folge haben. Hatte ich im Samson-Plugin auch mal; daraufhin wurden dann ganze Registerbereiche auf bestimmten Trovis-Modellen nicht mehr ausgelesen. Abgefangen hab ich das dann am Ende mit einem kompletten try/except um die Abfrage der Register herum, so dass die Auswerteroutine dann gar nicht mehr aufgerufen wurde.
Aus diesem Grunde auch mein obiger Hinweis auf erweitertes Logging - manchmal geht es nicht ohne.
Kann man mit dem Plugin auch Geräte abfragen, die ausschließlich SunSpec verwenden?
Was meinst Du denn mit "ausschließlich"?
Ich lese mit dem Plugin sowohl meine Paradigma Heizung /Solarthermie als auch meinen Solaredge Wechselrichter aus.
Ob die genau nach SunSpec spezifiziert sind, weiß ich ehrlich gesagt gar nicht.
Wenn man die Register hat, klappt das alles hervorragend.
Ich wollte nur sicher gehen, dass man für SunSpec keine speziellen Anpassungen braucht, die das Modbus TCP Plugin nicht bereitstellt.
Offensichtlich ist das aber kein Problem.
Die SunSpec Spezifikation ist da wohl viel Rauch um nichts.
Ich bekomme demnächst einen Kaco Blueplanet NX3. Deren Anleitungen zum Thema Modbus TCP sind schwammig, unvollständig, nichtssagend und manchmal schlichtweg falsch. Ich hoffe, ich bekomme den mit dem Plugin abgefragt.
Ich bekomme demnächst einen Kaco Blueplanet NX3. Deren Anleitungen zum Thema Modbus TCP sind schwammig, unvollständig, nichtssagend und manchmal schlichtweg falsch. Ich hoffe, ich bekomme den mit dem Plugin abgefragt.
Ich habe da am Anfang immer erstmal mit dem Windows Tool "qModMaster" ein bisschen getestet ... stimmt die IP, der Port, in welchen Registern steht was drin ...
Danke.
Die SunSpec Spezifikation ist da wohl viel Rauch um nichts.
….
Ich hoffe, ich bekomme den mit dem Plugin abgefragt.
SunSpec ist nichts anderes als Modbus.
Es haben sich halt nur einige Hersteller zusammengeschlossen und die Kommunikation über Modbus durch die https://sunspec.org zu definieren.
Das wichtigste dabei: die arbeiten seltener mit Gleitkommazahlen, sondern häufig mit Integern in einem Register und Skalierungsfaktoren in einem weiteren Register. Daraus ergibt sich der eigentliche Wert. Berechnungsmethoden dazu finden sich hier weiter vorne.
Die Register selbst sind nicht in den Spezifikationen festgeschrieben. Diese stellt aber (zumindest in meinem Fall bei Fronius) der Hersteller kostenfrei zur Verfügung. Wegen der schieren Menge an Werten und den zugehörigen Faktoren ist das einfache „Ausprobieren“ mit Registern nicht zielführend.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar