[EibStudio V2.311, Firmwareversion des EibPCs: v2.304, Patches: 2.309.ptc]
Hallo!
Wenn "bedingung" erfüllt ist, soll etwas schalten und eine Sperre aktiv werden, die nach 20 Sekunden wieder ausgeschaltet wird.
[highlight=epc] sperre=AUS
if (bedingung and sperre==AUS) then {
write("EtwasEinschalten",EIN);
sperre=EIN
} endif
if after(sperre,20000u64) then sperre=AUS endif [/highlight]
Wenn "bedingung" kürzer als 20 Sekunden erfüllt ist, funktioniert es wie gewollt.
Wenn aber "bedingung" länger (z.B. 22 Sekunden) erfüllt ist, wird der Timer nicht erneut gestartet und somit geht "sperre" niemals aus.
Vermutung: "sperre" geht nach 20 Sekunden AUS und wird wohl im gleichen Zyklus wieder EIN geschaltet, da "bedingung" noch erfüllt und "sperre" ja jetzt AUS ist. Der Timer wird aber nicht wieder gestartet weil "kein Wechsel von AUS auf EIN".
Ist meine Vermutung richtig? Wer hat eine Idee wie ich das umschreiben kann?
Hallo!
Wenn "bedingung" erfüllt ist, soll etwas schalten und eine Sperre aktiv werden, die nach 20 Sekunden wieder ausgeschaltet wird.
[highlight=epc] sperre=AUS
if (bedingung and sperre==AUS) then {
write("EtwasEinschalten",EIN);
sperre=EIN
} endif
if after(sperre,20000u64) then sperre=AUS endif [/highlight]
Wenn "bedingung" kürzer als 20 Sekunden erfüllt ist, funktioniert es wie gewollt.
Wenn aber "bedingung" länger (z.B. 22 Sekunden) erfüllt ist, wird der Timer nicht erneut gestartet und somit geht "sperre" niemals aus.
Vermutung: "sperre" geht nach 20 Sekunden AUS und wird wohl im gleichen Zyklus wieder EIN geschaltet, da "bedingung" noch erfüllt und "sperre" ja jetzt AUS ist. Der Timer wird aber nicht wieder gestartet weil "kein Wechsel von AUS auf EIN".
Ist meine Vermutung richtig? Wer hat eine Idee wie ich das umschreiben kann?
Kommentar