Ankündigung

Einklappen
Keine Ankündigung bisher.

Gira X1 Bitmask - Poolsteuerung

Einklappen
Dieser Beitrag wurde beantwortet.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Gira X1 Bitmask - Poolsteuerung

    Guten Abend zusammen,

    ich lese bereits erfolgreich diverse Modbus Adressen meiner Sugar Valley Oxilife Steuerung per Modbus Baustein aus.
    Jedoch scheitere ich daran, wie man das mit einer Bitmask macht, also einer Modbus Adresse, die mehrere Infos enthält.
    Ich möchte folgende Adresse abrufen und auslesen und als Baustein dann die Daten an KNX senden:

    Mich interessiert der Wert von Bit 3
    Screenshot_20231203_211330_Xodo.jpg
    Wie geht das?
  • Als Antwort markiert von Paddo5819 am 06.12.2023, 06:22.

    Dann sezieren wir die Formel mal, beginnend mit dem Ausdruck, der in der Klammer steht:
    • {Registerwert:I} erzeugt einen Eingang für eine Ganzzahl und setzt den empfangenen Wert an dieser Stelle in die Formel ein
    • & ist der boolesche UND-Operator
    • 0x8 Ist die konstante Zahl 8 (man kann auch einfach 8 hin schreiben; 0x davor bedeutet, dass die Zahl im Hexadezimalsystem geschrieben ist), das entspricht dem Bit 3 (Bit 0 wäre 1, Bit 1 --> 2, Bit 2 --> 4, ... usw. mit Zweierpotenzen)
    Im Ergebnis des Klammerausdrucks sind alle die Bits eingeschaltet/wahr/gesetzt, die im Registerwert UND in der Konstante gesetzt sind. Das kann schonmal nur das Bit 3 sein, weil in 8 kein anderes gesetzt ist. Und auch dieses nur, wenn es im Registerwert ebenfalls gesetzt ist. Dann ist das Ergebnis des Klammerausdrucks 8, sonst 0.

    Am Schluss wird der Klammerausdruck noch auf Ungleichheit mit 0 geprüft, was als Ergebnis einen Wahrheitswert (BOOLean; wahr oder falsch) ergibt. Am Bausteinausgang wird wahr als 1 dargestellt, falsch als 0.
    Zuletzt geändert von hyman; 06.12.2023, 07:55.

    Kommentar


      #2
      Schau dir mal die Formelberechnung von Hymann an, ich denke, damit geht es.
      Viel Erfolg
      Florian

      Kommentar


        #3
        Dazu müsste mir erst Mal jemand erklären wie ich da an die Werte komme. Aktuell verstehe ich das nicht so ganz

        Kommentar


          #4
          Der Weg sollte über die Anwendung der bitweisen Operatoren führen (bisher nicht ausprobiert), laut der -sehr guten- Baustein Onlinehilfe sind diese C# Operatoren zulässig.
          siehe auch
          image.png​Sollte durch Lesen und Probieren inkl. der Simulation im GPA zumindest einen Versuch wert sein.
          Gruß Bernhard

          Kommentar


            #5
            Und das heißt ich erhalte beim Abfragen der Adresse eine Antwort auf allen 16 bits und muss dann die richtige rausfiltern oder wie?

            Kommentar


              #6
              Mit den o.a. Funktionen kannst Du den Wert bitweise zerlegen, bzw. bitweise logische Operationen ausführen.
              Gruß Bernhard

              Kommentar


                #7
                Gibt es hier ein Beispiel? Ich habe nicht den Hauch einer Idee wie ich anfangen könnte.

                Sonst kann ich auch Modbus Adressen auslesen, aber nicht mit Bitmask

                Kommentar


                  #8
                  Ich habe leider kein Beispiel. Aber durch Lesen und Probieren (geht ja im GPA schnell) sollte das lösbar sein.
                  Ggf. hilft hyman ja auch (allerdings nur, wenn Du die Onlinehilfe einmal durchgelesen hast)
                  Gruß Bernhard

                  Kommentar


                    #9
                    Um das Bit 3 aus einer gegebenen Ganzzahl zu isolieren und als Boolean auszugeben, brauchst Du folgende Formel:

                    ({Registerwert:I} & 0x8) != 0

                    Kommentar


                      #10
                      Okay, das funktioniert! Vielen vielen Dank Hyman. Super einfach gelöst.
                      Jetzt würde mich aber trotzdem noch interessieren, was da was bedeutet?
                      Ich möchte ja dazu lernen.

                      Kommentar


                        #11
                        Dann sezieren wir die Formel mal, beginnend mit dem Ausdruck, der in der Klammer steht:
                        • {Registerwert:I} erzeugt einen Eingang für eine Ganzzahl und setzt den empfangenen Wert an dieser Stelle in die Formel ein
                        • & ist der boolesche UND-Operator
                        • 0x8 Ist die konstante Zahl 8 (man kann auch einfach 8 hin schreiben; 0x davor bedeutet, dass die Zahl im Hexadezimalsystem geschrieben ist), das entspricht dem Bit 3 (Bit 0 wäre 1, Bit 1 --> 2, Bit 2 --> 4, ... usw. mit Zweierpotenzen)
                        Im Ergebnis des Klammerausdrucks sind alle die Bits eingeschaltet/wahr/gesetzt, die im Registerwert UND in der Konstante gesetzt sind. Das kann schonmal nur das Bit 3 sein, weil in 8 kein anderes gesetzt ist. Und auch dieses nur, wenn es im Registerwert ebenfalls gesetzt ist. Dann ist das Ergebnis des Klammerausdrucks 8, sonst 0.

                        Am Schluss wird der Klammerausdruck noch auf Ungleichheit mit 0 geprüft, was als Ergebnis einen Wahrheitswert (BOOLean; wahr oder falsch) ergibt. Am Bausteinausgang wird wahr als 1 dargestellt, falsch als 0.
                        Zuletzt geändert von hyman; 06.12.2023, 07:55.

                        Kommentar


                          #12
                          Super Erklärung. Wirklich vielen vielen Dank. So habe ich es verstanden und kann es nachvollziehen für andere Auswertungen.

                          Kommentar


                            #13
                            Hallo wir Haben die gleiche Steuerung Suggar Valles Steuerung beim Kunden vor Ort.
                            Hast du zum Auslesen per Modbus noch irgendwelche Bauteile benötigt oder ging das Direkt per Modbus TCP.
                            Grüße
                            Basti

                            Kommentar


                              #14
                              Man braucht einen RTP zu TCP Umsetzer der mittels Ethernet angeschlossen wird.

                              Kommentar


                                #15
                                Okay wir haben an der Steuerung die Wifi Schnitstelle kann man mit dieser die Werte Auslesen ?
                                über den Browser bekomme ich die zumindest angezeigt
                                Hast du mal ein Beispiel für mich wie du die Werte abfragst?
                                Grüße
                                Basti

                                Kommentar

                                Lädt...
                                X