Ankündigung

Einklappen
Keine Ankündigung bisher.

Modbus und Gira Homeserver

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

    #31
    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

    Kommentar


      #32
      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

      Kommentar


        #33
        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

        Kommentar


          #34
          Es ist nicht ganz so einfach, da ein Bit das Vorzeichen angibt. Hier meine Berechnung.


          Gruß Markus
          Angehängte Dateien

          Kommentar


            #35
            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

            Kommentar


              #36
              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!

              Kommentar

              Lädt...
              X