NEWS
[gelöst] ModbusTCP "Register-Scanner" umsetzbar?
-
Hallo zusammen!
Ich hätt da mal gern ein Problem... mit den Modbus-Registern meines Solarfocus-Heizkessels.
Der ModbusTCP-Adapter im ioBroker fragt bereits fleißig viele Input-Register meines Kessels ab, einige davon waren in der mir vorliegenden Dokumentation vom Hersteller sogar (fast) richtig beschrieben.
Einen guten Teil der Registerbelegung habe ich aber nur durch "ausprobieren" und Vergleich mit den am Kessel angezeigten Temperaturen zuordnen können da die dokumentierte Registerbelegung teilweise stark abweicht von der Belegung die ich vorfinde.
Und dann gibt es eine ganze Reihe interessanter Messdaten die ich noch nicht (mit dem qModMaster) in den Registern habe finden können.
Noch spannender ist die Belegung der Holding-Register, zwischen belegten Registergruppen gibt es immer wieder "Lücken", also nicht belegte Register die beim Versuch sie zu lesen natürlich einen Fehler zurückgeben. Das heißt im Grunde müsste ich alle Register, los gehts bei 500 bis 2600 mit den Input-Registern, und dann irgendo bei den 30000 bis 35000ern sind die Holding-Register angesiedelt, einzeln mit dem qModMaster abfragen und schauen ob ich den ggf. gefundenen Wert sinnvoll zuordnen kann... ala "sieh an! ich hab die Heizkreis-2-Mischerstellung in Prozent gefunden!"
Abfragen von mehreren Registern gleichzeitig birgt wie man sieht ja leider das Risiko belegte Register nicht zu identifizieren denn ein einziges unbelegtes Register irgendwo in der Gruppe lässt die komplette Sammelabfrage mit Fehler scheitern.Und da setzt meine Frage an:
Gibt es irgendeine Möglichkeit, wegen mir per Script oder dergleichen, automatisiert einzeln jedes der Register abzufragen und gefundene Werte zur Analyse irgendwo wegzuschreiben? Wenn ich das "zu Fuß" mache sitze ich bis Weihnachten dran.
Der ModbusTCP-Adapter hat im Grunde ja alles an Bord was ich brauche... ich bräuchte nur vielleicht einen Hinweis wo ich ansetzen kann um mir so einen automatisierten "Scanner" zu stricken.LG Martin
-
Habe ein sehr brauchbares Programm gefunden, als 30 Tage Demo-Version kostenlos und es bietet die Möglichkeit ganze Registerbereiche zu scannen, nicht als Bündelabfrage, sondern Einzelabfragen. Genau was ich gesucht hatte. Für den Fall dass noch jemand ggf. undokumentierte Registerbelegungen in seinem Gerät sucht:
-
@daedalus sagte in [gelöst] ModbusTCP "Register-Scanner" umsetzbar?:
einige davon waren in der mir vorliegenden Dokumentation vom Hersteller sogar (fast) richtig beschrieben.
Einen guten Teil der Registerbelegung habe ich aber nur durch "ausprobieren" und Vergleich mit den am Kessel angezeigten Temperaturen zuordnen können da die dokumentierte Registerbelegung teilweise stark abweicht von der Belegung die ich vorfinde.du bist sicher, dass du die richtige Registerliste hast?
Oft unterscheiden sich die Register je nach Konfiguration der Schnittstelle oder natürlich von Modell zu Modell, oder auch von Baujahr zu Baujahr. -
Ich bin meinem Problem mit Hilfe der oben verlinkten Demo-Version auf die Schliche gekommen. Die Registerliste vom Hersteller ist korrekt und passt (jetzt) auch zur Registerbelegung die ich abfrage. Es sind nur nicht alle belegten Register dokumentiert, Solarfocus denkt sich vermutlich dass nicht alle auslesbaren Daten für Kunden von Interesse sind und erwähnen sie nicht in der Dokumentation...
Mein Problem war dass sich scheinbar, abhängig davon welche Register ich abfrage, sich deren Inhalt zu verändern schien bzw. der gesuchte Inhalt plötzlich im Register davor oder danach zu sein schien, als hätte sich ein offset der Registernummern eingeschlichen.
Die Lösung war in den Einstellungen vom Modbus-Adapter unter 'Allgemein' die 'Max. Leseanforderungslänge (Float und Booleans)' beide auf 1 zu stellen. Damit werden die Register nicht mehr als "Sammelbestellung" abgefragt (was zu dem merkwürdigen Verhalten geführt hat) sondern die Register werden fein säuberlich eins nach dem anderen abgefragt.
Muss man auch erstmal drauf kommen... naja, nu funktionierts ja wenigstens so wie ich mir das gedacht hab. -
@daedalus sagte in [gelöst] ModbusTCP "Register-Scanner" umsetzbar?:
Es sind nur nicht alle belegten Register dokumentiert,
ist auch üblich.
@daedalus sagte in [gelöst] ModbusTCP "Register-Scanner" umsetzbar?:
Die Registerliste vom Hersteller ist korrekt und passt (jetzt) auch zur Registerbelegung die ich abfrage.
so muss es auch sein. Es kommt oft nur auf den Offset an, der irgendwo in e7ner Fussnote o.ä. versteckt ist. der kann 1, 0, oder sogar -1 sein.
@daedalus sagte in [gelöst] ModbusTCP "Register-Scanner" umsetzbar?:
die Register werden fein säuberlich eins nach dem anderen abgefragt.
würde ich sowieso immer machen