Modbus TCP Abfrage dauert 22 Sek obwohl 5 Sek eingestellt

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • rahju
    Smart Home'r
    • 31.03.2017
    • 30

    #1

    Modbus TCP Abfrage dauert 22 Sek obwohl 5 Sek eingestellt

    Hallo,

    ich steuere einen Thyristorsteller (0-10V) an um mit einem Heizstab mein Warmwasser aufzuheizen (ich habe eine Einspeisebegrenzung). Dazu frage ich über Modbus TCP von meinem Goodwe Wechselrichter die Leistung vom Netz ab, da ja über Modbus TCP ein Abfragezyklus von 5 Sekunden möglich ist (schneller wäre besser, aber geht halt nicht). Ich habe jetzt einmal die Wertänderung gestoppt und diese dauert mind. 22 Sekunden wenn nicht länger. Das Zählerinterface IR ändert die Werte alle 10 Sekunden (das geht ja leider auch nicht schneller). Gibt es woanders auch noch einen Wert, den man einstellen kann, der eventuell verhindert dass die Modbus Werte nicht alle 5 Sekunden abgerufen werden, bzw. hat das Problem jemand anders auch?

    Danke vorab, Jürgen
  • Tico
    Lox Guru
    • 31.08.2016
    • 1035

    #2
    Wenn der Modbus mit Befehlen überlastet ist, habe ich ähnliche Symptome gesehen, bei denen Befehle länger brauchen, um zurückzukehren.
    Wie viele Sensoren haben Sie für das Modbus-Gerät? Wie hoch ist die Aktualisierungsrate für jeden Sensor? Welche Timeout-Periode ist für das Modbus-Gerät eingestellt? All diese Fragen geben Aufschluss darüber, was das Loxone Modbus-System leisten kann.

    Hier ist ein Link zu einem nicht verwandten Wiki. Dort finden Sie Informationen darüber, wie Sie das Modbus-System an die Grenzen des Miniserver "anpassen" können.

    Siehe Abschnitt 1.g. - Optimierung des Modbus Polling

    https://loxwiki.atlassian.net/wiki/s...gModbusPolling
    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

    Kommentar

    • rahju
      Smart Home'r
      • 31.03.2017
      • 30

      #3
      Perfekt, ich hab die Lösung. Mein Problem war, dass ich teilweise die Meldung bekommen habe, dass Sensoren keine Werte liefern. Deshalb habe ich das Timout auf 1000ms hoch gedreht (ich dachte, dass er so lange wartet, sollte er keine Antwort bekommen). Nachdem ich das Timout jetzt runter gedreht habe, funktioniert auch schon die Abfrage alle 5 Sekunden. :-)

      Kommentar

      • dosla.1706@gmail.com
        Azubi
        • 18.01.2023
        • 1

        #4
        Hallo zusammen,

        ich habe einen SDM630 installiert (allerdings via Modbus RS485 angebunden).
        Mein Problem ist, dass er nur alle 60 Sekunden eine Abfrage macht, obwohl ich bei manchen Parametern den Abfragezyklus z.B. auf 5 Sekunden gestellt habe.
        Wenn ich einen Testbefehl sende funktioniert dies auch sofort.

        Hier ein Beispiel aus dem Modbus-Log:
        16:19:34:007 -> Testbefehl gesendet
        ca. 0,7 Sekunden später die Antwort erhalten mit (hier 235V).
        um 16:19:58:209 erfolgte anschließend die automatische Abfrage/Werteübermittlung (dies wiederholt sich ca. alle 60 Sekunden) für alle Sensoren (Parameter).

        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 116
Größe: 207,4 KB
ID: 479810

        Hier die Konfiguration von einem Sensor - Abfragezyklus 5 Sekunden.

        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 93
Größe: 35,8 KB
ID: 479811Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 90
Größe: 29,5 KB
ID: 479812

        Ich bin mit meinem Know-How am Ende - habe auch bereits viele Forum-Einträge durchstöbert (z.B. "Validierung überwachen" deaktivieren), jedoch keine Antwort auf mein Problem gefunden.

        Am selben Bus hängt z.B. auch die Wohnraumlüftung - diese funktioniert ordnungsgemäß (Aktualisierung nach eingestelltem Intervall).
        Zudem habe ich bereits bei Eastron nachgefragt -> Rückmeldung war, dass abhängig von der Baudrate ca. 1000ms als Minimalwert eingestellt werden sollen.

        Hat jemand eine Idee? - Vielen Dank

        Beste Grüße
        Daniel​​

        Kommentar

        • Jan W.
          Lox Guru
          • 30.08.2015
          • 1546

          #5
          Entscheidend ist der Wert für 'Abfragezyklus'. So wie es aussieht, fragst Du relativ viele Werte ab. Vielleicht ist Dein Modbus überlastet? Mit welcher Geschwindigkeit arbeitet der?

          Validierung bringt Dir bei Deinem Problem nichts. Die sorgt nur dafür, dass empfangene Werte überprüft werden und bei fehlenden Werten der letzte empfangene Wert oder ein Standard gesetzt wird.

          Ich verwende den Zähler in der Modbus/TCP Variante, siehe hier. Eine sekündliche Abfrage ist bei der Geschwindigkeit von 57600 baud kein Problem, allerdings frage ich nur wenige Werte ab. Werte für 'Line Voltage L1-L3', Ampere und Leistung pro Phase, als auch Differenz von L1 zu L2 etc. sind vielleicht noch bei der Inbetriebnahme interessant, aber für die Verarbeitung brauchst Du die wahrscheinlich nicht. Ich würde daher alle Register, die Du nicht wirklich brauchst, löschen.

          Vielleicht gibt es bei Deinem Bus noch ein Problem. Normalerweise sollte der Monitor immer einen weiße (Abfrage) und eine gelbe Zeile (Antwort) abwechselnd anzeigen, ähnlich wie hier (Post #2, nachher). Wireshark hilft Dir bei einem seriellen Bus leider nicht weiter.
          Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
          Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
          Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
          Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
          Node-RED: IKEA Tradfri

          Kommentar

          • Labmaster
            Lox Guru
            • 20.01.2017
            • 2744

            #6
            Nur mal so zum besseren Einschätzen der Buslast bei Modbus RTU Verbindungen.

            Ein SDM630 kann bei eine max Baudrate (je nachdem auf was alle Geräte gemeinsam am Bus konfiguriert sind) 38400Baud. (siehe Anleitung zum SD630)
            38400 Baud, entsprechen (bei 8,N,1) 3840 Bytes pro Sekunde
            Bei einer Doppel-Abfrage wie 32Bit (so wie Loxone das leider nur unterstützt) benötigt die Kommunikation insgesamt 25 byte ( 12 Byte Abfrage und 13 Byte Antwort)
            hinzu kommt noch ca. mind. 1 Break von einer Bytelänge also 26Byte
            3840 / 26 = max ~147 werte pro Sekunde.
            Dann ist der Bus aber maximal zugestopft was in der Praxis aus unterschiedlichen Implementierungen der Clients und des Masters nicht gut funktioniert. Reel würde ich hier 50% (~73 Werte / Sekunde abziehen) was dann als ~73 Werte pro Sekunden für alle Abfragen pro Sekunde auf dem Bus entspricht.

            Läuft der Bus aber z.B. nur mit 9600Baud dann wäre es nur noch an die 19 Werte pro Sekunde. (9600/10/26*1,5)

            Auch sind manche Modbusgeräte "sauberer" implementiert als andere und kommen auch mit volleren Bus Trafic als andere klar.

            Fazit, bei Modbus RTU immer den Bus auf Max möglich Baudrate laufen lassen, hierbei ist halt leider das Gerät mit der jeweils niedrigsten höchsten Baurate das vorgebende Gerät. Hier kann es dann gegebenenfalls sinnvoll sein einen eigenen Modbus aufzumachen (Modbus Gateway oder Modbus RTU / TCP Umsetzer)

            Trotzdem sollte man immer mal wieder überschlägig rechnen wo man bei der Auslegung steht.
            Zuletzt geändert von Labmaster; 28.02.2026, 09:17.

            Kommentar

            Lädt...