ich möchte gerne folgende Logik bauen:
Inputs:
Schalteingang (bool)
Aktueller Schaltzustand (bool)
Parameter:
Mindestausschaltdauer in Sekunden (integer)
Mindesteinschaltdauer in Sekunden (integer)
Einschaltverzögerung in Sekunden (integer)
Ausschaltverzögerung in Sekunden (integer)
Output:
Schaltausgang (bool)
Funktion:
Bevor Schaltanforderungen vom Schalteingang auf dem Schaltausgang ausgegeben werden, sollen zunächst folgende Bedingungen überprüft werden:
A) Wenn der aktuelle Schaltstatus "AUS" ist:
1. Ist eine Mindestausschaltdauer größer als 0 parametriert, so wird eine Einschaltanforderung "geparkt" bis die Mindestausschaltdauer verstrichen ist.
Wird noch während dieser Wartezeit eine Ausschaltanforderung empfangen, so wird die "geparkte" Einschaltanforderung "gelöscht".
2. Ist eine Einschaltverzögerung größer als 0 parametriert, so wird eine Einschaltanforderung "geparkt" und ein Timer für die Einschaltverzögerung gestartet. Ist der Timer abgelaufen wird die Einschaltanforderung auf den Schaltausgang gegeben.
Wird noch während dieser Wartezeit eine Ausschaltanforderung empfangen, so wird die "geparkte" Einschaltanforderung und der Timer "gelöscht".
Wird noch während dieser Wartezeit eine Einschaltanforderung empfangen, so wird der Timer nicht neu gestartet, sondern läuft unverändert weiter.
3. Sind sowohl eine Mindestausschaltdauer als auch eine Einschaltverzögerung größer als 0 parametriert werden die Beispiele 1 & 2 kombiniert.
Beim Eintreffen der Einschaltanforderung wird diese "geparkt" und ein Timer gestartet. Erst wenn sowohl der Timer abgelaufen, als auch die Mindestausschaltdauer verstrichen ist wird eingeschaltet.
Wird noch während dieser Wartezeit eine Ausschaltanforderung empfangen, so wird die "geparkte" Einschaltanforderung und der Timer "gelöscht".
Wird noch während dieser Wartezeit eine Einschaltanforderung empfangen, so wird der Timer nicht neu gastartet, sondern läuft unverändert weiter.
B) Wenn der aktuelle Schaltstatus "EIN" ist gilt das gleiche Prinzip wie für A) entsprechend umgekehrt.
Gestartet bin ich mit dem Nachvollziehen der Beispiele für Ein- und Ausschaltverzögerung mit dem Monoflop Baustein, aber ich stosse gerade schon an meine Grenzen, wenn ich einer Ausschaltverzögerung eine Mindesteinschaltdauer hinzufügen möchte.
Ich habe mich bisher aus zwei Gründen bewusst noch nicht mit den KI / LLM Ansätzen befasst:
1. Ich möchte gerne verstehen wie Custom Logiken funktionieren.
2. Ich möchte mich nicht zeitgleich mit zwei neuen Dingen (Logik & KI) befassen. (Ausserdem möchte ich ja nicht nur die fertige Logik, sondern auch lernen wie ich so eine Logik baue und die ganzen KI Texte finde ich so widerlich zu lesen, dass ich mich sehr über Erklärungen von netten Mitforisten freuen würde, um keine KI Erklärung lesen zu müssen.
Eigentlich hatte ich geplant hier jetzt meinen aktuellen Stand meiner Versuche einer Custom Logik anzuhängen, aber ich habe beim Schreiben dieses Beitrags schon ein bis zwei Denkfehler in meinem Code entdeckt. Darum möchte ich statt dessen lieber mit einer "einfachen" Frage starten:
Brauche ich für diese Logik vier Monoflop Bausteine sowie AND und OR, oder habe ich aus den vielen Bausteinen die falschen gewählt?
Vielen Dank im Voraus für Hinweise die zur Ergreifung der Tä... ähm ich meine, die mir Custom Logiken näher bringen.
VG Lukas