Ankündigung

Einklappen
Keine Ankündigung bisher.

Modbus und Gira Homeserver

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • sti87
    antwortet
    Zitat von Markus1988 Beitrag anzeigen
    Es ist nicht ganz so einfach, da ein Bit das Vorzeichen angibt. Hier meine Berechnung.
    Gruß Markus
    Herzlichen Dank Markus. Basierend auf Deinem Beispiel habe ich es hinbekommen, es funktioniert einwandfrei 🎉
    Hier ein Bier für Dich ;-) 🍻

    Schönen Abend noch!

    Einen Kommentar schreiben:


  • Markus1988
    antwortet
    Zitat von hari2 Beitrag anzeigen
    Das ist sehr wohl standardisiert:
    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.

    Gruß Markus

    Einen Kommentar schreiben:


  • Markus1988
    antwortet
    Es ist nicht ganz so einfach, da ein Bit das Vorzeichen angibt. Hier meine Berechnung.


    Gruß Markus
    Angehängte Dateien

    Einen Kommentar schreiben:


  • hari2
    antwortet
    Zitat von Markus1988 Beitrag anzeigen
    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

    Einen Kommentar schreiben:


  • sti87
    antwortet
    Hallo Markus,

    besten Dank für Deine Rückmeldung. Ich habe es nun mit Deiner Logik versucht.

    Abfrage in 2 Schritten:

    01 Abfrage.PNG

    Das Datenformat jeweils auf 1 Byte (0..255)

    02 Abfrage Datentyp.PNG

    Der Datentyp der zwei einzelnen iKOs:

    03 Datentyp iKOs.PNG

    Hier die Logik:

    04 Logik.PNG

    Der Datentyp des Ausgabewerts:

    05 Datentyp Ausgabe.PNG


    Der Wert des ersten Bytes (iKO) ist nun 255:

    06 Wert 01.PNG

    Der des Zweiten 232:

    07 Wert 02.PNG


    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?

    08 negativer Wert.PNG

    Besten Dank für Deine Unterstützung!

    VG
    Stefan

    Einen Kommentar schreiben:


  • Markus1988
    antwortet
    Hallo Stefan,

    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.

    Schau mal hier: https://knx-user-forum.de/forum/%C3%...s-tcp-auslesen

    Gruß Markus

    Einen Kommentar schreiben:


  • sti87
    antwortet
    EugenDo oder Markus1988 habt ihr mir vielleicht einen Tipp als Homeserver-Datenabfrage-Experten ;-)

    Einen Kommentar schreiben:


  • sti87
    antwortet
    Ich habe mich dem Thema nochmal angenommen.

    Die Temperatur wird mit den 2 Bytes an den Stellen 9 und 10 ausgegeben:

    [16:07:02] => Poll: 01 04 00 25 00 01
    [16:07:03] <= Response: 01 04 02 FF E7

    FFE7 entspricht Dezimal -25, bei einem Faktor von 10 sind das -2,5°C


    Dementsprechend habe ich die Abfrage im Homeserver wie folgt angepasst:

    Feste Anzahl an Zeichen auf 9 gesetzt und das Datenformat auf 2 Byte.

    Das iKO habe ich ebenso auf 16-Bit umgestellt:
    Bei einer Abfrage erscheint auch der richtige Wert (FFE7 = -25):

    HS Debug.png


    Dennoch hat das iKO den Wert: -6145:

    HS iKO Wert.PNG


    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? :-(
    Angehängte Dateien

    Einen Kommentar schreiben:


  • sti87
    antwortet
    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?

    Einen Kommentar schreiben:


  • fernsehjens
    antwortet
    Zitat von sti87 Beitrag anzeigen
    Darf ich fragen weshalb der Port <1024 sein muss?
    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!

    Einen Kommentar schreiben:


  • sti87
    antwortet
    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
    Hier die Einstellungen meiner Webseitenabfrage im HS:

    01 HS Abfrage Daten.png
    02 HS Abfrage Senden.PNG
    03 HS Abfrage Empfang.PNG

    Zitat von fernsehjens Beitrag anzeigen
    Wichtig: ab HS-Version 4.7 unbedingt Abfrage nach Anzahl der gesendeten Bytes beenden und TCP-Port auf über 1024 legen!
    Darf ich fragen weshalb der Port <1024 sein muss? Ich kann die Port-Nummer an der Wärmepumpe leider nicht verändern.

    Danke für Eure Hilfe!

    Cheers
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Hightech
    antwortet
    Hallo!

    Stehe hier gerade voll auf dem Schlauch :-(

    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?

    Danke Euch!

    Einen Kommentar schreiben:


  • Clipscouter
    antwortet
    Hallo Adam,

    hast du nun einen Baustein geschrieben der die Hex-Zahl sauber in Dezimal Auflöst?

    Ich hätte da auch das Problem bei der Abfrage eines SENEC Batteriespeichers.

    Einen Kommentar schreiben:


  • AdamTK
    antwortet
    Hallo Jem110.

    Zitat von Jem110 Beitrag anzeigen
    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.

    Bis dahin viele Grüße Stefan

    Einen Kommentar schreiben:


  • Jem110
    antwortet
    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.

    grüße und danke schon mal im voraus

    Einen Kommentar schreiben:

Lädt...
X