Ankündigung

Einklappen
Keine Ankündigung bisher.

X1 / Modbus / Aqotec

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

    X1 X1 / Modbus / Aqotec

    Hallo zusammen,

    ich bin gerade dabei einige Werte meiner Heizungs / Übergabestation (AQOTEC RM 360 - Nahwärme) über Modbus TCPIP mit dem Gira X1 auszulesen und in der Gira Smart Home App darzustellen.

    Der Aufbau ist aktuell recht simpel:

    Telegrammgenerator → Modbus-TCP-Baustein → ggf. Skalierung → KNX-Gruppenadresse

    Der Modbus-Baustein wird zyklisch über einen Telegrammgenerator getriggert und liest das jeweilige Register aus. Grundsätzlich funktioniert das auch: Die Werte werden korrekt ausgelesen und in der App angezeigt.


    Allerdings habe ich folgendes Problem:



    Der X1 sendet laut KNX-Busmonitor zwischen den korrekten Werten immer wieder sporadisch den Wert 0,0 auf die jeweilige Gruppenadresse. Diese 0,0 wird dann natürlich auch in der App angezeigt.

    Das Problem betrifft nicht nur einen bestimmten Datenpunkt, sondern unterschiedliche Modbus-Werte, z. B.:

    Außentemperatur

    Warmwassertemperatur

    Gesamtverbrauch


    Im Busmonitor ist eindeutig zu sehen, dass sowohl die korrekten Werte als auch die 0,0-Telegramme von derselben physikalischen Adresse des X1 gesendet werden.


    Ich habe bereits verschiedene Triggerintervalle getestet. Zwischen 10s und 5m.

    Auch mit nur einer aktiven Modbus-Abfrage tritt das Problem weiterhin auf.

    In der GPA-Logiksimulation konnte ich bisher keinen 0-Wert am eigentlichen Modbus-/Rechenausgang feststellen. Die 0,0 sehe ich aber eindeutig als Telegramm des X1 im KNX-Busmonitor.

    Modbus-Server ist ein aqotec RM360, Kommunikation über Modbus TCP / IP.


    Hat jemand eine Idee, warum der X1 zwischen den gültigen Modbus-Werten immer wieder 0,0 auf den KNX-Bus schreibt?


    Gibt der Modbus-Logikbaustein eventuell bei einem Timeout bzw. einer fehlgeschlagenen Abfrage automatisch 0 aus? Oder gibt es beim zyklischen Triggern des Modbus-Bausteins etwas Besonderes zu beachten?



    Die Simulation läuft ohne Probleme. Sowohl hier als auch über einen Modbustester sind die Werte durchgehend in Ordnung und entsprechen dem tatsächlichen Istzustand.



    Da mir langsam die Ideen ausgehen, bin ich für jeden Hinweis dankbar.​

    LG,

    Christoph

    #2
    Ich bin mehr so der HS-Typ, da habe ich auch einen gut funktionierenden Modbus TCP Reader, also kann ich hier nur eingeschränkt helfen...

    Die Frage ist, wer ist für die fehlerhaften Werte verantwortlich, Dein Endgerät oder der Modbus-Baustein im X1?

    Also vielleicht mal schauen, was auf dem Modbus läuft:

    Wireshark – die naheliegendste Wahl. Es hat einen eingebauten Modbus/TCP-Dissector, der den Traffic auf Port 502 automatisch dekodiert (Funktionscodes, Register-Adressen, Werte etc.). Einfach mitschneiden und als Filter mbtcp oder tcp.port == 502 verwenden. Läuft auf einem PC im selben Netz (ggf. mit Portspiegelung/Mirror-Port am Switch, falls der Verkehr nicht direkt über deine NIC läuft).

    ModbusTools / Modbus Sniffer (simplymodbus.de) – ein kostenloses, spezialisiertes Tool, das genau für diesen Zweck gemacht ist: passiv Modbus-TCP-Verkehr mitlesen und in Klartext (Adresse, Funktion, Daten) anzeigen, ohne Wireshark-Kenntnisse zu brauchen.

    Für reines passives Mitschneiden würde ich mit Wireshark anfangen, weil es am verbreitetsten ist und die Pakete sauber aufschlüsselt. Falls du es lieber einfacher/spezialisierter willst, ist der simplymodbus-Sniffer eine gute Alternative.
    ​
    gemäss forenregeln soll man bitte und danke sagen! also: bitte und danke!

    Kommentar


      #3
      Hallo Christoph,

      Kommen die korrekten Werte mit dem erwarteten Abfrageintervall? Wenn ja, dann ist es eher kein Modbus-Problem. Dann tippe ich eher, dass der X1 die Nullen sendet, ohne dass er die vom Modbus bekommen hat. Zeig mal Dein Logikblatt. Und stelle sicher, dass kein anderes Logikblatt auf die entsprechenden Ausgänge sendet.

      Grüße von Horst

      Kommentar


        #4
        Hallo Horst,


        Sowohl die tatsächlichen Werte als auch die 0en kommen im richtigen Intervall.

        Einmal oder mehrfach passts - Einmal oder mehrfach kommt eine 0.

        Aktuell betrifft das auch nur dieses eine Logikblatt. Der Rest des Hauses wird zu 99 % über in MDT parametrierte Szenen in Verbindung mit Präsenzmeldern gesteuert.

        Den X1 nutze ich eigentlich nur für Dinge, die ich über die ETS in Kombination mit den meiner Meinung nach sehr umfangreichen MDT-Aktoren und Szenen nicht sinnvoll abbilden kann - also z. B. für die Visualisierung der vorhandenen Funktionen, Sprachsteuerung, diverse Logiken und Modbus.

        LG,

        Christoph
        ​

        Kommentar


          #5
          Hallo,

          anbei sende ich das Logikblatt.

          Ich habe den Ausgang nun mit einem variablen Datenpunkt verknüpft. Das Problem besteht jedoch weiterhin: In der Außentemperaturanzeige der Gira App erscheint sporadisch immer wieder der Wert 0.

          Aktuell kann ich mir noch nicht erklären, woher der X1 diesen Wert bezieht bzw. wodurch dieser ausgelöst wird. Denkbar wäre beispielsweise ein Timeout oder ein sporadisches Kommunikationsproblem.

          Allerdings lässt sich ein solches Verhalten weder in der Simulation noch bei der Nachverfolgung der Modbus-Kommunikation feststellen.

          Sollte jemand einen Ansatzpunkt haben, wodurch dieser sporadische 0-Wert am X1 verursacht werden könnte, wäre ich für jeden Hinweis sehr dankbar.


          Vielen Dank und viele Grüße,

          Christoph
          ​
          ​
          You do not have permission to view this gallery.
          This gallery has 1 photos.

          Kommentar


            #6
            Hallo,

            ich würde empfehlen, den Modbus Baustein gegen den "offiziellen" zu tauschen. Ich lese Wärmepumpe, Wechselrichter und Wallbox mit Selbigem im 10-Sekundentakt aus und habe keinerlei Probleme.

            Sollte das Problem weiterhin auftauchen kommt die "0" m.E. von deinem Gerät und nicht vom X1.

            Wie oft wird das Lesen getriggert?

            Viele Grüße

            Kommentar


              #7
              Hallo maximilianeum,

              auch die offizielle Lösung habe ich schon versucht, ohne Ergebnis. Ich habe alles zwischen 10 Sekunden und 5 Minuten ausprobiert.

              Kommentar


                #8
                Hallo,

                spricht umso mehr dafür, dass es am Modbus Server liegt und nicht am X1.

                In der Webansicht des X1 kannst du die Ausgänge der Logiken beobachten. Dort müsstest du die "0" schon am Ausgang des Bausteins sehen, wenn sie vom Gerät kommt.

                Viele Grüße

                Kommentar


                  #9
                  Hallo Maximilianeum,

                  du hast recht.

                  In der Logikübersicht sehe ich das schon am Eingang und folglich dann auch am Ausgang des Modbusbausteines sporadisch (sehr oft) eine 0 anstatt des aktuellen Wertes ankommt.

                  Hier wird es vmtl. dann auch keine Lösung geben. Da werde ich mich den den Herrsteller der Übergabestation wenden müssen.

                  LG,

                  Christoph

                  Kommentar


                    #10
                    Hallo,

                    ich würde nicht damit rechnen, dass der Hersteller zeitnah einen Fix liefert. Daher kannst du die fehlerhaften Wert einfach abfangen.

                    Wenn die erste Null kommt setzt du ein Flag und ignorierst den Wert.
                    Wenn direkt danach eine Null kommt übernimmst du sie.
                    Falls Null kein gültiger Wert ist kannst du sie direkt verwerfen.

                    Viele Grüße

                    Kommentar


                      #11
                      Vielen Dank,

                      darf ich fragen wie ich das konkret umsetze?

                      LG

                      Kommentar


                        #12
                        Hallo,

                        Eingang Wert eines Wertgenerator an den Ausgang des Modbus Bausteins.
                        Vergleicher ebenfalls an den Ausgang des Modbus Bausteins.
                        Ausgang des Vergleichers an den Trigger des obigen Wertgenerators.

                        Wenn der Vergleicher eine 1 liefert (Wert ist größer Null), dann triggert er den Wertgenerator und der eigentliche Wert wird weitergegeben. Bei einer Null gibt es keinen Trigger und somit keine Weitergabe.

                        Die Ausgabe einer Null bei Empfang einer zweiten Null musst du vermutlich über einen Zähler lösen. Hab aktuell keinen GPA zu Verfügung und kann daher nicht testen. Evtl. geht es auch einfacher mit dem Formelbaustein.

                        Alternativ könntest du auch eine Prüfung mehrerer Werte gleichzeitig durchführen. Erst wenn z.B. drei unterschiedliche Werte gleichzeitig Null sind gibt er wirklich Null aus. Kommt auf die Art des Fehlers an, ob das Interface im Fehlerfall auf allen Registern eine Null zurückgibt.

                        Viele Grüße

                        ​
                        Zuletzt geändert von maximilianeum; Gestern, 10:49.

                        Kommentar


                          #13
                          Wie verhält es sich hier mit Minuswerten. Also wenn Außentemperatur unter 0 Grad?

                          Vielen Dank und LG

                          Kommentar


                            #14
                            Hallo,

                            Vergleicher prüft auf gleich Null. Danach ein Inverter. Damit sind alle Werte ungleich Null gültig.

                            Viele Grüße

                            Kommentar

                            Lädt...
                            X