Skip to content

Count-Down Zeitgeber: KO "Start mit Zeit" (Einheit Minuten) übernimmt Werte > 4 min falsch (8-Bit-Überlauf) #29

Description

@philthepunk85

Zusammenfassung

Beim Count-Down Zeitgeber wird eine über das KO „Start mit Zeit" (konfiguriert als Einheit Minuten, DPT 5.010) empfangene Laufzeit für Werte größer als 4 Minuten falsch übernommen. Die tatsächliche Laufzeit folgt reproduzierbar der Beziehung:

Laufzeit [s] = (empfangener Wert × 60) mod 256

Die Umrechnung Minuten → Sekunden erfolgt also korrekt, das Ergebnis wird aber offenbar in einem 8-Bit-Feld abgelegt und läuft ab 256 s über. Werte bis einschließlich 4 (240 s) funktionieren einwandfrei, weshalb der Fehler leicht zu übersehen ist.

Die statisch parametrierte Ablaufzeit ist nicht betroffen — sie läuft auch mit Werten deutlich über 255 s korrekt (Gegenprobe unten). Der Fehler ist damit auf die Wertübernahme über das KO isoliert.

Das Beispiel aus der Modulbeschreibung („Zahlenwert 5 → 5 Minuten") ist selbst betroffen: Wert 5 ergibt 300 mod 256 = 44 Sekunden.

Erwartetes Verhalten

Ein über „Start mit Zeit" empfangener Wert n startet den Zeitgeber mit n Minuten Laufzeit.

Tatsächliches Verhalten

Primärmessungen (Zeit zwischen zwei „Ende"-Impulsen eines selbst-retriggernden Zeitgebers; Auflösung ±20 ms):

Wert erwartet (Wert×60) mod 256 gemessen
1 60 s 60 60,0 s ✅
2 120 s 120 120,0 s ✅
4 240 s 240 240,0 s ✅
15 900 s 132 132,01 s
29 1740 s 204 204,01 s
60 3600 s 16 16,016 s

Die Werte 15, 29 und 60 wurden über mehrere Stunden bzw. Zyklen gemessen, das Intervall war jeweils auf ±0,02 s konstant.

Ergänzende Messungen an zwei weiteren Count-Down-Kanälen derselben Applikation (Laufzeit über das „Läuft"-Ausgangs-KO gemessen, daher ~1 s Messunsicherheit):

Wert erwartet (Wert×60) mod 256 gemessen
10 600 s 88 86,9 s / 86,8 s / 86,9 s
120 7200 s 32 31,8 s / 31,8 s / 31,9 s / 31,8 s
255 15300 s 196 ≈196 s

Der Effekt tritt bei allen Count-Down-Kanälen der Applikation gleichermaßen auf, unabhängig von deren sonstiger Parametrierung.

Gegenprobe: statische Ablaufzeit ist korrekt

Am selben Kanal wurde das Eingangs-KO „Start mit Zeit" deaktiviert und stattdessen die statische Ablaufzeit auf 5 Minuten parametriert. Gestartet wurde über das KO „Stopp/Neustart" (= 1):

Start-Telegramm 21:18:12,618
„Ende"-Impuls 21:23:12,093
Laufzeit 299,47 s

Bei einem generellen 8-Bit-Limit der Laufzeitrechnung wären 300 mod 256 = 44 s zu erwarten gewesen. Die interne Zeitverwaltung beherrscht Laufzeiten > 255 s also problemlos — nur der Pfad über das KO ist betroffen.

Ausgeschlossene Ursachen

  • Fehlparametrierung: Zwei Count-Down-Kanäle mit identischen Einstellungen (beide „Start mit Zeit = Einheit Minuten") zeigen dasselbe Verhalten. Screenshots liegen bei Bedarf vor.
  • Mehrfachbelegung des KO: An dem betroffenen KO hängen zwei Gruppenadressen (direkte Parametervorgabe + Self-Retrigger). Das erste Intervall nach direkter Vorgabe ist identisch mit den Folgeintervallen — die zweite Adresse ist ohne Einfluss.
  • Vorgeschaltete Logik: Die Formel rechnet exakt mit dem gesendeten Wert; ein verfälschter Wert würde sie nicht erfüllen.
  • Wertebereich: Der Wert wird als Zahl korrekt empfangen (DPT 5.010, 0…255).

Reproduktion

  1. Count-Down Zeitgeber anlegen, Start mit Zeit = „Einheit Minuten", Ausgang „Auslöser / Ende" aktivieren und auf eine Gruppenadresse legen.
  2. Auf das KO „Start mit Zeit" den Wert 4 senden → „Ende" kommt nach 240 s (korrekt).
  3. Auf dasselbe KO den Wert 5 senden → „Ende" kommt nach 44 s statt 300 s.
  4. Deutlicher: Wert 60 → „Ende" nach 16 s statt 3600 s.

Auswirkung in der Praxis

Da auch der Maximalwert 255 überläuft (→ 196 s), lässt sich über das KO überhaupt keine Laufzeit oberhalb von 4:15 min einstellen. Für Anwendungen mit längeren Zeiten ist die GA-Steuerbarkeit damit derzeit nicht nutzbar; als Workaround bleibt nur die statische Parametrierung.

Umgebung

  • Gerät / Applikation: OpenKNX Raumcontroller, Programmversion 5.4
  • OFM-FunctionBlocks ModuleVersion: 1.0
  • ETS-Version: 6.4.1 Professional

Gerne liefere ich weitere Messreihen oder Screenshots der Parametrierung nach.

Metadata

Metadata

Assignees

No one assigned

    Labels

    QSbugSomething isn't working

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions