Seite 2 von 2

Re: LE: Umsetzung einer Ein- und Ausschaltverzögerung

Verfasst: Mi Jul 10, 2019 10:43 am
von S. Kolbinger
Robert_Mini hat geschrieben: Mi Jul 10, 2019 10:06 am Danke!
So ähnlich habe ich mir das auch gedacht.Ist der Unterschied zwischen:
  • 0 ... Nicht re-triggerbar, Pegelgesteuert
  • 6 ... Nicht re-triggerbar, Timer wird bei beiden Flanken getriggert

dann, dass pegelgesteuert bei jedem Telegramm neu getriggert wird und beiden Flanken nur wenn sich der Wert tatsächlich ändert - oder?

Danke und lg
Robert
Exakt! Genau das ist der Unterschied! :handgestures-thumbupright:

Re: LE: Umsetzung einer Ein- und Ausschaltverzögerung

Verfasst: Mi Jul 10, 2019 11:59 am
von Robert_Mini
Ok, wird ergänzt.

Re: LE: Umsetzung einer Ein- und Ausschaltverzögerung

Verfasst: Mi Jul 10, 2019 12:57 pm
von paralan
Hallo Stefan,

ich habe gerade deinen Code getestet. Leider funktioniert die Ausschaltverzögerung nicht ganz richtig.
Wenn ich den Eingang auf True lege, schaltet die Einschaltverzögerung nach 5s durch. Dann Eingang auf False und der Ausgang geht nach 10s aus.
Wenn ich aber den Eingang (nachdem er schon durchgeschaltet hat), nur ca. 5s wegnehme und dann wieder drauf gebe, geht der Ausgang kurz auf Aus und dann wieder An. Der Ausgang sollte aber doch dauernd An bleiben!? Wenn der Eingang kleiner 5s kurz weggenommen wird, bleibt der Ausgang aktiv.

Oder mache ich noch was falsch? :confusion-scratchheadyellow:

Bild

Bild

Grüße Alan

Re: LE: Umsetzung einer Ein- und Ausschaltverzögerung

Verfasst: Mi Jul 10, 2019 3:28 pm
von StefanW
Es ist mir wirklich eine Freude, euch beim Umgang mit der Logikengine zu sehen.

Mit welcher Leichtigkeit Ihr Customlogiken konfiguriert und mit dem Doktormodus arbeitet und die Oszillosgrafen rausläßt und damit arbeitet ist einfach wunderbar. Es ist einfach schön zu sehen, wie unsere Ideen auch angewendet werden.

Jetzt müssen nur noch genug neue Kunden und Interessenten bemerken, welche tollen Leistungsmerkmal es hier im Timberwolf Server gibt!

lg

Stefan

Re: LE: Umsetzung einer Ein- und Ausschaltverzögerung

Verfasst: Mi Jul 10, 2019 4:11 pm
von Robert_Mini
StefanW hat geschrieben: Mi Jul 10, 2019 3:28 pm Es ist mir wirklich eine Freude, euch beim Umgang mit der Logikengine zu sehen.
Macht auch Spaß (mit manchmal ein wenig Frust) zu sehen, wie einfach manche Dinge gehen, die in Perl doch aufwendig gewesen sind. Gerade diese Themen Ein-/Ausschaltverzögerungen war doch oft ein Krampf.
StefanW hat geschrieben: Mi Jul 10, 2019 3:28 pm Jetzt müssen nur noch genug neue Kunden und Interessenten bemerken, welche tollen Leistungsmerkmal es hier im Timberwolf Server gibt!
Ich denke (hoffe) ihr seit beim Endspurt im Bug-Fix und Finish. Das beste Marketing ist das Release.

lg
Robert

Re: LE: Umsetzung einer Ein- und Ausschaltverzögerung

Verfasst: Do Jul 11, 2019 11:16 am
von S. Kolbinger
Hallo Alan,
paralan hat geschrieben: Mi Jul 10, 2019 12:57 pm Hallo Stefan,

ich habe gerade deinen Code getestet. Leider funktioniert die Ausschaltverzögerung nicht ganz richtig.
Wenn ich den Eingang auf True lege, schaltet die Einschaltverzögerung nach 5s durch. Dann Eingang auf False und der Ausgang geht nach 10s aus.
Wenn ich aber den Eingang (nachdem er schon durchgeschaltet hat), nur ca. 5s wegnehme und dann wieder drauf gebe, geht der Ausgang kurz auf Aus und dann wieder An. Der Ausgang sollte aber doch dauernd An bleiben!? Wenn der Eingang kleiner 5s kurz weggenommen wird, bleibt der Ausgang aktiv.
Du machst hier nichts falsch.
Die Ein-/Ausschaltverzögerung "works as designed", zumindest, wie ich es ursprünglich designed habe ;) .
Ehrlich gesagt, habe ich dabei an einen Toilettenlüfter gedacht (für die unter euch, die keinen VOC verbaut haben ;) ). Der soll ja auch erst einschalten, wenn das Licht eine gewisse Zeit an ist. Und nach dem Ausschalten des Lichts soll er noch eine Zeit nachlaufen.

Es sind hier zwei Teilfunktionen (Einschaltverzögerung und Ausschaltverzögerung) hintereinander geschaltet.
  1. Einschaltverzögerung:
    Nach einem Wechsel von 0 auf 1 am Eingang wird die Einschaltverzögerungszeit TE abgewartet, bevor der Ausgang auf 1 wechselt.
    Wenn vor Ablauf der Wartezeit TE das Eingangssignal wieder auf 0 geht, bleibt der Ausgang auf 0.
    Es muss also das Eingangssignal mindestens TE lange auf 1 sein, dass die positive Flanke (0->1) verzögert am Ausgang sichtbar wird.
    Eine negative Flanke (1->0) am Eingang bewirkt unverzüglich eine 0 am Ausgang.
  2. Ausschaltverzögerung:
    Nach einem Wechsel von 1 auf 0 am Eingang wird die Ausschaltverzögerungszeit TA abgewartet, bevor der Ausgang auf 0 wechselt.
    Wenn vor Ablauf der Wartezeit TA das Eingangssignal wieder auf 1 geht, bleibt der Ausgang auf 1.
    Es muss also das Eingangssignal mindestens TA lange auf 0 sein, dass die negative Flanke (1->0) verzögert am Ausgang sichtbar wird.
    Eine positive Flanke (0->1) am Eingang bewirkt unverzüglich eine 1 am Ausgang.
Um mir das besser vorstellen zu können, habe ich mir folgenden Test (TE=4s ; TA=8s) erstellt:
Bild

Es wird als Eingangssignal alle 10 Sekunden ein "1"-Pulse erzeugt. Dabei habe ich die Dauer des Pulses variiert.

Mit 3,9s:
Bild

Mit 4,1s:
Bild

Mit 5s:
Bild

Mit 5,9s:
Bild

Mit 6,1s:
Bild



paralan hat geschrieben: Mi Jul 10, 2019 12:57 pm Wenn ich aber den Eingang (nachdem er schon durchgeschaltet hat), nur ca. 5s wegnehme und dann wieder drauf gebe, geht der Ausgang kurz auf Aus und dann wieder An.
Das entspricht meinem Beispiel mit Dauer = 5,9s

paralan hat geschrieben: Mi Jul 10, 2019 12:57 pm Wenn der Eingang kleiner 5s kurz weggenommen wird, bleibt der Ausgang aktiv.
Das entspricht meinem Beispiel mit Dauer = 6,1s

Viel Spaß beim Grübeln :confusion-scratchheadyellow:
Bei mir hat es auch länger gedauert, daher kommt die Antwort auch so spät :whistle:

Re: LE: Umsetzung einer Ein- und Ausschaltverzögerung

Verfasst: Do Jul 11, 2019 3:28 pm
von paralan
Hallo Stefan,

habe versucht dein Rätsel zu lösen. Aber die heutige Mittagspause hat nicht gereicht den Fehler zu finden.

Grüße Alan

Re: LE: Umsetzung einer Ein- und Ausschaltverzögerung

Verfasst: Do Jul 11, 2019 10:22 pm
von paralan
So, ich glaub ich habe das Problem jetzt erkannt! :idea:

Nochmal die Testeinstellungen:
5s Einschaltverzögerung
10s Ausschaltverzögerung

Wenn man nach durchschalten der Einschaltverzögerung, länger als die Zeit der Einschaltverzögerung (5s) ausschaltet und dann wieder ein, passiert folgendes: Die Einschaltverzögerung startet ihre 5s von vorne und die Ausschaltverzögerung läuft mit kleiner 5s aus.
Dann kann das Oder-Modul (Einschaltverzögerung oder Ausschaltverzögerung) kurzzeitig nicht mehr den Ausgang schalten. Es gibt eine Unterbrechung bis der erste Timer wieder durchgeschaltet hat.

Ich habe mehrere Varianten versucht, um das Verhalten zu ändern. Am Ende habe ich ein RS-Flip Flop eingefügt und speichere damit die Einschaltverzögerung.


Hier meine angepasste Lösung: :dance:

Code: Alles auswählen

{
    "Level":[
        ["$In","bool",false],
        ["$dT_ON","float",0],
        ["$dT_OFF","float",0],
        ["$Out","bool",false],
        ["$Limit_ON","bool",false],
        ["$Delayed_ON","bool",false],
        ["$Delayed_ON_Save","bool",false],
        ["$Extend_ON","bool",false],
        ["$Extend_ON2","bool",false],
        ["$BMultiplex_Erg","int",0],
        ["$Reset_Multiplexer","bool",false],
        ["$DauerFalse","bool",false],
        ["$VAR<Inhibit?>","bool",false]
    ],
    "Module":[
        ["Break",["$VAR<Inhibit?>"]],
        ["Monoflop","$In","-$In","$Limit_ON","$dT_ON",2],
        ["And",["$In","-$Limit_ON"],"$Delayed_ON"],
        ["Monoflop","$Delayed_ON","$Delayed_ON","$Extend_ON","$dT_OFF",4],
        ["And",["-$Delayed_ON","-$Extend_ON","-$In"],"$Reset_Multiplexer"],
        ["BinaryMultiplexer",["$Delayed_ON","$Reset_Multiplexer"],"$BMultiplex_Erg"],
        ["Multiplexer",["$Out","-$DauerFalse","$DauerFalse"],"$Out","$BMultiplex_Erg"]
    ],
    "Input":[
        ["In","Eingang","$In","c"],
        ["dT_Ein","Einschaltverzögerung[s]","$dT_ON","c"],
        ["dT_Aus","Ausschaltverzögerung[s]","$dT_OFF","c"],
        ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
    ],
    "Output":[
        ["Out","Ausgang","$Out","c"]
    ]
}


@S. Kolbinger Hast du da eine elegantere Lösung im Kopf oder kann man das so machen? Möchte hiermit die Helligkeit für die Beschattung entsprechend verzögern.


Viele Grüße

Alan

Re: LE: Umsetzung einer Ein- und Ausschaltverzögerung

Verfasst: Fr Jul 12, 2019 9:24 am
von S. Kolbinger
Hi Alan,
paralan hat geschrieben: Do Jul 11, 2019 10:22 pm S@S. Kolbinger Hast du da eine elegantere Lösung im Kopf oder kann man das so machen? Möchte hiermit die Helligkeit für die Beschattung entsprechend verzögern.
Falls du nur schnelle Schwankungen der Helligkeit rausfiltern möchtest, würde ich einen komplett anderen Ansatz vorschlagen.
Die Glättung von stark schwankenden Signalen funktioniert am einfachsten mit dem Tiefpass.
Hinweise zur Einstellung des Tiefpasses findest du hier.

So kann das dann beispielsweise aussehen:
Bild

Übrigens: Der Modifier "Tiefpass" funktioniert mit Der Beta25 auch korrekt.
Bild