Ankündigung

Einklappen
Keine Ankündigung bisher.

Schaltverzögerung Weinzierl 730

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

    #76
    Bei mir läuft seit ewig die 12. Die funktioniert einfach...

    Kommentar


      #77
      Hallo,

      Smurf / Matthias:

      Das hier diskutierte Problem

      Zitat von Theseus Beitrag anzeigen

      Good case:
      Layer 2 [12:C.pace/B.ipt 30.488] in 2/2 0.030000/0.001000/0.750000: delay more, for 0.046 sec

      Bad case:
      Layer 2 [12:C.pace/B.ipt 558.147] in 99/4 0.030000/0.001000/0.750000: delay more, for 2.230 sec

      Ein Blick in den Code zeigt, dass das Problem die Variable nr_in ist, die durch empfangene Nachrichten (recv_L_Data (LDataPtr l)) immer weiter inkremtiert wird und erst von timer_cb zurückgesetzt wird, nachdem eine Nachricht gesendet wurde (wodurch sich die zweite zu sendende Nachricht um Sekunden verzögern kann).
      ist das Gleiche, wie dieses, oder?

      Gruß,
      Hendrik

      Kommentar


        #78
        Ich schaus mir gleich mal an.
        DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

        Kommentar


          #79
          Also. Das "Pace"-Modul macht Folgendes.
          • wenn ein Paket gesendet wird, dann geht der Status auf BUSY und der Timer startet. Der endet, wenn das Paket (voraussichtlich) auf den Bus gesendet wurde.
          • Vor Ablauf des Timers empfangene Pakete werden gezählt.
          • wenn der Timer abläuft, und zwischendrin Pakete gekommen sind, wird der Zähler wieder auf Null gesetzt und weiter gewartet.
          • Ansonsten (d.h. der Zähler ist immer noch Null) geht der Status auf IDLE und das nächste Paket wird abgerufen (das ist das "Filter::send_Next();" am Ende von "timer_cb").
          • Wenn der Timer nicht läuft, dann werden ankommende Pakete auch nicht gezählt und führen folglich auch nicht zu irgendeiner Verzögerung.
          • Dass das Problem nur bei einer einzigen Adresse auftritt, ist in dieser Form unmöglich. Wie soll das gehen? der Verzögerungscode greift nicht auf irgendwelche Adressen zu.
          So. Wenn das Problem trotzdem auftritt, dann muss man sich wohl mit dem Debugger an den knxd hängen und gucken was da passiert. Insbesondere haben die Zähler für ankommende Pakete in dieser Methode gefälligst Null zu sein, schließlich hat sie der letzte timer_cb-Aufruf gelöscht.
          Alternativ könnte man zumindest ein Log ins Netz stellen in dem das auftritt, nicht nur die Zeile die das Problem meldet. Insbesondere muss da auch die "out:"-Zeile drin vorkommen, mit der PaceFilter::send_Next() den Timer startet.

          NB: Bitte mit der aktuellen Version testen!
          DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

          Kommentar


            #80
            Hallo,

            vielen Dank. Ich werde es testen, sobald ich die v0.14 kompiliert kriege.

            Gruß,
            Hendrik

            Kommentar

            Lädt...
            X