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.
OK, es scheint standardisiert zu sein. Aber meine Erfahrung zeigt etwas anderes. Ich habe beruflich mit Modbuskopplungen zu tun und es macht gefühlt jeder anders.
Die Reihenfolge der Bytes in einem Modbus Telegramm ist nicht standardisiert und kann somit zu solchen Problemen führen.
Das ist sehr wohl standardisiert:
Zitat von https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf
4.2 Data Encoding • MODBUS uses a ‘big-Endian’ representation for addresses and data items. This means that when a numerical quantity larger than a single byte is transmitted, the most significant byte is sent first
Nun ist das Ergebnis, nach Adam Riese: 65512 (255*256 + 232).
Das "stimmt" soweit, aber eben doch nicht. Es handelt sich um die Aussentemperatur und diese ist aktuell "negativ".
Wenn ich mir nun meinen HEX-Wert von FFE7 durch einen Konverter schmeisse, erhalte ich ebenso die 65512, aber eben auch den Wert -25, welcher das Zweierkomplement berücksichtigt.
Hast Du eine Idee wie ich das mit der Logik hinbekomme?
das Problem liegt daran, dass der Homeserver die Bytes in einer anderen Reihenfolge erwartet.
FF E7 = -25
E7 FF = -6145
Die Reihenfolge der Bytes in einem Modbus Telegramm ist nicht standardisiert und kann somit zu solchen Problemen führen. Du musst die Bytes einzeln auslesen und in ein KO schreiben. Dann enthält das eine KO den Wert FF und das andere E7. Nun musst du eine Logik bauen mit der Du den Wert richtig umrechnest.
Interessanterweise entspricht dies einem HEX-Wert von E7FF. Also baue ich die Antwort irgendwie verkehrt zusammen. Anstelle von FFE7 mache ich E7FF daraus.
Was mache ich falsch? :-(
Danke fernsehjens! Mit Deinen Hinweisen klappt es nun und ich habe es auch verstanden :-)
Bzgl. dem Vorzeichen muss ich wohl kältere Temperaturen abwarten, da es leider keine Dokumentation gibt.
Kann ich das 9te Byte (Vorzeichen) in der selben Abfrage abhandeln oder brauche ich eine 2. Abfrage?
Hatte ich mal irgendwo hier? im Forum gelesen, habe das dann zusammen mit einer anderen Einstellung geändert und nicht mehr auf 502 probiert.
Wichtig ist auf jeden Fall die Verbindung nach Anzahl der empfangenen Bytes zu beenden, in deinem Fall also nach 11 Bytes!(Reiter Daten)
Bei Empfang musst du feste Anzahl Zeichen auf 10 stellen und dann 1Byte(0..255). Dann solltest du zumindest von 0 bis 25,5°C(=FF) die Aussentemperatur bekommen.Wie du dann das vorletzte Byte und das Vorzeichen einbindest müsste irgendwo bei den Datenpunktdefinitionen beschrieben sein.
Viel Erfolg!
Besten Dank für die guten Ideen hier im Post! Hab mich nun auch mal an meine Wärmepumpe gemacht.
Ich erhalte die Daten zuverlässig über den Simply Modbus TCP Client dargestellt. Nun habe ich die Abfrage im HS versucht nachzubilden.
Leider erhalte ich in der Response (im Debug) nur kryptische Zeichen:
Hier der Debug und die Einstellungen vom funktionierenden Modbus TCP Client:
Der Wert ist die Aussentemperatur in °C mit einem Faktor 10, d.h. bei dem Result von 111 = 11,1°C
Kann vielleicht einer von Euch, der es schon laufen hat, mal genau - vielleicht anhand eines Registers wie der 100 (Total DC Power) - beschreiben, wie man die Werte für das Senden zusammenbaut? HAb hier in einigen Einträgen rein numerische lange Werte gesehen, in anderen Einträgen Hex-Werte.
Vielleicht auch noch einmal Screenshots der einzelnen Seite der Webabfrage?
Hallo Adam, könntest du mir eine grob detaillierte Anleitung...
Ich glaub das wird schwierig
Bei welchem Punkt hängst du denn gerade?
Viele Infos dazu findest du schon in diesem Beitrag und auch hier
Ich bin aber gerade drüber einen Baustein für Kostal Piko zu schreiben, der die komplette Kommunikation schon eingebaut hat.
Der WR Plenticore sollte nahezu eine identische Kommunikationsschnittstelle haben.
Diesen werde ich dann soweit er fertig ist gerne bereit stellen.
Hallo Adam, könntest du mir eine grob detaillierte Anleitung evtl. senden wie du vorgegangen bist? Ich möchte auch meinen Plenticore Plus 7.0 über Modbus in den Homeserver einbinden. Bevor ich mich zu Tode suche, dachte ich evtl. das du evtl. deine Vorgehensweise zukommen lässt. Gerne auch per PN.
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.
Einen Kommentar schreiben: